Browse Source

修改项目结算流程表单

余思翰 1 year ago
parent
commit
88b1c20165

+ 20
- 2
oa-ui/src/assets/datas/publicData.js View File

@@ -1,6 +1,24 @@
1 1
 const publicData = {
2 2
   partySecretary: 4, //党委书记
3 3
   leagueSecretary: 142, //团委书记
4
-  chairman: 2 //董事长
4
+  chairman: 2,//董事长
5
+  pathRoute: [
6
+    {
7
+      name: '借款审批',
8
+      path: '/applyForm/borrow'
9
+    },
10
+    {
11
+      name: '用车审批',
12
+      path: '/applyForm/carApply'
13
+    },
14
+    {
15
+      name: '设备审批',
16
+      path: '/applyForm/deviceApply'
17
+    },
18
+    {
19
+      name: '项目结算',
20
+      path: '/applyForm/settleApply'
21
+    }
22
+  ]
5 23
 }
6
-export default {publicData}
24
+export default publicData 

+ 2
- 2
oa-ui/src/assets/styles/element-ui.scss View File

@@ -98,7 +98,7 @@
98 98
 }
99 99
 
100 100
 .el-form-item__label {
101
-  font-family: '微软雅黑';
102
-  color: #34363b;
101
+  font-family:'微软雅黑', Arial, Helvetica, sans-serif;
102
+  // color: #4b4d52;
103 103
 }
104 104
 

+ 15
- 1
oa-ui/src/router/index.js View File

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-28 16:17:01
5
+ * @LastEditTime: 2024-04-30 09:53:32
6 6
  */
7 7
 /*
8 8
  * @Author: ysh
@@ -273,6 +273,20 @@ export const constantRoutes = [
273 273
         name: 'deviceApply',
274 274
         meta: { title: '设备审批', icon: '' }
275 275
 
276
+      }
277
+    ]
278
+  },
279
+  {
280
+    path: '/applyForm/settleApply',
281
+    component: Layout,
282
+    hidden: true,
283
+    children: [
284
+      {
285
+        path: '',
286
+        component: () => import('@/views/flowable/task/todo/applyForm/settleIndex'),
287
+        name: 'settleApply',
288
+        meta: { title: '项目结算', icon: '' }
289
+
276 290
       }
277 291
     ]
278 292
   }

+ 2
- 2
oa-ui/src/views/flowable/form/borrowForm.vue View File

@@ -535,9 +535,9 @@ export default {
535 535
               let userId;
536 536
               if (this.deptId == 0) {
537 537
                 if (this.form.borrowUsage == 2 || this.form.borrowUsage == 3) {
538
-                  userId = this.publicData.publicData.partySecretary
538
+                  userId = this.publicData.partySecretary
539 539
                 } else {
540
-                  userId = this.publicData.publicData.leagueSecretary
540
+                  userId = this.publicData.leagueSecretary
541 541
                 }
542 542
                 this.$set(this.taskForm.variables, "dept", this.deptId);
543 543
                 this.$set(this.taskForm.variables, "approval", userId);

+ 186
- 0
oa-ui/src/views/flowable/form/components/choosePrice.vue View File

@@ -0,0 +1,186 @@
1
+<template>
2
+  <div class="app-container">
3
+    <el-form :model="work">
4
+      <el-form-item label="工作内容">
5
+        {{ row.content }}
6
+      </el-form-item>
7
+      <el-form-item label="工作类别">
8
+        <el-select v-model="work.workType" :style="{ width: '100%' }" @change="getWorkItemList(work, work.workType)">
9
+          <el-option v-for="item in workSelect.workTypeList" :key="item.value" :label="item.label" :value="item.value">
10
+          </el-option>
11
+        </el-select>
12
+      </el-form-item>
13
+      <el-form-item label="工作项目">
14
+        <el-select v-model="work.workItem" :style="{ width: '100%' }" :remote="true"
15
+          @change="getScaleGradeList(work, work.workItem)">
16
+          <el-option v-for="item in workSelect.workItemList" :key="item.value" :label="item.label" :value="item.value">
17
+          </el-option>
18
+        </el-select>
19
+      </el-form-item>
20
+      <el-form-item label="等级或比例尺">
21
+        <el-select v-model="work.scaleGrade" :style="{ width: '100%' }"
22
+          @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
23
+          <el-option v-for="item in workSelect.scaleGradeList" :key="item.value" :label="item.label"
24
+            :value="item.value">
25
+          </el-option>
26
+        </el-select>
27
+      </el-form-item>
28
+      <el-form-item label="地类">
29
+        <el-select v-model="work.groundType" :style="{ width: '100%' }"
30
+          @change="getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType)">
31
+          <el-option key="一般地类" label="一般地类" value="0">
32
+          </el-option>
33
+          <el-option key="复杂地类" label="复杂地类" value="1">
34
+          </el-option>
35
+        </el-select>
36
+      </el-form-item>
37
+      <el-form-item label="单价">
38
+        {{ work.price }} / {{ work.unit }}
39
+      </el-form-item>
40
+    </el-form>
41
+    <el-row>
42
+      <el-button type="primary" @click="$emit('getPrice', work)">确定</el-button>
43
+      <el-button @click="$emit('cancel')">取消</el-button>
44
+    </el-row>
45
+  </div>
46
+</template>
47
+
48
+<script>
49
+import { getWorkTypeList, getWorkItemList, getSubItemList, getScaleGradeList, getUnitPrice, getPrice } from '@/api/oa/price/price'
50
+export default {
51
+  props: {
52
+    row: {
53
+      type: Object,
54
+      require: true
55
+    }
56
+  },
57
+  watch: {
58
+    row(val) {
59
+      this.getPriceById()
60
+    }
61
+  },
62
+  data() {
63
+    return {
64
+      work: {},
65
+      workSelect: {
66
+        workTypeList: [],
67
+        workItemList: [],
68
+        scaleGradeList: []
69
+      }
70
+    }
71
+  },
72
+  mounted() {
73
+    this.getPriceById();
74
+    this.getWorkTypeList()
75
+  },
76
+  methods: {
77
+    // 根据id获取单价
78
+    getPriceById() {
79
+      if (this.row.priceId) {
80
+        getPrice(this.row.priceId).then(res => {
81
+          if (res.data) {
82
+            this.setValue(this.work, 'workType', res.data.workType)
83
+            this.setValue(this.work, 'workItem', res.data.workItem)
84
+            this.setValue(this.work, 'scaleGrade', res.data.scaleGrade)
85
+            this.setValue(this.work, 'unit', res.data.unit)
86
+            this.setValue(this.work, 'groundType', this.row.groundType)
87
+            this.setValue(this.work, 'price', this.row.price)
88
+            getWorkItemList({ workType: res.data.workType }).then(res => {
89
+              if (res) {
90
+                let workItemList = this.setArray(res);
91
+                this.workSelect.workItemList = workItemList;
92
+              }
93
+            })
94
+            getScaleGradeList({ workItem: res.data.workItem }).then(res => {
95
+              let scaleGradeList = this.setArray(res);
96
+              this.workSelect.scaleGradeList = scaleGradeList;
97
+            })
98
+          }
99
+        })
100
+      } else {
101
+        this.work = {}
102
+      }
103
+    },
104
+    /* 获取工作类别 */
105
+    getWorkTypeList() {
106
+      getWorkTypeList().then(res => {
107
+        if (res) {
108
+          this.setValue(this.workSelect, 'workTypeList', this.setArray(res));
109
+        }
110
+      });
111
+    },
112
+    /* 获取工作项目 */
113
+    getWorkItemList(work, workType) {
114
+      getWorkItemList({ workType: workType }).then(res => {
115
+        if (res) {
116
+          let workItemList = this.setArray(res);
117
+          this.workSelect.workItemList = workItemList;
118
+          work.workItem = workItemList[0].label;
119
+          work.subItem = '';
120
+          this.getScaleGradeList(work, work.workItem);
121
+        }
122
+      })
123
+    },
124
+    /* 获取比例尺 */
125
+    getScaleGradeList(work, workItem) {
126
+      if (work.scale) {
127
+        this.setValue(work, 'scaleGrade', work.scale);
128
+        if (work.groundType == undefined) {
129
+          this.setValue(work, 'groundType', '0');
130
+        }
131
+        this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
132
+      } else {
133
+        getScaleGradeList({ workItem }).then(res => {
134
+          if (res) {
135
+            let scaleGradeList = this.setArray(res);
136
+            this.workSelect.scaleGradeList = scaleGradeList;
137
+            this.setValue(work, 'scaleGrade', scaleGradeList[0].label)
138
+            // work.scaleGrade = scaleGradeList[0].label;
139
+            if (work.scaleGrade == undefined) {
140
+              this.setValue(work, 'scaleGrade', '');
141
+            }
142
+            if (work.groundType == undefined) {
143
+              this.setValue(work, 'groundType', '0');
144
+            }
145
+            this.getUnitPrice(work, work.workItem, work.subItem, work.scaleGrade, work.groundType);
146
+          }
147
+        })
148
+      }
149
+
150
+    },
151
+    /* 获取单价 */
152
+    getUnitPrice(work, workItem, subItem, scaleGrade, groundType) {
153
+      getUnitPrice({ workItem, subItem, scaleGrade, groundType: groundType }).then(res => {
154
+        if (res.length != 0) {
155
+          work.priceId = res.data.id;
156
+          this.setValue(work, 'price', res.data.price)
157
+          this.setValue(work, 'unit', res.data.unit)
158
+          this.work.content = this.row.content
159
+        }
160
+      })
161
+    },
162
+
163
+    setValue(key, name, val) {
164
+      this.$set(key, name, val)
165
+    },
166
+    //数组去重
167
+    setArray(arr) {
168
+      if (arr != [] && arr != undefined) {
169
+        let datalist = [...new Set(arr)];
170
+        let list = [];
171
+        for (let i of datalist) {
172
+          let obj = new Object();
173
+          obj.label = i;
174
+          obj.value = i;
175
+          list.push(obj);
176
+        }
177
+        return list;
178
+      } else {
179
+        return [];
180
+      }
181
+    },
182
+  },
183
+}
184
+</script>
185
+
186
+<style lang="scss" scoped></style>

+ 2
- 3
oa-ui/src/views/flowable/form/projectProcess/addproject.vue View File

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-02-27 14:49:15
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-29 14:08:59
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-30 11:36:20
6 6
 -->
7 7
 
8 8
 <template>
@@ -245,7 +245,6 @@ export default {
245 245
                 } else {
246 246
                   this.contractNumber = res.data.contractNumber;
247 247
                 }
248
-                console.log(res);
249 248
               }
250 249
             })
251 250
           }

+ 6
- 6
oa-ui/src/views/flowable/form/projectProcess/businessReview.vue View File

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-08 13:56:14
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-29 14:10:25
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-30 11:27:44
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -29,7 +29,7 @@
29 29
 import { mapGetters } from 'vuex';
30 30
 import { parseTime } from "@/utils/ruoyi";
31 31
 import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
32
-import { listProjectComment, addProjectComment } from "@/api/oa/project/projectComment"
32
+import { getProjectComment, addProjectComment } from "@/api/oa/project/projectComment"
33 33
 import { listProject, getProject, addProject, updateProject, delProject, submitProject, modifyProject } from "@/api/oa/project/project";
34 34
 import { getUsersManageLeaderByDept } from '@/api/system/post'
35 35
 export default {
@@ -76,9 +76,9 @@ export default {
76 76
   },
77 77
   methods: {
78 78
     initForm() {
79
-      listProjectComment({projectId: this.taskForm.formId}).then(res => {
80
-        if (res.rows) {
81
-          this.form = res.rows
79
+      getProjectComment(this.taskForm.formId).then(res => {
80
+        if (res.data) {
81
+          this.form = res.data
82 82
           if (this.form.jyUser) {
83 83
             this.form.jyApproverName = this.form.jyUser.nickName
84 84
           }

+ 8
- 8
oa-ui/src/views/flowable/form/projectProcess/manageReview.vue View File

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-08 13:56:14
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-29 14:14:29
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-30 11:30:01
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -29,7 +29,7 @@
29 29
 import { mapGetters } from 'vuex';
30 30
 import { parseTime } from "@/utils/ruoyi";
31 31
 import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
32
-import { listProjectComment, addProjectComment, updateProjectComment } from "@/api/oa/project/projectComment"
32
+import { getProjectComment, addProjectComment, updateProjectComment } from "@/api/oa/project/projectComment"
33 33
 import { getUsersDeptLeaderByDept } from '@/api/system/post'
34 34
 export default {
35 35
   computed: {
@@ -79,16 +79,16 @@ export default {
79 79
   },
80 80
   methods: {
81 81
     initForm() {
82
-      listProjectComment({projectId: this.taskForm.formId}).then(res => {
83
-        if (res.rows) {
84
-          this.form = res.rows
82
+      getProjectComment(this.taskForm.formId).then(res => {
83
+        if (res.data) {
84
+          this.form = res.data
85 85
           if (this.taskName == '分管审核') {
86 86
             this.form.manageApprover = this.$store.state.user.userId;
87 87
             this.form.manageApproverName = this.$store.state.user.name;
88 88
             this.form.manageApprovalTime = parseTime(new Date(), '{y}-{m}-{d}')
89 89
           } else {
90
-            if (res.rows.managerUser)
91
-              this.form.manageApproverName = res.rows.managerUser.nickName
90
+            if (res.data.managerUser)
91
+              this.form.manageApproverName = res.data.managerUser.nickName
92 92
           }
93 93
         } else {
94 94
           if (this.taskName == '分管审核') {

+ 8
- 8
oa-ui/src/views/flowable/form/projectProcess/scConfirm.vue View File

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-08 13:56:14
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-29 14:15:16
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-30 11:30:34
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -30,7 +30,7 @@
30 30
 import { mapGetters } from 'vuex';
31 31
 import { parseTime } from "@/utils/ruoyi";
32 32
 import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
33
-import { listProjectComment, addProjectComment, updateProjectComment } from "@/api/oa/project/projectComment"
33
+import { getProjectComment, addProjectComment, updateProjectComment } from "@/api/oa/project/projectComment"
34 34
 import { getUsersDeptLeaderByDept } from '@/api/system/post'
35 35
 import { getProject } from '@/api/oa/project/project'
36 36
 export default {
@@ -81,12 +81,12 @@ export default {
81 81
   },
82 82
   methods: {
83 83
     initForm() {
84
-    listProjectComment({projectId: this.taskForm.formId}).then(res => {
85
-        if (res.rows) {
86
-          this.form = res.rows
84
+    getProjectComment(this.taskForm.formId).then(res => {
85
+        if (res.data) {
86
+          this.form = res.data
87 87
           this.form.scApprover = '';
88
-          if (res.rows.scApproverName) {
89
-            this.form.scApproverName = res.rows.scApproverName
88
+          if (res.data.scApproverName) {
89
+            this.form.scApproverName = res.data.scApproverName
90 90
           }
91 91
         } else {
92 92
           this.form.scApprover = '';

+ 299
- 297
oa-ui/src/views/flowable/form/settleForm.vue View File

@@ -1,124 +1,176 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-30 09:03:14
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-30 17:23:24
6
+-->
7
+<!--
8
+ * @Author: ysh
9
+ * @Date: 2024-04-30 09:03:14
10
+ * @LastEditors: Please set LastEditors
11
+ * @LastEditTime: 2024-04-30 14:15:59
12
+-->
1 13
 <template>
2 14
   <div class="app-container">
3 15
     <el-row :gutter="20">
4
-      <el-col :span="18" :xs="24">
16
+      <el-col :span="19" :xs="24">
5 17
         <h2 class="text-center">项目结算表</h2>
6
-        <el-divider></el-divider>
7
-        <el-form ref="form" :model="form" :rules="rules" label-width="120px">
8
-          <el-form-item label="项目id" prop="projectId">
18
+        <div class="headers">
19
+          项目信息
20
+          <div class="line"></div>
21
+        </div>
22
+        <el-form ref="form" :model="form" :rules="rules" label-width="160px">
23
+          <el-form-item label="项目编号" prop="projectId">
9 24
             <el-select v-model="form.projectId" filterable placeholder="请选择" @change="handleSelectProject"
10
-              :disabled="taskName != '结算发起'" clearable>
11
-              <el-option v-for="item in projectList" :key="item.value" :label="item.projectName" :value="item.projectId">
25
+              :disabled="taskName != '结算发起'" clearable style="width: 100%;">
26
+              <el-option v-for="item in projectList" :key="item.value"
27
+                :label="item.projectNumber + '-' + item.projectName" :value="item.projectId">
12 28
               </el-option>
13 29
             </el-select>
14
-            <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
15
-              <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
16
-              }}</el-descriptions-item>
17
-              <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
18
-              }}</el-descriptions-item>
19
-              <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
20
-                chooseProject.projectLeaderUser.nickName : ''
21
-              }}</el-descriptions-item>
30
+            <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="2">
31
+              <el-descriptions-item label="项目编号" label-class-name="my-label">
32
+                {{ chooseProject.projectNumber }}
33
+              </el-descriptions-item>
34
+              <el-descriptions-item label="项目名称" label-class-name="my-label">
35
+                {{ chooseProject.projectName }}
36
+              </el-descriptions-item>
37
+              <el-descriptions-item label="合同编码" label-class-name="my-label">
38
+                {{ chooseProject.contractCode }}
39
+              </el-descriptions-item>
40
+              <el-descriptions-item label="合同编号" label-class-name="my-label">
41
+                {{ chooseProject.contractNumber }}
42
+              </el-descriptions-item>
43
+              <el-descriptions-item label="项目负责人" label-class-name="my-label">
44
+                {{ chooseProject.projectLeaderUser ? chooseProject.projectLeaderUser.nickName : '' }}
45
+              </el-descriptions-item>
46
+              <el-descriptions-item label="甲方单位" label-class-name="my-label">
47
+                {{ chooseProject.partyA }}
48
+              </el-descriptions-item>
49
+              <el-descriptions-item label="联系人" label-class-name="my-label">
50
+                {{ chooseProject.contactPerson }}
51
+              </el-descriptions-item>
52
+              <el-descriptions-item label="联系电话" label-class-name="my-label">
53
+                {{ chooseProject.telephone }}
54
+              </el-descriptions-item>
55
+              <el-descriptions-item label="项目类型" label-class-name="my-label">
56
+                {{ chooseProject.projectType }}
57
+              </el-descriptions-item>
58
+              <el-descriptions-item label="项目级别" label-class-name="my-label">
59
+                {{ chooseProject.projectLevel }}
60
+              </el-descriptions-item>
61
+              <el-descriptions-item label="承担部门" label-class-name="my-label">
62
+                {{ chooseProject.undertakingDept }}
63
+              </el-descriptions-item>
64
+              <el-descriptions-item label="项目登记人" label-class-name="my-label">
65
+                {{ chooseProject.projectRegistrant }}
66
+              </el-descriptions-item>
22 67
             </el-descriptions>
23 68
           </el-form-item>
24 69
           <el-form-item label="工作量上报说明" prop="workloadReport">
25
-            <el-input v-model="form.workloadReport" placeholder="请输入工作量上报说明" />
26
-          </el-form-item>
27
-          <el-form-item label="上报人" prop="reporter">
28
-            <el-input v-model="form.reporter" placeholder="请输入上报人" />
29
-          </el-form-item>
30
-          <el-form-item label="上报日期" prop="reportTime">
31
-            <el-date-picker clearable v-model="form.reportTime" type="date" value-format="yyyy-MM-dd"
32
-              placeholder="请选择上报日期">
33
-            </el-date-picker>
34
-          </el-form-item>
35
-          <el-form-item label="结算说明" prop="settleComment">
36
-            <el-input v-model="form.settleComment" placeholder="请输入结算说明" />
37
-          </el-form-item>
38
-          <el-form-item label="综合事务部审核人" prop="zhUserId">
39
-            <el-input v-model="form.zhUserId" placeholder="请输入综合事务部审核人" />
40
-          </el-form-item>
41
-          <el-form-item label="综合事务部审核日期" prop="zhTime">
42
-            <el-date-picker clearable v-model="form.zhTime" type="date" value-format="yyyy-MM-dd"
43
-              placeholder="请选择综合事务部审核日期">
44
-            </el-date-picker>
45
-          </el-form-item>
46
-          <el-form-item label="综合事务部审核意见" prop="zhComment">
47
-            <el-input v-model="form.zhComment" placeholder="请输入综合事务部审核意见" />
48
-          </el-form-item>
49
-          <el-form-item label="技术质量部审核人" prop="jsUserId">
50
-            <el-input v-model="form.jsUserId" placeholder="请输入技术质量部审核人" />
51
-          </el-form-item>
52
-          <el-form-item label="技术质量部审核日期" prop="jsTime">
53
-            <el-date-picker clearable v-model="form.jsTime" type="date" value-format="yyyy-MM-dd"
54
-              placeholder="请选择技术质量部审核日期">
55
-            </el-date-picker>
56
-          </el-form-item>
57
-          <el-form-item label="技术质量部审核意见" prop="jsComment">
58
-            <el-input v-model="form.jsComment" placeholder="请输入技术质量部审核意见" />
59
-          </el-form-item>
60
-          <el-form-item label="项目管理部审核人" prop="xmUserId">
61
-            <el-input v-model="form.xmUserId" placeholder="请输入项目管理部审核人" />
62
-          </el-form-item>
63
-          <el-form-item label="项目管理部审核日期" prop="xmTime">
64
-            <el-date-picker clearable v-model="form.xmTime" type="date" value-format="yyyy-MM-dd"
65
-              placeholder="请选择项目管理部审核日期">
66
-            </el-date-picker>
67
-          </el-form-item>
68
-          <el-form-item label="项目管理部审核意见" prop="xmComment">
69
-            <el-input v-model="form.xmComment" placeholder="请输入项目管理部审核意见" />
70
-          </el-form-item>
71
-          <el-form-item label="承担部门审核人" prop="deptUserId">
72
-            <el-input v-model="form.deptUserId" placeholder="请输入承担部门审核人" />
73
-          </el-form-item>
74
-          <el-form-item label="承担部门审核日期" prop="deptTime">
75
-            <el-date-picker clearable v-model="form.deptTime" type="date" value-format="yyyy-MM-dd"
76
-              placeholder="请选择承担部门审核日期">
77
-            </el-date-picker>
78
-          </el-form-item>
79
-          <el-form-item label="承担部门审核意见" prop="deptComment">
80
-            <el-input v-model="form.deptComment" placeholder="请输入承担部门审核意见" />
81
-          </el-form-item>
82
-          <el-form-item label="经营发展部审核人" prop="jyUserId">
83
-            <el-input v-model="form.jyUserId" placeholder="请输入经营发展部审核人" />
70
+            <el-input v-model="form.workloadReport" type="textarea" placeholder="请输入工作量上报说明" />
84 71
           </el-form-item>
85
-          <el-form-item label="经营发展部审核日期" prop="jyTime">
86
-            <el-date-picker clearable v-model="form.jyTime" type="date" value-format="yyyy-MM-dd"
87
-              placeholder="请选择经营发展部审核日期">
88
-            </el-date-picker>
72
+          <el-row>
73
+            <el-col :span="6" :xs="24" :offset="12">
74
+              <el-form-item label="工作上报人:" prop="reporter">
75
+                <span class="auditor">
76
+                  {{ form.reporter }}
77
+                </span>
78
+              </el-form-item>
79
+            </el-col>
80
+            <el-col :span="6">
81
+              <el-form-item label="上报日期:" prop="reportTime">
82
+                <span> {{ form.reportTime }} </span>
83
+              </el-form-item>
84
+            </el-col>
85
+          </el-row>
86
+          <el-form-item label="原始上报数据" prop="">
87
+            <el-upload class="upload-demo" ref="upload" :file-list="fileList" :auto-upload="false" action="">
88
+              <el-button slot="trigger" size="mini" type="primary" icon="el-icon-upload"
89
+                :disabled="taskName != '结算发起'">选取文件</el-button>
90
+              <div slot="tip" class="el-upload__tip">只能上传docx/doc文件,且不超过500kb</div>
91
+            </el-upload>
89 92
           </el-form-item>
90
-          <el-form-item label="经营发展部审核意见" prop="jyComment">
91
-            <el-input v-model="form.jyComment" placeholder="请输入经营发展部审核意见" />
93
+          <el-form-item label="项目管理部审核结算单" prop="">
94
+            <el-upload class="upload-demo" ref="upload" :file-list="fileList" action="" :auto-upload="false">
95
+              <el-button slot="trigger" size="mini" type="primary" icon="el-icon-upload"
96
+                :disabled="taskName != '项目管理部结算'">选取文件</el-button>
97
+              <div slot="tip" class="el-upload__tip">只能上传docx/doc文件,且不超过500kb</div>
98
+            </el-upload>
92 99
           </el-form-item>
93
-          <el-form-item label="分管审核人" prop="managerUserId">
94
-            <el-input v-model="form.managerUserId" placeholder="请输入分管审核人" />
100
+          <el-form-item label="分管领导审核结算单" prop="">
101
+            <el-upload class="upload-demo" ref="upload" :file-list="fileList" action="" :auto-upload="false">
102
+              <el-button slot="trigger" size="mini" type="primary" icon="el-icon-upload"
103
+                :disabled="taskName != '分管审核'">选取文件</el-button>
104
+              <div slot="tip" class="el-upload__tip">只能上传docx/doc文件,且不超过500kb</div>
105
+            </el-upload>
95 106
           </el-form-item>
96
-          <el-form-item label="分管审核日期" prop="managerTime">
97
-            <el-date-picker clearable v-model="form.managerTime" type="date" value-format="yyyy-MM-dd"
98
-              placeholder="请选择分管审核日期">
99
-            </el-date-picker>
107
+          <el-form-item label="项目完成工作量及经费计算">
108
+            <table border="1">
109
+              <tr>
110
+                <td style="width: 50px">序号</td>
111
+                <td style="width: 180px">工作内容</td>
112
+                <td style="width: 100px">等级或比例尺</td>
113
+                <td style="width: 100px">单位</td>
114
+                <td style="width: 100px">地类</td>
115
+                <td style="width: 100px">单价</td>
116
+                <td>工作量</td>
117
+                <td>其他系数</td>
118
+                <td style="width: 100px">项目经费</td>
119
+                <td>备注</td>
120
+                <td>操作</td>
121
+              </tr>
122
+              <tr v-for="(work, index) in settleWorkList" :key="index">
123
+                <td>
124
+                  {{ index + 1 }}
125
+                </td>
126
+                <td>
127
+                  <el-input v-model="work.content" type="textarea" clearable
128
+                    :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
129
+                </td>
130
+                <td>
131
+                  {{ work.scale == '' ? '无' : work.scale }}
132
+                </td>
133
+                <td>
134
+                  {{ work.unit }}
135
+                </td>
136
+                <td>
137
+                  {{ work.groundType == '0' ? '一般地类' : '复杂地类' }}
138
+                </td>
139
+                <td>
140
+                  {{ work.price }}
141
+                </td>
142
+                <td>
143
+                  <el-input-number style="width:100px" v-model="work.workload" clearable @blur="calculateSettle(work)"
144
+                    :controls="false"></el-input-number>
145
+                </td>
146
+                <td>
147
+                  <el-input-number style="width:100px" v-model="work.coefficient" clearable
148
+                    @blur="calculateSettle(work)" :controls="false"></el-input-number>
149
+                </td>
150
+                <td>
151
+                  <!-- <el-input-number style="width:100px" v-model="work.settle" clearable :controls="false"></el-input-number> -->
152
+                  {{ work.settle }}
153
+                </td>
154
+                <td>
155
+                  <el-input v-model="work.remark" type="textarea" clearable
156
+                    :autosize="{ minRows: 4, maxRows: 10 }"></el-input>
157
+                </td>
158
+                <td>
159
+                  <el-button size="mini" type="text" @click="handleChoosePrice(work, index)">选择单价</el-button>
160
+                  <el-button type="text" size="mini" style="color: #F56C6C;"
161
+                    @click="deletWorkItem(index)">删除行</el-button>
162
+                </td>
163
+              </tr>
164
+            </table>
165
+            <el-button icon="el-icon-plus" size="mini" @click="addWorkList"></el-button>
100 166
           </el-form-item>
101
-          <el-form-item label="分管审核意见" prop="managerComment">
102
-            <el-input v-model="form.managerComment" placeholder="请输入分管审核意见" />
103
-          </el-form-item>
104
-          <el-form-item label="总经理审核人" prop="gmUserId">
105
-            <el-input v-model="form.gmUserId" placeholder="请输入总经理审核人" />
106
-          </el-form-item>
107
-          <el-form-item label="总经理审核日期" prop="gmTime">
108
-            <el-date-picker clearable v-model="form.gmTime" type="date" value-format="yyyy-MM-dd"
109
-              placeholder="请选择总经理审核日期">
110
-            </el-date-picker>
111
-          </el-form-item>
112
-          <el-form-item label="总经理审核意见" prop="gmComment">
113
-            <el-input v-model="form.gmComment" placeholder="请输入总经理审核意见" />
167
+          <el-form-item label="结算汇总">
168
+
114 169
           </el-form-item>
170
+
115 171
         </el-form>
116
-        <div style="text-align: center;">
117
-          <el-button type="primary" @click="submitForm">确 定</el-button>
118
-          <el-button @click="cancel">取 消</el-button>
119
-        </div>
120 172
       </el-col>
121
-      <el-col :span="6" :xs="24">
173
+      <el-col :span="5" :xs="24">
122 174
         <el-card>
123 175
           <h2 style="text-align: center;">流程进度</h2>
124 176
           <div>
@@ -127,20 +179,25 @@
127 179
         </el-card>
128 180
       </el-col>
129 181
     </el-row>
182
+
183
+    <el-drawer title="选择单价" :visible.sync="drawer" direction="rtl">
184
+      <choose-price :row="clickWork" @getPrice="getPrice" @cancel="drawer = false"></choose-price>
185
+    </el-drawer>
130 186
   </div>
131 187
 </template>
132 188
 
133 189
 <script>
190
+import flow from '@/views/flowable/task/todo/detail/flow'
191
+import { flowXmlAndNode } from "@/api/flowable/definition";
134 192
 import { parseTime } from "@/utils/ruoyi";
135 193
 import { listProject, getProject } from "@/api/oa/project/project";
136 194
 import { listSettle, getSettle, delSettle, addSettle, updateSettle } from "@/api/oa/settle/settle";
137
-import { complete, getNextFlowNode } from "@/api/flowable/todo";
138
-import flow from '@/views/flowable/task/todo/detail/flow'
139
-import { flowXmlAndNode } from "@/api/flowable/definition";
140
-
195
+import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
196
+import ChoosePrice from './components/choosePrice.vue';
141 197
 export default {
142 198
   components: {
143
-    flow
199
+    flow,
200
+    ChoosePrice
144 201
   },
145 202
   props: {
146 203
     taskName: {
@@ -152,116 +209,63 @@ export default {
152 209
       required: true
153 210
     }
154 211
   },
155
-  name: "Settle",
156 212
   data() {
157 213
     return {
158
-      // 遮罩层
159
-      loading: true,
160
-      // 选中数组
161
-      ids: [],
162
-      // 非单个禁用
163
-      single: true,
164
-      // 非多个禁用
165
-      multiple: true,
166
-      // 显示搜索条件
167
-      showSearch: true,
168
-      // 总条数
169
-      total: 0,
170
-      // cmc结算审批表格数据
171
-      settleList: [],
172
-      // 弹出层标题
173
-      title: "",
174
-      // 是否显示弹出层
175
-      open: false,
176
-      // 查询参数
177
-      queryParams: {
178
-        pageNum: 1,
179
-        pageSize: 10,
180
-        projectId: null,
181
-        workloadReport: null,
182
-        reporter: null,
183
-        reportTime: null,
184
-        settleComment: null,
185
-        zhUserId: null,
186
-        zhTime: null,
187
-        zhComment: null,
188
-        jsUserId: null,
189
-        jsTime: null,
190
-        jsComment: null,
191
-        xmUserId: null,
192
-        xmTime: null,
193
-        xmComment: null,
194
-        deptUserId: null,
195
-        deptTime: null,
196
-        deptComment: null,
197
-        jyUserId: null,
198
-        jyTime: null,
199
-        jyComment: null,
200
-        managerUserId: null,
201
-        managerTime: null,
202
-        managerComment: null,
203
-        gmUserId: null,
204
-        gmTime: null,
205
-        gmComment: null
206
-      },
207
-      // 表单参数
208
-      form: {},
209
-      // 表单校验
210
-      rules: {
211
-      },
212
-      chooseProject: {},
213
-      isSelect: false,
214
-      formTotal: 0,
214
+      drawer: false,
215 215
       flowData: {},
216
+      form: {},
217
+      rules: {},
216 218
       projectList: [],
217
-    };
219
+      isSelect: false,
220
+      chooseProject: {},
221
+      fileList: [],
222
+      settleWorkList: [
223
+        {
224
+          content: '',
225
+          priceId: '',
226
+          scale: '无',
227
+          unit: '',
228
+          groundType: '0',
229
+          price: '',
230
+          workload: 0,
231
+          coefficient: 1,
232
+          settle: 0,
233
+          remark: ''
234
+        }
235
+      ],
236
+      clickWork: {}
237
+    }
218 238
   },
219 239
   created() {
220
-    this.getProjectList();
221
-    this.getList();
240
+    this.getProjectList(); //获取项目列表
241
+    this.getContractDataList(); //获取合同编码和编号
242
+    this.initForm();
243
+    if (this.$route.query.projectId) {
244
+
245
+    }
222 246
     flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
223 247
       this.flowData = res.data;
224 248
     })
249
+  },
250
+  mounted() {
251
+
225 252
   },
226 253
   methods: {
227
-    // 初始化表单
228 254
     initForm() {
229
-      getSettle(this.taskForm.formId).then(res => {
230
-        if (this.isEmptyObject(res.data)) {
231
-          this.formTotal = 0;
232
-          this.form.applier = this.$store.getters.userId;
233
-          this.form.applyTime = parseTime(new Date(), '{y}-{m}-{d}')
234
-        }
235
-        else {
236
-          this.formTotal = 1;
237
-          this.form = res.data;
238
-          if (res.data.projectId) {
239
-            getProject(data.projectId).then(response => {
240
-              this.chooseProject = response.data;
241
-              this.isSelect = true
242
-            })
255
+      listSettle({ projectId: this.taskForm.formId }).then(res => {
256
+        console.log(res);
257
+        if (res.total == 1) {
258
+          this.form = res.rows[0]
259
+        } else {
260
+          if (this.taskName == '结算发起') {
261
+            this.form.reporter = this.$store.state.user.name
262
+            this.form.reportTime = parseTime(new Date(), '{y}-{m}-{d}')
243 263
           }
244
-          this.loading = false
245 264
         }
246 265
       })
247 266
     },
248
-    /** 查询cmc结算审批列表 */
249
-    getList() {
250
-      this.loading = true;
251
-      listSettle(this.queryParams).then(response => {
252
-        this.settleList = response.rows;
253
-        this.total = response.total;
254
-        this.loading = false;
255
-      });
256
-    },
257
-    // 取消按钮
258
-    cancel() {
259
-      this.open = false;
260
-      this.reset();
261
-    },
262 267
     // 查询项目列表
263 268
     getProjectList() {
264
-      this.loading = true
265 269
       listProject({
266 270
         pageNum: 1,
267 271
         pageSize: 99999999
@@ -269,7 +273,7 @@ export default {
269 273
         this.projectList = response.rows;
270 274
       })
271 275
     },
272
-    // 选择项目
276
+    // 选择项目.data
273 277
     handleSelectProject(val) {
274 278
       if (val != "" && val != undefined && val != null) {
275 279
         getProject(val).then(res => {
@@ -288,107 +292,105 @@ export default {
288 292
       }
289 293
       return true;
290 294
     },
291
-    // 表单重置
292
-    reset() {
293
-      this.form = {
294
-        settleId: null,
295
-        projectId: null,
296
-        workloadReport: null,
297
-        reporter: null,
298
-        reportTime: null,
299
-        settleComment: null,
300
-        zhUserId: null,
301
-        zhTime: null,
302
-        zhComment: null,
303
-        jsUserId: null,
304
-        jsTime: null,
305
-        jsComment: null,
306
-        xmUserId: null,
307
-        xmTime: null,
308
-        xmComment: null,
309
-        deptUserId: null,
310
-        deptTime: null,
311
-        deptComment: null,
312
-        jyUserId: null,
313
-        jyTime: null,
314
-        jyComment: null,
315
-        managerUserId: null,
316
-        managerTime: null,
317
-        managerComment: null,
318
-        gmUserId: null,
319
-        gmTime: null,
320
-        gmComment: null
321
-      };
322
-      this.resetForm("form");
323
-    },
324
-    /** 搜索按钮操作 */
325
-    handleQuery() {
326
-      this.queryParams.pageNum = 1;
327
-      this.getList();
295
+    getContractDataList() {
296
+      listProjectContract({ projectId: this.taskForm.formId }).then(res => {
297
+        if (res.rows) {
298
+          for (let row of res.rows) {
299
+            getContract(row.contractId).then(res => {
300
+              if (res.data) {
301
+                if (this.form.contractCode != '') {
302
+                  this.form.contractCode = this.form.contractCode + '、' + res.data.contractCode;
303
+                } else {
304
+                  this.form.contractCode = res.data.contractCode;
305
+                }
306
+                if (this.form.contractNumber != '') {
307
+                  this.form.contractNumber = this.form.contractNumber + '、' + res.data.contractNumber;
308
+                } else {
309
+                  this.form.contractNumber = res.data.contractNumber;
310
+                }
311
+              }
312
+            })
313
+          }
314
+        }
315
+      })
328 316
     },
329
-    /** 重置按钮操作 */
330
-    resetQuery() {
331
-      this.resetForm("queryForm");
332
-      this.handleQuery();
317
+    addWorkList() {
318
+      this.settleWorkList.push({
319
+        content: '',
320
+        priceId: '',
321
+        scale: '',
322
+        unit: '',
323
+        groundType: '0',
324
+        price: '',
325
+        workload: 0,
326
+        coefficient: 1,
327
+        settle: 0,
328
+        remark: ''
329
+      });
333 330
     },
334
-    // 多选框选中数据
335
-    handleSelectionChange(selection) {
336
-      this.ids = selection.map(item => item.settleId)
337
-      this.single = selection.length !== 1
338
-      this.multiple = !selection.length
331
+    deletWorkItem(index) {
332
+      let arr = this.settleWorkList;
333
+      if (arr.length == 1) {
334
+        return;
335
+      }
336
+      if (index >= 0 && index < arr.length) {
337
+        arr.splice(index, 1);
338
+      }
339 339
     },
340
-    /** 新增按钮操作 */
341
-    handleAdd() {
342
-      this.reset();
343
-      this.open = true;
344
-      this.title = "添加cmc结算审批";
340
+    calculateSettle(work) {
341
+      let sum = (work.workload * work.coefficient).toFixed(2)
342
+      work.settle = sum * Number(work.price)
345 343
     },
346
-    /** 修改按钮操作 */
347
-    handleUpdate(row) {
348
-      this.reset();
349
-      const settleId = row.settleId || this.ids
350
-      getSettle(settleId).then(response => {
351
-        this.form = response.data;
352
-        this.open = true;
353
-        this.title = "修改cmc结算审批";
354
-      });
344
+    handleChoosePrice(work, index) {
345
+      this.clickWork = work
346
+      this.clickWork.index = index
347
+      this.drawer = true
348
+
355 349
     },
356
-    /** 提交按钮 */
357
-    submitForm() {
358
-      this.$refs["form"].validate(valid => {
359
-        if (valid) {
360
-          if (this.formTotal != 0) {
361
-            updateSettle(this.form).then(response => {
362
-              this.$modal.msgSuccess("修改成功");
363
-              this.open = false;
364
-              this.getList();
365
-            });
366
-          } else {
367
-            addSettle(this.form).then(response => {
368
-              this.$modal.msgSuccess("新增成功");
369
-              this.open = false;
370
-              this.getList();
371
-            });
372
-          }
373
-        }
374
-      });
350
+    getPrice(val) {
351
+      let index = this.clickWork.index
352
+      this.setValue(this.settleWorkList[index], 'scale', val.scaleGrade)
353
+      this.setValue(this.settleWorkList[index], 'unit', val.unit)
354
+      this.setValue(this.settleWorkList[index], 'groundType', val.groundType)
355
+      this.setValue(this.settleWorkList[index], 'price', val.price)
356
+      this.setValue(this.settleWorkList[index], 'priceId', val.priceId)
357
+      this.calculateSettle(this.settleWorkList[index])
358
+      this.drawer = false
375 359
     },
376
-    /** 删除按钮操作 */
377
-    handleDelete(row) {
378
-      const settleIds = row.settleId || this.ids;
379
-      this.$modal.confirm('是否确认删除cmc结算审批编号为"' + settleIds + '"的数据项?').then(function () {
380
-        return delSettle(settleIds);
381
-      }).then(() => {
382
-        this.getList();
383
-        this.$modal.msgSuccess("删除成功");
384
-      }).catch(() => { });
360
+    setValue(key, name, val) {
361
+      this.$set(key, name, val)
385 362
     },
386
-    /** 导出按钮操作 */
387
-    handleExport() {
388
-      this.download('oa/settle/export', {
389
-        ...this.queryParams
390
-      }, `settle_${new Date().getTime()}.xlsx`)
391
-    }
392
-  }
393
-};
363
+  },
364
+}
394 365
 </script>
366
+
367
+<style lang="scss" scoped>
368
+@import "@/assets/styles/element-reset.scss";
369
+
370
+.headers {
371
+  position: relative;
372
+  font-weight: bold;
373
+  font-size: 18px;
374
+  padding-left: 40px;
375
+  padding-bottom: 40px;
376
+
377
+  .line {
378
+    position: absolute;
379
+    left: 22px;
380
+    top: 5px;
381
+    width: 5px;
382
+    height: 14px;
383
+    border-radius: 10px;
384
+    background-color: #2893e5;
385
+  }
386
+}
387
+
388
+table {
389
+  /*边框*/
390
+  /* border: 1px solid black; */
391
+  text-align: center;
392
+  border-collapse: collapse;
393
+  /*设置背景颜色*/
394
+  /* background-color: #bfa; */
395
+}
396
+</style>

+ 31
- 14
oa-ui/src/views/flowable/task/myProcess/index.vue View File

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-04-29 16:39:09
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-30 10:05:21
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -204,7 +204,25 @@ export default {
204 204
       },
205 205
       // 当前点击的行数据
206 206
       clickRow: {},
207
-      passingParam: {}
207
+      passingParam: {},
208
+      pathRoute: [
209
+        {
210
+          name: '借款审批',
211
+          path: '/applyForm/borrow'
212
+        },
213
+        {
214
+          name: '用车审批',
215
+          path: '/applyForm/carApply'
216
+        },
217
+        {
218
+          name: '设备审批',
219
+          path: '/applyForm/deviceApply'
220
+        },
221
+        {
222
+          name: '项目结算',
223
+          path: '/applyForm/settleApply'
224
+        }
225
+      ]
208 226
     };
209 227
   },
210 228
   created() {
@@ -358,14 +376,13 @@ export default {
358 376
     },
359 377
     getRoutePath(row) {
360 378
       let path;
361
-      if (row.name == '借款审批') {
362
-        path = '/applyForm/borrow'
363
-      }else if (row.name == '用车审批'){
364
-        path = '/applyForm/carApply'
365
-      }else if (row.name == '设备审批'){
366
-        path = '/applyForm/deviceApply'
367
-      } else {
368
-        path = '/flowable/task/todo/detail/index'
379
+      for (let p of this.publicData.pathRoute) {
380
+        if (p.name == row.name) {
381
+          path = p.path
382
+          break
383
+        } else {
384
+          path = '/flowable/task/todo/detail/index'
385
+        }
369 386
       }
370 387
       return path
371 388
     },
@@ -448,11 +465,11 @@ export default {
448 465
     },
449 466
     // 子流程不可以删除
450 467
     beDeleted(row) {
451
-      if (row.procDefName == '项目预算' || row.procDefName == '技术交底' || row.procDefName == '安全交底'  || row.finishTime != null) {
468
+      if (row.procDefName == '项目预算' || row.procDefName == '技术交底' || row.procDefName == '安全交底' || row.finishTime != null) {
452 469
         return true
453
-      }else if (row.procDefName == '项目流转' && row.taskName != '项目登记') {
470
+      } else if (row.procDefName == '项目流转' && row.taskName != '项目登记') {
454 471
         return true
455
-      }else {
472
+      } else {
456 473
         return false
457 474
       }
458 475
     },

+ 106
- 0
oa-ui/src/views/flowable/task/todo/applyForm/settleIndex.vue View File

@@ -0,0 +1,106 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-26 17:01:15
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-28 14:30:48
6
+-->
7
+<template>
8
+  <div class="app-container">
9
+    <nav-header :taskForm="taskForm" :taskName="taskName" :startUser="startUser"
10
+      :flowRecordList="flowRecordList"></nav-header>
11
+    <settle-form :taskForm="taskForm" :taskName="taskName" @goBack="goBack"></settle-form>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+import { flowRecord } from "@/api/flowable/finished";
17
+import { getProcessVariables, flowXmlAndNode, definitionStart } from "@/api/flowable/definition";
18
+import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
19
+import navHeader from './components/navHeader.vue'
20
+import SettleForm from '../../../form/settleForm.vue';
21
+export default {
22
+  components: {
23
+    navHeader,
24
+    SettleForm,
25
+  },
26
+  data() {
27
+    return {
28
+      taskForm: {
29
+        returnTaskShow: false, // 是否展示回退表单
30
+        delegateTaskShow: false, // 是否展示回退表单
31
+        defaultTaskShow: true, // 默认处理
32
+        comment: "", // 意见内容
33
+        procInsId: "", // 流程实例编号
34
+        instanceId: "", // 流程实例编号
35
+        deployId: "",  // 流程定义编号
36
+        taskId: "",// 流程任务编号
37
+        procDefId: "",  // 流程编号
38
+        targetKey: "",
39
+        variables: {
40
+          variables: {}
41
+        },
42
+      },
43
+      startUser: null, // 发起人信息,
44
+      taskName: null, // 任务节点
45
+      flowRecordList: []
46
+    }
47
+  },
48
+  created() {
49
+    if (this.$route.query) {
50
+      this.taskName = this.$route.query.taskName;
51
+      this.startUser = this.$route.query.startUser;
52
+      this.taskForm.deployId = this.$route.query.deployId;
53
+      this.taskForm.taskId = this.$route.query.taskId;
54
+      this.taskForm.procInsId = this.$route.query.procInsId;
55
+      this.taskForm.executionId = this.$route.query.executionId;
56
+      this.taskForm.instanceId = this.$route.query.procInsId;
57
+      this.taskForm.formId = this.$route.query.formId;
58
+      this.taskForm.procDefName = this.$route.query.procDefName;
59
+      // 流程任务获取变量信息
60
+      if (this.taskForm.taskId) {
61
+        this.processVariables(this.taskForm.taskId)
62
+        this.getFlowTaskForm(this.taskForm.taskId)
63
+      }
64
+      this.getFlowRecordList(this.taskForm.procInsId, this.taskForm.deployId);
65
+    }
66
+  },
67
+  methods: {
68
+    /** 获取流程变量内容 */
69
+    processVariables(taskId) {
70
+      if (taskId) {
71
+        // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
72
+        getProcessVariables(taskId).then(res => {
73
+        });
74
+      }
75
+    },
76
+    /** 流程节点表单 */
77
+    getFlowTaskForm(taskId) {
78
+      if (taskId) {
79
+        // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
80
+        flowTaskForm({ taskId: taskId }).then(res => {
81
+          this.taskForm.variables = res.data.formData;
82
+        });
83
+      }
84
+    },
85
+    /** 流程流转记录 */
86
+    getFlowRecordList(procInsId, deployId) {
87
+      const that = this
88
+      const params = { procInsId: procInsId, deployId: deployId }
89
+      flowRecord(params).then(res => {
90
+        that.flowRecordList = res.data.flowList;
91
+      }).catch(res => {
92
+        this.goBack();
93
+      })
94
+    },
95
+    goBack() {
96
+      // 关闭当前标签页并返回上个页面
97
+      const obj = this.$route;
98
+      this.$tab.closeOpenPage(obj);
99
+      this.$router.go(-1);
100
+    }
101
+  }
102
+
103
+}
104
+</script>
105
+
106
+<style lang="scss" scoped></style>

+ 8
- 9
oa-ui/src/views/flowable/task/todo/index.vue View File

@@ -66,7 +66,7 @@ import {
66 66
   delDeployment,
67 67
   exportDeployment
68 68
 } from "@/api/flowable/todo";
69
-import { getProcessVariables } from "@/api/flowable/definition";
69
+import { getProcessVariables } from "@/api/flowable/definition"
70 70
 export default {
71 71
   name: "Deploy",
72 72
   components: {},
@@ -138,14 +138,13 @@ export default {
138 138
     },
139 139
     getRoutePath(row) {
140 140
       let path;
141
-      if (row.procDefName == '借款审批') {
142
-        path = '/applyForm/borrow'
143
-      } else if (row.procDefName == '用车审批') {
144
-        path = '/applyForm/carApply'
145
-      } else if (row.procDefName == '设备审批') {
146
-        path = '/applyForm/deviceApply'
147
-      } else {
148
-        path = '/flowable/task/todo/detail/index'
141
+      for (let p of this.publicData.pathRoute) {
142
+        if (p.name == row.procDefName) {
143
+          path = p.path
144
+          break
145
+        } else {
146
+          path = '/flowable/task/todo/detail/index'
147
+        }
149 148
       }
150 149
       return path
151 150
     },

Loading…
Cancel
Save