@lambo-design/workflow-approve 1.0.0-beta.59 → 1.0.0-beta.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design/workflow-approve",
3
- "version": "1.0.0-beta.59",
3
+ "version": "1.0.0-beta.60",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
@@ -41,6 +41,7 @@
41
41
  </FormItem>
42
42
  </Col>
43
43
  </Row>
44
+
44
45
  <FormItem>
45
46
  </FormItem>
46
47
  </Form>
@@ -58,7 +59,6 @@
58
59
  <script>
59
60
  import ajax from "@lambo-design/shared/utils/ajax";
60
61
  import LamboPagingTable from '@lambo-design/paging-table'
61
- import LamboQueryFilter from '@lambo-design/query-filter'
62
62
 
63
63
  export default {
64
64
  name: "UserHelpBox",
@@ -74,6 +74,8 @@
74
74
  v-else-if="item.auditResult === '62'">委派任务被撤回</span>
75
75
  <span style="color: #19be6b; font-size: 13px;"
76
76
  v-else-if="item.auditResult === '80'">跳转指定节点</span>
77
+ <span style="color: #005aff; font-size: 13px;"
78
+ v-else-if="item.auditResult === '82'">指定他人处理</span>
77
79
  <span style="color: #ed4014; font-size: 13px;"
78
80
  v-else-if="item.auditResult === '83'">会签减签</span>
79
81
  <span style="color: #19be6b; font-size: 13px;"
package/src/portrait.vue CHANGED
@@ -777,9 +777,12 @@ export default {
777
777
  } else if (row.auditResult == '80') {
778
778
  label = '跳转到指定节点'
779
779
  tagColor = 'cyan' // 青色
780
+ } else if (row.auditResult == '82') {
781
+ label = '指定他人处理'
782
+ tagColor = 'cyan' // 青色
780
783
  } else if (row.auditResult == '83') {
781
784
  label = '会签减签'
782
- tagColor = 'red' // 青色
785
+ tagColor = 'red' // 红色
783
786
  } else if (row.auditResult == '90') {
784
787
  label = '驳回到指定节点'
785
788
  tagColor = 'magenta' // 品红色
@@ -1,411 +1,416 @@
1
- <template>
2
- <div ref="workflowDiagram">
3
-
4
- <Collapse v-show="showChart" v-model="showDefaultExpand">
5
- <Panel name="0">
6
- 流程跟踪图
7
- <div slot="content">
8
- <div class="notes-div">
9
- <span class="notes-done-task">已办结点</span>
10
- <span class="notes-todo-task">在办结点</span>
11
- <span class="notes-none-task">未办结点</span>
12
- </div>
13
- <div class="containers" :style="'height: '+canvasHeight+ 'px'">
14
- <div class="canvas" ref="canvas"></div>
15
- </div>
16
- </div>
17
- </Panel>
18
- </Collapse>
19
-
20
- <Collapse v-show="showTable" v-model="showDefaultExpand">
21
- <Panel name="1">
22
- {{ tableName }}
23
- <div slot="content">
24
- <EditTable :columns="tableColumns" v-model="hisAudit" :show-table-option="false">
25
- </EditTable>
26
- </div>
27
- </Panel>
28
- </Collapse>
29
-
30
-
31
- <Modal v-model="showDetail" :width="modelWidth" :footer-hide='true' :title="detailDones[0] && detailDones[0].handleName ? detailDones[0].handleName + '详情' : '审批详情'">
32
- <Card v-for="(item,index) in detailDones" :key="index" style="margin-bottom: 10px">
33
- <Form :model="item" :label-width="140">
34
- <Row>
35
- <i-col span="12" offset="0">
36
- <FormItem :label="item.handleName ? item.handleName + '节点:' : '审批节点:'">
37
- {{ item.taskName }}
38
- </FormItem>
39
- </i-col>
40
- <i-col span="12" offset="0">
41
- <FormItem :label="item.handleName ? item.handleName + '人:' : '审批人:'">
42
- <Tooltip placement="bottom-end">
43
- <span class="tooltip-text">{{ item.auditName }}</span>
44
- <div slot="content" style="white-space: normal;">
45
- {{ item.auditName }}
46
- </div>
47
- </Tooltip>
48
-
49
- </FormItem>
50
- </i-col>
51
-
52
- </Row>
53
- <Row>
54
- <i-col span="12" offset="0">
55
- <FormItem :label="item.handleName ? item.handleName + '结果:' : '审批结果:'">
56
- <Tag color="green" v-if="item.auditResult == '00'">流程发起</Tag>
57
- <Tag color="green" v-if="item.auditResult == '10'">自动跳过</Tag>
58
- <Tag color="green" v-else-if="item.auditResult == '30'">通过</Tag>
59
- <Tag color="volcano" v-else-if="item.auditResult == '40'">驳回上一节点</Tag>
60
- <Tag color="red" v-else-if="item.auditResult=='50'">驳回到原点</Tag>
61
- <Tag color="purple" v-else-if="item.auditResult=='51'">流程终止</Tag>
62
- <Tag color="blue" v-else-if="item.auditResult == '60'">撤回</Tag>
63
- <Tag color="green" v-else-if="item.auditResult == '61'">交回委派任务</Tag>
64
- <Tag color="blue" v-else-if="item.auditResult == '62'">委派任务被撤回</Tag>
65
- <Tag color="cyan" v-else-if="item.auditResult == '80'">跳转指定节点</Tag>
66
- <Tag color="cyan" v-else-if="item.auditResult == '83'">会签减签</Tag>
67
- <Tag color="magenta" v-else-if="item.auditResult == '90'">驳回指定节点</Tag>
68
- <Tag color="orange" v-else>待审核</Tag>
69
- </FormItem>
70
- </i-col>
71
- <i-col span="12" offset="0">
72
- <FormItem v-if="item.startDate" :label="item.auditResult == '00' ? '发起时间:' : '接收时间:'">
73
- {{ item.createTime }}
74
- </FormItem>
75
- <FormItem v-else :label="item.handleName ? item.handleName + '时间:' : '审批时间:'">
76
- {{ item.auditDate }}
77
- </FormItem>
78
- </i-col>
79
- </Row>
80
- <Row>
81
- <i-col span="24" offset="0">
82
- <FormItem v-if="item.auditComment" :label="item.handleName ? item.handleName + '意见:' : '审批意见:'">
83
- {{ item.auditComment }}
84
- </FormItem>
85
- </i-col>
86
- </Row>
87
- </Form>
88
- </Card>
89
- </Modal>
90
-
91
-
92
- </div>
93
- </template>
94
-
95
- <script>
96
- import ajax from "@lambo-design/shared/utils/ajax";
97
- import zoomScroll from "@lambo-design/shared/utils/zoomScroll";
98
- import BpmnViewer from "bpmn-js/lib/Viewer";
99
- import ModelingModule from 'bpmn-js/lib/features/modeling';
100
- import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas';
101
- import EditTable from "@lambo-design/edit-table";
102
-
103
- export default {
104
- components: {
105
- EditTable
106
- },
107
- props: {
108
- canvasHeight: {
109
- type: Number,
110
- default: 350
111
- },
112
- modelWidth: {
113
- type: Number,
114
- default: 693
115
- },
116
- modelTitle: {
117
- type: String,
118
- default: "审批详情"
119
- },
120
- showChart: {
121
- type: Boolean,
122
- default: true
123
- },
124
- showTable: {
125
- type: Boolean,
126
- default: true
127
- },
128
- tableName: {
129
- type: String,
130
- default: "流程跟踪表"
131
- },
132
- handleName: {
133
- type: String,
134
- default: "审批"
135
- },
136
- approveDetailShowWay: {
137
- type: String,
138
- required: false,
139
- default: "click"
140
- },
141
- scrollElement: {
142
- required: false
143
- },
144
- tableColumns: {
145
- type: Array,
146
- default: () => {
147
- return [
148
- {title: '序号', type: 'index', width: 60},
149
- {title: '审批节点', key: 'taskName', minWidth: 130},
150
- {title: '办理人', key: 'auditName', minWidth: 150, tooltip: true},
151
- {
152
- title: '审批结果', key: 'auditResult', minWidth: 150,
153
- render: (h, {row, column, index}) => {
154
- let label = "";
155
- let tagColor = "";
156
- if (row.auditResult == '00'){
157
- label = '流程发起';
158
- tagColor = 'green'; // 绿色
159
- }
160
- else if (row.auditResult == '10'){
161
- label = '自动跳过';
162
- tagColor = 'green'; // 绿色
163
- }
164
- else if (row.auditResult == '30'){
165
- label = '通过';
166
- tagColor = 'green'; // 绿色
167
- }
168
- else if (row.auditResult == '40'){
169
- label = '驳回到上一级';
170
- tagColor = 'volcano'; // 火红色
171
- }
172
- else if (row.auditResult == '50'){
173
- label = '驳回到原点';
174
- tagColor = 'red'; // 红色
175
- }
176
- else if (row.auditResult == '51'){
177
- label = '流程终止';
178
- tagColor = 'purple'; // 紫色
179
- }
180
- else if (row.auditResult == '60'){
181
- label = '撤回';
182
- tagColor = 'blue'; // 蓝色
183
- }
184
- else if (row.auditResult == '61'){
185
- label = '交回委派任务';
186
- tagColor = 'green'; // 绿色
187
- }
188
- else if (row.auditResult == '62'){
189
- label = '委派任务被撤回';
190
- tagColor = 'blue'; // 蓝色
191
- }
192
- else if (row.auditResult == '80'){
193
- label = '跳转到指定节点';
194
- tagColor = 'cyan'; // 青色
195
- }
196
- else if (row.auditResult == '83'){
197
- label = '会签减签';
198
- tagColor = 'red'; // 青色
199
- }
200
- else if (row.auditResult == '90'){
201
- label = '驳回到指定节点';
202
- tagColor = 'magenta'; // 品红色
203
- }
204
- else{
205
- label = '待审核';
206
- tagColor = 'orange'; // 默认橙色
207
- }
208
- return h('Tag', {
209
- props: {
210
- color: tagColor,
211
- value: row.auditResult
212
- }
213
- }, label);
214
- }
215
- },
216
- {
217
- title: '审批时间', key: 'auditTime', minWidth: 150,
218
- render: (h, {row}) => {
219
- const displayDate = row.startDate || row.auditDate;
220
- return h('span', displayDate);
221
- }
222
- },
223
- {
224
- title: '审批意见', key: 'auditComment', minWidth: 180, tooltip: true,
225
- render: (h, {row, column, index}) => {
226
- let label = "";
227
- if (row.auditComment == '' || row.auditComment == null) label = '无';
228
- else label = row.auditComment;
229
- return h('Label', {
230
- props: {
231
- value: row.auditComment
232
- }
233
- }, label)
234
- }
235
- }
236
- ];
237
- }
238
- },
239
- hisAudit: {
240
- type: Array,
241
- default: () => {
242
- return []
243
- }
244
- },
245
- tableData: {
246
- type: Array,
247
- default: () => {
248
- return []
249
- }
250
- },
251
- applyId: {
252
- type: String,
253
- default: ""
254
- },
255
- instanceId: {
256
- type: String,
257
- default: ""
258
- },
259
- procId: {
260
- type: String,
261
- default: ""
262
- },
263
- smartFlowServerContext: {
264
- type: String,
265
- default: '/api/smart-flow-server',
266
- },
267
- },
268
- data() {
269
- return {
270
- detailDones: [],
271
- showDetail: false,
272
- showDefaultExpand: this.getShowDefaultExpand(),
273
- }
274
- },
275
- computed: {},
276
- methods: {
277
- getShowDefaultExpand() {
278
- let expand = [];
279
- if (this.showChart) {
280
- expand.push('0');
281
- }
282
- if (this.showTable) {
283
- expand.push('1');
284
- }
285
- return expand;
286
- },
287
-
288
- //画流程图
289
- workflowInit() {
290
- const canvas = this.$refs.canvas;
291
- // this.bpmnViewer.destroy();
292
- // if (this.bpmnViewer) return
293
- if (this.bpmnViewer) {
294
- this.bpmnViewer.destroy()
295
- }
296
- this.bpmnViewer = new BpmnViewer({
297
- container: canvas,
298
- additionalModules: [
299
- // MoveModule, // 可以调整元素
300
- ModelingModule, // 基础工具 MoveModule、SetColor 等依赖于此
301
- MoveCanvasModule, // 移动整个画布
302
- zoomScroll // 放大缩小
303
- ]
304
- });
305
-
306
- //修改zoomScroll的scroll方法,滚动目标element
307
- zoomScroll.zoomScroll[1].prototype.scroll = (delta)=>{
308
- let scrollElement = this.scrollElement ? this.scrollElement : this.$refs.workflowDiagram.parentElement.parentElement
309
- scrollElement.scrollTop -= delta.dy;
310
- }
311
-
312
- ajax.get(this.smartFlowServerContext + "/manage/processTodo/printData", {
313
- params: {
314
- applyId: this.applyId,
315
- instanceId: this.instanceId,
316
- procId: this.procId
317
- }
318
- }).then(resp => {
319
- if (resp.data.code == '200') {
320
- const bpmnXmlStr = resp.data.data.processXml;
321
- this.bpmnViewer.importXML(bpmnXmlStr);
322
- setTimeout(() => {
323
- const printData = resp.data.data.historicData;
324
- this.doPrint(printData);
325
- }, 700);
326
- } else {
327
- this.$Message.error("加载流程xml失败," + resp.data.data);
328
- }
329
- });
330
- },
331
- doPrint(printData) {
332
- var self = this;
333
- const {doneLightSet, donePointSet, doneTaskSet, todoPointSet} =
334
- printData;
335
- const canvas = this.bpmnViewer.get("canvas");
336
- const elementRegistry = this.bpmnViewer.get('elementRegistry');
337
- const userTaskList = elementRegistry.filter(
338
- (item) => item.type === 'bpmn:UserTask'
339
- );
340
- //循环节点查找multiple
341
- self.notMultiple = true;
342
- canvas.zoom("fit-viewport", "auto");
343
- var eventBus = this.bpmnViewer.get("eventBus");
344
- var dones = this.tableData;
345
- // eventBus.on('element.click', function (evt) {
346
- // eventBus.on('element.hover', function (evt) {
347
- eventBus.on(`element.${this.approveDetailShowWay}`, function (evt) {
348
- self.detailDones = [];
349
- for (var item of dones) {
350
- if (item.taskNode == evt.element.id) {
351
- self.detailDones.push(item);
352
- // self.showDetail = true;
353
- // self.$emit("showTaskNode", item);
354
- // break;
355
- }
356
- }
357
- if (self.detailDones.length > 0) {
358
- self.showDetail = true;
359
- }
360
- });
361
-
362
- for (var k in doneLightSet) {
363
- if (doneLightSet[k]) {
364
- canvas.addMarker(doneLightSet[k], "done-line");
365
- }
366
- }
367
- for (var k in donePointSet) {
368
- if (donePointSet[k]) {
369
- canvas.addMarker(donePointSet[k], "done-point");
370
- }
371
- }
372
- for (var k in doneTaskSet) {
373
- if (doneTaskSet[k]) {
374
- canvas.addMarker(doneTaskSet[k], "done-task");
375
- }
376
- }
377
- for (var k in todoPointSet) {
378
- if (todoPointSet[k]) {
379
- canvas.addMarker(todoPointSet[k], "todo-point");
380
- }
381
- }
382
-
383
- },
384
- // 校验必填
385
- isNotBlank(val) {
386
- return (val != null || val === 0) && (val.toString().trim() != '' || val === 0)
387
- }
388
- },
389
- mounted() {
390
- if (this.isNotBlank(this.applyId)) {
391
- this.workflowInit();
392
- }
393
- },
394
- watch: {
395
- applyId(val) {
396
- if (this.isNotBlank(val)) {
397
- this.workflowInit();
398
- }
399
- },
400
- instanceId(val) {
401
- if (this.isNotBlank(this.applyId) && this.isNotBlank(val)) {
402
- this.workflowInit();
403
- }
404
- }
405
- }
406
- }
407
- </script>
408
-
409
- <style lang="less">
410
- @import "./styles/css/index.less";
411
- </style>
1
+ <template>
2
+ <div ref="workflowDiagram">
3
+
4
+ <Collapse v-show="showChart" v-model="showDefaultExpand">
5
+ <Panel name="0">
6
+ 流程跟踪图
7
+ <div slot="content">
8
+ <div class="notes-div">
9
+ <span class="notes-done-task">已办结点</span>
10
+ <span class="notes-todo-task">在办结点</span>
11
+ <span class="notes-none-task">未办结点</span>
12
+ </div>
13
+ <div class="containers" :style="'height: '+canvasHeight+ 'px'">
14
+ <div class="canvas" ref="canvas"></div>
15
+ </div>
16
+ </div>
17
+ </Panel>
18
+ </Collapse>
19
+
20
+ <Collapse v-show="showTable" v-model="showDefaultExpand">
21
+ <Panel name="1">
22
+ {{ tableName }}
23
+ <div slot="content">
24
+ <EditTable :columns="tableColumns" v-model="hisAudit" :show-table-option="false">
25
+ </EditTable>
26
+ </div>
27
+ </Panel>
28
+ </Collapse>
29
+
30
+
31
+ <Modal v-model="showDetail" :width="modelWidth" :footer-hide='true' :title="detailDones[0] && detailDones[0].handleName ? detailDones[0].handleName + '详情' : '审批详情'">
32
+ <Card v-for="(item,index) in detailDones" :key="index" style="margin-bottom: 10px">
33
+ <Form :model="item" :label-width="140">
34
+ <Row>
35
+ <i-col span="12" offset="0">
36
+ <FormItem :label="item.handleName ? item.handleName + '节点:' : '审批节点:'">
37
+ {{ item.taskName }}
38
+ </FormItem>
39
+ </i-col>
40
+ <i-col span="12" offset="0">
41
+ <FormItem :label="item.handleName ? item.handleName + '人:' : '审批人:'">
42
+ <Tooltip placement="bottom-end">
43
+ <span class="tooltip-text">{{ item.auditName }}</span>
44
+ <div slot="content" style="white-space: normal;">
45
+ {{ item.auditName }}
46
+ </div>
47
+ </Tooltip>
48
+
49
+ </FormItem>
50
+ </i-col>
51
+
52
+ </Row>
53
+ <Row>
54
+ <i-col span="12" offset="0">
55
+ <FormItem :label="item.handleName ? item.handleName + '结果:' : '审批结果:'">
56
+ <Tag color="green" v-if="item.auditResult == '00'">流程发起</Tag>
57
+ <Tag color="green" v-if="item.auditResult == '10'">自动跳过</Tag>
58
+ <Tag color="green" v-else-if="item.auditResult == '30'">通过</Tag>
59
+ <Tag color="volcano" v-else-if="item.auditResult == '40'">驳回上一节点</Tag>
60
+ <Tag color="red" v-else-if="item.auditResult=='50'">驳回到原点</Tag>
61
+ <Tag color="purple" v-else-if="item.auditResult=='51'">流程终止</Tag>
62
+ <Tag color="blue" v-else-if="item.auditResult == '60'">撤回</Tag>
63
+ <Tag color="green" v-else-if="item.auditResult == '61'">交回委派任务</Tag>
64
+ <Tag color="blue" v-else-if="item.auditResult == '62'">委派任务被撤回</Tag>
65
+ <Tag color="cyan" v-else-if="item.auditResult == '80'">跳转指定节点</Tag>
66
+ <Tag color="cyan" v-else-if="item.auditResult == '82'">指定他人处理</Tag>
67
+ <Tag color="cyan" v-else-if="item.auditResult == '83'">会签减签</Tag>
68
+ <Tag color="magenta" v-else-if="item.auditResult == '90'">驳回指定节点</Tag>
69
+ <Tag color="orange" v-else>待审核</Tag>
70
+ </FormItem>
71
+ </i-col>
72
+ <i-col span="12" offset="0">
73
+ <FormItem v-if="item.startDate" :label="item.auditResult == '00' ? '发起时间:' : '接收时间:'">
74
+ {{ item.createTime }}
75
+ </FormItem>
76
+ <FormItem v-else :label="item.handleName ? item.handleName + '时间:' : '审批时间:'">
77
+ {{ item.auditDate }}
78
+ </FormItem>
79
+ </i-col>
80
+ </Row>
81
+ <Row>
82
+ <i-col span="24" offset="0">
83
+ <FormItem v-if="item.auditComment" :label="item.handleName ? item.handleName + '意见:' : '审批意见:'">
84
+ {{ item.auditComment }}
85
+ </FormItem>
86
+ </i-col>
87
+ </Row>
88
+ </Form>
89
+ </Card>
90
+ </Modal>
91
+
92
+
93
+ </div>
94
+ </template>
95
+
96
+ <script>
97
+ import ajax from "@lambo-design/shared/utils/ajax";
98
+ import zoomScroll from "@lambo-design/shared/utils/zoomScroll";
99
+ import BpmnViewer from "bpmn-js/lib/Viewer";
100
+ import ModelingModule from 'bpmn-js/lib/features/modeling';
101
+ import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas';
102
+ import EditTable from "@lambo-design/edit-table";
103
+
104
+ export default {
105
+ components: {
106
+ EditTable
107
+ },
108
+ props: {
109
+ canvasHeight: {
110
+ type: Number,
111
+ default: 350
112
+ },
113
+ modelWidth: {
114
+ type: Number,
115
+ default: 693
116
+ },
117
+ modelTitle: {
118
+ type: String,
119
+ default: "审批详情"
120
+ },
121
+ showChart: {
122
+ type: Boolean,
123
+ default: true
124
+ },
125
+ showTable: {
126
+ type: Boolean,
127
+ default: true
128
+ },
129
+ tableName: {
130
+ type: String,
131
+ default: "流程跟踪表"
132
+ },
133
+ handleName: {
134
+ type: String,
135
+ default: "审批"
136
+ },
137
+ approveDetailShowWay: {
138
+ type: String,
139
+ required: false,
140
+ default: "click"
141
+ },
142
+ scrollElement: {
143
+ required: false
144
+ },
145
+ tableColumns: {
146
+ type: Array,
147
+ default: () => {
148
+ return [
149
+ {title: '序号', type: 'index', width: 60},
150
+ {title: '审批节点', key: 'taskName', minWidth: 130},
151
+ {title: '办理人', key: 'auditName', minWidth: 150, tooltip: true},
152
+ {
153
+ title: '审批结果', key: 'auditResult', minWidth: 150,
154
+ render: (h, {row, column, index}) => {
155
+ let label = "";
156
+ let tagColor = "";
157
+ if (row.auditResult == '00'){
158
+ label = '流程发起';
159
+ tagColor = 'green'; // 绿色
160
+ }
161
+ else if (row.auditResult == '10'){
162
+ label = '自动跳过';
163
+ tagColor = 'green'; // 绿色
164
+ }
165
+ else if (row.auditResult == '30'){
166
+ label = '通过';
167
+ tagColor = 'green'; // 绿色
168
+ }
169
+ else if (row.auditResult == '40'){
170
+ label = '驳回到上一级';
171
+ tagColor = 'volcano'; // 火红色
172
+ }
173
+ else if (row.auditResult == '50'){
174
+ label = '驳回到原点';
175
+ tagColor = 'red'; // 红色
176
+ }
177
+ else if (row.auditResult == '51'){
178
+ label = '流程终止';
179
+ tagColor = 'purple'; // 紫色
180
+ }
181
+ else if (row.auditResult == '60'){
182
+ label = '撤回';
183
+ tagColor = 'blue'; // 蓝色
184
+ }
185
+ else if (row.auditResult == '61'){
186
+ label = '交回委派任务';
187
+ tagColor = 'green'; // 绿色
188
+ }
189
+ else if (row.auditResult == '62'){
190
+ label = '委派任务被撤回';
191
+ tagColor = 'blue'; // 蓝色
192
+ }
193
+ else if (row.auditResult == '80'){
194
+ label = '跳转到指定节点';
195
+ tagColor = 'cyan'; // 青色
196
+ }
197
+ else if (row.auditResult == '82'){
198
+ label = '指定他人处理';
199
+ tagColor = 'cyan'; // 青色
200
+ }
201
+ else if (row.auditResult == '83'){
202
+ label = '会签减签';
203
+ tagColor = 'red'; // 青色
204
+ }
205
+ else if (row.auditResult == '90'){
206
+ label = '驳回到指定节点';
207
+ tagColor = 'magenta'; // 品红色
208
+ }
209
+ else{
210
+ label = '待审核';
211
+ tagColor = 'orange'; // 默认橙色
212
+ }
213
+ return h('Tag', {
214
+ props: {
215
+ color: tagColor,
216
+ value: row.auditResult
217
+ }
218
+ }, label);
219
+ }
220
+ },
221
+ {
222
+ title: '审批时间', key: 'auditTime', minWidth: 150,
223
+ render: (h, {row}) => {
224
+ const displayDate = row.startDate || row.auditDate;
225
+ return h('span', displayDate);
226
+ }
227
+ },
228
+ {
229
+ title: '审批意见', key: 'auditComment', minWidth: 180, tooltip: true,
230
+ render: (h, {row, column, index}) => {
231
+ let label = "";
232
+ if (row.auditComment == '' || row.auditComment == null) label = '无';
233
+ else label = row.auditComment;
234
+ return h('Label', {
235
+ props: {
236
+ value: row.auditComment
237
+ }
238
+ }, label)
239
+ }
240
+ }
241
+ ];
242
+ }
243
+ },
244
+ hisAudit: {
245
+ type: Array,
246
+ default: () => {
247
+ return []
248
+ }
249
+ },
250
+ tableData: {
251
+ type: Array,
252
+ default: () => {
253
+ return []
254
+ }
255
+ },
256
+ applyId: {
257
+ type: String,
258
+ default: ""
259
+ },
260
+ instanceId: {
261
+ type: String,
262
+ default: ""
263
+ },
264
+ procId: {
265
+ type: String,
266
+ default: ""
267
+ },
268
+ smartFlowServerContext: {
269
+ type: String,
270
+ default: '/api/smart-flow-server',
271
+ },
272
+ },
273
+ data() {
274
+ return {
275
+ detailDones: [],
276
+ showDetail: false,
277
+ showDefaultExpand: this.getShowDefaultExpand(),
278
+ }
279
+ },
280
+ computed: {},
281
+ methods: {
282
+ getShowDefaultExpand() {
283
+ let expand = [];
284
+ if (this.showChart) {
285
+ expand.push('0');
286
+ }
287
+ if (this.showTable) {
288
+ expand.push('1');
289
+ }
290
+ return expand;
291
+ },
292
+
293
+ //画流程图
294
+ workflowInit() {
295
+ const canvas = this.$refs.canvas;
296
+ // this.bpmnViewer.destroy();
297
+ // if (this.bpmnViewer) return
298
+ if (this.bpmnViewer) {
299
+ this.bpmnViewer.destroy()
300
+ }
301
+ this.bpmnViewer = new BpmnViewer({
302
+ container: canvas,
303
+ additionalModules: [
304
+ // MoveModule, // 可以调整元素
305
+ ModelingModule, // 基础工具 MoveModule、SetColor 等依赖于此
306
+ MoveCanvasModule, // 移动整个画布
307
+ zoomScroll // 放大缩小
308
+ ]
309
+ });
310
+
311
+ //修改zoomScroll的scroll方法,滚动目标element
312
+ zoomScroll.zoomScroll[1].prototype.scroll = (delta)=>{
313
+ let scrollElement = this.scrollElement ? this.scrollElement : this.$refs.workflowDiagram.parentElement.parentElement
314
+ scrollElement.scrollTop -= delta.dy;
315
+ }
316
+
317
+ ajax.get(this.smartFlowServerContext + "/manage/processTodo/printData", {
318
+ params: {
319
+ applyId: this.applyId,
320
+ instanceId: this.instanceId,
321
+ procId: this.procId
322
+ }
323
+ }).then(resp => {
324
+ if (resp.data.code == '200') {
325
+ const bpmnXmlStr = resp.data.data.processXml;
326
+ this.bpmnViewer.importXML(bpmnXmlStr);
327
+ setTimeout(() => {
328
+ const printData = resp.data.data.historicData;
329
+ this.doPrint(printData);
330
+ }, 700);
331
+ } else {
332
+ this.$Message.error("加载流程xml失败," + resp.data.data);
333
+ }
334
+ });
335
+ },
336
+ doPrint(printData) {
337
+ var self = this;
338
+ const {doneLightSet, donePointSet, doneTaskSet, todoPointSet} =
339
+ printData;
340
+ const canvas = this.bpmnViewer.get("canvas");
341
+ const elementRegistry = this.bpmnViewer.get('elementRegistry');
342
+ const userTaskList = elementRegistry.filter(
343
+ (item) => item.type === 'bpmn:UserTask'
344
+ );
345
+ //循环节点查找multiple
346
+ self.notMultiple = true;
347
+ canvas.zoom("fit-viewport", "auto");
348
+ var eventBus = this.bpmnViewer.get("eventBus");
349
+ var dones = this.tableData;
350
+ // eventBus.on('element.click', function (evt) {
351
+ // eventBus.on('element.hover', function (evt) {
352
+ eventBus.on(`element.${this.approveDetailShowWay}`, function (evt) {
353
+ self.detailDones = [];
354
+ for (var item of dones) {
355
+ if (item.taskNode == evt.element.id) {
356
+ self.detailDones.push(item);
357
+ // self.showDetail = true;
358
+ // self.$emit("showTaskNode", item);
359
+ // break;
360
+ }
361
+ }
362
+ if (self.detailDones.length > 0) {
363
+ self.showDetail = true;
364
+ }
365
+ });
366
+
367
+ for (var k in doneLightSet) {
368
+ if (doneLightSet[k]) {
369
+ canvas.addMarker(doneLightSet[k], "done-line");
370
+ }
371
+ }
372
+ for (var k in donePointSet) {
373
+ if (donePointSet[k]) {
374
+ canvas.addMarker(donePointSet[k], "done-point");
375
+ }
376
+ }
377
+ for (var k in doneTaskSet) {
378
+ if (doneTaskSet[k]) {
379
+ canvas.addMarker(doneTaskSet[k], "done-task");
380
+ }
381
+ }
382
+ for (var k in todoPointSet) {
383
+ if (todoPointSet[k]) {
384
+ canvas.addMarker(todoPointSet[k], "todo-point");
385
+ }
386
+ }
387
+
388
+ },
389
+ // 校验必填
390
+ isNotBlank(val) {
391
+ return (val != null || val === 0) && (val.toString().trim() != '' || val === 0)
392
+ }
393
+ },
394
+ mounted() {
395
+ if (this.isNotBlank(this.applyId)) {
396
+ this.workflowInit();
397
+ }
398
+ },
399
+ watch: {
400
+ applyId(val) {
401
+ if (this.isNotBlank(val)) {
402
+ this.workflowInit();
403
+ }
404
+ },
405
+ instanceId(val) {
406
+ if (this.isNotBlank(this.applyId) && this.isNotBlank(val)) {
407
+ this.workflowInit();
408
+ }
409
+ }
410
+ }
411
+ }
412
+ </script>
413
+
414
+ <style lang="less">
415
+ @import "./styles/css/index.less";
416
+ </style>