瀏覽代碼

修改发起流程对话框

修改技术交底、安全交底
余思翰 1 年之前
父節點
當前提交
b6237934bd

+ 1
- 0
oa-ui/src/assets/icons/svg/file.svg 查看文件

@@ -0,0 +1 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path fill="currentColor" d="M8.5 11.5v-1h7v1zm0-4v-1h7v1zm-2.5 7h7.5q.61 0 1.12.264q.509.265.876.744L18 18.758V4.615q0-.269-.173-.442T17.385 4H6.615q-.269 0-.442.173T6 4.615zm.615 5.5h11.07l-2.975-3.883q-.227-.296-.536-.456q-.309-.161-.674-.161H6v3.885q0 .269.173.442t.442.173m10.77 1H6.615q-.69 0-1.152-.462Q5 20.075 5 19.385V4.615q0-.69.463-1.152Q5.925 3 6.615 3h10.77q.69 0 1.152.463q.463.462.463 1.152v14.77q0 .69-.462 1.152q-.463.463-1.153.463M6 20V4zm0-4.5v-1z"/></svg>

+ 1
- 0
oa-ui/src/assets/icons/svg/folder.svg 查看文件

@@ -0,0 +1 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path fill="currentColor" d="M4 20q-.825 0-1.412-.587T2 18V6q0-.825.588-1.412T4 4h6l2 2h8q.825 0 1.413.588T22 8H11.175l-2-2H4v12l2.4-8h17.1l-2.575 8.575q-.2.65-.737 1.038T19 20zm2.1-2H19l1.8-6H7.9zm0 0l1.8-6zM4 8V6z"/></svg>

+ 1
- 0
oa-ui/src/assets/icons/svg/folder_close.svg 查看文件

@@ -0,0 +1 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path fill="currentColor" d="M4 20q-.825 0-1.412-.587T2 18V6q0-.825.588-1.412T4 4h6l2 2h8q.825 0 1.413.588T22 8v10q0 .825-.587 1.413T20 20zm0-2h16V8h-8.825l-2-2H4zm0 0V6z"/></svg>

+ 14
- 2
oa-ui/src/store/modules/projectProcess.js 查看文件

@@ -1,7 +1,10 @@
1 1
 const projectProcess = {
2 2
   state: {
3 3
     underDeptId: [],
4
-    underLeaderId: []
4
+    underLeaderId: [],
5
+    projectNumber: '',
6
+    projectName: '',
7
+    project: {}
5 8
   },
6 9
   mutations: {
7 10
     SET_UNDERDEPTID: (state, underDeptId) => {
@@ -9,7 +12,16 @@ const projectProcess = {
9 12
     },
10 13
     SET_UNDERLEADERID: (state, underLeaderId) => {
11 14
       state.underLeaderId = underLeaderId
12
-    }
15
+    },
16
+    SET_PROJECTNUMBER: (state, projectNumber) => {
17
+      state.projectNumber = projectNumber
18
+    },
19
+    SET_PROJECTNAME: (state, projectName) => {
20
+      state.projectName = projectName
21
+    },
22
+    SET_PROJECT: (state, project) => {
23
+      state.project = project
24
+    },
13 25
   }
14 26
 }
15 27
 export default projectProcess

+ 5
- 5
oa-ui/src/views/flowable/form/budget/budgetInfo.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-03 16:28:09
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-17 15:21:14
5
+ * @LastEditTime: 2024-04-18 14:01:23
6 6
 -->
7 7
 <template>
8 8
   <div class="main">
@@ -117,9 +117,9 @@
117 117
       </tr>
118 118
       <tr>
119 119
         <td class="head">编制人</td>
120
-        <td colspan="2">{{ budgetForm.compilerUser ? budgetForm.compilerUser.nickName :'' }}</td>
121
-        <td class="head">审核人</td>
122
-        <td colspan="3">{{ name }}</td>
120
+        <td colspan="5">{{ budgetForm.compilerUser ? budgetForm.compilerUser.nickName :'' }}</td>
121
+        <!-- <td class="head">审核人</td> -->
122
+        <!-- <td colspan="3">{{ name }}</td> -->
123 123
       </tr>
124 124
     </table>
125 125
   </div>
@@ -216,7 +216,7 @@ export default {
216 216
 
217 217
 <style lang="scss" scoped>
218 218
 .main {
219
-  width: 1200px;
219
+  width: 100%;
220 220
   margin: 0 auto;
221 221
   text-align: center;
222 222
 }

+ 5
- 2
oa-ui/src/views/flowable/form/projectProcess/arrangeProject.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-19 09:24:06
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-16 17:01:08
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-18 11:45:54
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -137,6 +137,9 @@ export default {
137 137
         } else {
138 138
           this.$set(this.form, 'deptId', [])
139 139
         }
140
+        this.$store.commit('SET_PROJECTNUMBER',this.form.projectNumber)
141
+        this.$store.commit('SET_PROJECTNAME',this.form.projectName)
142
+        this.$store.commit('SET_PROJECT',this.form)
140 143
       })
141 144
     },
142 145
     getUserList() {

+ 78
- 0
oa-ui/src/views/flowable/form/projectProcess/budgetTab.vue 查看文件

@@ -0,0 +1,78 @@
1
+<template>
2
+  <div class="app-container" v-loading="loading">
3
+    <el-empty description="预算未编制,等待项目负责人编制" v-if="!haveBudget"></el-empty>
4
+    <div v-if="haveBudget">
5
+      <!-- <h3 class="text-center">{{ title }}</h3> -->
6
+      <div>
7
+        <budget-info :taskForm="taskForm"></budget-info>
8
+      </div>
9
+    </div>
10
+  </div>
11
+</template>
12
+
13
+<script>
14
+import { listBudget } from "@/api/oa/budget/budget";
15
+import { listBudgetCar, getBudgetCar } from "@/api/oa/budget/budgetCar";
16
+import { listBudgetDevice, getBudgetDevice } from "@/api/oa/budget/budgetDevice";
17
+import { listBudgetSettle, getBudgetSettle } from "@/api/oa/budget/budgetSettle";
18
+import { listBudgetStaff, getBudgetStaff } from "@/api/oa/budget/budgetStaff";
19
+import { getProjectWork } from "@/api/oa/project/projectWork";
20
+import BudgetInfo from "../budget/budgetInfo.vue";
21
+export default {
22
+  components: {
23
+    BudgetInfo,
24
+  },
25
+  props: {
26
+    taskForm: Object,
27
+    require: true,
28
+  },
29
+  computed: {
30
+    projectNumber() {
31
+      return this.$store.state.projectProcess.projectNumber;
32
+    },
33
+    projectName() {
34
+      return this.$store.state.projectProcess.projectName;
35
+    },
36
+  },
37
+  data() {
38
+    return {
39
+      haveBudget: false,
40
+      title: "",
41
+      form: {},
42
+      loading: true,
43
+      workList: [],
44
+      budgetId:''
45
+    };
46
+  },
47
+  mounted() {
48
+    this.initBudget();
49
+    setTimeout(() => {
50
+      this.title = "【" + this.projectNumber + "-" + this.projectName + "】项目预算";
51
+      this.loading = false;
52
+    }, 500);
53
+  },
54
+  methods: {
55
+    initBudget() {
56
+      let projectId = this.taskForm.formId;
57
+      listBudget({ projectId }).then(res => {
58
+        console.log(res);
59
+        if (res.total != 0) {
60
+          this.haveBudget = true;
61
+          this.budgetId = res.rows[0].budgetId;
62
+          getProjectWork(projectId).then(res => {
63
+            if (res.data) {
64
+              this.workList = res.data;
65
+            }
66
+            getBudgetSettle(this.budgetId).then(res => {
67
+
68
+              console.log(res);
69
+            });
70
+          });
71
+        }
72
+      });
73
+    },
74
+  },
75
+};
76
+</script>
77
+
78
+<style lang="scss" scoped></style>

+ 9
- 6
oa-ui/src/views/flowable/form/projectProcess/index.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-15 09:32:33
5
+ * @LastEditTime: 2024-04-19 17:39:47
6 6
 -->
7 7
 
8 8
 <template>
@@ -17,13 +17,13 @@
17 17
             <arrangeProject :taskForm="taskForm" :disabled="taskName != '项目安排'" @goBack="goBack"></arrangeProject>
18 18
           </el-tab-pane>
19 19
           <el-tab-pane label="项目预算" name="项目预算">
20
-
20
+            <budget-tab :taskForm="taskForm"  @goBack="goBack"></budget-tab>
21 21
           </el-tab-pane>
22 22
           <el-tab-pane label="安全交底" name="安全交底">
23
-
24
-          </el-tab-pane>
23
+            <safe-tab :taskForm="taskForm"  @goBack="goBack"></safe-tab>
24
+          </el-tab-pane :taskForm="taskForm"  @goBack="goBack">
25 25
           <el-tab-pane label="技术交底" name="技术交底">
26
-
26
+            <technical-tab :taskForm="taskForm" :taskName="taskName"  @goBack="goBack"></technical-tab>
27 27
           </el-tab-pane>
28 28
           <el-tab-pane label="经营审核" name="经营审核">
29 29
             <business-review :taskForm="taskForm" :taskName="taskName" :disabled="taskName != '经营审核'"
@@ -70,6 +70,9 @@ import { flowXmlAndNode } from "@/api/flowable/definition";
70 70
 import ManageReview from './manageReview.vue'
71 71
 import ScConfirm from './scConfirm.vue'
72 72
 import InProgress from './inProgress.vue'
73
+import BudgetTab from './budgetTab.vue'
74
+import TechnicalTab from './technicalTab.vue'
75
+import SafeTab from './safeTab.vue'
73 76
 export default {
74 77
   props: {
75 78
     taskName: {
@@ -79,7 +82,7 @@ export default {
79 82
       type: Object,
80 83
     }
81 84
   },
82
-  components: { addproject, arrangeProject, businessReview, flow, ManageReview, ScConfirm, InProgress },
85
+  components: { addproject, arrangeProject, businessReview, flow, ManageReview, ScConfirm, InProgress, BudgetTab, TechnicalTab, SafeTab },
83 86
   data() {
84 87
     return {
85 88
       activeName: '项目登记',

+ 1
- 2
oa-ui/src/views/flowable/form/projectProcess/manageReview.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-08 13:56:14
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-12 10:11:22
5
+ * @LastEditTime: 2024-04-18 11:02:05
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -69,7 +69,6 @@ export default {
69 69
   },
70 70
   watch: {
71 71
     underDeptId(newVal, oldVal) {
72
-      console.log(newVal);
73 72
       this.getDeptLeader(newVal)
74 73
     }
75 74
   },

+ 127
- 0
oa-ui/src/views/flowable/form/projectProcess/safeTab.vue 查看文件

@@ -0,0 +1,127 @@
1
+<template>
2
+  <div class="app-container">
3
+    <el-empty description="未进行安全交底" v-if="isEmpty"></el-empty>
4
+    <div v-if="!isEmpty">
5
+      <h3 class="text-center">{{ form.projectNumber + '-' + form.projectName + ' 安全交底' }}</h3>
6
+      <el-form ref="safeForm" :model="form" :rules="rules" label-width="125px" disabled>
7
+        <el-form-item label="项目编号:" prop="projectNumber">
8
+          {{ form.projectNumber }}
9
+        </el-form-item>
10
+        <el-form-item label="项目名称:" prop="projectName">
11
+          {{ form.projectName }}
12
+        </el-form-item>
13
+        <el-form-item label="接受交底人" prop="disclosureAccepter">
14
+          <el-select v-model="form.disclosureAccepter" filterable clearable style="width:220px">
15
+            <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId">
16
+            </el-option>
17
+          </el-select>
18
+        </el-form-item>
19
+        <el-form-item label="环境管理要求" prop="environmentComment">
20
+          <el-input v-model="form.environmentComment" placeholder="请输入环境管理要求" type="textarea"
21
+            :autosize="{ minRows: 8 }" />
22
+        </el-form-item>
23
+        <el-form-item label="安全生产与职业健康要求" prop="outsideComment">
24
+          <el-input v-model="form.outsideComment" placeholder="请输入安全生产与职业健康要求" type="textarea"
25
+            :autosize="{ minRows: 8 }" />
26
+        </el-form-item>
27
+        <el-form-item label="信息安全管理要求" prop="insideComment">
28
+          <el-input v-model="form.insideComment" placeholder="请输入信息安全管理要求" type="textarea" :autosize="{ minRows: 8 }" />
29
+        </el-form-item>
30
+        <el-form-item label="安全交底意见" prop="disclosureComment">
31
+          <el-input v-model="form.disclosureComment" placeholder="请输入安全交底意见" type="textarea"
32
+            :autosize="{ minRows: 4 }" />
33
+        </el-form-item>
34
+        <el-form-item label="安全交底人" prop="disclosurer">
35
+          <span class="auditor"> {{ form.disclosurerUser ? form.disclosurerUser.nickName : form.user.nickName }}</span>
36
+        </el-form-item>
37
+        <el-form-item label="安全交底时间" prop="disclosureTime">
38
+          <el-date-picker clearable v-model="form.disclosureTime" type="date" value-format="yyyy-MM-dd"
39
+            placeholder="选择日期">
40
+          </el-date-picker>
41
+        </el-form-item>
42
+        <el-form-item label="接受交底意见" prop="disclosureComment">
43
+          <el-input :disabled="true" placeholder="按要求进行作业" />
44
+        </el-form-item>
45
+        <el-form-item label="接受交底时间" prop="acceptTime">
46
+          <el-date-picker clearable v-model="form.acceptTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
47
+          </el-date-picker>
48
+        </el-form-item>
49
+      </el-form>
50
+    </div>
51
+  </div>
52
+</template>
53
+
54
+<script>
55
+import { listSafe, getSafe, delSafe, addSafe, updateSafe } from "@/api/oa/safe/safe";
56
+import { listUser } from '@/api/system/user';
57
+export default {
58
+  props: {
59
+    taskForm: {
60
+      type: Object,
61
+      required: true
62
+    }
63
+  },
64
+  computed: {
65
+    projectNumber() {
66
+      return this.$store.state.projectProcess.projectNumber;
67
+    },
68
+    projectName() {
69
+      return this.$store.state.projectProcess.projectName;
70
+    },
71
+  },
72
+  watch: {
73
+    projectNumber(newval) {
74
+      this.$set(this.form, "projectNumber", newval);
75
+    },
76
+    projectName(newval) {
77
+      this.$set(this.form, "projectName", newval);
78
+    }
79
+  },
80
+  data() {
81
+    return {
82
+      isEmpty: true,
83
+      form: {},
84
+      rules: {},
85
+      userList: [],
86
+    }
87
+  },
88
+  mounted() {
89
+    this.initForm();
90
+    this.getUserList();
91
+  },
92
+  methods: {
93
+    /** 查询cmc技术交底列表 */
94
+    initForm() {
95
+      getSafe(this.taskForm.formId).then((res) => {
96
+        if (res.data) {
97
+          this.isEmpty = false;
98
+          this.form = res.data;
99
+          this.$set(this.form, "projectNumber", this.projectNumber);
100
+          this.$set(this.form, "projectName", this.projectName);
101
+        }
102
+      });
103
+    },
104
+    // 查询用户列表
105
+    getUserList() {
106
+      listUser({ pageSize: 9999, pageNum: 1 }).then((res) => {
107
+        this.userList = res.rows;
108
+      });
109
+    },
110
+  }
111
+}
112
+</script>
113
+
114
+<style lang="scss" scoped>
115
+::v-deep .el-input.is-disabled .el-input__inner {
116
+  color: #686a6e;
117
+}
118
+
119
+::v-deep .el-textarea.is-disabled .el-textarea__inner,
120
+.el-radio__input.is-disabled+span.el-radio__label {
121
+  color: #686a6e;
122
+}
123
+
124
+::v-deep .el-radio__input.is-disabled+span.el-radio__label {
125
+  color: #686a6e;
126
+}
127
+</style>

+ 190
- 0
oa-ui/src/views/flowable/form/projectProcess/technicalTab.vue 查看文件

@@ -0,0 +1,190 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-19 15:32:00
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-19 17:33:30
6
+-->
7
+<template>
8
+  <div class="app-container">
9
+    <el-empty description="技术方案未编制" v-if="!haveTechnical"></el-empty>
10
+    <div v-if="haveTechnical">
11
+      <h3 class="text-center">{{ form.projectNumber + '-' + form.projectName + ' 技术交底' }}</h3>
12
+      <el-form ref="technicalForm" :model="form" :rules="rules" label-width="125px" disabled>
13
+        <el-form-item label="项目编号:" prop="projectNumber">
14
+          {{ form.projectNumber }}
15
+        </el-form-item>
16
+        <el-form-item label="项目名称:" prop="projectName">
17
+          {{ form.projectName }}
18
+        </el-form-item>
19
+        <el-form-item label="技术负责人" prop="technicalDirector">
20
+          <el-select v-model="form.technicalDirector" filterable clearable style="width: 220px">
21
+            <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
22
+              v-if="item.nickName != 'admin'">
23
+            </el-option>
24
+          </el-select>
25
+        </el-form-item>
26
+        <el-form-item label="技术设计人" prop="technicalDesigner">
27
+          <el-select v-model="form.technicalDesigner" filterable clearable style="width:220px">
28
+            <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
29
+              v-if="item.nickName != 'admin'">
30
+            </el-option>
31
+          </el-select>
32
+        </el-form-item>
33
+        <el-form-item label="质量检查员" prop="qualityInspector">
34
+          <el-select v-model="form.qualityInspector" filterable multiple clearable style="width:220px">
35
+            <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
36
+              v-if="item.nickName != 'admin'">
37
+            </el-option>
38
+          </el-select>
39
+        </el-form-item>
40
+        <el-form-item label="技术安排意见" prop="planComment">
41
+          <el-input type="textarea" v-model="form.planComment" placeholder="请输入技术安排意见" />
42
+        </el-form-item>
43
+        <el-row>
44
+          <el-col :span="6" :xs="24" :offset="12">
45
+            <el-form-item label="签名" prop="technicalPlanner">
46
+              <span class="auditor"> {{ form.planUser ? form.planUser.nickName : planUser }} </span>
47
+            </el-form-item>
48
+          </el-col>
49
+          <el-col :span="6">
50
+            <el-form-item label="日期:" label-width="120px">
51
+              <span> {{ form.technicalTime ? form.technicalTime : technicalTime }} </span>
52
+            </el-form-item>
53
+          </el-col>
54
+        </el-row>
55
+        <el-form-item label="技术方案" prop="technicalDocument">
56
+          <el-input v-model="form.technicalDocument" placeholder="请输入技术方案" />
57
+        </el-form-item>
58
+        <el-form-item label="方案说明" prop="designDescription">
59
+          <el-input type="textarea" v-model="form.designDescription" placeholder="请输入方案说明" />
60
+        </el-form-item>
61
+        <el-row>
62
+          <el-col :span="6" :xs="24" :offset="12">
63
+            <el-form-item label="签名" prop="designUser">
64
+              <span class="auditor"> {{ form.designUser ? form.designUser.nickName : designUser }} </span>
65
+            </el-form-item>
66
+          </el-col>
67
+          <el-col :span="6">
68
+            <el-form-item label="日期:" label-width="120px">
69
+              <span> {{ form.technicalUploadTime ? form.technicalUploadTime : technicalUploadTime }} </span>
70
+            </el-form-item>
71
+          </el-col>
72
+        </el-row>
73
+        <el-form-item label="技术部审核意见" prop="technicalComment">
74
+          <el-input type="textarea" v-model="form.technicalComment" placeholder="请输入技术审核意见" />
75
+        </el-form-item>
76
+        <el-row>
77
+          <el-col :span="6" :xs="24" :offset="12">
78
+            <el-form-item label="签名" prop="technicalPlanner">
79
+              <span class="auditor"> {{ form.planUser ? form.planUser.nickName : planUser }} </span>
80
+            </el-form-item>
81
+          </el-col>
82
+          <el-col :span="6">
83
+            <el-form-item label="日期:" label-width="120px">
84
+              <span> {{ form.techApprovalTime }} </span>
85
+            </el-form-item>
86
+          </el-col>
87
+        </el-row>
88
+        <el-form-item label="总工程师审核意见" prop="manageComment">
89
+          <el-input type="textarea" v-model="form.manageComment" placeholder="请输入总工审核意见" />
90
+        </el-form-item>
91
+        <el-row>
92
+          <el-col :span="6" :xs="24" :offset="12">
93
+            <el-form-item label="签名" prop="manager">
94
+              <span class="auditor"> {{ form.managerUser }} </span>
95
+            </el-form-item>
96
+          </el-col>
97
+          <el-col :span="6">
98
+            <el-form-item label="日期:" label-width="120px">
99
+              <span> {{ form.manageApprovalTime  }} </span>
100
+            </el-form-item>
101
+          </el-col>
102
+        </el-row>
103
+      </el-form>
104
+    </div>
105
+  </div>
106
+</template>
107
+
108
+<script>
109
+import technicalForm from "../technicalForm.vue";
110
+import { listUser } from "@/api/system/user";
111
+import {
112
+  listTechnical,
113
+  getTechnical,
114
+  delTechnical,
115
+  addTechnical,
116
+  updateTechnical,
117
+} from "@/api/oa/technical/technical";
118
+export default {
119
+  components: { technicalForm },
120
+  props: {
121
+    taskForm: {
122
+      type: Object,
123
+      require: true,
124
+    },
125
+  },
126
+  computed: {
127
+    projectNumber() {
128
+      return this.$store.state.projectProcess.projectNumber;
129
+    },
130
+    projectName() {
131
+      return this.$store.state.projectProcess.projectName;
132
+    },
133
+  },
134
+  watch:{
135
+    projectNumber(newval){
136
+      this.$set(this.form, "projectNumber", newval);
137
+    },
138
+    projectName(newval){
139
+      this.$set(this.form, "projectName", newval);
140
+    }
141
+  },
142
+  data() {
143
+    return {
144
+      haveTechnical: false,
145
+      form: {},
146
+      rules: {},
147
+      userList: [],
148
+    };
149
+  },
150
+  mounted() {
151
+    this.initForm();
152
+    this.getUserList();
153
+  },
154
+  methods: {
155
+    /** 查询cmc技术交底列表 */
156
+    initForm() {
157
+      getTechnical(this.taskForm.formId).then((res) => {
158
+        console.log(res);
159
+        if (res.data) {
160
+          this.haveTechnical = true;
161
+          this.form = res.data;
162
+          this.$set(this.form, "projectNumber", this.projectNumber);
163
+          this.$set(this.form, "projectName", this.projectName);
164
+        }
165
+      });
166
+    },
167
+    // 查询用户列表
168
+    getUserList() {
169
+      listUser({ pageSize: 9999, pageNum: 1 }).then((res) => {
170
+        this.userList = res.rows;
171
+      });
172
+    },
173
+  },
174
+};
175
+</script>
176
+
177
+<style lang="scss" scoped>
178
+::v-deep .el-input.is-disabled .el-input__inner {
179
+  color: #686a6e;
180
+}
181
+
182
+::v-deep .el-textarea.is-disabled .el-textarea__inner,
183
+.el-radio__input.is-disabled+span.el-radio__label {
184
+  color: #686a6e;
185
+}
186
+
187
+::v-deep .el-radio__input.is-disabled+span.el-radio__label {
188
+  color: #686a6e;
189
+}
190
+</style>

+ 15
- 2
oa-ui/src/views/flowable/form/technicalForm.vue 查看文件

@@ -454,8 +454,21 @@ export default {
454 454
 };
455 455
 </script>
456 456
 
457
-<style>
457
+<style lang="scss" scoped>
458 458
 .auditor {
459 459
   font-family: '华文行楷';
460 460
   font-size: 20px;
461
-}</style>
461
+}
462
+::v-deep .el-input.is-disabled .el-input__inner {
463
+  color: #686a6e;
464
+}
465
+
466
+::v-deep .el-textarea.is-disabled .el-textarea__inner,
467
+.el-radio__input.is-disabled+span.el-radio__label {
468
+  color: #686a6e;
469
+}
470
+
471
+::v-deep .el-radio__input.is-disabled+span.el-radio__label {
472
+  color: #686a6e;
473
+}
474
+</style>

+ 21
- 12
oa-ui/src/views/flowable/task/myProcess/index.vue 查看文件

@@ -1,3 +1,9 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-01-03 09:23:11
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-19 15:08:13
6
+-->
1 7
 <template>
2 8
   <div class="app-container">
3 9
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
@@ -19,7 +25,7 @@
19 25
     <el-row :gutter="10" class="mb8">
20 26
       <el-col :span="1.5">
21 27
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
22
-          v-hasPermi="['system:deployment:add']">发起申请</el-button>
28
+          v-hasPermi="['system:deployment:add']">发起流程</el-button>
23 29
       </el-col>
24 30
       <el-col :span="1.5">
25 31
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
@@ -71,8 +77,9 @@
71 77
       @pagination="getList" />
72 78
 
73 79
     <!-- 发起流程 -->
74
-    <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
75
-      <el-form :model="queryProcessParams" ref="queryProcessForm" :inline="true" v-show="showSearch" label-width="68px">
80
+    <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
81
+      <progress-tree :definitionList="definitionList" @confirm="handleStartProcess"></progress-tree>
82
+      <!-- <el-form :model="queryProcessParams" ref="queryProcessForm" :inline="true" v-show="showSearch" label-width="68px">
76 83
         <el-form-item label="名称" prop="name">
77 84
           <el-input v-model="queryProcessParams.name" placeholder="请输入名称" clearable size="small"
78 85
             @keyup.enter.native="handleQuery" />
@@ -81,25 +88,25 @@
81 88
           <el-button type="primary" icon="el-icon-search" size="mini" @click="handleProcessQuery">搜索</el-button>
82 89
           <el-button icon="el-icon-refresh" size="mini" @click="resetProcessQuery">重置</el-button>
83 90
         </el-form-item>
84
-      </el-form>
85
-      <el-table v-loading="processLoading" fit :data="definitionList" border>
91
+      </el-form> -->
92
+      <!-- <el-table v-loading="processLoading" fit :data="definitionList" border>
86 93
         <el-table-column label="流程名称" align="center" prop="name" />
87
-        <!-- <el-table-column label="流程版本" align="center">
94
+        <el-table-column label="流程版本" align="center">
88 95
           <template slot-scope="scope">
89 96
             <el-tag size="medium">v{{ scope.row.version }}</el-tag>
90 97
           </template>
91
-        </el-table-column> -->
98
+        </el-table-column>
92 99
         <el-table-column label="流程分类" align="center" prop="category" />
93 100
         <el-table-column label="操作" align="center" width="300" class-name="small-padding fixed-width">
94 101
 
95 102
           <template slot-scope="scope">
96 103
             <el-button size="mini" type="text" icon="el-icon-edit-outline"
97
-              @click="handleStartProcess(scope.row)">发起申请</el-button>
104
+              @click="handleStartProcess(scope.row)">发起流程</el-button>
98 105
           </template>
99 106
         </el-table-column>
100 107
       </el-table>
101 108
       <pagination v-show="processTotal > 0" :total="processTotal" :page.sync="queryProcessParams.pageNum"
102
-        :limit.sync="queryProcessParams.pageSize" @pagination="listDefinition" />
109
+        :limit.sync="queryProcessParams.pageSize" @pagination="listDefinition" /> -->
103 110
     </el-dialog>
104 111
     <el-dialog title="流程进度" :visible.sync="detailsOpen" append-to-body width="600px">
105 112
       <el-scrollbar style="height: 600px;">
@@ -125,10 +132,12 @@ import { getNextFlowNodeByStart } from "@/api/flowable/todo";
125 132
 import { definitionStart, flowXmlAndNode } from "@/api/flowable/definition";
126 133
 import { Snowflake } from '@/utils/snowFlake.js'
127 134
 import RowDetail from './send/rowDetail.vue'
135
+import ProgressTree from './progressTree.vue';
128 136
 export default {
129 137
   name: "Deploy",
130 138
   components: {
131
-    RowDetail
139
+    RowDetail,
140
+    ProgressTree
132 141
   },
133 142
   data() {
134 143
     return {
@@ -173,7 +182,7 @@ export default {
173 182
       // 查询参数
174 183
       queryProcessParams: {
175 184
         pageNum: 1,
176
-        pageSize: 10,
185
+        pageSize: 9999,
177 186
         name: null,
178 187
         category: null,
179 188
         key: null,
@@ -256,7 +265,7 @@ export default {
256 265
     /** 新增按钮操作 */
257 266
     handleAdd() {
258 267
       this.open = true;
259
-      this.title = "发起申请";
268
+      this.title = "发起流程";
260 269
       this.listDefinition();
261 270
     },
262 271
     listDefinition() {

+ 110
- 0
oa-ui/src/views/flowable/task/myProcess/progressTree.vue 查看文件

@@ -0,0 +1,110 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-18 15:14:45
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-19 15:01:36
6
+-->
7
+<template>
8
+  <div>
9
+    <el-tree
10
+      class="filter-tree"
11
+      icon-class="el-icon-caret-right"
12
+      :data="treeData"
13
+      :props="defaultProps"
14
+      @node-click="handleNodeClick"
15
+      default-expand-all
16
+      highlight-current
17
+      ref="tree"
18
+    >
19
+      <span class="custom-tree-node" slot-scope="{ node, data }">
20
+        <!-- <svg-icon icon-class="folder" class="svgIcon" style="margin-right:5px;" /> -->
21
+        <svg-icon v-if="!data.children" icon-class="file" class="svgIcon" />
22
+        <svg-icon v-else-if="node.expanded" icon-class="folder" class="svgIcon" />
23
+        <svg-icon v-else icon-class="folder_close" class="svgIcon" />
24
+        <span class="fontSize14" :title="node.label || '-'">{{ node.label }}</span>
25
+      </span>
26
+    </el-tree>
27
+    <el-divider></el-divider>
28
+    <div class="text-center">
29
+      <el-button type="primary" @click="confirm">确定</el-button>
30
+      <el-button>取消</el-button>
31
+    </div>
32
+  </div>
33
+</template>
34
+
35
+<script>
36
+export default {
37
+  props: {
38
+    definitionList: {
39
+      type: Array,
40
+      require: true,
41
+    },
42
+  },
43
+  watch: {
44
+    definitionList(newval, oldval) {
45
+      console.log(newval);
46
+      this.initTree();
47
+    },
48
+  },
49
+  data() {
50
+    return {
51
+      treeData: [],
52
+      defaultProps: {
53
+        children: "children",
54
+        label: "name",
55
+      },
56
+      clickNode:{}
57
+    };
58
+  },
59
+  mounted() {},
60
+  methods: {
61
+    initTree() {
62
+      this.treeData = [
63
+        {
64
+          name: "项目类",
65
+          children: [],
66
+        },
67
+        {
68
+          name: "财务类",
69
+          children: [],
70
+        },
71
+        {
72
+          name: "办公类",
73
+          children: [],
74
+        },
75
+        {
76
+          name: "考核类",
77
+          children: [],
78
+        },
79
+      ];
80
+      for (let i of this.definitionList) {
81
+        if (i.category == "project" || i.category == "contract") {
82
+          debugger;
83
+          if (i.name != "安全交底" && i.name != "技术交底" && i.name != "项目预算") {
84
+            this.treeData[0].children.push(i);
85
+          }
86
+        } else if (i.category == "borrow") {
87
+          this.treeData[1].children.push(i);
88
+        } else if (i.category == "car" || i.category == "device") {
89
+          this.treeData[2].children.push(i);
90
+        } else if (i.category == "assess") {
91
+          this.treeData[3].children.push(i);
92
+        }
93
+      }
94
+    },
95
+    handleNodeClick(data) {
96
+      console.log(data);
97
+      this.clickNode = data
98
+    },
99
+    confirm(){
100
+      this.$emit('confirm',this.clickNode)
101
+    }
102
+  },
103
+};
104
+</script>
105
+
106
+<style lang="scss" scoped>
107
+.svgIcon {
108
+  margin-right: 5px;
109
+}
110
+</style>

Loading…
取消
儲存