1111
Showing
3 changed files
with
2 additions
and
642 deletions
... | @@ -90,7 +90,7 @@ export default { | ... | @@ -90,7 +90,7 @@ export default { |
90 | case "B1": | 90 | case "B1": |
91 | getWorkFlowImage(this.bsmSlsq, this.bestepid ? this.bestepid : '').then(res => { | 91 | getWorkFlowImage(this.bsmSlsq, this.bestepid ? this.bestepid : '').then(res => { |
92 | let { result } = res | 92 | let { result } = res |
93 | this.$popupDialog("流程图", "workflow/components/processViewer", { | 93 | this.$popupDialog("流程图", "workflow/top/processViewer/index", { |
94 | xml: result.xml, | 94 | xml: result.xml, |
95 | finishedInfo: { | 95 | finishedInfo: { |
96 | finishedTaskSet: result.finishedActivityIds, | 96 | finishedTaskSet: result.finishedActivityIds, | ... | ... |
1 | <!-- | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-05-17 10:41:15 | ||
5 | --> | ||
6 | <template> | ||
7 | <div> | ||
8 | <div class="process-viewer"> | ||
9 | <div | ||
10 | v-show="!isLoading" | ||
11 | ref="processCanvas" | ||
12 | class="process-canvas" | ||
13 | style="height: 280px" | ||
14 | /> | ||
15 | <!-- 自定义箭头样式,用于成功状态下流程连线箭头 --> | ||
16 | <defs ref="customSuccessDefs"> | ||
17 | <marker | ||
18 | id="sequenceflow-end-white-success" | ||
19 | view-box="0 0 20 20" | ||
20 | ref-x="11" | ||
21 | ref-y="10" | ||
22 | marker-width="10" | ||
23 | marker-height="10" | ||
24 | orient="auto" | ||
25 | > | ||
26 | <path | ||
27 | class="success-arrow" | ||
28 | d="M 1 5 L 11 10 L 1 15 Z" | ||
29 | style=" | ||
30 | stroke-width: 1px; | ||
31 | stroke-linecap: round; | ||
32 | stroke-dasharray: 10000, 1; | ||
33 | " | ||
34 | /> | ||
35 | </marker> | ||
36 | <marker | ||
37 | id="conditional-flow-marker-white-success" | ||
38 | view-box="0 0 20 20" | ||
39 | ref-x="-1" | ||
40 | ref-y="10" | ||
41 | marker-width="10" | ||
42 | marker-height="10" | ||
43 | orient="auto" | ||
44 | > | ||
45 | <path | ||
46 | class="success-conditional" | ||
47 | d="M 0 10 L 8 6 L 16 10 L 8 14 Z" | ||
48 | style=" | ||
49 | stroke-width: 1px; | ||
50 | stroke-linecap: round; | ||
51 | stroke-dasharray: 10000, 1; | ||
52 | " | ||
53 | /> | ||
54 | </marker> | ||
55 | </defs> | ||
56 | <!-- 自定义箭头样式,用于失败状态下流程连线箭头 --> | ||
57 | <defs ref="customFailDefs"> | ||
58 | <marker | ||
59 | id="sequenceflow-end-white-fail" | ||
60 | view-box="0 0 20 20" | ||
61 | ref-x="11" | ||
62 | ref-y="10" | ||
63 | marker-width="10" | ||
64 | marker-height="10" | ||
65 | orient="auto" | ||
66 | > | ||
67 | <path | ||
68 | class="fail-arrow" | ||
69 | d="M 1 5 L 11 10 L 1 15 Z" | ||
70 | style=" | ||
71 | stroke-width: 1px; | ||
72 | stroke-linecap: round; | ||
73 | stroke-dasharray: 10000, 1; | ||
74 | " | ||
75 | /> | ||
76 | </marker> | ||
77 | <marker | ||
78 | id="conditional-flow-marker-white-fail" | ||
79 | view-box="0 0 20 20" | ||
80 | ref-x="-1" | ||
81 | ref-y="10" | ||
82 | marker-width="10" | ||
83 | marker-height="10" | ||
84 | orient="auto" | ||
85 | > | ||
86 | <path | ||
87 | class="fail-conditional" | ||
88 | d="M 0 10 L 8 6 L 16 10 L 8 14 Z" | ||
89 | style=" | ||
90 | stroke-width: 1px; | ||
91 | stroke-linecap: round; | ||
92 | stroke-dasharray: 10000, 1; | ||
93 | " | ||
94 | /> | ||
95 | </marker> | ||
96 | </defs> | ||
97 | |||
98 | <div style="position: absolute; top: 0px; left: 0px; width: 100%"> | ||
99 | <el-row type="flex" justify="end"> | ||
100 | <el-button-group key="scale-control" size="medium"> | ||
101 | <el-button | ||
102 | size="medium" | ||
103 | type="default" | ||
104 | :plain="true" | ||
105 | :disabled="defaultZoom <= 0.3" | ||
106 | icon="el-icon-zoom-out" | ||
107 | @click="processZoomOut()" | ||
108 | /> | ||
109 | <el-button size="medium" type="default" style="width: 90px">{{ | ||
110 | Math.floor(this.defaultZoom * 10 * 10) + "%" | ||
111 | }}</el-button> | ||
112 | <el-button | ||
113 | size="medium" | ||
114 | type="default" | ||
115 | :plain="true" | ||
116 | :disabled="defaultZoom >= 3.9" | ||
117 | icon="el-icon-zoom-in" | ||
118 | @click="processZoomIn()" | ||
119 | /> | ||
120 | <el-button | ||
121 | size="medium" | ||
122 | type="default" | ||
123 | icon="el-icon-c-scale-to-original" | ||
124 | @click="processReZoom()" | ||
125 | /> | ||
126 | <slot /> | ||
127 | </el-button-group> | ||
128 | </el-row> | ||
129 | </div> | ||
130 | </div> | ||
131 | <!-- 已完成节点悬浮弹窗 --> | ||
132 | <div class="information-list"> | ||
133 | <el-select v-model="selectValue" @change="handleSelect"> | ||
134 | <el-option | ||
135 | v-for="item in selectOptions" | ||
136 | :key="item.value" | ||
137 | :label="item.label" | ||
138 | :value="item.value" | ||
139 | > | ||
140 | </el-option> | ||
141 | </el-select> | ||
142 | <div class="cutline"> | ||
143 | <p class="cutlines">图例</p> | ||
144 | <div v-for="item in cutlinelist" :key="item.value" class="concent" :style="{ backgroundColor: item.backgroundColor,borderColor:item.color }"> | ||
145 | {{item.value}} | ||
146 | </div> | ||
147 | </div> | ||
148 | <el-table | ||
149 | height="190" | ||
150 | :data="taskCommentList" | ||
151 | size="mini" | ||
152 | border | ||
153 | header-cell-class-name="table-header-gray" | ||
154 | > | ||
155 | <el-table-column | ||
156 | label="序号" | ||
157 | header-align="center" | ||
158 | align="center" | ||
159 | type="index" | ||
160 | width="55px" | ||
161 | /> | ||
162 | <el-table-column label="环节" prop="name" align="center" /> | ||
163 | <el-table-column | ||
164 | label="转入时间" | ||
165 | prop="createTime" | ||
166 | :formatter="formatDate" | ||
167 | width="160" | ||
168 | align="center" | ||
169 | /> | ||
170 | <el-table-column | ||
171 | label="认领时间" | ||
172 | prop="claimTime" | ||
173 | :formatter="formatDate" | ||
174 | width="160" | ||
175 | align="center" | ||
176 | /> | ||
177 | <el-table-column | ||
178 | label="转出时间" | ||
179 | prop="endTime" | ||
180 | :formatter="formatDate" | ||
181 | width="160" | ||
182 | align="center" | ||
183 | /> | ||
184 | <el-table-column label="经办人" prop="agent" align="center" /> | ||
185 | <el-table-column label="操作方式" prop="controls" align="center" /> | ||
186 | <el-table-column label="意见" prop="idea" align="center" /> | ||
187 | </el-table> | ||
188 | </div> | ||
189 | </div> | ||
190 | </template> | ||
191 | <script> | ||
192 | import "@/styles/package/theme/index.scss"; | ||
193 | import BpmnViewer from "bpmn-js/lib/Viewer"; | ||
194 | import MoveCanvasModule from "diagram-js/lib/navigation/movecanvas"; | ||
195 | export default { | ||
196 | props: { | ||
197 | formData: { | ||
198 | type: Object, | ||
199 | default: {}, | ||
200 | }, | ||
201 | }, | ||
202 | data() { | ||
203 | return { | ||
204 | dlgTitle: undefined, | ||
205 | defaultZoom: 1, | ||
206 | // 是否正在加载流程图 | ||
207 | isLoading: true, | ||
208 | bpmnViewer: undefined, | ||
209 | // 已完成流程元素 | ||
210 | processNodeInfo: undefined, | ||
211 | // 当前任务id | ||
212 | selectTaskId: undefined, | ||
213 | // 任务节点审批记录 | ||
214 | taskList: [], | ||
215 | taskCommentList: [], | ||
216 | // 已完成任务悬浮延迟Timer | ||
217 | hoverTimer: null, | ||
218 | // 下拉 | ||
219 | selectValue: "", | ||
220 | selectOptions: [], | ||
221 | cutlinelist:[ | ||
222 | { | ||
223 | value: "完成节点", | ||
224 | color: "#4eb819", | ||
225 | backgroundColor :"rgba(78, 184, 25,0.2)" | ||
226 | }, | ||
227 | { | ||
228 | value: "当前节点", | ||
229 | color: "#409EFF", | ||
230 | backgroundColor :"rgba(64, 158, 255,0.2)" | ||
231 | }, | ||
232 | { | ||
233 | value: "挂起节点", | ||
234 | color: "#E6A23C", | ||
235 | backgroundColor :"rgba(230, 162, 60,0.2)" | ||
236 | }, | ||
237 | { | ||
238 | value: "阻塞节点", | ||
239 | color: "#F56C6C", | ||
240 | backgroundColor :"rgb(245, 108, 108,0.2)" | ||
241 | }, | ||
242 | { | ||
243 | value: "未激活节点", | ||
244 | color: "#000000", | ||
245 | backgroundColor :"none", | ||
246 | } | ||
247 | ], | ||
248 | }; | ||
249 | }, | ||
250 | created() { | ||
251 | this.$nextTick(() => { | ||
252 | // 获取流程记录 | ||
253 | this.getCommentList(); | ||
254 | this.setProcessStatus(this.formData.finishedInfo); | ||
255 | this.importXML(this.formData.xml); | ||
256 | }); | ||
257 | }, | ||
258 | destroyed() { | ||
259 | this.clearViewer(); | ||
260 | }, | ||
261 | methods: { | ||
262 | /** | ||
263 | * @description: formatDate | ||
264 | * @param {*} row | ||
265 | * @param {*} column | ||
266 | * @author: renchao | ||
267 | */ | ||
268 | formatDate(row, column) { | ||
269 | let data = row[column.property]; | ||
270 | if (data == null) { | ||
271 | return null; | ||
272 | } | ||
273 | let dt = new Date(data); | ||
274 | return ( | ||
275 | dt.getFullYear() + | ||
276 | "-" + | ||
277 | (dt.getMonth() + 1) + | ||
278 | "-" + | ||
279 | dt.getDate() + | ||
280 | " " + | ||
281 | dt.getHours() + | ||
282 | ":" + | ||
283 | dt.getMinutes() + | ||
284 | ":" + | ||
285 | dt.getSeconds() | ||
286 | ); | ||
287 | }, | ||
288 | /** | ||
289 | * @description: processReZoom | ||
290 | * @author: renchao | ||
291 | */ | ||
292 | processReZoom() { | ||
293 | this.defaultZoom = 1; | ||
294 | this.bpmnViewer.get("canvas").zoom("fit-viewport", "auto"); | ||
295 | }, | ||
296 | /** | ||
297 | * @description: processZoomIn | ||
298 | * @param {*} zoomStep | ||
299 | * @author: renchao | ||
300 | */ | ||
301 | processZoomIn(zoomStep = 0.1) { | ||
302 | const newZoom = Math.floor(this.defaultZoom * 100 + zoomStep * 100) / 100; | ||
303 | if (newZoom > 4) { | ||
304 | throw new Error( | ||
305 | "[Process Designer Warn ]: The zoom ratio cannot be greater than 4" | ||
306 | ); | ||
307 | } | ||
308 | this.defaultZoom = newZoom; | ||
309 | this.bpmnViewer.get("canvas").zoom(this.defaultZoom); | ||
310 | }, | ||
311 | /** | ||
312 | * @description: processZoomOut | ||
313 | * @param {*} zoomStep | ||
314 | * @author: renchao | ||
315 | */ | ||
316 | processZoomOut(zoomStep = 0.1) { | ||
317 | const newZoom = Math.floor(this.defaultZoom * 100 - zoomStep * 100) / 100; | ||
318 | if (newZoom < 0.2) { | ||
319 | throw new Error( | ||
320 | "[Process Designer Warn ]: The zoom ratio cannot be scss than 0.2" | ||
321 | ); | ||
322 | } | ||
323 | this.defaultZoom = newZoom; | ||
324 | this.bpmnViewer.get("canvas").zoom(this.defaultZoom); | ||
325 | }, | ||
326 | /** | ||
327 | * @description: getOperationTagType | ||
328 | * @param {*} type | ||
329 | * @author: renchao | ||
330 | */ | ||
331 | getOperationTagType(type) { | ||
332 | return "success"; | ||
333 | }, | ||
334 | // 流程图预览清空 | ||
335 | /** | ||
336 | * @description: 流程图预览清空 | ||
337 | * @param {*} e | ||
338 | * @author: renchao | ||
339 | */ | ||
340 | clearViewer(a) { | ||
341 | if (this.$refs.processCanvas) { | ||
342 | this.$refs.processCanvas.innerHTML = ""; | ||
343 | } | ||
344 | if (this.bpmnViewer) { | ||
345 | this.bpmnViewer.destroy(); | ||
346 | } | ||
347 | this.bpmnViewer = null; | ||
348 | }, | ||
349 | // 添加自定义箭头 | ||
350 | /** | ||
351 | * @description: 添加自定义箭头 | ||
352 | * @author: renchao | ||
353 | */ | ||
354 | addCustomDefs() { | ||
355 | const canvas = this.bpmnViewer.get("canvas"); | ||
356 | const svg = canvas._svg; | ||
357 | const customSuccessDefs = this.$refs.customSuccessDefs; | ||
358 | const customFailDefs = this.$refs.customFailDefs; | ||
359 | svg.appendChild(customSuccessDefs); | ||
360 | svg.appendChild(customFailDefs); | ||
361 | }, | ||
362 | // 任务悬浮弹窗 | ||
363 | /** | ||
364 | * @description: 任务悬浮弹窗 | ||
365 | * @param {*} element | ||
366 | * @author: renchao | ||
367 | */ | ||
368 | onSelectElement(element) { | ||
369 | this.selectTaskId = undefined; | ||
370 | this.dlgTitle = undefined; | ||
371 | let allfinishedTaskSet = [ | ||
372 | ...this.processNodeInfo.finishedTaskSet, | ||
373 | ...this.processNodeInfo.unfinishedTaskSet, | ||
374 | ]; | ||
375 | if (this.processNodeInfo == null || allfinishedTaskSet == null) return; | ||
376 | if (element == null || allfinishedTaskSet.indexOf(element.id) === -1) { | ||
377 | return; | ||
378 | } | ||
379 | this.selectTaskId = element.id; | ||
380 | this.selectValue = element.id; | ||
381 | this.dlgTitle = element.businessObject | ||
382 | ? element.businessObject.name | ||
383 | : undefined; | ||
384 | // 计算当前悬浮任务审批记录,如果记录为空不显示弹窗 | ||
385 | this.taskCommentList = (this.taskList || []).filter((item) => { | ||
386 | return item.taskDefinitionKey === this.selectTaskId; | ||
387 | }); | ||
388 | if (this.taskCommentList.length == 0) { | ||
389 | this.taskCommentList = this.taskList; | ||
390 | } | ||
391 | }, | ||
392 | // 下拉列表切换 | ||
393 | /** | ||
394 | * @description: 下拉列表切换 | ||
395 | * @param {*} val | ||
396 | * @author: renchao | ||
397 | */ | ||
398 | handleSelect(val) { | ||
399 | this.taskCommentList = (this.taskList || []).filter((item) => { | ||
400 | return item.taskDefinitionKey === val; | ||
401 | }); | ||
402 | if (this.taskCommentList.length == 0) { | ||
403 | this.taskCommentList = this.taskList; | ||
404 | } | ||
405 | }, | ||
406 | // 显示流程图 | ||
407 | /** | ||
408 | * @description: 显示流程图 | ||
409 | * @param {*} xml | ||
410 | * @author: renchao | ||
411 | */ | ||
412 | async importXML(xml) { | ||
413 | let xmlData = this.$x2js.xml2js(xml).definitions.process; | ||
414 | this.selectOptions = xmlData.userTask.map((item) => { | ||
415 | return { value: item._id, label: item._name }; | ||
416 | }); | ||
417 | this.selectOptions = [ | ||
418 | { value: xmlData.startEvent._id, label: "浏览记录" }, | ||
419 | ...this.selectOptions, | ||
420 | ]; | ||
421 | this.selectOptions = this.selectOptions | ||
422 | .map((item) => { | ||
423 | if (this.formData.finishedInfo.finishedTaskSet.includes(item.value)) { | ||
424 | return item; | ||
425 | } | ||
426 | if ( | ||
427 | this.formData.finishedInfo.unfinishedTaskSet.includes(item.value) | ||
428 | ) { | ||
429 | return item; | ||
430 | } | ||
431 | }) | ||
432 | .filter(Boolean); | ||
433 | this.selectValue = xmlData.startEvent._id; | ||
434 | this.clearViewer("a"); | ||
435 | if (xml != null && xml !== "") { | ||
436 | try { | ||
437 | this.bpmnViewer = new BpmnViewer({ | ||
438 | additionalModules: [ | ||
439 | // 移动整个画布 | ||
440 | MoveCanvasModule, | ||
441 | ], | ||
442 | container: this.$refs.processCanvas, | ||
443 | }); | ||
444 | // 任务节点悬浮事件 | ||
445 | this.bpmnViewer.on("element.click", ({ element }) => { | ||
446 | this.onSelectElement(element); | ||
447 | }); | ||
448 | await this.bpmnViewer.importXML(xml); | ||
449 | this.isLoading = true; | ||
450 | this.addCustomDefs(); | ||
451 | } catch (e) { | ||
452 | this.clearViewer("b"); | ||
453 | } finally { | ||
454 | this.isLoading = false; | ||
455 | this.setProcessStatus(this.processNodeInfo); | ||
456 | this.$nextTick(() => { | ||
457 | this.processReZoom(); | ||
458 | }); | ||
459 | } | ||
460 | } | ||
461 | }, | ||
462 | // 获取流程记录 | ||
463 | /** | ||
464 | * @description: 获取流程记录 | ||
465 | * @author: renchao | ||
466 | */ | ||
467 | getCommentList() { | ||
468 | this.formData.allCommentList.forEach(async (item, index) => { | ||
469 | // item.comments.forEach(element => { | ||
470 | // if(element.type=="COMPLETE"){ | ||
471 | // this.formData.allCommentList[index].idea=element.message | ||
472 | // this.formData.allCommentList[index].controls="完成" | ||
473 | // } | ||
474 | // }); | ||
475 | let type = item.comments[item.comments.length - 1].type; | ||
476 | this.formData.allCommentList[index].idea = | ||
477 | item.comments[item.comments.length - 1].message; | ||
478 | // 操作方式 | ||
479 | let controls = ""; | ||
480 | // 正在办理 | ||
481 | // 已完结 | ||
482 | // 已退回 | ||
483 | switch (type) { | ||
484 | case "COMPLETE": | ||
485 | controls = "完成"; | ||
486 | break; | ||
487 | case "CLAIM": | ||
488 | controls = "完成"; | ||
489 | break; | ||
490 | case "ASSIGN": | ||
491 | controls = "转办"; | ||
492 | break; | ||
493 | case "DELEGATE": | ||
494 | controls = "委派"; | ||
495 | break; | ||
496 | case "UNCLAIM": | ||
497 | controls = "取消认领"; | ||
498 | break; | ||
499 | case "STOP": | ||
500 | controls = "终止"; | ||
501 | break; | ||
502 | case "BACK": | ||
503 | controls = "退回"; | ||
504 | break; | ||
505 | } | ||
506 | this.formData.allCommentList[index].controls = controls; | ||
507 | this.formData.allCommentList[index].agent = item.assignee.name; | ||
508 | }); | ||
509 | this.formData.handlinglist.forEach(async (item, index) => { | ||
510 | if (item.assignee.name) { | ||
511 | this.formData.handlinglist[index].agent = item.assignee.name; | ||
512 | } else { | ||
513 | let str = ""; | ||
514 | item.countersign.forEach((item) => { | ||
515 | str += item.name + ","; | ||
516 | }); | ||
517 | str = str.slice(0, -1); | ||
518 | this.formData.allCommentList[index].agent = str; | ||
519 | } | ||
520 | }); | ||
521 | this.taskList = [ | ||
522 | ...this.formData.allCommentList, | ||
523 | ...this.formData.handlinglist, | ||
524 | ]; | ||
525 | // this.taskList =this.formData.allCommentList; | ||
526 | // 处理数据之后赋值 | ||
527 | this.taskCommentList = this.taskList; | ||
528 | this.taskCommentList = this.taskCommentList.sort(this.sortDownDate); | ||
529 | }, | ||
530 | /** | ||
531 | * 时间排序函数 | ||
532 | * @description: formatDate | ||
533 | * @param {*} row | ||
534 | * @param {*} column | ||
535 | * @author: renchao | ||
536 | */ | ||
537 | |||
538 | sortDownDate(a, b) { | ||
539 | return Date.parse(a.createTime) - Date.parse(b.createTime); | ||
540 | }, | ||
541 | // 设置流程图元素状态 | ||
542 | /** | ||
543 | * @description: 设置流程图元素状态 | ||
544 | * @param {*} processNodeInfo | ||
545 | * @author: renchao | ||
546 | */ | ||
547 | setProcessStatus(processNodeInfo) { | ||
548 | this.processNodeInfo = processNodeInfo; | ||
549 | if ( | ||
550 | this.isLoading || | ||
551 | this.processNodeInfo == null || | ||
552 | this.bpmnViewer == null | ||
553 | ) | ||
554 | return; | ||
555 | const { | ||
556 | finishedTaskSet, | ||
557 | rejectedTaskSet, | ||
558 | unfinishedTaskSet, | ||
559 | finishedSequenceFlowSet, | ||
560 | } = this.processNodeInfo; | ||
561 | const canvas = this.bpmnViewer.get("canvas"); | ||
562 | const elementRegistry = this.bpmnViewer.get("elementRegistry"); | ||
563 | if (Array.isArray(finishedSequenceFlowSet)) { | ||
564 | finishedSequenceFlowSet.forEach((item) => { | ||
565 | if (item != null) { | ||
566 | canvas.addMarker(item, "success"); | ||
567 | const element = elementRegistry.get(item); | ||
568 | const conditionExpression = | ||
569 | element.businessObject.conditionExpression; | ||
570 | if (conditionExpression) { | ||
571 | canvas.addMarker(item, "condition-expression"); | ||
572 | } | ||
573 | } | ||
574 | }); | ||
575 | } | ||
576 | if (Array.isArray(finishedTaskSet)) { | ||
577 | finishedTaskSet.forEach((item) => canvas.addMarker(item, "success")); | ||
578 | } | ||
579 | if (Array.isArray(unfinishedTaskSet)) { | ||
580 | unfinishedTaskSet.forEach((item) => canvas.addMarker(item, "primary")); | ||
581 | } | ||
582 | if (Array.isArray(rejectedTaskSet)) { | ||
583 | rejectedTaskSet.forEach((item) => { | ||
584 | if (item != null) { | ||
585 | const element = elementRegistry.get(item); | ||
586 | if (element.type.includes("Task")) { | ||
587 | canvas.addMarker(item, "danger"); | ||
588 | } else { | ||
589 | canvas.addMarker(item, "warning"); | ||
590 | } | ||
591 | } | ||
592 | }); | ||
593 | } | ||
594 | }, | ||
595 | }, | ||
596 | }; | ||
597 | </script> | ||
598 | <style scoped lang="scss"> | ||
599 | .information-list { | ||
600 | height: 220px; | ||
601 | margin-top: 10px; | ||
602 | |||
603 | p { | ||
604 | font-size: 16px; | ||
605 | line-height: 24px; | ||
606 | } | ||
607 | } | ||
608 | /deep/.bjs-powered-by { | ||
609 | display: none; | ||
610 | } | ||
611 | // /deep/.information-list { | ||
612 | // height: 170px; | ||
613 | // overflow: visible; | ||
614 | // } | ||
615 | .cutline { | ||
616 | |||
617 | float: right; | ||
618 | width: 30%; | ||
619 | height: 30px; | ||
620 | display: flex; | ||
621 | margin-right: 30px; | ||
622 | justify-content: space-between; | ||
623 | .cutlines{ | ||
624 | line-height: 30px; | ||
625 | font-weight: 600; | ||
626 | margin-right: 50px; | ||
627 | } | ||
628 | .concent{ | ||
629 | line-height: 30px; | ||
630 | line-height: 14px; | ||
631 | text-align: center; | ||
632 | align-items: center; | ||
633 | margin: auto; | ||
634 | padding: 3px; | ||
635 | border-radius: 4px; | ||
636 | border:1px solid #fff; | ||
637 | } | ||
638 | |||
639 | } | ||
640 | </style> |
... | @@ -86,7 +86,7 @@ export default { | ... | @@ -86,7 +86,7 @@ export default { |
86 | case "B1": | 86 | case "B1": |
87 | getWorkFlowImage(this.bsmSlsq, this.bestepid ? this.bestepid : '').then(res => { | 87 | getWorkFlowImage(this.bsmSlsq, this.bestepid ? this.bestepid : '').then(res => { |
88 | let { result } = res | 88 | let { result } = res |
89 | this.$popupDialog("流程图", "workflow/components/processViewer", { | 89 | this.$popupDialog("流程图", "workflow/top/processViewer/index", { |
90 | xml: result.xml, | 90 | xml: result.xml, |
91 | finishedInfo: { | 91 | finishedInfo: { |
92 | finishedTaskSet: result.finishedActivityIds, | 92 | finishedTaskSet: result.finishedActivityIds, | ... | ... |
-
Please register or sign in to post a comment