Sfoglia il codice sorgente

新增单独审批项的页面,修改跳转

余思翰 1 anno fa
parent
commit
6c8d9788a0

+ 5
- 0
oa-ui/src/assets/styles/element-reset.scss Vedi File

@@ -33,4 +33,9 @@
33 33
 }
34 34
 ::v-deep .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{
35 35
   border-color: #fff;
36
+}
37
+
38
+// 描述框
39
+::v-deep .el-descriptions-item__label.is-bordered-label{
40
+  color: #686a6e;
36 41
 }

+ 30
- 2
oa-ui/src/router/index.js Vedi 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-26 17:07:38
5
+ * @LastEditTime: 2024-04-28 16:17:01
6 6
  */
7 7
 /*
8 8
  * @Author: ysh
@@ -243,7 +243,35 @@ export const constantRoutes = [
243 243
         path: '',
244 244
         component: () => import('@/views/flowable/task/todo/applyForm/borrowIndex'),
245 245
         name: 'borrow',
246
-        meta: { title: '借款申请', icon: '' }
246
+        meta: { title: '借款审批', icon: '' }
247
+
248
+      }
249
+    ]
250
+  },
251
+  {
252
+    path: '/applyForm/carApply',
253
+    component: Layout,
254
+    hidden: true,
255
+    children: [
256
+      {
257
+        path: '',
258
+        component: () => import('@/views/flowable/task/todo/applyForm/carIndex'),
259
+        name: 'carApply',
260
+        meta: { title: '用车审批', icon: '' }
261
+
262
+      }
263
+    ]
264
+  },
265
+  {
266
+    path: '/applyForm/deviceApply',
267
+    component: Layout,
268
+    hidden: true,
269
+    children: [
270
+      {
271
+        path: '',
272
+        component: () => import('@/views/flowable/task/todo/applyForm/deviceIndex'),
273
+        name: 'deviceApply',
274
+        meta: { title: '设备审批', icon: '' }
247 275
 
248 276
       }
249 277
     ]

+ 52
- 37
oa-ui/src/views/flowable/form/borrow/borrowData.vue Vedi File

@@ -2,11 +2,20 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-25 17:17:53
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-26 17:20:15
5
+ * @LastEditTime: 2024-04-28 17:45:52
6 6
 -->
7 7
 <template>
8 8
   <div class="mt20">
9
-    <el-button class="mb20" type="primary" plain size="mini" icon="el-icon-plus" @click="addBorrowFlow">新增借款</el-button>
9
+    <div class="nav-btn">
10
+      <div>
11
+        <el-button class="mb20" type="primary" plain size="mini" icon="el-icon-plus"
12
+          @click="addBorrowFlow">新增借款</el-button>
13
+      </div>
14
+      <div>
15
+        <el-button icon="el-icon-refresh" circle size="mini" @click="getBorrowData()"></el-button>
16
+      </div>
17
+    </div>
18
+
10 19
     <el-table :data="borrowList" style="width: 100%">
11 20
       <el-table-column type="index" label="序号" width="50" />
12 21
       <el-table-column label="申请状态" width="100">
@@ -19,7 +28,7 @@
19 28
       <el-table-column prop="borrowUsage" label="申请类型" width="100">
20 29
         <template slot-scope="scope">
21 30
           <el-tag :type="scope.row.borrowUsage === '0' ? 'primary' : 'info'">{{ scope.row.borrowUsage === '0' ?
22
-      '项目借款' : '非项目借款' }}</el-tag>
31
+            '项目借款' : '非项目借款' }}</el-tag>
23 32
         </template>
24 33
       </el-table-column>
25 34
       <el-table-column prop="applyAmount" label="申请金额" />
@@ -29,24 +38,24 @@
29 38
       <el-table-column prop="applyDate" label="申请时间" width="110" />
30 39
       <el-table-column prop="deptComment" label="部门审核意见" show-overflow-tooltip width="100">
31 40
         <template slot-scope="scope">
32
-          {{ scope.deptComment == null ? '待审' : scope.deptComment }}
41
+          {{ scope.row.deptComment == null ? '待审' : scope.row.deptComment }}
33 42
         </template>
34 43
       </el-table-column>
35 44
       <el-table-column prop="managerComment" label="分管审核意见" show-overflow-tooltip width="100">
36 45
         <template slot-scope="scope">
37
-          {{ scope.managerComment == null ? '待审' : scope.managerComment }}
46
+          {{ scope.row.managerComment == null ? '待审' : scope.row.managerComment }}
38 47
         </template>
39 48
       </el-table-column>
40 49
       <el-table-column prop="zjlComment" label="总经理审核意见" show-overflow-tooltip width="120">
41 50
         <template slot-scope="scope">
42
-          {{ scope.zjlComment == null ? '待审' : scope.zjlComment }}
51
+          {{ scope.row.zjlComment == null ? '待审' : scope.row.zjlComment }}
43 52
         </template>
44 53
       </el-table-column>
45
-      <el-table-column prop="deptComment" label="财务经办人" show-overflow-tooltip width="100">
54
+      <el-table-column prop="CwUserId" label="财务经办人" show-overflow-tooltip width="100">
46 55
       </el-table-column>
47 56
       <el-table-column prop="lendTime" label="支付时间">
48 57
       </el-table-column>
49
-      <el-table-column label="操作" fixed="right">
58
+      <el-table-column label="操作" fixed="right" header-align="center">
50 59
         <template slot-scope="scope">
51 60
           <el-button icon="el-icon-view" type="text" size="mini" @click="handleLook(scope.row)">查看明细</el-button>
52 61
         </template>
@@ -83,6 +92,7 @@ import { getNextFlowNodeByStart } from "@/api/flowable/todo";
83 92
 import { definitionStart, flowXmlAndNode } from "@/api/flowable/definition";
84 93
 import { todoList } from "@/api/flowable/todo";
85 94
 import { Snowflake } from '@/utils/snowFlake.js'
95
+import { MessageBox } from 'element-ui'
86 96
 export default {
87 97
   props: {
88 98
     taskForm: {
@@ -108,7 +118,6 @@ export default {
108 118
       listBorrow({ projectId: this.taskForm.formId }).then(res => {
109 119
         if (res.code == 200) {
110 120
           this.borrowList = res.rows
111
-          console.log(res);
112 121
         }
113 122
       })
114 123
     },
@@ -116,7 +125,6 @@ export default {
116 125
       getBorrowDetail(borrowId).then(res => {
117 126
         if (res.data.length != 0) {
118 127
           this.detailList = res.data
119
-          console.log(res);
120 128
         }
121 129
       });
122 130
     },
@@ -134,32 +142,35 @@ export default {
134 142
         const formData = {};
135 143
         formData.formId = formId
136 144
         if (row.id) {
137
-          variables.variables = formData;
138
-          // 启动流程并将表单数据加入流程变量
139
-          definitionStart(row.id, JSON.stringify(variables)).then(res => {
140
-            this.$modal.msgSuccess(res.msg);
141
-            let procInstanceId = res.data;
142
-            todoList({
143
-              pageNum: 1,
144
-              pageSize: 99999999,
145
-              processInsId: procInstanceId
146
-            }).then(toDoRes => {
147
-              let records = toDoRes.data.records;
148
-              if (records.length == 1) {
149
-                records = records[0]
150
-              }
151
-              this.$router.push({
152
-                path: '/applyForm/borrow',
153
-                query: {
154
-                  procInsId: records.procInsId,
155
-                  executionId: records.executionId,
156
-                  deployId: records.deployId,
157
-                  taskId: records.taskId,
158
-                  taskName: records.taskName,
159
-                  startUser: records.startUserName + '-' + records.startDeptName,
160
-                  formId: formData.formId,
161
-                  procDefName: records.procDefName
145
+          MessageBox.confirm('是否发起借款申请?', '系统提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
146
+            variables.variables = formData;
147
+            // 启动流程并将表单数据加入流程变量
148
+            definitionStart(row.id, JSON.stringify(variables)).then(res => {
149
+              this.$modal.msgSuccess(res.msg);
150
+              let procInstanceId = res.data;
151
+              todoList({
152
+                pageNum: 1,
153
+                pageSize: 99999999,
154
+                processInsId: procInstanceId
155
+              }).then(toDoRes => {
156
+                let records = toDoRes.data.records;
157
+                if (records.length == 1) {
158
+                  records = records[0]
162 159
                 }
160
+                this.$router.push({
161
+                  path: '/applyForm/borrow',
162
+                  query: {
163
+                    procInsId: records.procInsId,
164
+                    executionId: records.executionId,
165
+                    deployId: records.deployId,
166
+                    taskId: records.taskId,
167
+                    taskName: records.taskName,
168
+                    startUser: records.startUserName + '--' + records.startDeptName,
169
+                    formId: formData.formId,
170
+                    procDefName: records.procDefName,
171
+                    projectId: this.taskForm.formId
172
+                  }
173
+                })
163 174
               })
164 175
             })
165 176
           })
@@ -173,11 +184,15 @@ export default {
173 184
         name: '借款审批'
174 185
       }).then(response => {
175 186
         this.definitionList = response.data.records;
176
-        console.log(this.definitionList);
177 187
       });
178 188
     },
179 189
   }
180 190
 }
181 191
 </script>
182 192
 
183
-<style lang="scss" scoped></style>
193
+<style lang="scss" scoped>
194
+.nav-btn {
195
+  display: flex;
196
+  justify-content: space-between;
197
+}
198
+</style>

+ 12
- 1
oa-ui/src/views/flowable/form/borrowForm.vue Vedi File

@@ -355,6 +355,16 @@ export default {
355 355
     this.form.dept.deptName = this.$store.getters.deptName;
356 356
     this.deptId = this.$store.getters.deptId;
357 357
     this.getProjectList();
358
+    if (this.$route.query.projectId) {
359
+      getProject(this.$route.query.projectId).then(res=>{
360
+        if(res.data){
361
+          this.form.projectId = res.data.projectId;
362
+          this.handleSelectProject(res.data.projectId)
363
+        }
364
+      })
365
+    }else{
366
+      this.handleSelectProject(this.form.projectId)
367
+    }
358 368
     flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
359 369
       this.flowData = res.data;
360 370
     })
@@ -377,7 +387,8 @@ export default {
377 387
         else {
378 388
           this.formTotal = 1;
379 389
           this.form = res.data;
380
-          this.hanldeChangeType()
390
+          this.hanldeChangeType();
391
+          this.handleSelectProject(res.data.projectId)
381 392
         }
382 393
         this.loading = false;
383 394
       })

+ 21
- 4
oa-ui/src/views/flowable/task/myProcess/index.vue Vedi 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-25 14:32:14
5
+ * @LastEditTime: 2024-04-28 17:14:47
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -311,6 +311,7 @@ export default {
311 311
           formData.formId = formId
312 312
           if (row.id) {
313 313
             variables.variables = formData;
314
+            let routePath = this.getRoutePath(row);
314 315
             // 启动流程并将表单数据加入流程变量
315 316
             definitionStart(row.id, JSON.stringify(variables)).then(res => {
316 317
               this.$modal.msgSuccess(res.msg);
@@ -324,7 +325,7 @@ export default {
324 325
                   records = records[0]
325 326
                 }
326 327
                 this.$router.push({
327
-                  path: '/flowable/task/todo/detail/index',
328
+                  path: routePath,
328 329
                   query: {
329 330
                     procInsId: records.procInsId,
330 331
                     executionId: records.executionId,
@@ -355,6 +356,19 @@ export default {
355 356
       // }
356 357
 
357 358
     },
359
+    getRoutePath(row) {
360
+      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'
369
+      }
370
+      return path
371
+    },
358 372
     /**  取消流程申请 */
359 373
     handleStop(row) {
360 374
       const params = {
@@ -434,9 +448,12 @@ export default {
434 448
     },
435 449
     // 子流程不可以删除
436 450
     beDeleted(row) {
437
-      if (row.procDefName == '项目预算' || row.procDefName == '技术交底' || row.procDefName == '安全交底' || row.finishTime != null) {
451
+      console.log(row);
452
+      if (row.procDefName == '项目预算' || row.procDefName == '技术交底' || row.procDefName == '安全交底'  || row.finishTime != null) {
438 453
         return true
439
-      } else {
454
+      }else if (row.procDefName == '项目流转' && row.taskName != '项目登记') {
455
+        return true
456
+      }else {
440 457
         return false
441 458
       }
442 459
     },

+ 88
- 5
oa-ui/src/views/flowable/task/todo/applyForm/borrowIndex.vue Vedi File

@@ -2,21 +2,104 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-26 17:01:15
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-04-26 17:12:03
5
+ * @LastEditTime: 2024-04-28 14:30:48
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
9
-    <nav-header></nav-header>
9
+    <nav-header :taskForm="taskForm" :taskName="taskName" :startUser="startUser"
10
+      :flowRecordList="flowRecordList"></nav-header>
11
+    <borrow-form :taskForm="taskForm" :taskName="taskName" @goBack="goBack"></borrow-form>
10 12
   </div>
11 13
 </template>
12 14
 
13 15
 <script>
14
-import navHeader from './components/header.vue'
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 BorrowForm from '@/views/flowable/form/borrowForm.vue';
20
+import navHeader from './components/navHeader.vue'
15 21
 export default {
16 22
   components: {
17
-    navHeader
23
+    navHeader,
24
+    BorrowForm
18 25
   },
19
-  
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
+
20 103
 }
21 104
 </script>
22 105
 

oa-ui/src/views/flowable/task/todo/applyForm/components/header.vue → oa-ui/src/views/flowable/task/todo/applyForm/carIndex.vue Vedi File

@@ -1,8 +1,14 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-28 15:38:55
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-28 16:36:27
6
+-->
1 7
 <template>
2
-  <div slot="header" class="clearfix">
3
-    <span class="el-icon-document">任务标题:{{ this.$route.meta.title }}</span>
4
-    <el-tag style="margin-left:10px">发起人:{{ startUser }}</el-tag>
5
-    <el-tag>任务节点:{{ taskName }}</el-tag>
8
+  <div class="app-container">
9
+    <nav-header :taskForm="taskForm" :taskName="taskName" :startUser="startUser"
10
+      :flowRecordList="flowRecordList"></nav-header>
11
+    <car-form :taskForm="taskForm" :taskName="taskName" @goBack="goBack"></car-form>
6 12
   </div>
7 13
 </template>
8 14
 
@@ -10,9 +16,12 @@
10 16
 import { flowRecord } from "@/api/flowable/finished";
11 17
 import { getProcessVariables, flowXmlAndNode, definitionStart } from "@/api/flowable/definition";
12 18
 import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm } from "@/api/flowable/todo";
19
+import navHeader from './components/navHeader.vue'
20
+import CarForm from '@/views/flowable/form/carForm.vue';
13 21
 export default {
14
-  props: {
15
-
22
+  components: {
23
+    navHeader,
24
+    CarForm
16 25
   },
17 26
   data() {
18 27
     return {
@@ -33,7 +42,7 @@ export default {
33 42
       },
34 43
       startUser: null, // 发起人信息,
35 44
       taskName: null, // 任务节点
36
-      flowRecordList:[]
45
+      flowRecordList: []
37 46
     }
38 47
   },
39 48
   created() {
@@ -83,7 +92,14 @@ export default {
83 92
         this.goBack();
84 93
       })
85 94
     },
95
+    goBack() {
96
+      // 关闭当前标签页并返回上个页面
97
+      const obj = this.$route;
98
+      this.$tab.closeOpenPage(obj);
99
+      this.$router.go(-1);
100
+    }
86 101
   }
102
+
87 103
 }
88 104
 </script>
89 105
 

+ 66
- 0
oa-ui/src/views/flowable/task/todo/applyForm/components/flowNote.vue Vedi File

@@ -0,0 +1,66 @@
1
+<template>
2
+  <div>
3
+    <div class="block" style="padding-right: 20px;">
4
+      <el-timeline>
5
+        <el-timeline-item v-for="(item, index ) in flowRecordList" :key="index" :icon="setIcon(item.finishTime)"
6
+          :color="setColor(item.finishTime)">
7
+          <p style="font-weight: 700">{{ item.taskName }}</p>
8
+          <el-card :body-style="{ padding: '10px' }">
9
+            <el-descriptions class="margin-top" :column="1" size="small" border>
10
+              <el-descriptions-item v-if="item.assigneeName" label-class-name="my-label">
11
+                <template slot="label"><i class="el-icon-user"></i>办理人</template>
12
+                {{ item.assigneeName }}
13
+                <el-tag type="info" size="mini">{{ item.deptName }}</el-tag>
14
+              </el-descriptions-item>
15
+              <el-descriptions-item v-if="item.candidate" label-class-name="my-label">
16
+                <template slot="label"><i class="el-icon-user"></i>候选办理</template>
17
+                {{ item.candidate }}
18
+              </el-descriptions-item>
19
+              <el-descriptions-item label-class-name="my-label">
20
+                <template slot="label"><i class="el-icon-date"></i>接收时间</template>
21
+                {{ item.createTime }}
22
+              </el-descriptions-item>
23
+              <el-descriptions-item v-if="item.finishTime" label-class-name="my-label">
24
+                <template slot="label"><i class="el-icon-date"></i>处理时间</template>
25
+                {{ item.finishTime }}
26
+              </el-descriptions-item>
27
+              <el-descriptions-item v-if="item.duration" label-class-name="my-label">
28
+                <template slot="label"><i class="el-icon-time"></i>耗时</template>
29
+                {{ item.duration }}
30
+              </el-descriptions-item>
31
+            </el-descriptions>
32
+          </el-card>
33
+        </el-timeline-item>
34
+      </el-timeline>
35
+    </div>
36
+  </div>
37
+</template>
38
+
39
+<script>
40
+export default {
41
+  props: {
42
+    flowRecordList: {
43
+      type: Array,
44
+      require: true
45
+    }
46
+  },
47
+  methods: {
48
+    setIcon(val) {
49
+      if (val) {
50
+        return "el-icon-check";
51
+      } else {
52
+        return "el-icon-time";
53
+      }
54
+    },
55
+    setColor(val) {
56
+      if (val) {
57
+        return "#2bc418";
58
+      } else {
59
+        return "#b3bdbb";
60
+      }
61
+    },
62
+  }
63
+}
64
+</script>
65
+
66
+<style lang="scss" scoped></style>

+ 62
- 0
oa-ui/src/views/flowable/task/todo/applyForm/components/navHeader.vue Vedi File

@@ -0,0 +1,62 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-26 17:08:19
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-28 16:59:42
6
+-->
7
+<template>
8
+  <div>
9
+    <div slot="header" class="nav-item">
10
+      <div>
11
+        <span class="el-icon-document"> 任务标题:{{ this.$route.meta.title }}</span>
12
+        <el-tag style="margin-left:10px">发起人:{{ startUser }}</el-tag>
13
+        <el-tag class="ml20">任务节点:{{ taskName }}</el-tag>
14
+      </div>
15
+      <div>
16
+        <el-button type="primary" @click="drawer = true" size="mini" icon="el-icon-search">查看流转记录</el-button>
17
+      </div>
18
+    </div>
19
+    <el-divider></el-divider>
20
+    <el-drawer title="流转记录" :visible.sync="drawer" direction="rtl">
21
+      <flow-note :flowRecordList="flowRecordList"></flow-note>
22
+    </el-drawer>
23
+  </div>
24
+
25
+</template>
26
+
27
+<script>
28
+import flowNote from './flowNote.vue';
29
+export default {
30
+  components: { flowNote },
31
+  props: {
32
+    taskForm: {
33
+      type: Object,
34
+      require: true
35
+    },
36
+    taskName: {
37
+      type: String,
38
+      require: true
39
+    },
40
+    startUser: {
41
+      type: String,
42
+      require: true
43
+    },
44
+    flowRecordList: {
45
+      type: Array,
46
+      require: true
47
+    }
48
+  },
49
+  data() {
50
+    return {
51
+      drawer: false
52
+    }
53
+  }
54
+}
55
+</script>
56
+
57
+<style lang="scss" scoped>
58
+.nav-item {
59
+  display: flex;
60
+  justify-content: space-between;
61
+}
62
+</style>

+ 112
- 0
oa-ui/src/views/flowable/task/todo/applyForm/deviceIndex.vue Vedi File

@@ -0,0 +1,112 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2024-04-28 15:38:55
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2024-04-28 16:34:45
6
+-->
7
+<template>
8
+  <div class="app-container">
9
+    <nav-header :taskForm="taskForm" :taskName="taskName" :startUser="startUser"
10
+      :flowRecordList="flowRecordList"></nav-header>
11
+    <device-form :taskForm="taskForm" :taskName="taskName" @goBack="goBack"></device-form>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+import { flowRecord } from "@/api/flowable/finished";
17
+import { getProcessVariables, flowXmlAndNode, definitionStart, getFlowViewer } 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 DeviceForm from '@/views/flowable/form/deviceForm.vue';
21
+export default {
22
+  components: {
23
+    navHeader,
24
+    DeviceForm
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
+      this.getFlowViewer(this.taskForm.procInsId,this.taskForm.executionId);
66
+    }
67
+  },
68
+  methods: {
69
+    /** 获取流程变量内容 */
70
+    processVariables(taskId) {
71
+      if (taskId) {
72
+        // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
73
+        getProcessVariables(taskId).then(res => {
74
+        });
75
+      }
76
+    },
77
+    /** 流程节点表单 */
78
+    getFlowTaskForm(taskId) {
79
+      if (taskId) {
80
+        // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
81
+        flowTaskForm({ taskId: taskId }).then(res => {
82
+          this.taskForm.variables = res.data.formData;
83
+        });
84
+      }
85
+    },
86
+    /** 流程流转记录 */
87
+    getFlowRecordList(procInsId, deployId) {
88
+      const that = this
89
+      const params = { procInsId: procInsId, deployId: deployId }
90
+      flowRecord(params).then(res => {
91
+        that.flowRecordList = res.data.flowList;
92
+      }).catch(res => {
93
+        this.goBack();
94
+      })
95
+    },
96
+    getFlowViewer(procInsId,executionId) {
97
+      getFlowViewer(procInsId,executionId).then(res => {
98
+        console.log(res.data);
99
+      })
100
+    },
101
+    goBack() {
102
+      // 关闭当前标签页并返回上个页面
103
+      const obj = this.$route;
104
+      this.$tab.closeOpenPage(obj);
105
+      this.$router.go(-1);
106
+    }
107
+  }
108
+
109
+}
110
+</script>
111
+
112
+<style lang="scss" scoped></style>

+ 17
- 4
oa-ui/src/views/flowable/task/todo/index.vue Vedi File

@@ -34,11 +34,11 @@
34 34
         <template slot-scope="scope">
35 35
           <el-tag size="medium">v{{ scope.row.procDefVersion }}</el-tag>
36 36
         </template>
37
-      </el-table-column> -->
37
+</el-table-column> -->
38 38
       <el-table-column label="流程发起人" align="center">
39 39
         <template slot-scope="scope">
40 40
           <label>{{ scope.row.startUserName }} <el-tag type="info" size="mini">{{ scope.row.startDeptName
41
-          }}</el-tag></label>
41
+              }}</el-tag></label>
42 42
         </template>
43 43
       </el-table-column>
44 44
       <el-table-column label="接收时间" align="center" prop="createTime" width="180" />
@@ -118,9 +118,10 @@ export default {
118 118
     },
119 119
     // 跳转到处理页面
120 120
     handleProcess(row) {
121
+      let path = this.getRoutePath(row);
121 122
       getProcessVariables(row.taskId).then(res => {
122 123
         this.$router.push({
123
-          path: '/flowable/task/todo/detail/index',
124
+          path: path,
124 125
           query: {
125 126
             procInsId: row.procInsId,
126 127
             executionId: row.executionId,
@@ -135,6 +136,19 @@ export default {
135 136
       })
136 137
 
137 138
     },
139
+    getRoutePath(row) {
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'
149
+      }
150
+      return path
151
+    },
138 152
     // 取消按钮
139 153
     cancel() {
140 154
       this.open = false;
@@ -189,4 +203,3 @@ export default {
189 203
   }
190 204
 };
191 205
 </script>
192
-

Loading…
Annulla
Salva