eoss-ui 0.8.30 → 0.8.31

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.
@@ -0,0 +1,4456 @@
1
+ <template>
2
+ <div
3
+ class="es-flow-index es-flow-new"
4
+ :class="{ 'es-flow-narrow': shrink }"
5
+ :style="styles"
6
+ v-if="!shrinkAbled"
7
+ >
8
+ <div
9
+ v-if="showCirculate && newTypeCode != 'fenyue'"
10
+ style="height: 100%; display: flex; flex-direction: column"
11
+ >
12
+ <div class="es-flow-top">
13
+ <div class="es-flow-title">
14
+ <span v-show="!shrink"
15
+ >当前步骤:{{ isFlow ? nodeName || '拟稿' : NodeName }}</span
16
+ >
17
+ <es-button
18
+ v-if="showShrink"
19
+ size="medium"
20
+ class="es-icon"
21
+ :icon="shrink ? 'es-icon-shouqi' : 'es-icon-zhankai'"
22
+ @click="setShrink"
23
+ ></es-button>
24
+ </div>
25
+ <div class="es-opinion" v-show="!shrink">
26
+ <span class="es-eidt-title" :style="`${!isFlow ? 'color:red' : ''}`"
27
+ >填写意见</span
28
+ >
29
+ <!-- <span
30
+ v-show="!isFlow && newTypeCode != 'fenyue'"
31
+ class="es-opinion-file"
32
+ @click="showFileList = true"
33
+ ><i class="es-icon-fujian"></i>意见附件<span
34
+ class="es-file-num"
35
+ v-show="fileNum > 0"
36
+ >({{ fileNum }})</span
37
+ ></span> -->
38
+ </div>
39
+ </div>
40
+ <Opinions
41
+ v-if="showOpinion"
42
+ class="es-common-opinions"
43
+ v-show="!shrink"
44
+ ref="commonOpinions"
45
+ @change="(val) => (value = val)"
46
+ :opinion="value"
47
+ :rows="rows"
48
+ :placeholder="pendingItemHandleDescription"
49
+ :pendingItemHandleDescription="pendingItemHandleDescription"
50
+ :required="isOpinionRequired == 1"
51
+ :isBanInputOpinion="isBanInputOpinion"
52
+ :nodeFixedOpinionSelectList="nodeFixedOpinionSelectList"
53
+ />
54
+ <div
55
+ :class="`es-info ${
56
+ formLabelPosition == 'left' ? 'form-left' : 'form-right'
57
+ }`"
58
+ :style="{ flex: fullFlow ? '1' : 'unset' }"
59
+ >
60
+ <el-form
61
+ v-if="showCirculate"
62
+ ref="form"
63
+ :model="circulateForm"
64
+ label-width="120px"
65
+ :label-position="formLabelPosition"
66
+ >
67
+ <el-form-item
68
+ style="margin-top: 20px"
69
+ prop="nextNodeId"
70
+ label="下步节点"
71
+ >
72
+ <el-select
73
+ v-if="nextNodeCheckType == 'select'"
74
+ v-model="circulateForm.nextNodeId"
75
+ style="width: 100% !important"
76
+ :placeholder="`请选择下步节点`"
77
+ >
78
+ <el-option label="传阅" value="111"></el-option>
79
+ </el-select>
80
+ <es-radio-group
81
+ v-else-if="nextNodeCheckType == 'radio'"
82
+ v-model="circulateForm.nextNodeId"
83
+ :data="[{ nodeId: '111', nodeName: '传阅' }]"
84
+ value-key="nodeId"
85
+ label-key="nodeName"
86
+ ></es-radio-group>
87
+ </el-form-item>
88
+ </el-form>
89
+ <circulate
90
+ v-if="showCirculate"
91
+ style="margin-top: 10px"
92
+ :businessId="businessIds"
93
+ :label-position="formLabelPosition"
94
+ :showTooltip="showTooltip"
95
+ ref="circulate"
96
+ :selectorParams="selectorParams"
97
+ :pending-id="pendingId"
98
+ :showBtn="false"
99
+ :formTitle="formTitle"
100
+ :flowLabelConfig="flowLabelConfig"
101
+ :hideMessage="hideMessage"
102
+ :startFlowPageEmbeddedIntoStartFlowIndex="
103
+ startFlowPageEmbeddedIntoStartFlowIndex
104
+ "
105
+ :processDefinitionId="nodeInfo.nextNode"
106
+ :simpleTips="simpleTips"
107
+ :oldOption="value"
108
+ @cancel="closeProcess($event, 'circulateVisible')"
109
+ />
110
+ </div>
111
+
112
+ <el-button
113
+ type="primary"
114
+ style="width: calc(100% - 18px); margin: 8px auto"
115
+ @click="handleClickCirculate()"
116
+ >
117
+ 提交
118
+ </el-button>
119
+ </div>
120
+ <StartTaskRead
121
+ v-else-if="typeCode == 'read'"
122
+ :pending-id="pendingId"
123
+ :opinion="value"
124
+ :showTooltip="showTooltip"
125
+ type="create"
126
+ :simpleTips="simpleTips"
127
+ :key="StartTaskReadKey"
128
+ typeCode="read"
129
+ :param="param"
130
+ :selectorConfig="selectorConfig"
131
+ :resetAppId="resetAppId"
132
+ :taskExamine="taskExamineInfo"
133
+ :flowLabelConfig="flowLabelConfig"
134
+ :hideMessage="hideMessage"
135
+ :subParams="subParams"
136
+ :news-info="nextNode.notificationMsg"
137
+ @cancel="closeProcess($event)"
138
+ />
139
+
140
+ <FreeCirculation
141
+ v-else-if="typeCode == 'freeCirculation'"
142
+ :appId="resetAppId"
143
+ :params="param"
144
+ :showOther="showOther"
145
+ :showTooltip="showTooltip"
146
+ :selectorParams="selectorParams"
147
+ :flowLabelConfig="flowLabelConfig"
148
+ :hideMessage="hideMessage"
149
+ :formLabelPosition="formLabelPosition"
150
+ :simpleTips="simpleTips"
151
+ />
152
+ <Supervise
153
+ :businessId="businessId"
154
+ :appId="resetAppId"
155
+ :showTooltip="showTooltip"
156
+ :flowLabelConfig="flowLabelConfig"
157
+ :hideMessage="hideMessage"
158
+ :simpleTips="simpleTips"
159
+ @cancel="closeProcess($event)"
160
+ v-else-if="typeCode == 'supervise'"
161
+ />
162
+ <reset
163
+ style="height: 100%"
164
+ :type="newTypeCode"
165
+ :showTooltip="showTooltip"
166
+ :simpleTips="simpleTips"
167
+ :appId="resetAppId"
168
+ :flowLabelConfig="flowLabelConfig"
169
+ :hideMessage="hideMessage"
170
+ @cancel="closeProcess($event)"
171
+ :flowParams="param"
172
+ :subParams="subParams"
173
+ v-else-if="newTypeCode == 'reset' || newTypeCode == 'continuation'"
174
+ />
175
+ <div
176
+ class="es-flow-content"
177
+ :style="{ 'justify-content': fullFlow ? 'space-between' : 'unset' }"
178
+ v-else
179
+ >
180
+ <div class="es-flow-top">
181
+ <div class="es-flow-title">
182
+ <span v-show="!shrink"
183
+ >当前节点:{{ isFlow ? nodeName || '拟稿' : NodeName }}</span
184
+ >
185
+ <es-button
186
+ v-if="showShrink"
187
+ size="medium"
188
+ class="es-icon"
189
+ :icon="shrink ? 'es-icon-shouqi' : 'es-icon-zhankai'"
190
+ @click="setShrink"
191
+ ></es-button>
192
+ </div>
193
+ <!-- 'es-icon-indent' : 'es-icon-increase' -->
194
+ <!-- :style="`${!isFlow ? 'color:red' : ''}`" -->
195
+ <div class="es-opinion" v-show="!shrink">
196
+ <span class="es-eidt-title">填写意见</span>
197
+ <span
198
+ v-show="!isFlow && newTypeCode != 'fenyue'"
199
+ class="es-opinion-file"
200
+ @click="showFileList = true"
201
+ ><i class="es-icon-fujian"></i>意见附件<span
202
+ class="es-file-num"
203
+ v-show="fileNum > 0"
204
+ >({{ fileNum }})</span
205
+ ></span
206
+ >
207
+ </div>
208
+ <Opinions
209
+ class="es-common-opinions"
210
+ v-show="!shrink"
211
+ ref="commonOpinions"
212
+ @change="(val) => (value = val)"
213
+ :opinion="value"
214
+ :rows="rows"
215
+ v-if="showOpinion"
216
+ :pendingItemHandleDescription="pendingItemHandleDescription"
217
+ :placeholder="pendingItemHandleDescription"
218
+ :required="isOpinionRequired == 1"
219
+ :isBanInputOpinion="isBanInputOpinion"
220
+ :nodeFixedOpinionSelectList="nodeFixedOpinionSelectList"
221
+ />
222
+ </div>
223
+ <div
224
+ v-show="!isStartFlow && !shrink && isSpecial"
225
+ class="es-flow-middle-more-btn"
226
+ :style="{
227
+ flex: getFlexStyle()
228
+ }"
229
+ >
230
+ <p>快捷操作</p>
231
+ <!-- <div
232
+ :class="`es-flow-middle-more-btn-item ${
233
+ btnType === 'default' ? 'active-btn' : ''
234
+ }`"
235
+ >
236
+ 默认
237
+ </div> -->
238
+ <div
239
+ v-for="item of typeList"
240
+ :key="item.key"
241
+ @click="goView(item)"
242
+ :class="`es-flow-middle-more-btn-item ${
243
+ btnType === btnFunValue(item.fun) ? 'active-btn' : ''
244
+ }`"
245
+ >
246
+ {{ item.value }}
247
+ </div>
248
+ <!-- <div
249
+ v-if="rejectObj.fun"
250
+ :class="`es-flow-middle-more-btn-item ${
251
+ btnType === rejectObj.key ? 'active-btn' : ''
252
+ }`"
253
+ @click="rejectBtn"
254
+ >
255
+ {{ rejectObj.value }}
256
+ </div> -->
257
+ </div>
258
+ <el-form
259
+ v-show="currentNodeIsCircularReadNode"
260
+ ref="nextNode"
261
+ :model="isFlow ? nodeInfo : nextNode"
262
+ class="demo-dynamic"
263
+ label-width="120px"
264
+ :label-position="formLabelPosition"
265
+ >
266
+ <el-form-item
267
+ prop="nextCurrentOrgObj"
268
+ :label="currentOrgName ? currentOrgName : '本单位'"
269
+ >
270
+ <SelectUser
271
+ :nextUser="nextCurrentOrgObjSelect"
272
+ multiple
273
+ mix
274
+ :showTooltip="showTooltip"
275
+ :disableds="currentOrgDisabledObjId"
276
+ @change="disposeAppUnit($event, 'nextCurrentOrgObjSelect')"
277
+ :types="currentOrgSelectorTabs"
278
+ :params="currentOrgSelectorParams"
279
+ />
280
+ </el-form-item>
281
+ <el-form-item
282
+ prop="nextOtherOrgObj"
283
+ :label="otherOrgName ? otherOrgName : '外单位'"
284
+ >
285
+ <SelectUser
286
+ :nextUser="nextOtherOrgObjSelect"
287
+ multiple
288
+ :showTooltip="showTooltip"
289
+ mix
290
+ :disableds="otherOrgDisabledObjId"
291
+ :where="{ filid: 'other' }"
292
+ @change="disposeAppUnit($event, 'nextOtherOrgObjSelect')"
293
+ :types="foreignOrgSelectorTabs"
294
+ :params="foreignOrgSelectorParams"
295
+ />
296
+ </el-form-item>
297
+ </el-form>
298
+ <div
299
+ v-show="
300
+ (!endFlow || nodeInfos.length > 1 || taskOperationShiftedNodeList) &&
301
+ newTypeCode != 'fenyue' &&
302
+ !shrink &&
303
+ btnType === 'default'
304
+ "
305
+ ref="esContent"
306
+ :class="`es-info ${
307
+ formLabelPosition == 'left' ? 'form-left' : 'form-right'
308
+ }`"
309
+ :style="{ flex: fullFlow ? '1' : 'unset' }"
310
+ >
311
+ <el-form
312
+ ref="nextNode"
313
+ :model="isFlow ? nodeInfo : nextNode"
314
+ class="demo-dynamic"
315
+ :rules="rules"
316
+ :label-width="
317
+ startFlowPageEmbeddedIntoStartFlowIndex ? '100px' : '120px'
318
+ "
319
+ :label-position="formLabelPosition"
320
+ >
321
+ <el-form-item
322
+ v-if="isFlow && nodeInfo.option.length > 0 && !flowListDisabled"
323
+ prop="nextNode"
324
+ label="选择流程"
325
+ :rules="[
326
+ // { required: true, message: `请选择流程`, trigger: 'blur' }
327
+ ]"
328
+ >
329
+ <el-input
330
+ placeholder="请输入内容"
331
+ class="input-with-select select-process"
332
+ :class="{ 'hide-flow-char': isStartFlowChartView != 'true' }"
333
+ >
334
+ <el-select
335
+ slot="prepend"
336
+ v-model="nodeInfo.nextNode"
337
+ style="width: calc(100% + 40px)"
338
+ :placeholder="`请选择流程`"
339
+ :key="optionsKey"
340
+ @change="handleChange"
341
+ >
342
+ <el-option
343
+ v-for="items in nodeInfo.option"
344
+ :key="items.id"
345
+ :label="items.name"
346
+ :disabled="items.disabled"
347
+ :value="items.processDefId"
348
+ ></el-option>
349
+ </el-select>
350
+ <div slot="append" v-show="isStartFlowChartView == 'true'">
351
+ <el-button
352
+ icon="es-icon-shu-jituan"
353
+ type="primary"
354
+ @click="
355
+ () => {
356
+ showFlowChart = true;
357
+ }
358
+ "
359
+ ></el-button>
360
+ <el-button
361
+ v-show="activitiDefinitionSort"
362
+ icon="es-icon-paixu"
363
+ type="primary"
364
+ @click="
365
+ () => {
366
+ showSort = true;
367
+ }
368
+ "
369
+ ></el-button>
370
+ </div>
371
+ </el-input>
372
+ </el-form-item>
373
+ <!-- el-icon-picture -->
374
+ <div v-else>
375
+ <!-- 加签开始 -->
376
+ <el-form-item
377
+ prop="isAddSign"
378
+ v-if="isCanAddSign"
379
+ label="是否加签"
380
+ :rules="[
381
+ { required: true, message: `请选择是否加签`, trigger: 'blur' }
382
+ ]"
383
+ >
384
+ <el-radio-group v-model="nextNode.isAddSign">
385
+ <el-radio label="1">是</el-radio>
386
+ <el-radio label="2">否</el-radio>
387
+ </el-radio-group>
388
+ </el-form-item>
389
+ <div v-show="nextNode.isAddSign === '1'">
390
+ <el-form-item
391
+ prop="addSignUserId"
392
+ label="增加本环节办理人"
393
+ :rules="[
394
+ { required: false, message: `请选择办理人`, trigger: 'blur' }
395
+ ]"
396
+ >
397
+ <SelectUser
398
+ :nextUser="nextNode.addSignUserId"
399
+ :multiple="true"
400
+ title="增加办理人"
401
+ :showTooltip="showTooltip"
402
+ @change="changeSelectUser($event, 'addSignUserId', true)"
403
+ />
404
+ </el-form-item>
405
+ <el-form-item
406
+ prop="addSignMode"
407
+ v-if="isCanPreAddSign"
408
+ label="加签模式"
409
+ :rules="[{ required: true, trigger: 'blur' }]"
410
+ >
411
+ <el-radio-group v-model="nextNode.addSignMode">
412
+ <el-radio label="preAddSign">前置加签</el-radio>
413
+ <el-radio label="postAddSign">后置加签</el-radio>
414
+ </el-radio-group>
415
+ </el-form-item>
416
+ </div>
417
+ <!-- 加签结束 -->
418
+ <!-- 减签开始 -->
419
+ <el-form-item
420
+ v-if="isCanRemoveSign"
421
+ prop="isRemoveSign"
422
+ label="是否减签"
423
+ :rules="[
424
+ { required: true, message: `请选择是否加签`, trigger: 'blur' }
425
+ ]"
426
+ >
427
+ <el-radio-group v-model="nextNode.isRemoveSign">
428
+ <el-radio label="1">是</el-radio>
429
+ <el-radio label="2">否</el-radio>
430
+ </el-radio-group>
431
+ </el-form-item>
432
+ <div v-show="nextNode.isRemoveSign === '1'">
433
+ <el-form-item
434
+ prop="removeSignUserId"
435
+ label="删除本环节办理人"
436
+ :rules="[
437
+ { required: false, message: `请选择办理人`, trigger: 'blur' }
438
+ ]"
439
+ >
440
+ <el-checkbox-group v-model="nextNode.removeSignUserId">
441
+ <el-checkbox
442
+ v-for="item of removeUsers"
443
+ :key="item.userId"
444
+ :label="item.userId"
445
+ >{{ item.username }}</el-checkbox
446
+ >
447
+ </el-checkbox-group>
448
+ </el-form-item>
449
+ </div>
450
+ <!-- 减签结束 -->
451
+ <div
452
+ v-if="
453
+ nextNode.isAddSign != '1' &&
454
+ nextNode.isRemoveSign != '1' &&
455
+ isSpecial
456
+ "
457
+ >
458
+ <!-- isChooseNextNode == 1 -->
459
+ <el-form-item
460
+ prop="nextOperate"
461
+ label="下步操作"
462
+ v-if="operationList.length > 0"
463
+ :rules="[
464
+ { required: true, message: `请选择下步操作`, trigger: 'blur' }
465
+ ]"
466
+ >
467
+ <el-select
468
+ v-if="nextOperateCheckType == 'select'"
469
+ v-model="nextNode.nextOperate"
470
+ :placeholder="`请选择下步操作`"
471
+ :disabled="operationList && operationList.length == 1"
472
+ @change="selecNext($event, true)"
473
+ >
474
+ <el-option
475
+ v-for="items in operationList"
476
+ :key="items.key"
477
+ :label="items.value"
478
+ :value="items.key"
479
+ ></el-option>
480
+ </el-select>
481
+ <es-radio-group
482
+ v-else-if="nextOperateCheckType == 'radio'"
483
+ v-model="nextNode.nextOperate"
484
+ :data="operationList"
485
+ @change="selecNext($event, true)"
486
+ value-key="key"
487
+ label-key="value"
488
+ ></es-radio-group>
489
+ </el-form-item>
490
+ <div>
491
+ <el-form-item
492
+ v-if="!isReject && nodeInfos.length != 0 && isShowNode"
493
+ prop="nextNodeId"
494
+ label="下步节点"
495
+ :rules="[
496
+ {
497
+ required: true,
498
+ message: `请选择下步节点`,
499
+ trigger: 'blur'
500
+ }
501
+ ]"
502
+ >
503
+ <el-select
504
+ v-if="nextNodeCheckType == 'select'"
505
+ v-model="nextNode.nextNodeId"
506
+ :placeholder="`请选择下步节点`"
507
+ :disabled="nodeInfos && nodeInfos.length == 1"
508
+ @change="selecNext($event, false)"
509
+ >
510
+ <el-option
511
+ v-for="items in nodeInfos"
512
+ :key="items.id"
513
+ :label="items.nodeName"
514
+ :value="items.nodeId"
515
+ ></el-option>
516
+ </el-select>
517
+ <es-radio-group
518
+ v-else-if="nextNodeCheckType == 'radio'"
519
+ v-model="nextNode.nextNodeId"
520
+ :data="nodeInfos"
521
+ @change="selecNext(nextNode.nextNodeId, false)"
522
+ value-key="nodeId"
523
+ label-key="nodeName"
524
+ ></es-radio-group>
525
+ </el-form-item>
526
+ <el-form-item
527
+ v-if="countersignaturetypeCode != 0 && !isReject"
528
+ prop="handleMode"
529
+ label="处理方式"
530
+ >
531
+ <el-input
532
+ v-model="handleMode"
533
+ placeholder="请输入内容"
534
+ disabled
535
+ />
536
+ </el-form-item>
537
+ <el-form-item
538
+ v-if="isNextUser"
539
+ :prop="isShowNextUser ? 'nextUserId' : 'nextOrgId'"
540
+ :label="
541
+ isShowNextUser
542
+ ? `${flowLabelConfig.nextUser || '下步办理人'}`
543
+ : '办理对象'
544
+ "
545
+ >
546
+ <SelectUser
547
+ :nextUser="
548
+ isShowNextUser ? nextNode.nextUserId : nextNode.nextOrgId
549
+ "
550
+ :radioList="radioList"
551
+ :multiple="multiple"
552
+ :isCustomUser="!isShowNextUser ? 1 : isCustomUser"
553
+ :showTooltip="showTooltip"
554
+ :isCurrentNodeForbiddenChangeCandidate="
555
+ isCurrentNodeForbiddenChangeCandidate
556
+ "
557
+ :options="options"
558
+ :mix="multiple"
559
+ :presetEdit="presetEdit"
560
+ :selectUserList="selectUserList"
561
+ @change="
562
+ changeSelectUser(
563
+ $event,
564
+ isShowNextUser ? 'nextUserId' : 'nextOrgId',
565
+ true
566
+ )
567
+ "
568
+ :types="nextUserTypes"
569
+ :params="isShowNextUser ? params : {}"
570
+ :tabs="nextUserTabs"
571
+ />
572
+ </el-form-item>
573
+
574
+ <el-form-item
575
+ v-if="isHideCurrentOrg && nextNode.isReturnSubmitter != 1"
576
+ prop="nextCurrentOrgObj"
577
+ :label="currentOrgName ? currentOrgName : '本单位'"
578
+ >
579
+ <!-- :radioList="radioList" -->
580
+ <SelectUser
581
+ :nextUser="nextCurrentOrgObjSelect"
582
+ multiple
583
+ mix
584
+ :disableds="currentOrgDisabledObjId"
585
+ @change="disposeAppUnit($event, 'nextCurrentOrgObjSelect')"
586
+ :showTooltip="showTooltip"
587
+ :types="currentOrgSelectorTabs"
588
+ :selectUserList="nextCurrentOrgselectUserList"
589
+ :params="currentOrgSelectorParams"
590
+ />
591
+ </el-form-item>
592
+ <el-form-item
593
+ v-if="isHideOtherOrg && nextNode.isReturnSubmitter != 1"
594
+ prop="nextOtherOrgObj"
595
+ :label="otherOrgName ? otherOrgName : '外单位'"
596
+ >
597
+ <SelectUser
598
+ :nextUser="nextOtherOrgObjSelect"
599
+ multiple
600
+ :showTooltip="showTooltip"
601
+ mix
602
+ :where="{ filid: 'other' }"
603
+ :disableds="otherOrgDisabledObjId"
604
+ @change="disposeAppUnit($event, 'nextOtherOrgObjSelect')"
605
+ :types="foreignOrgSelectorTabs"
606
+ :params="foreignOrgSelectorParams"
607
+ />
608
+ </el-form-item>
609
+ <el-form-item
610
+ v-if="isMainSubProcess && isNodeShowProcess"
611
+ prop="mainSubId"
612
+ label="主办"
613
+ >
614
+ <el-select
615
+ v-model="nextNode.mainSubId"
616
+ :placeholder="`请选择主办`"
617
+ >
618
+ <el-option
619
+ v-for="items in subProcessColumns"
620
+ :key="items.id"
621
+ :label="items.name"
622
+ :value="items.value"
623
+ ></el-option>
624
+ </el-select>
625
+ </el-form-item>
626
+ <TimeLimit
627
+ v-if="nodeType !== 0 && isLimitedTimeHandling === 1"
628
+ :newsList="newsList"
629
+ @change="(val) => (nextNode = { ...nextNode, ...val })"
630
+ />
631
+ <el-form-item
632
+ prop="nextReadUserId"
633
+ v-if="isTaskread == 1"
634
+ label="
635
+ 分阅用户
636
+ "
637
+ >
638
+ <SelectUser
639
+ :nextUser="nextNode.nextReadUserId"
640
+ :multiple="true"
641
+ :selectUserList="selectReadUserList"
642
+ :options="userOptions"
643
+ :showTooltip="showTooltip"
644
+ title="分阅用户"
645
+ :mix="true"
646
+ :types="types"
647
+ @change="changeSelectReadUser($event, 'nextReadUserId')"
648
+ :tabs="tabs"
649
+ />
650
+ </el-form-item>
651
+ <el-form-item
652
+ prop="presetReadUserId"
653
+ v-if="canPresetRead"
654
+ label="
655
+ 自动分阅
656
+ "
657
+ >
658
+ <SelectUser
659
+ :nextUser="nextNode.presetReadUserId"
660
+ :multiple="true"
661
+ :selectUserList="selectPresetUserList"
662
+ :showTooltip="showTooltip"
663
+ :options="presetOptions"
664
+ :radioList="presetReadUserId"
665
+ :presetEdit="1"
666
+ title="分阅用户"
667
+ :mix="true"
668
+ :types="types"
669
+ @change="changeSelectReadUser($event, 'presetReadUserId')"
670
+ :tabs="tabs"
671
+ />
672
+ </el-form-item>
673
+ <el-form-item
674
+ v-if="enableCustomLimitTimeSetting"
675
+ prop="customLimitTime"
676
+ label="限时办理"
677
+ style="margin-bottom: 10px"
678
+ >
679
+ <!-- v-if="!showCustomLimitTimeText" -->
680
+ <div style="display: flex; width: 100%">
681
+ <es-select
682
+ style="flex: 1 !important; display: inline-block"
683
+ v-model="nextNode.customLimitTimeText"
684
+ placeholder="请选择"
685
+ @change="handleChangeTime"
686
+ sysCode="bpm_custom_limit_time"
687
+ ></es-select>
688
+ <el-input
689
+ style="flex: 1; display: inline-block"
690
+ v-model="nextNode.customLimitTime"
691
+ placeholder="请输入限时办理的天数"
692
+ @change="changeCustomLimitTime"
693
+ class="input-with-select custom-limit-time"
694
+ >
695
+ <!-- <es-button
696
+ type="primary"
697
+ slot="append"
698
+ @click="
699
+ () => {
700
+ nextNode.customLimitTime = '';
701
+ showCustomLimitTimeText = !showCustomLimitTimeText;
702
+ }
703
+ "
704
+ >切换{{
705
+ showCustomLimitTimeText ? '选择框' : '文本框'
706
+ }}</es-button
707
+ > -->
708
+ </el-input>
709
+ <span style="margin-left: 5px">天</span>
710
+ </div>
711
+ <!-- slot="prepend" -->
712
+ </el-form-item>
713
+
714
+ <el-form-item
715
+ v-if="isHandleExplain == 1"
716
+ prop="handleExplain"
717
+ label="办理说明"
718
+ >
719
+ <el-input
720
+ placeholder="请输入办理说明"
721
+ v-model="nextNode.handleExplain"
722
+ />
723
+ </el-form-item>
724
+ <el-form-item
725
+ v-if="
726
+ currentNodeEnableItemHandleDescription &&
727
+ !isReject &&
728
+ nodeInfos.length != 0 &&
729
+ isShowNode &&
730
+ isNextUser
731
+ "
732
+ prop="nextItemHandleDescription"
733
+ label="办理说明"
734
+ >
735
+ <el-input
736
+ placeholder="请输入办理说明"
737
+ type="textarea"
738
+ :autosize="{ minRows: 2 }"
739
+ v-model="nextNode.nextItemHandleDescription"
740
+ />
741
+ </el-form-item>
742
+ </div>
743
+ </div>
744
+ </div>
745
+ <CustomPreset
746
+ v-if="isCustomPreset"
747
+ ref="customPreset"
748
+ @changeCustom="
749
+ (data) => {
750
+ presetList = data;
751
+ }
752
+ "
753
+ @changeActiveNames="(val) => (activeNames = val)"
754
+ @loadingEnd="customLoading('end')"
755
+ :flowLabelConfig="flowLabelConfig"
756
+ :hideMessage="hideMessage"
757
+ :showTooltip="showTooltip"
758
+ @loadingStart="customLoading('start')"
759
+ :nextNode="nextNode.nextNodeId"
760
+ :customPresetHintMessage="customPresetHintMessage"
761
+ :id="businessIds"
762
+ :processDefinitionId="nodeInfo.nextNode"
763
+ />
764
+ <Preset
765
+ v-if="isPreset"
766
+ @changePreset="
767
+ (data) => {
768
+ presetUserJson = data;
769
+ }
770
+ "
771
+ @loadingEnd="customLoading('end')"
772
+ @loadingStart="customLoading('start')"
773
+ :nodeId="nextNode.nextNodeId"
774
+ :showTooltip="showTooltip"
775
+ :businessId="businessIds"
776
+ :flowLabelConfig="flowLabelConfig"
777
+ :hideMessage="hideMessage"
778
+ :customPresetHintMessage="customPresetHintMessage"
779
+ :processDefinitionId="nodeInfo.nextNode"
780
+ :presetTaskNodeMap="presetTaskNodeMap"
781
+ :presetTaskNodeKeyStr="presetTaskNodeKeyStr"
782
+ />
783
+ </el-form>
784
+ <ProcessForm
785
+ v-if="
786
+ isFlow &&
787
+ nodeInfo.nextNode &&
788
+ startFlowPageEmbeddedIntoStartFlowIndex &&
789
+ !directCreateCircularReadWhenFlowStarted
790
+ "
791
+ ref="processFormIndex"
792
+ :isCancelSecondConfirmationType="isCancelSecondConfirmationType"
793
+ :id="freeStartFlowParams.startFlowBusinessId || businessIds"
794
+ :simpleTips="simpleTips"
795
+ :showTooltip="showTooltip"
796
+ :hideMessage="hideMessage"
797
+ :flowLabelConfig="flowLabelConfig"
798
+ :is-free-start-flow="
799
+ freeStartFlowParams.useScene === 'multiInsMidwayWithSubmitScene'
800
+ "
801
+ :label-position="formLabelPosition"
802
+ :showBtn="false"
803
+ :formTitle="formTitle"
804
+ :urgencyLevel="urgencyLevel"
805
+ :messageType="newsList"
806
+ :copy-history="freeStartFlowParams.pendedHistoryHandle"
807
+ :process-definition-id="freeStartFlowNextNode || nodeInfo.nextNode"
808
+ :opinion="value"
809
+ :keyCount="msgTypeCount"
810
+ :pendingId="pendingId"
811
+ :taskExamineParam="freeStartFlowParams.newFlowStartNodeItemName"
812
+ :selectorParams="selectorParams"
813
+ :taskParams="taskParams"
814
+ :formType="processFormType"
815
+ @cancel="closeProcess($event, 'handleVisible', closeParent)"
816
+ />
817
+ <circulate
818
+ v-else-if="
819
+ isFlow &&
820
+ nodeInfo.nextNode &&
821
+ startFlowPageEmbeddedIntoStartFlowIndex &&
822
+ directCreateCircularReadWhenFlowStarted
823
+ "
824
+ ref="flowCirculate"
825
+ :showTooltip="showTooltip"
826
+ :flowLabelConfig="flowLabelConfig"
827
+ :label-position="formLabelPosition"
828
+ :businessId="businessId"
829
+ :startFlowPageEmbeddedIntoStartFlowIndex="
830
+ startFlowPageEmbeddedIntoStartFlowIndex
831
+ "
832
+ :formTitle="formTitle"
833
+ :processDefinitionId="nodeInfo.nextNode"
834
+ :simpleTips="simpleTips"
835
+ :showBtn="false"
836
+ :selectorParams="selectorParams"
837
+ :oldOption="value"
838
+ @cancel="closeProcess($event, 'circulateVisible')"
839
+ />
840
+ <div
841
+ v-if="!isFlow && isSpecial && newsList.length > 0 && !hideMessage"
842
+ style="padding: 5px; background: #fff"
843
+ >
844
+ <div class="news" @click="showMessage">
845
+ <span class="news-item">消息通知</span>
846
+ <span :class="showNews ? 'show' : 'sj'"></span>
847
+ </div>
848
+ <div v-if="showNews" ref="messagebox" style="transition: 1s">
849
+ <el-checkbox-group
850
+ @change="handleChangeNotificationType"
851
+ v-model="nextNode.notificationType"
852
+ >
853
+ <el-checkbox
854
+ v-for="item of newsList"
855
+ :key="item.cciValue"
856
+ :label="item.cciValue"
857
+ :disabled="
858
+ readOnlyNotificationType
859
+ ? readOnlyNotificationType.indexOf(item.cciValue) != -1
860
+ : false
861
+ "
862
+ >
863
+ {{ item.shortName }}
864
+ </el-checkbox>
865
+ </el-checkbox-group>
866
+ <!-- <div
867
+ v-show="showNews"
868
+ style="
869
+ border: 1px solid #ccc;
870
+ padding: 5px;
871
+ border-radius: 5px;
872
+ font-size: 13px;
873
+ "
874
+ >
875
+ {{ nextNode.notificationMsg }}
876
+ </div> -->
877
+ <es-input
878
+ style="
879
+ border-color: #ccc;
880
+ padding: 5px;
881
+ border-radius: 5px;
882
+ font-size: 13px;
883
+ "
884
+ autosize
885
+ v-show="showNews && nextNode.notificationType.length > 0"
886
+ type="textarea"
887
+ v-model="nextNode.notificationMsg"
888
+ :readonly="notificationMessageReadOnly"
889
+ />
890
+ </div>
891
+ </div>
892
+ </div>
893
+ <el-form
894
+ ref="nextNode"
895
+ :model="isFlow ? nodeInfo : nextNode"
896
+ v-if="isEndMessage"
897
+ class="demo-dynamic"
898
+ :label-width="
899
+ startFlowPageEmbeddedIntoStartFlowIndex ? '100px' : '120px'
900
+ "
901
+ style="padding: 0px 8px"
902
+ :label-position="formLabelPosition"
903
+ >
904
+ <el-form-item prop="nextItemHandleDescription" label="办结意见">
905
+ <el-input
906
+ placeholder="请输入办结意见"
907
+ type="textarea"
908
+ :autosize="{ minRows: 2 }"
909
+ v-model="endMessage"
910
+ @change="handleEndMessageChange"
911
+ />
912
+ </el-form-item>
913
+ </el-form>
914
+ <ProcessReject
915
+ v-if="btnType === 'reject'"
916
+ ref="reject"
917
+ :pending-id="pendingId"
918
+ :option="value"
919
+ hideBtn
920
+ :showTooltip="showTooltip"
921
+ :simpleTips="simpleTips"
922
+ :flowLabelConfig="flowLabelConfig"
923
+ :hideMessage="hideMessage"
924
+ :show-reject="showReject"
925
+ :news-info="nextNode.notificationMsg"
926
+ @cancel="closeProcess($event, 'showReject')"
927
+ />
928
+ <StartTaskRead
929
+ v-else-if="btnType === 'toStartTaskRead'"
930
+ ref="toStartTaskRead"
931
+ :pending-id="pendingId"
932
+ hideBtn
933
+ :opinion="value"
934
+ :type="taskReadType"
935
+ :showTooltip="showTooltip"
936
+ :flowLabelConfig="flowLabelConfig"
937
+ :hideMessage="hideMessage"
938
+ :selectorConfig="selectorConfig"
939
+ :simpleTips="simpleTips"
940
+ :subParams="subParams"
941
+ :taskExamine="taskExamineInfo"
942
+ :news-info="nextNode.notificationMsg"
943
+ @cancel="closeProcess($event, 'showTaskRead')"
944
+ />
945
+ <TaskUnionExamine
946
+ v-else-if="
947
+ btnType === 'toTakeAdvice' ||
948
+ btnType === 'toUnionExamine' ||
949
+ btnType === 'toStartDraf'
950
+ "
951
+ :ref="btnType"
952
+ class="es-info"
953
+ hideBtn
954
+ @cancel="closeProcess($event, 'showTaskUnionExamine')"
955
+ :simpleTips="simpleTips"
956
+ :pendingId="pendingId"
957
+ :defaultOpinion="nodeDefaultSubmitOpinion"
958
+ :oldOption="value"
959
+ :selectorParams="selectorParams"
960
+ :type="flowType"
961
+ :multiple="flowMultiple"
962
+ :disabled="flowDisabled"
963
+ />
964
+ <div
965
+ class="es-flow-buttons"
966
+ v-if="newTypeCode != 'fenyue' && !shrink"
967
+ style="margin-top: 10px"
968
+ >
969
+ <div v-if="isSubmitButtonShowAgreeAndDisagree == 1">
970
+ <el-button
971
+ class="es-button-agree"
972
+ type="primary"
973
+ @click="subProcess('同意。')"
974
+ >同意</el-button
975
+ >
976
+ <el-button class="es-button-agree" @click="subProcess('不同意。')"
977
+ >不同意</el-button
978
+ >
979
+ <el-button
980
+ class="es-button-agree-save"
981
+ v-if="!isHideTemporarySave"
982
+ @click="saveInfo()"
983
+ >{{ saveButtonName }}</el-button
984
+ >
985
+ </div>
986
+ <div
987
+ class="es-user-defined"
988
+ v-if="
989
+ (nodeInfos.length > 0 ||
990
+ nodeInfo.option.length > 0 ||
991
+ operationList.length > 0 ||
992
+ endFlow) &&
993
+ btnList.length <= 2
994
+ "
995
+ >
996
+ <el-button
997
+ v-show="isSubmitButtonShowAgreeAndDisagree != 1"
998
+ v-for="item of hideBtn || isHideTemporarySave
999
+ ? btnList.slice(0, 1)
1000
+ : btnList"
1001
+ :key="item.name"
1002
+ :type="item.type"
1003
+ :style="btnStyle"
1004
+ @click="item.event === 'sub' ? subProcess() : saveInfo(false, item)"
1005
+ >
1006
+ {{ item.event == 'save' ? saveButtonName : item.text }}
1007
+ </el-button>
1008
+
1009
+ <div
1010
+ v-if="
1011
+ btnList.length > 1 ||
1012
+ (!isFlow && (rejectObj.fun || pointsReadingObj.fun || moreList))
1013
+ "
1014
+ placement="top"
1015
+ :class="{ 'em-flow-more-btn': !hideBtn }"
1016
+ trigger="click"
1017
+ >
1018
+ <!-- <div v-if="!isFlow && !hideBtn" class="es-footer-btn">
1019
+ <el-button
1020
+ v-if="rejectObj.fun"
1021
+ @click="rejectBtn"
1022
+ style="margin-right: 10px"
1023
+ type="danger"
1024
+ >
1025
+ {{ rejectObj.value }}
1026
+ </el-button>
1027
+ <el-button
1028
+ v-if="pointsReadingObj.fun"
1029
+ class="es-flow-btn"
1030
+ @click="taskReadBtn"
1031
+ >分阅33332</el-button
1032
+ >
1033
+ <el-button
1034
+ class="es-flow-btn"
1035
+ v-for="item of moreList"
1036
+ :key="item.key"
1037
+ @click="goView(item)"
1038
+ >
1039
+ {{ item.value }}
1040
+ </el-button>
1041
+ </div> -->
1042
+ <!-- <el-button-group
1043
+ slot="reference"
1044
+ style="margin: 0px 10px"
1045
+ v-if="hideBtn"
1046
+ > -->
1047
+ <!-- <el-button
1048
+ v-show="isSubmitButtonShowAgreeAndDisagree != 1"
1049
+ v-for="item of btnList.slice(0, 2)"
1050
+ :key="item.name"
1051
+ :type="item.type"
1052
+ :style="btnStyle"
1053
+ @click.stop="
1054
+ item.event === 'sub' ? subProcess() : saveInfo(false, item)
1055
+ "
1056
+ >
1057
+ {{ item.event == 'save' ? saveButtonName : item.text }}
1058
+ </el-button> -->
1059
+ <!-- <el-dropdown
1060
+ v-if="
1061
+ !isFlow &&
1062
+ (rejectObj.fun || pointsReadingObj.fun || moreList.length > 0)
1063
+ "
1064
+ trigger="click"
1065
+ placement="top"
1066
+ style="border-left: 1px solid #d9d9d9"
1067
+ >
1068
+ <el-button>...</el-button>
1069
+ <el-dropdown-menu slot="dropdown">
1070
+ <el-dropdown-item v-for="item of moreList" :key="item.key">
1071
+ <div class="es-flow-btn" @click="goView(item)">
1072
+ {{ item.value }}
1073
+ </div>
1074
+ </el-dropdown-item>
1075
+ <el-dropdown-item v-if="pointsReadingObj.fun">
1076
+ <div class="es-flow-btn" @click="taskReadBtn">分阅444</div>
1077
+ </el-dropdown-item>
1078
+ <el-dropdown-item v-if="rejectObj.fun">
1079
+ <div style="color: red" @click="rejectBtn">
1080
+ {{ rejectObj.value }}
1081
+ </div>
1082
+ </el-dropdown-item>
1083
+ </el-dropdown-menu>
1084
+ </el-dropdown> -->
1085
+ <!-- </el-button-group> -->
1086
+ </div>
1087
+ </div>
1088
+ </div>
1089
+ <div v-else-if="!shrink" class="es-fenyue-buttons">
1090
+ <el-button
1091
+ type="primary"
1092
+ size="medium"
1093
+ class="es-fenyue-buttons-yj"
1094
+ :style="`margin: 10px 0px`"
1095
+ @click="taskRead()"
1096
+ >
1097
+ 阅结
1098
+ </el-button>
1099
+ <el-button
1100
+ v-show="isCanReadTransferHandle"
1101
+ size="medium"
1102
+ style="margin: 10px 0px; margin-left: 10px"
1103
+ :disabled="readTransferHandleDisabled"
1104
+ @click="taskReadTransferHandle()"
1105
+ >
1106
+ 阅转办
1107
+ </el-button>
1108
+ <el-button
1109
+ class="es-flow-btn"
1110
+ v-if="isCanFenyue == '1'"
1111
+ size="medium"
1112
+ style="margin: 10px 0px; margin-left: 10px"
1113
+ @click="taskReadBtn"
1114
+ >分阅222</el-button
1115
+ >
1116
+ </div>
1117
+ <!-- 弹窗内容 -->
1118
+ <es-dialog
1119
+ v-if="circulateVisible"
1120
+ append-to-body
1121
+ height="auto"
1122
+ ref="circulateVisible"
1123
+ title="发起传阅"
1124
+ :close-on-click-modal="false"
1125
+ :visible.sync="circulateVisible"
1126
+ :closeParent="closeParent"
1127
+ >
1128
+ <circulate
1129
+ :businessId="businessId"
1130
+ :flowLabelConfig="flowLabelConfig"
1131
+ :hideMessage="hideMessage"
1132
+ :processDefinitionId="nodeInfo.nextNode"
1133
+ :showTooltip="showTooltip"
1134
+ :simpleTips="simpleTips"
1135
+ :selectorParams="selectorParams"
1136
+ :oldOption="value"
1137
+ @cancel="closeProcess($event, 'circulateVisible')"
1138
+ />
1139
+ </es-dialog>
1140
+ <es-dialog
1141
+ v-if="handleVisible"
1142
+ append-to-body
1143
+ height="auto"
1144
+ class="flow-dialog"
1145
+ ref="handleVisible"
1146
+ :title="title"
1147
+ :close-on-click-modal="false"
1148
+ :visible.sync="handleVisible"
1149
+ :closeParent="closeParent"
1150
+ >
1151
+ <ProcessForm
1152
+ :id="freeStartFlowParams.startFlowBusinessId || businessIds"
1153
+ :isCancelSecondConfirmationType="isCancelSecondConfirmationType"
1154
+ :pending-id="pendingId"
1155
+ :showTooltip="showTooltip"
1156
+ :simpleTips="simpleTips"
1157
+ :selectorParams="selectorParams"
1158
+ :flowLabelConfig="flowLabelConfig"
1159
+ :hideMessage="hideMessage"
1160
+ :is-free-start-flow="
1161
+ freeStartFlowParams.useScene === 'multiInsMidwayWithSubmitScene'
1162
+ "
1163
+ :pendingId="pendingId"
1164
+ :copy-history="freeStartFlowParams.pendedHistoryHandle"
1165
+ :process-definition-id="freeStartFlowNextNode || nodeInfo.nextNode"
1166
+ :opinion="value"
1167
+ :taskExamineParam="freeStartFlowParams.newFlowStartNodeItemName"
1168
+ :taskParams="taskParams"
1169
+ :formType="processFormType"
1170
+ @cancel="closeProcess($event, 'handleVisible', closeParent)"
1171
+ />
1172
+ </es-dialog>
1173
+ <es-dialog
1174
+ append-to-body
1175
+ :close-on-click-modal="false"
1176
+ title="流程图查看"
1177
+ class="flow-chart-dialog"
1178
+ :visible.sync="showFlowChart"
1179
+ v-if="showFlowChart"
1180
+ >
1181
+ <!-- <FlowChart :nodeId="nodeInfo.nextNode" v-if="showFlowChart" /> -->
1182
+ <img
1183
+ style="width: 100%"
1184
+ :src="`${charUrl}/bpm/service/diagram/getpng.png?processDefinitionId=${nodeInfo.nextNode}`"
1185
+ alt="加载失败"
1186
+ />
1187
+ </es-dialog>
1188
+ <es-dialog
1189
+ v-if="showReject"
1190
+ append-to-body
1191
+ class="flow-dialog"
1192
+ height="auto"
1193
+ title="驳回"
1194
+ ref="showReject"
1195
+ :close-on-click-modal="false"
1196
+ :visible.sync="showReject"
1197
+ >
1198
+ <ProcessReject
1199
+ v-if="showReject"
1200
+ :pending-id="pendingId"
1201
+ :option="value"
1202
+ :showTooltip="showTooltip"
1203
+ :simpleTips="simpleTips"
1204
+ :flowLabelConfig="flowLabelConfig"
1205
+ :hideMessage="hideMessage"
1206
+ :show-reject="showReject"
1207
+ :news-info="nextNode.notificationMsg"
1208
+ @cancel="closeProcess($event, 'showReject')"
1209
+ />
1210
+ </es-dialog>
1211
+ <es-dialog
1212
+ v-if="showTaskRead"
1213
+ append-to-body
1214
+ class="flow-dialog"
1215
+ height="auto"
1216
+ ref="showTaskRead"
1217
+ :close-on-click-modal="false"
1218
+ :title="taskReadType === 'transfer' ? '转办' : '分阅'"
1219
+ :visible.sync="showTaskRead"
1220
+ >
1221
+ <StartTaskRead
1222
+ :pending-id="pendingId"
1223
+ :opinion="value"
1224
+ :type="taskReadType"
1225
+ :showTooltip="showTooltip"
1226
+ :flowLabelConfig="flowLabelConfig"
1227
+ :hideMessage="hideMessage"
1228
+ :selectorConfig="selectorConfig"
1229
+ :simpleTips="simpleTips"
1230
+ :subParams="subParams"
1231
+ :taskExamine="taskExamineInfo"
1232
+ :news-info="nextNode.notificationMsg"
1233
+ @cancel="closeProcess($event, 'showTaskRead')"
1234
+ />
1235
+ </es-dialog>
1236
+ <es-dialog
1237
+ v-if="showFileList"
1238
+ append-to-body
1239
+ title="意见附件"
1240
+ class="flow-dialog"
1241
+ :close-on-click-modal="false"
1242
+ :visible.sync="showFileList"
1243
+ >
1244
+ <FileList
1245
+ :ownId="pendingId"
1246
+ :code="attachedCode"
1247
+ @changeFileNum="(val) => (fileNum = val)"
1248
+ />
1249
+ </es-dialog>
1250
+ <es-dialog
1251
+ v-if="showSort"
1252
+ append-to-body
1253
+ title="流程定义调整排序"
1254
+ class="flow-dialog"
1255
+ :close-on-click-modal="false"
1256
+ :visible.sync="showSort"
1257
+ >
1258
+ <SortFlow
1259
+ :flowTypeCode="flowTypeCode"
1260
+ :defaultProcessKey="defaultProcessKey"
1261
+ @success="sortSuccess"
1262
+ @close="showSort = false"
1263
+ />
1264
+ </es-dialog>
1265
+ <es-dialog
1266
+ v-if="showSendMsg"
1267
+ append-to-body
1268
+ height="auto"
1269
+ title="发送消息"
1270
+ class="flow-dialog"
1271
+ ref="showSendMsg"
1272
+ :close-on-click-modal="false"
1273
+ :visible.sync="showSendMsg"
1274
+ >
1275
+ <SendMsg
1276
+ @cancel="closeProcess($event, 'showSendMsg')"
1277
+ :simpleTips="simpleTips"
1278
+ :pendingId="pendingId"
1279
+ :showTooltip="showTooltip"
1280
+ :newsList="newsList"
1281
+ />
1282
+ </es-dialog>
1283
+ <es-dialog
1284
+ v-if="showTaskUnionExamine"
1285
+ append-to-body
1286
+ height="auto"
1287
+ class="flow-dialog"
1288
+ ref="showTaskUnionExamine"
1289
+ :close-on-click-modal="false"
1290
+ :title="flowTitle"
1291
+ :visible.sync="showTaskUnionExamine"
1292
+ >
1293
+ <TaskUnionExamine
1294
+ @cancel="closeProcess($event, 'showTaskUnionExamine')"
1295
+ :simpleTips="simpleTips"
1296
+ :showTooltip="showTooltip"
1297
+ :pendingId="pendingId"
1298
+ :defaultOpinion="nodeDefaultSubmitOpinion"
1299
+ :oldOption="value"
1300
+ :flowLabelConfig="flowLabelConfig"
1301
+ :hideMessage="hideMessage"
1302
+ :selectorParams="selectorParams"
1303
+ :type="flowType"
1304
+ :multiple="flowMultiple"
1305
+ :disabled="flowDisabled"
1306
+ />
1307
+ </es-dialog>
1308
+ <es-dialog
1309
+ v-if="showFreeStartFlow"
1310
+ height="auto"
1311
+ class="flow-dialog"
1312
+ ref="handleVisible"
1313
+ :title="title"
1314
+ :close-on-click-modal="false"
1315
+ :visible.sync="showFreeStartFlow"
1316
+ >
1317
+ <es-free-start-flow
1318
+ v-if="showFreeStartFlow"
1319
+ isStartFlow
1320
+ v-bind="freeStartFlowParams"
1321
+ :flowLabelConfig="flowLabelConfig"
1322
+ :hideMessage="hideMessage"
1323
+ :simpleTips="simpleTips"
1324
+ @close="showFreeStartFlow = false"
1325
+ @success="freeStartFlowSuccess"
1326
+ :btnList="[{ text: '提交', event: 'sub', type: 'primary' }]"
1327
+ :taskParams="taskParams"
1328
+ ></es-free-start-flow>
1329
+ <!-- @success="handleSuccess"
1330
+ @save="handleSave" -->
1331
+ </es-dialog>
1332
+ </div>
1333
+ </div>
1334
+ </template>
1335
+
1336
+ <script>
1337
+ import Opinions from './component/Opinions.vue';
1338
+ import flowNew from './flow.vue';
1339
+ import ProcessForm from './processForm.vue';
1340
+ import CustomPreset from './component/CustomPreset.vue';
1341
+ import Preset from './component/Preset.vue';
1342
+ import FileList from './component/FileList.vue';
1343
+ import SendMsg from './component/SendMsg.vue';
1344
+ import TimeLimit from './component/TimeLimit.vue';
1345
+ import ProcessReject from './processReject.vue';
1346
+ import StartTaskRead from './startTaskRead.vue';
1347
+ import Reset from './reset.vue';
1348
+ import TaskUnionExamine from './component/taskUnionExamine.vue';
1349
+ import FreeStartFlow from './freeStartFlow.vue';
1350
+ import SelectUser from './selectUser.vue';
1351
+ import Supervise from './supervise.vue';
1352
+ import circulate from './component/Circulate.vue';
1353
+ import FreeCirculation from './component/FreeCirculation.vue';
1354
+ import SortFlow from './component/SortFlow.vue';
1355
+ import {
1356
+ findSysCodes,
1357
+ getHandleInfoHtml,
1358
+ getNodeInfo,
1359
+ tempSave,
1360
+ getProcessDefList,
1361
+ pendedhistoryList,
1362
+ endFlowHtml,
1363
+ taskReadHtml,
1364
+ findCodeValues,
1365
+ toStartTaskReadIndex,
1366
+ loginUserInfo,
1367
+ getAdjunctFileInfos,
1368
+ rejectAndEnd,
1369
+ getFreeStartFlowParams,
1370
+ isCanStartSubFlow,
1371
+ checkForeignOrgStartedCircularRead,
1372
+ checkBusinessIdStartedReadTransferHandle,
1373
+ taskHandleHtml,
1374
+ getNodeInfoForStart,
1375
+ isCancelSecondConfirmation,
1376
+ getUrgencyLevelChangedNotificationType
1377
+ } from 'eoss-ui/src/config/api';
1378
+ import util from 'eoss-ui/src/utils/util';
1379
+ export default {
1380
+ name: 'EsFlowNew',
1381
+ componentName: 'EsFlowNew',
1382
+ components: {
1383
+ [ProcessForm.name]: ProcessForm,
1384
+ [ProcessReject.name]: ProcessReject,
1385
+ [StartTaskRead.name]: StartTaskRead,
1386
+ [CustomPreset.name]: CustomPreset,
1387
+ [Opinions.name]: Opinions,
1388
+ [FileList.name]: FileList,
1389
+ [TimeLimit.name]: TimeLimit,
1390
+ [SendMsg.name]: SendMsg,
1391
+ [SelectUser.name]: SelectUser,
1392
+ [TaskUnionExamine.name]: TaskUnionExamine,
1393
+ [FreeStartFlow.name]: FreeStartFlow,
1394
+ [SortFlow.name]: SortFlow,
1395
+ circulate,
1396
+ Preset,
1397
+ Reset,
1398
+ Supervise,
1399
+ FreeCirculation
1400
+ },
1401
+ props: {
1402
+ hideMessage: { type: Boolean, default: false },
1403
+ showShrink: { type: Boolean, default: true },
1404
+ showTooltip: { type: Boolean, default: true },
1405
+ isStartFlow: { type: Boolean, default: false },
1406
+ businessId: { type: String, default: '' },
1407
+ pendingId: { type: String, default: '' },
1408
+ nodeName: { type: String, default: '' },
1409
+ typeCode: { type: String, default: '' },
1410
+ selectorConfig: { type: [Object, undefined], default: undefined },
1411
+ flowTypeCode: { type: String, default: '' },
1412
+ defaultProcessKey: { type: String, default: '' },
1413
+ hideBtn: { type: Boolean, default: false },
1414
+ isCirculate: { type: Boolean, default: false },
1415
+ newFlow: { type: Boolean, default: false },
1416
+ formLabelPosition: {
1417
+ type: String,
1418
+ default: 'left'
1419
+ },
1420
+
1421
+ flowListDisabled: {
1422
+ type: Boolean,
1423
+ default: false
1424
+ },
1425
+ btnList: {
1426
+ type: Array,
1427
+ default: () => [
1428
+ { text: '暂存', event: 'save' },
1429
+ { text: '提交', event: 'sub', type: 'primary' },
1430
+ ]
1431
+ },
1432
+ subFun: {
1433
+ type: Function,
1434
+ default: (callBack) => {
1435
+ callBack();
1436
+ }
1437
+ },
1438
+ urgencyLevel: {
1439
+ type: [String, Number],
1440
+ default: ''
1441
+ },
1442
+ beforeSubmit: Function,
1443
+ title: { type: String, default: '流程办理' },
1444
+ formTitle: { type: String, default: '' },
1445
+ closeParent: Boolean,
1446
+ param: {
1447
+ type: Object,
1448
+ default: () => {}
1449
+ },
1450
+ subParams: {
1451
+ type: Object,
1452
+ default: () => {}
1453
+ },
1454
+ selectorParams: {
1455
+ type: Object,
1456
+ default: () => {
1457
+ return {};
1458
+ }
1459
+ },
1460
+ fullFlow: {
1461
+ type: Boolean,
1462
+ default: true
1463
+ },
1464
+ showReadConfirm: {
1465
+ type: Boolean,
1466
+ default: true
1467
+ },
1468
+ width: {
1469
+ type: String
1470
+ },
1471
+ resetAppId: { type: String },
1472
+ userSelectRange: {
1473
+ type: String
1474
+ },
1475
+ rows: {
1476
+ type: [String, Number],
1477
+ default: 10
1478
+ },
1479
+ showOther: {
1480
+ type: Boolean,
1481
+ default: true
1482
+ },
1483
+ flowLabelConfig: {
1484
+ type: Object,
1485
+ default: () => {
1486
+ return {};
1487
+ }
1488
+ },
1489
+ isEndMessage: { type: Boolean, default: false }
1490
+ },
1491
+ data() {
1492
+ return {
1493
+ styles: {},
1494
+ optionsKey: 0,
1495
+ endMessage: '',
1496
+ typeList: [
1497
+ {
1498
+ value: '默认',
1499
+ key: 'button_default',
1500
+ fun: 'default'
1501
+ }
1502
+ ], // 更多数组
1503
+ isHideTemporarySave: false,
1504
+ oldNextOperate: '',
1505
+ showOpinion: true,
1506
+ submitButtonFunKey: '',
1507
+ activitiDefinitionSort: false,
1508
+ taskNodeButtons: [],
1509
+ taskOperationShiftedNodeList: null,
1510
+ currentNodeEnableItemHandleDescription: false,
1511
+ startFlowPageEmbeddedIntoStartFlowIndex: false,
1512
+ pendingItemHandleDescription: '',
1513
+ currentOrgSelectorParams: { filid: '', only_filid: true },
1514
+ currentOrgSelectorTabs: ['employee', 'persongroup'],
1515
+ foreignOrgSelectorTabs: ['enterprise', 'filgroupobj'],
1516
+ foreignOrgSelectorParams: { filid: 'all', roleid: '' },
1517
+ showCirculate: undefined,
1518
+ circulateForm: { nextNodeId: '111' },
1519
+ userModel: {},
1520
+ simpleTips: true,
1521
+ showFreeStartFlow: false, //自由发起流程弹窗
1522
+ freeStartFlowParams: {}, //自由发起流程参数
1523
+ freeStartFlowNextNode: undefined,
1524
+ otherOrgDisabledObjId: [],
1525
+ isCanReadTransferHandle: false,
1526
+ readTransferHandleDisabled: true,
1527
+ showCustomLimitTimeText: false,
1528
+ showSort: false,
1529
+ currentOrgDisabledObjId: [],
1530
+ nextNodeCheckType: 'select',
1531
+ nextOperateCheckType: 'select',
1532
+ readOnlyNotificationType: '',
1533
+ circularReadParamsMap: { circularReadOrgRoleCode: '' },
1534
+ taskParams: {},
1535
+ processFormType: undefined,
1536
+ notificationMessageReadOnly: false,
1537
+ isCanPreAddSign: false,
1538
+ isStartFlowChartView: undefined,
1539
+ nextOtherOrgObjSelect: [],
1540
+ subProcessColumns: [],
1541
+ nextCurrentOrgObjSelect: [],
1542
+ nextCurrentOrgselectUserList: [],
1543
+ loading: null, // 加载中
1544
+ newTypeCode: '',
1545
+ NodeName: '', // 当前节点值
1546
+ radioList: [],
1547
+ taskReadOpinionRequired: undefined,
1548
+ value: '',
1549
+ nodeFixedOpinionSelectList: [],
1550
+ customPresetHintMessage: '', //流程预设标题
1551
+ flowType: '',
1552
+ flowDisabled: false,
1553
+ activeNames: '1',
1554
+ isEndUserTask: true,
1555
+ enableCustomLimitTimeSetting: false, //是否开启限时办理
1556
+ isForceDisplayDefaultOptionForPrefix: false,
1557
+ selectUserList: [],
1558
+ selectNextCurrentOrgObjList: [],
1559
+ flowMultiple: true,
1560
+ isCustomUser: 0,
1561
+ shrink: false,
1562
+ shrinkAbled: false,
1563
+ freeValid: true,
1564
+ taskExamineInfo: {},
1565
+ presetUserJson: [],
1566
+ presetList: [],
1567
+ fileNum: 0, //附件数量
1568
+ showFileList: false, //意见附件弹窗
1569
+ attachedCode: '', //附件code码
1570
+ isCustomPreset: false,
1571
+ isBanInputOpinion: 0, //是否可以填写意见 0是 1否
1572
+ isPreset: false,
1573
+ businessIds: '',
1574
+ presetTaskNodeKeyStr: '',
1575
+ presetTaskNodeMap: {},
1576
+ flowTitle: '',
1577
+ endFlowInfo: {},
1578
+ isCanFenyue: '0',
1579
+ appId: '',
1580
+ btnType: 'default',
1581
+ currentNodeIsCircularReadNode: false,
1582
+ multiple: false, //是否多选(true/false)
1583
+ readMultiple: true, //分阅用户是否多选(true/false)
1584
+ selectReadUserList: [], //选中分阅用户
1585
+ mixPresetList: [], //自动分阅混选
1586
+ selectPresetUserList: [], //自动分阅选中用户
1587
+ presetOptions: [], //自动分阅
1588
+ isLimitedTimeHandling: 0, //是否支持发起子流程限时办理
1589
+ nodeType: 0, //节点类型, (普通节点0,承办节点1,会签节点2,阅办节点3)
1590
+ userOptions: [], //分阅用户
1591
+ StartTaskReadKey: 0,
1592
+ mixReadList: [], //分阅混选
1593
+ mixCurrentOrg: [], //本单位混选
1594
+ isTaskread: 0, //是否展示分阅用户
1595
+ showSendMsg: false, //是否展示核稿通知页面
1596
+ canPresetRead: false, //是否展示自动分阅
1597
+ isHideCurrentOrg: false, //是否隐藏本单位(承办)
1598
+ isHideOtherOrg: false, //是否隐藏外单位(承办)
1599
+ isMainSubProcess: false, // 判断是否子-主流程
1600
+ isNodeShowProcess: false, //是否展示主办
1601
+ isNextUser: false,
1602
+ isShowNode: false,
1603
+ nextNodeList: [],
1604
+ removeUsers: [],
1605
+ options: [],
1606
+ params: {
1607
+ filid: 'all', //选择范围(my:本单位/ "" or all:全部)
1608
+ selectmix: 'true1',
1609
+ deptid: '' //指定部门(my:本部门)
1610
+ },
1611
+ showReject: false, // 是否展示驳回按钮
1612
+ showTaskRead: false, // 是否展示分阅按钮
1613
+ taskReadType: '', //分阅类型
1614
+ isChooseNextNode: 1, //是否展示下步操作
1615
+ isHideDefaultOperation: false, //是否隐藏默认操作
1616
+ isHandleExplain: 0, //是否展示办理说明
1617
+ handleVisible: false,
1618
+ circulateVisible: false,
1619
+ defaultNextNode: '', //默认节点
1620
+ showFlowChart: false, // 展示流程图弹窗
1621
+ isReject: false, // 是否驳回
1622
+ showTaskUnionExamine: false, //展示联合审核弹窗
1623
+ charUrl: util.win.location.origin, //util.win.location.origin,
1624
+ endFlow: false, // 是否结束流程
1625
+ isCurrentNodeForbiddenChangeCandidate: 0, //是否禁止选择办理人
1626
+ isSubmitButtonShowAgreeAndDisagree: 0, //是否展示同意和不同意按钮
1627
+ pointsReadingObj: {
1628
+ value: '分阅',
1629
+ fun: undefined
1630
+ }, // 分阅
1631
+ rejectObj: {
1632
+ value: '驳回',
1633
+ fun: undefined
1634
+ },
1635
+ isLimitedTimeHandling: false, // 是否支持发起子流程限时办理
1636
+ moreList: [], // 更多数组
1637
+ newsList: [], // 通知类型
1638
+ isSpecial: false,
1639
+ taskId: '',
1640
+ showNews: false, // 是否展示通知信息
1641
+ userInfo: '', // 用户信息
1642
+ objType: '',
1643
+ nodeDefaultSubmitOpinion: '', // 默认保存意见
1644
+ nodeDefaultRejectOpinion: '', // 默认驳回意见
1645
+ choiceOrgId: '',
1646
+ choiceDeptId: '',
1647
+ pOrgId: '',
1648
+ // userSelectionType: '',
1649
+ isOpinionRequired: 0, // 常用意见是否必填
1650
+ nextUserSelectList: [], // 下步选中办理人
1651
+ processObj: {}, // 流程信息
1652
+ pid: '123',
1653
+ isCanRemoveSign: false, // 是否显示减签
1654
+ isCanAddSign: false, // 是否显示加签
1655
+ AddSignUserList: [], // 加签办理人数组
1656
+ RemoveSignUserList: [], // 减签办理人数组
1657
+ operationList: [], // 下一步操作
1658
+ userList: [], // 下步办理人数组
1659
+ handleMode: '',
1660
+ countersignaturetypeCode: 0, //是否展示处理方式
1661
+ presetEdit: 0,
1662
+ directCreateCircularReadWhenFlowStarted: false,
1663
+ isShowNextUser: true, //是否展示下步办理人
1664
+ nextUserTypes: ['employee', 'persongroup'], //下步办理人类型配置
1665
+ nextUserTabs: {}, //下步办理人权限配置
1666
+ isCancelSecondConfirmationType: false,
1667
+ presetReadUserId: [],
1668
+ nextNode: {
1669
+ nextNodeId: '', // 下步节点
1670
+ addSignMode: 'postAddSign',
1671
+ isAddSign: '', // 是否加签
1672
+ isRemoveSign: '', // 是否减签
1673
+ customLimitTime: '', //限时天数
1674
+ customLimitTimeText: '', //限时天数
1675
+ nextOperate: '', // 下步操作
1676
+ notificationMsg: '', // 通知信息
1677
+ addSignUserId: [], // 加签办理人
1678
+ removeSignUserId: [], // 减签办理人
1679
+ nextUserId: [], // 下步办理人
1680
+ nextOrgId: [], //办理对象
1681
+ nextCurrentOrgObj: [],
1682
+ nextCurrentOrgObjSerialId: [], //本单位用户
1683
+ nextOtherOrgObj: [], //外单位
1684
+ nextReadUserId: [], //分阅用户
1685
+ presetReadUserId: [], //自动分阅
1686
+ handleExplain: '', //办理意见
1687
+ nextItemHandleDescription: '', //下步说明
1688
+ notificationType: [], // 通知方式
1689
+ isLimitedTime: '2', // 是否限时办理
1690
+ mainSubId: ''
1691
+ },
1692
+ nodeInfos: [], // 下步节点选择数组
1693
+ nextFlowNode: '',
1694
+ currentOrgName: '', //本单位名称
1695
+ otherOrgName: '', //外单位名称
1696
+ needRetrialAuth: false, //是否二次鉴权
1697
+ msgTypeCount: 0,
1698
+ saveButtonName: '暂存',
1699
+ nodeInfo: {
1700
+ nextNode: '',
1701
+ nextUser: '',
1702
+ option: []
1703
+ }
1704
+ };
1705
+ },
1706
+ created() {
1707
+ this.getUserInfo();
1708
+ },
1709
+ destroyed() {
1710
+ this.shrink = false;
1711
+ },
1712
+ mounted() {
1713
+ this.businessIds = this.businessId;
1714
+ this.currentOrgSelectorParams.filid = JSON.parse(
1715
+ util.getStorage('mainConfig')
1716
+ ).userModel.orgId;
1717
+ this.getIsCancelSecondConfirmation();
1718
+ this.foreignOrgSelectorParams.roleid =
1719
+ this.currentOrgSelectorParams.roleid = this.selectorParams.roleid;
1720
+ this.nextNode.nextNodeId = this.nextNodeId;
1721
+ if (!this.isFlow) {
1722
+ this.getInfo();
1723
+ }
1724
+ },
1725
+ watch: {
1726
+ urgencyLevel: {
1727
+ handler(val) {
1728
+ if (val && this.msgTypeCount != 0) {
1729
+ this.getAdminMsgType();
1730
+ } else {
1731
+ this.msgTypeCount++;
1732
+ }
1733
+ },
1734
+ deep: true,
1735
+ immediate: true
1736
+ },
1737
+ isCirculate: {
1738
+ handler(val) {
1739
+ if (!val && this.showCirculate != undefined) {
1740
+ this.showCirculate = val;
1741
+ this.getInfo();
1742
+ }
1743
+ this.showCirculate = val;
1744
+ },
1745
+ deep: true,
1746
+ immediate: true
1747
+ },
1748
+ width: {
1749
+ immediate: true,
1750
+ handler(val) {
1751
+ if (val) {
1752
+ this.styles = { width: parseInt(val, 10) + 'px' };
1753
+ }
1754
+ }
1755
+ },
1756
+ businessId(val) {
1757
+ if (val) {
1758
+ this.businessIds = val;
1759
+ if (this.isFlow) {
1760
+ this.getProcess();
1761
+ }
1762
+ }
1763
+ },
1764
+ flowTypeCode: {
1765
+ handler(val) {
1766
+ this.isFlow && this.businessId && this.getProcess(val);
1767
+ },
1768
+ deep: true,
1769
+ immediate: true
1770
+ },
1771
+ defaultProcessKey: {
1772
+ handler(val) {
1773
+ if (this.nodeInfo.option) {
1774
+ this.nodeInfo.nextNode = this.nodeInfo.option.filter(
1775
+ (item) => item.processDefKey == val
1776
+ );
1777
+ if (this.nodeInfo.nextNode.length) {
1778
+ this.nodeInfo.nextNode = this.nodeInfo.nextNode[0].processDefId;
1779
+ } else {
1780
+ if (this.nodeInfo.option.length != 0) {
1781
+ this.nodeInfo.nextNode = this.nodeInfo.option[0].processDefId;
1782
+ } else {
1783
+ this.nodeInfo.nextNode = '';
1784
+ }
1785
+ }
1786
+ if (this.nodeInfo.nextNode) {
1787
+ this.handleChange(this.nodeInfo.nextNode, true);
1788
+ }
1789
+ }
1790
+ },
1791
+ deep: true,
1792
+ immediate: true
1793
+ }
1794
+ },
1795
+ computed: {
1796
+ rules() {
1797
+ return {
1798
+ customLimitTime: [
1799
+ {
1800
+ required: this.enableCustomLimitTimeSetting,
1801
+ message: this.showCustomLimitTimeText
1802
+ ? '请输入限时办理天数'
1803
+ : '请选择限时办理天数',
1804
+ trigger: 'blur'
1805
+ },
1806
+ {
1807
+ required: this.enableCustomLimitTimeSetting,
1808
+ validator: this.checkCustomLimitTime,
1809
+ trigger: 'change'
1810
+ }
1811
+ ]
1812
+ };
1813
+ },
1814
+ tabs() {
1815
+ return {
1816
+ employee: {
1817
+ param: {
1818
+ filid: this.userModel.orgId,
1819
+ name: '本单位用户'
1820
+ }
1821
+ },
1822
+ department: { param: { filid: this.userModel.orgId } }
1823
+ };
1824
+ },
1825
+ currentTabs() {
1826
+ return {
1827
+ department: {
1828
+ param: { filid: this.userModel.orgId }
1829
+ },
1830
+ employee: {
1831
+ param: { filid: this.userModel.orgId }
1832
+ }
1833
+ };
1834
+ }, //
1835
+ // 是否开始流程
1836
+ isFlow() {
1837
+ return this.isStartFlow;
1838
+ },
1839
+ types() {
1840
+ if (this.isCdjxjTaskHandle == 'true') {
1841
+ return ['employee', 'enterprise', 'department'];
1842
+ } else {
1843
+ return ['employee', 'enterprise', 'department', 'persongroup'];
1844
+ }
1845
+ },
1846
+ btnStyle() {
1847
+ if (this.btnList.length > 1) {
1848
+ return {};
1849
+ } else {
1850
+ return { width: '100%' };
1851
+ }
1852
+ }
1853
+ },
1854
+ methods: {
1855
+ sortSuccess(list) {
1856
+ this.nodeInfo.option = list;
1857
+ if (this.defaultProcessKey == '') {
1858
+ this.nodeInfo.nextNode = this.nodeInfo.option[0].processDefId;
1859
+ }
1860
+ this.showSort = false;
1861
+ // this.$message.success('排序成功');
1862
+ },
1863
+ getIsCancelSecondConfirmation() {
1864
+ util.ajax({ url: isCancelSecondConfirmation }).then((res) => {
1865
+ if (res.status == 'success') {
1866
+ this.isCancelSecondConfirmationType = res.data === false;
1867
+ }
1868
+ });
1869
+ },
1870
+ limitTimevalidate() {
1871
+ let validSate = true;
1872
+ this.$refs.nextNode.validate((valid) => {
1873
+ if (valid) {
1874
+ validSate = true;
1875
+ } else {
1876
+ validSate = false;
1877
+ }
1878
+ });
1879
+ return validSate;
1880
+ },
1881
+ checkCustomLimitTime(rule, value, callback) {
1882
+ if (!Number(value) || value.indexOf('.') != -1 || Number(value) < 0) {
1883
+ callback(new Error('请输入正确的天数'));
1884
+ this.nextNode.customLimitTime = '';
1885
+ } else {
1886
+ callback();
1887
+ }
1888
+ },
1889
+ getAdminMsgType() {
1890
+ let params = {
1891
+ url: getUrgencyLevelChangedNotificationType,
1892
+ params: { urgencyLevel: this.urgencyLevel }
1893
+ };
1894
+ util.ajax(params).then((res) => {
1895
+ if (res.rCode == 0) {
1896
+ this.newsList = res.results.latestChangedNotificationType;
1897
+ let arr = [];
1898
+ this.newsList.map((item) => {
1899
+ this.nextNode.notificationType.map((x) => {
1900
+ if (x == item.cciValue) {
1901
+ arr.push(x);
1902
+ }
1903
+ });
1904
+ });
1905
+ this.nextNode.notificationType = arr;
1906
+ }
1907
+ });
1908
+ },
1909
+ handleEndMessageChange() {
1910
+ this.$emit('endMessageChange', this.endMessage);
1911
+ },
1912
+ getInfo() {
1913
+ if (
1914
+ this.typeCode == 'supervise' ||
1915
+ this.typeCode == 'read' ||
1916
+ this.typeCode == 'freeCirculation'
1917
+ )
1918
+ return;
1919
+ if (
1920
+ this.showCirculate != undefined &&
1921
+ !this.showCirculate &&
1922
+ this.urgencyLevel
1923
+ ) {
1924
+ this.getAdminMsgType();
1925
+ } else {
1926
+ this.getNodeType();
1927
+ }
1928
+ !this.isFlow &&
1929
+ (this.newTypeCode = this.typeCode || this.$route.query.typecode);
1930
+ if (this.isFlow) {
1931
+ this.businessId && this.getProcess();
1932
+ } else if (this.newTypeCode == 'fenyue') {
1933
+ this.getTaskReadFlow();
1934
+ } else if (
1935
+ this.newTypeCode != 'reset' &&
1936
+ this.newTypeCode != 'continuation'
1937
+ ) {
1938
+ this.getHedInfo();
1939
+ }
1940
+ },
1941
+ handleClickCirculate() {
1942
+ if (this.beforeSubmit == undefined) {
1943
+ this.$refs.circulate.subMit();
1944
+ } else {
1945
+ this.beforeSubmit(1)
1946
+ .then((next) => {
1947
+ this.$refs.circulate.subMit();
1948
+ })
1949
+ .catch((e) => {});
1950
+ }
1951
+ },
1952
+ getNodeInfoForStartFlow(processDefinitionId) {
1953
+ let params = {
1954
+ url: getNodeInfoForStart,
1955
+ params: { processDefinitionId }
1956
+ };
1957
+ util.ajax(params).then((res) => {
1958
+ if (res.status == 'success') {
1959
+ if (res.data.temporarySaveButtonName) {
1960
+ this.saveButtonName = res.data.temporarySaveButtonName;
1961
+ }
1962
+ this.isHideTemporarySave =
1963
+ res.data.nodeExtAttr.isHideTemporarySave == 1;
1964
+ this.isBanInputOpinion = res.data.nodeExtAttr.isBanInputOpinion;
1965
+ this.directCreateCircularReadWhenFlowStarted =
1966
+ res.data.nodeExtAttr.directCreateCircularReadWhenFlowStarted == 1;
1967
+
1968
+ // if (this.directCreateCircularReadWhenFlowStarted) {
1969
+ // this.nodeInfo.option.map((item) => {
1970
+ // item.disabled = item.processDefId != processDefinitionId;
1971
+ // });
1972
+ // } else {
1973
+ // this.nodeInfo.option.map((item) => {
1974
+ // item.disabled = false;
1975
+ // });
1976
+ // }
1977
+ this.optionsKey++;
1978
+ this.isOpinionRequired = res.data.nodeExtAttr.isOpinionRequired;
1979
+ this.showOpinion = false;
1980
+ setTimeout(() => {
1981
+ this.showOpinion = true;
1982
+ }, 0);
1983
+ }
1984
+ });
1985
+ },
1986
+ changeCustomLimitTime(val) {
1987
+ if (!Number(val) || val.indexOf('.') != -1 || Number(val) < 0) {
1988
+ this.$message.warning('请输入正确的天数');
1989
+ this.nextNode.customLimitTime = '';
1990
+ }
1991
+ },
1992
+ taskReadTransferHandle() {
1993
+ if (this.taskReadOpinionRequired == 'true' && !this.value) {
1994
+ if (!this.$refs.commonOpinions.validate()) return;
1995
+ }
1996
+ this.freeStartFlowParams.startFlowBusinessId =
1997
+ this.taskExamineInfo.businessId;
1998
+ this.freeStartFlowNextNode = this.taskExamineInfo.processDefinitionId;
1999
+ const { businessId, appId, processDefinitionId, pendingId, isSubFlow } =
2000
+ this.taskExamineInfo;
2001
+ let params = {
2002
+ businessId,
2003
+ appId,
2004
+ processDefinitionId,
2005
+ pendingId,
2006
+ opinion: this.value,
2007
+ isSubFlow,
2008
+ taskAction: 'complete'
2009
+ };
2010
+ this.taskParams = params;
2011
+ this.processFormType = 'readTransfer';
2012
+ this.handleVisible = true;
2013
+ },
2014
+ handleChangeNotificationType() {
2015
+ if (this.nextNode.notificationType.length > 0) {
2016
+ this.$nextTick(() => {
2017
+ this.$refs.esContent.scrollTop += this.$refs.messagebox.clientHeight;
2018
+ });
2019
+ }
2020
+ },
2021
+ showMessage() {
2022
+ this.showNews = !this.showNews;
2023
+ if (!this.showNews) return;
2024
+ this.$nextTick(() => {
2025
+ this.$refs.esContent.scrollTop += this.$refs.messagebox.clientHeight;
2026
+ });
2027
+ },
2028
+ freeStartFlowSuccess() {
2029
+ this.showFreeStartFlow = false;
2030
+ this.flowSuccess(true);
2031
+ // this.$emit('success');
2032
+ },
2033
+ handleChange(val, isForStartFlow) {
2034
+ this.getNodeInfoForStartFlow(val, isForStartFlow);
2035
+ this.$parent.$emit('flowChange', val);
2036
+ },
2037
+ getsubProcessColumns() {
2038
+ if (!this.isMainSubProcess || !this.isNodeShowProcess) return [];
2039
+ let data = [];
2040
+ let obj = { name: '[部门员工]-' };
2041
+ if (this.nextCurrentOrgObjSelect.length > 0) {
2042
+ this.nextCurrentOrgObjSelect.map((x) => {
2043
+ if (x.stype == 'employee') {
2044
+ obj.name = !obj.value
2045
+ ? obj.name + x.showname
2046
+ : obj.name + ',' + x.showname;
2047
+ obj.value = obj.value
2048
+ ? obj.value + ',' + x.showid
2049
+ : 'employee-' + x.showid;
2050
+ } else {
2051
+ data.push({
2052
+ name: '[部门]' + x.showname,
2053
+ value: 'department-' + x.showid
2054
+ });
2055
+ }
2056
+ });
2057
+ }
2058
+ obj.value && data.push(obj);
2059
+ if (this.nextOtherOrgObjSelect.length > 0) {
2060
+ this.nextOtherOrgObjSelect.map((x) => {
2061
+ data.push({
2062
+ name: '[企业]' + x.showname,
2063
+ value: 'enterprise-' + x.showid
2064
+ });
2065
+ });
2066
+ }
2067
+ this.subProcessColumns = data;
2068
+ // return data;
2069
+ },
2070
+ // 分阅是否多选
2071
+ isReadMultiple(nextReadUserSelectType) {
2072
+ if (nextReadUserSelectType == 1) {
2073
+ this.readMultiple = false;
2074
+ } else if (nextReadUserSelectType == 2) {
2075
+ this.readMultiple = true;
2076
+ } else if (nextReadUserSelectType == 3) {
2077
+ this.readMultiple = false;
2078
+ } else if (nextReadUserSelectType == 4) {
2079
+ this.readMultiple = true;
2080
+ } else if (nextReadUserSelectType == 5) {
2081
+ this.readMultiple = false;
2082
+ } else if (nextReadUserSelectType == 6) {
2083
+ this.readMultiple = true;
2084
+ }
2085
+ },
2086
+ // 监听分阅/自动分阅用户选中
2087
+ changeSelectReadUser(val, type) {
2088
+ const { nextUser, mixList } = val;
2089
+ this.nextNode[type] = nextUser;
2090
+ if (type === 'presetReadUserId') {
2091
+ this.mixPresetList = mixList;
2092
+ } else {
2093
+ this.mixReadList = mixList;
2094
+ }
2095
+ },
2096
+ //获取附件
2097
+ getFile(ownId, code) {
2098
+ let params = {
2099
+ url: getAdjunctFileInfos,
2100
+ params: { ownId, code }
2101
+ };
2102
+ util
2103
+ .ajax(params)
2104
+ .then((res) => {
2105
+ const { rCode, results, msg } = res;
2106
+ if (rCode == 0) {
2107
+ results && (this.fileNum = results.length);
2108
+ } else {
2109
+ this.$message.error(msg || '系统错误,请联系管理员!');
2110
+ }
2111
+ })
2112
+ .catch((err) => {
2113
+ if (err.message && err.message !== 'canceled') {
2114
+ this.$message.error(err.message);
2115
+ }
2116
+ });
2117
+ },
2118
+ //判断展示下步办理人/办理对象
2119
+ getIsShowNextUser(val) {
2120
+ if (
2121
+ val == 7 ||
2122
+ val == 8 ||
2123
+ val == 9 ||
2124
+ val == 10 ||
2125
+ val == 11 ||
2126
+ val == 12
2127
+ ) {
2128
+ this.isShowNextUser = false;
2129
+ //设置办理角色
2130
+ // $("#orgRoleCode").val(handleRoleId);
2131
+ if (val == 7 || val == 8) {
2132
+ this.nextUserTypes = ['department'];
2133
+ this.nextUserTabs = {
2134
+ department: { param: { filid: this.userModel.orgId } }
2135
+ };
2136
+ this.multiple = true;
2137
+ } else if (val == 9 || val == 10) {
2138
+ this.nextUserTypes = ['enterprise'];
2139
+ this.nextUserTabs = { enterprise: { param: { filid: 'other' } } };
2140
+ this.multiple = true;
2141
+ } else if (val == 11 || val == 12) {
2142
+ this.nextUserTypes = ['department', 'enterprise'];
2143
+ this.nextUserTabs = {
2144
+ enterprise: { param: { filid: 'other' } },
2145
+ department: { param: { filid: this.userModel.orgId } }
2146
+ };
2147
+ this.multiple = true;
2148
+ }
2149
+ if (val == 7 || val == 9 || val == 11) {
2150
+ this.multiple = false;
2151
+ }
2152
+ }
2153
+ },
2154
+ setShrink() {
2155
+ this.shrink = !this.shrink;
2156
+ this.styles = this.shrink
2157
+ ? { width: 0 }
2158
+ : { width: this.width ? parseInt(this.width, 10) + 'px' : '' };
2159
+ this.$emit('shrink', this.shrink);
2160
+ },
2161
+ customLoading(type) {
2162
+ if (type != 'end') {
2163
+ this.loading = util.loading(this.$loading, '加载中...');
2164
+ } else {
2165
+ this.loading.close();
2166
+ }
2167
+ },
2168
+ subRead() {
2169
+ this.loading = util.loading(this.$loading, '加载中...');
2170
+ const { businessId, appId, processDefinitionId, pendingId } =
2171
+ this.taskExamineInfo;
2172
+ let params = {
2173
+ businessId,
2174
+ appId,
2175
+ processDefinitionId,
2176
+ pendingId,
2177
+ opinion: this.value,
2178
+ taskAction: 'complete'
2179
+ };
2180
+ util
2181
+ .ajax({
2182
+ url: taskReadHtml,
2183
+ params: { taskAction: 'complete' },
2184
+ headers: {
2185
+ Accept: 'application/json,text/plain'
2186
+ },
2187
+ method: 'post',
2188
+ data: params
2189
+ })
2190
+ .then((res) => {
2191
+ const { status, message } = res;
2192
+ this.loading.close();
2193
+ if (status === 'success') {
2194
+ this.flowSuccess();
2195
+ // this.$message.success('提交成功');
2196
+ // this.$emit('success');
2197
+ } else {
2198
+ this.$message.error(message || '系统错误,请联系管理员!');
2199
+ this.$emit('error');
2200
+ }
2201
+ })
2202
+ .catch((err) => {
2203
+ this.loading.close();
2204
+ if (err.message && err.message !== 'canceled') {
2205
+ this.$message.error(err.message);
2206
+ }
2207
+ });
2208
+ },
2209
+ taskRead() {
2210
+ if (this.taskReadOpinionRequired == 'true' && !this.value) {
2211
+ if (!this.$refs.commonOpinions.validate()) return;
2212
+ }
2213
+ if (this.showReadConfirm) {
2214
+ this.$confirm('确认提交?', '提示', {
2215
+ confirmButtonText: '确定',
2216
+ cancelButtonText: '取消',
2217
+ type: 'warning'
2218
+ })
2219
+ .then(() => {
2220
+ this.subRead();
2221
+ })
2222
+ .catch(() => {});
2223
+ } else {
2224
+ this.subRead();
2225
+ }
2226
+ },
2227
+ validReadTransferHandle(
2228
+ readTransferHandleBusinessId,
2229
+ readTransferHandleProcessKey
2230
+ ) {
2231
+ let params = {
2232
+ url: checkBusinessIdStartedReadTransferHandle,
2233
+ params: {
2234
+ readTransferHandleBusinessId,
2235
+ readTransferHandleProcessKey,
2236
+ pendingId: this.pendingId
2237
+ }
2238
+ };
2239
+ util.ajax(params).then((res) => {
2240
+ this.loading.close();
2241
+ if (res.rCode == 0) {
2242
+ this.readTransferHandleDisabled = !res.results.canReadTransferHandle;
2243
+ }
2244
+ });
2245
+ },
2246
+ getTaskReadFlow() {
2247
+ this.loading = util.loading(this.$loading, '加载中...');
2248
+ util
2249
+ .ajax({
2250
+ url: toStartTaskReadIndex,
2251
+ params: { pendingId: this.pendingId }
2252
+ })
2253
+ .then((res) => {
2254
+ const {
2255
+ status,
2256
+ message,
2257
+ data: {
2258
+ isCanFenyue,
2259
+ taskExamine,
2260
+ taskReadOpinionRequired,
2261
+ isCanReadTransferHandle,
2262
+ defaultNotificationMessage
2263
+ }
2264
+ } = res;
2265
+ if (status === 'success') {
2266
+ this.taskExamineInfo = taskExamine;
2267
+ this.nodeName = this.nodename || taskExamine.nodeName || '分阅';
2268
+ this.taskReadOpinionRequired = taskReadOpinionRequired;
2269
+ this.nextNode.notificationMsg = defaultNotificationMessage;
2270
+ this.isCanReadTransferHandle = isCanReadTransferHandle;
2271
+ this.isCanFenyue = isCanFenyue;
2272
+ if (this.nodeName) {
2273
+ this.NodeName = this.nodeName;
2274
+ }
2275
+ if (this.isCanReadTransferHandle) {
2276
+ this.validReadTransferHandle(
2277
+ taskExamine.businessId,
2278
+ taskExamine.processDefinitionId
2279
+ );
2280
+ }
2281
+ this.getNodeType();
2282
+ } else {
2283
+ this.$message.error(message || '系统错误,请联系管理员!');
2284
+ }
2285
+ this.loading.close();
2286
+ })
2287
+ .catch((err) => {
2288
+ this.loading.close();
2289
+ if (err.message && err.message !== 'canceled') {
2290
+ this.$message.error(err.message);
2291
+ }
2292
+ });
2293
+ },
2294
+ getUserInfo() {
2295
+ let mainConfig = util.getStorage('mainConfig');
2296
+ if (mainConfig) {
2297
+ this.userModel = JSON.parse(mainConfig).userModel;
2298
+ } else {
2299
+ util
2300
+ .ajax({ url: loginUserInfo })
2301
+ .then((res) => {
2302
+ const { status, data } = res;
2303
+ if (status == 'success') {
2304
+ this.userModel = data;
2305
+ } else {
2306
+ let msg = res.msg || '系统错误,请联系管理员!';
2307
+ this.$message.error(msg);
2308
+ }
2309
+ })
2310
+ .catch((err) => {
2311
+ if (err.message && err.message !== 'canceled') {
2312
+ this.$message.error(err.message);
2313
+ }
2314
+ });
2315
+ }
2316
+ },
2317
+ changeSelectUser(val, type, isNextNode) {
2318
+ // const { nextUser,mixList } = val;
2319
+ const { nextUser, mixList } = val;
2320
+ if (isNextNode) {
2321
+ this.nextNode[type] = nextUser;
2322
+ if (type == 'nextCurrentOrgObjSerialId') {
2323
+ this.mixCurrentOrg = mixList;
2324
+ }
2325
+ } else {
2326
+ this[type] = nextUser;
2327
+ }
2328
+ },
2329
+ getNodeType() {
2330
+ let params = {
2331
+ url: findCodeValues,
2332
+ params: {
2333
+ ccCode: 'notification_type',
2334
+ userId: util.getStorage('userId'),
2335
+ pendingId: this.pendingId
2336
+ }
2337
+ };
2338
+ util
2339
+ .ajax(params)
2340
+ .then((res) => {
2341
+ const { status, data } = res;
2342
+ if (status === 'success') {
2343
+ this.newsList = data;
2344
+ }
2345
+ })
2346
+ .catch((err) => {
2347
+ if (err.message && err.message !== 'canceled') {
2348
+ this.$message.error(err.message);
2349
+ }
2350
+ });
2351
+ },
2352
+ /**
2353
+ * saveInfo
2354
+ * @desc:暂存
2355
+ * @author liufan
2356
+ * @date 2022年9月9日
2357
+ **/
2358
+ saveInfo(type, btn) {
2359
+ if (this.isFlow) {
2360
+ if (!type) {
2361
+ if (btn && btn.before) {
2362
+ btn
2363
+ .before(
2364
+ Object.prototype.hasOwnProperty.call(btn, 'code') ? btn.code : 1
2365
+ )
2366
+ .then((next) => {
2367
+ this.$emit('save', this.businessIds);
2368
+ })
2369
+ .catch((e) => {});
2370
+ } else if (this.beforeSubmit != undefined) {
2371
+ this.beforeSubmit(
2372
+ btn && Object.prototype.hasOwnProperty.call(btn, 'code')
2373
+ ? btn.code
2374
+ : 1
2375
+ )
2376
+ .then((next) => {
2377
+ this.$emit('save', this.businessIds);
2378
+ })
2379
+ .catch((e) => {});
2380
+ } else {
2381
+ this.$emit('save', this.businessIds);
2382
+ }
2383
+ }
2384
+ } else {
2385
+ if (btn && btn.before && !type) {
2386
+ btn
2387
+ .before(
2388
+ Object.prototype.hasOwnProperty.call(btn, 'code') ? btn.code : 2
2389
+ )
2390
+ .then((next) => {
2391
+ this.saveFlowInfo();
2392
+ })
2393
+ .catch((e) => {});
2394
+ } else if (this.beforeSubmit == undefined && !type) {
2395
+ this.subFun(this.saveFlowInfo);
2396
+ } else if (!type && this.beforeSubmit != undefined) {
2397
+ this.beforeSubmit(
2398
+ btn && Object.prototype.hasOwnProperty.call(btn, 'code')
2399
+ ? btn.code
2400
+ : 2
2401
+ )
2402
+ .then((next) => {
2403
+ this.saveFlowInfo();
2404
+ })
2405
+ .catch((e) => {});
2406
+ } else {
2407
+ this.saveFlowInfo(type);
2408
+ }
2409
+ }
2410
+ },
2411
+ saveFlowInfo(isSave) {
2412
+ let params = {
2413
+ opinion: this.value,
2414
+ pendingId: this.pendingId
2415
+ };
2416
+ this.loading = util.loading(this.$loading, '保存中...');
2417
+ util
2418
+ .ajax({ url: tempSave, data: params, method: 'post' })
2419
+ .then((res) => {
2420
+ const { status, message } = res;
2421
+ if (!isSave) this.loading.close();
2422
+ if (status == 'success') {
2423
+ // this.$message.success('暂存成功');
2424
+ !isSave && this.$emit('save', this.businessIds);
2425
+ } else {
2426
+ this.$message.error(message || '系统错误,请联系管理员!');
2427
+ }
2428
+ })
2429
+ .catch((err) => {
2430
+ if (!isSave) this.loading.close();
2431
+ if (err.message && err.message !== 'canceled') {
2432
+ this.$message.error(err.message);
2433
+ }
2434
+ });
2435
+ },
2436
+ /**
2437
+ * rejectBtn
2438
+ * @desc:点击驳回
2439
+ * @author liufan
2440
+ * @date 2022年5月25日
2441
+ **/
2442
+ rejectBtn(res) {
2443
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
2444
+ if (!this.value) {
2445
+ if (!this.$refs.commonOpinions.validate()) return;
2446
+ }
2447
+ if (this.beforeSubmit != undefined) {
2448
+ this.beforeSubmit(0)
2449
+ .then((next) => {
2450
+ // this.showReject = true;
2451
+ this.btnType = this.btnFunValue(res.fun);
2452
+ })
2453
+ .catch((e) => {});
2454
+ } else {
2455
+ // this.showReject = true;
2456
+ this.btnType = this.btnFunValue(res.fun);
2457
+ }
2458
+ },
2459
+ /**
2460
+ * taskReadBtn
2461
+ * @desc:点击分阅
2462
+ * @author liufan
2463
+ * @date 2022年5月25日
2464
+ **/
2465
+ taskReadBtn(res) {
2466
+ // return this.$message.warning('暂未开放!敬请期待');
2467
+
2468
+ if (this.beforeSubmit != undefined) {
2469
+ this.beforeSubmit()
2470
+ .then((next) => {
2471
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
2472
+ this.taskReadType = 'create';
2473
+ // this.showTaskRead = true;
2474
+ this.btnType = this.btnFunValue(res.fun);
2475
+ })
2476
+ .catch((e) => {});
2477
+ } else {
2478
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
2479
+ this.taskReadType = 'create';
2480
+ // this.showTaskRead = true;
2481
+ this.btnType = this.btnFunValue(res.fun);
2482
+ }
2483
+ },
2484
+ /**
2485
+ * getFind
2486
+ * @desc:获取通知方式
2487
+ * @author liufan
2488
+ * @date 2022年5月25日
2489
+ **/
2490
+ getFind() {
2491
+ util
2492
+ .ajax({
2493
+ url: findSysCodes
2494
+ })
2495
+ .then((res) => {
2496
+ const { status, message } = res;
2497
+ if (status === 'success') {
2498
+ if (this.hideMessage) return;
2499
+ this.nextNode.notificationType = message.split(',');
2500
+ let arr = [];
2501
+ this.newsList.map((item) => {
2502
+ this.nextNode.notificationType.map((x) => {
2503
+ if (x == item.cciValue) {
2504
+ arr.push(x);
2505
+ }
2506
+ });
2507
+ });
2508
+ this.nextNode.notificationType = arr;
2509
+ }
2510
+ })
2511
+ .catch((err) => {
2512
+ if (err.message && err.message !== 'canceled') {
2513
+ this.$message.error(err.message);
2514
+ }
2515
+ });
2516
+ },
2517
+ getFreeStartParams() {
2518
+ const { businessId, processDefinitionId, nodeId } = this.endFlowInfo;
2519
+ let param = {
2520
+ url: getFreeStartFlowParams,
2521
+ params: {
2522
+ businessId,
2523
+ processDefinitionId,
2524
+ pendingId: this.pendingId,
2525
+ nodeId
2526
+ }
2527
+ };
2528
+ this.loading = util.loading(this.$loading, '加载中...');
2529
+ util.ajax(param).then((res) => {
2530
+ this.loading.close();
2531
+ if (res.rCode == 0 || res.status == 'success') {
2532
+ this.freeStartFlowParams = res.results;
2533
+ if (res.results.useScene === 'multiInsMidwayWithSubmitScene')
2534
+ this.subProcess('同意。', res.results.useScene);
2535
+ if (!this.freeValid) return;
2536
+ if (
2537
+ (res.results.startFlowIndexProcessKeys &&
2538
+ res.results.startFlowIndexProcessKeys.length == 0) ||
2539
+ !res.results.startFlowIndexProcessKeys
2540
+ )
2541
+ return this.$message.warning('未找到流程定义!');
2542
+ if (res.results.startFlowIndexProcessKeys.length == 1) {
2543
+ this.freeStartFlowNextNode =
2544
+ res.results.startFlowIndexProcessKeys[0];
2545
+ this.handleVisible = true;
2546
+ } else {
2547
+ this.showFreeStartFlow = true;
2548
+ }
2549
+ } else {
2550
+ this.$message.error(res.message || '系统错误,请联系管理员!');
2551
+ }
2552
+ });
2553
+ },
2554
+ /**
2555
+ * endFlows
2556
+ * @desc:直接办结
2557
+ * @author liufan
2558
+ * @param {Object} res 直接办结数据
2559
+ * @date 2022年5月25日
2560
+ **/
2561
+ endFlows(res) {
2562
+ if (this.beforeSubmit != undefined) {
2563
+ this.beforeSubmit()
2564
+ .then((next) => {
2565
+ this.saveEndFlows(res);
2566
+ })
2567
+ .catch((e) => {});
2568
+ } else {
2569
+ this.saveEndFlows(res);
2570
+ }
2571
+ },
2572
+ /**
2573
+ * 获取弹性布局样式
2574
+ * @returns {string} 弹性布局值
2575
+ */
2576
+ getFlexStyle() {
2577
+ const isDefaultFlex =
2578
+ ((!this.endFlow ||
2579
+ this.nodeInfos.length > 1 ||
2580
+ this.taskOperationShiftedNodeList) &&
2581
+ this.newTypeCode != 'fenyue' &&
2582
+ !this.shrink &&
2583
+ this.btnType === 'default') ||
2584
+ this.btnType != 'default';
2585
+ return isDefaultFlex ? 'unset' : '1';
2586
+ },
2587
+ saveEndFlows(res) {
2588
+ this.$confirm('确认' + res.value + '?')
2589
+ .then(() => {
2590
+ let params = {
2591
+ url: endFlowHtml,
2592
+ headers: { Accept: 'application/json,text/plain' },
2593
+ method: 'post',
2594
+ data: {
2595
+ ...this.endFlowInfo,
2596
+ ...this.nextNode,
2597
+ opinion: this.value,
2598
+ userId: util.getStorage('userId'),
2599
+ nextUserId: this.multiple
2600
+ ? this.nextNode.nextUserId.join(',')
2601
+ : this.nextNode.nextUserId,
2602
+ addSignUserId: this.nextNode.addSignUserId.join(','),
2603
+ customPresetUserJson: JSON.stringify(this.presetList),
2604
+ presetUserJson: JSON.stringify(this.presetUserJson),
2605
+ removeSignUserId: this.nextNode.removeSignUserId.join(','),
2606
+ notificationType: this.nextNode.notificationType.join(',')
2607
+ }
2608
+ };
2609
+ this.loading = util.loading(this.$loading, '加载中...');
2610
+ util
2611
+ .ajax(params)
2612
+ .then((res) => {
2613
+ const { status, message } = res;
2614
+ this.loading.close();
2615
+ if (status === 'success') {
2616
+ this.flowSuccess();
2617
+ // this.$message.success('提交成功');
2618
+ // this.$emit('success');
2619
+ } else {
2620
+ this.$message.error(message || '系统错误,请联系管理员!');
2621
+ this.$emit('error');
2622
+ }
2623
+ })
2624
+ .catch((err) => {
2625
+ this.loading.close();
2626
+ if (err.message && err.message !== 'canceled') {
2627
+ this.$message.error(err.message);
2628
+ }
2629
+ });
2630
+ })
2631
+ .catch((e) => {});
2632
+ },
2633
+ /**
2634
+ * goView
2635
+ * @desc:更多流程按钮操作
2636
+ * @author liufan
2637
+ * @param {Object} res 当前点击操作按钮数据
2638
+ * @date 2022年5月25日
2639
+ **/
2640
+ goView(res) {
2641
+ // 驳回并办结:rejectAndEndHtml
2642
+ // 获取转办页面:toTaskTransferHtml
2643
+ // 转办:taskTransferHtml
2644
+ // 获取分阅页面信息:toStartTaskReadHtml
2645
+ // 分阅:taskReadHtml
2646
+ // 获取驳回页面信息:toTaskRejectHtml(注释有误:appId改为pendingId)
2647
+ // 驳回:taskRejectHtml
2648
+ // 直接办结:endFlowHtml
2649
+ // 自由发起子流程:toFreeStartFlow
2650
+ console.log(res, '123');
2651
+ if (res.type == 4) {
2652
+ this.$emit(
2653
+ 'buttonClick',
2654
+ { fun: res.fun, opinion: this.value },
2655
+ this.sendData
2656
+ );
2657
+ } else if (res.fun === 'toStartTaskRead()') {
2658
+ // 分阅
2659
+ this.taskReadBtn(res);
2660
+ } else if (res.fun === 'reject()') {
2661
+ // 驳回
2662
+ this.rejectBtn(res);
2663
+ } else if (res.fun === 'endFlow()') {
2664
+ // 直接办结
2665
+ this.endFlows(res);
2666
+ } else if (res.fun === 'rejectAndEnd()') {
2667
+ // 驳回并办结
2668
+ this.rejectAndEnd(res);
2669
+ } else if (res.fun === 'toTransfer()') {
2670
+ // 转办
2671
+ this.toTransfer(res);
2672
+ } else if (res.fun === 'toTaskReadAndEnd()') {
2673
+ this.toTaskReadAndEnd(res);
2674
+ } else if (res.fun === 'toSendMsg()') {
2675
+ // 核稿通知
2676
+ this.toSendMsg(res);
2677
+ } else if (res.fun === 'toStartDraf()') {
2678
+ //稿件递送
2679
+ this.flowType = 'startDraf';
2680
+ this.flowMultiple = false;
2681
+ this.flowDisabled = false;
2682
+ this.flowTitle = res.value;
2683
+ this.toStartDraf(res);
2684
+ } else if (res.fun === 'toTakeAdvice()') {
2685
+ //征求意见
2686
+ this.flowType = 'takeAdvice';
2687
+ this.flowMultiple = true;
2688
+ this.flowDisabled = false;
2689
+ this.flowTitle = res.value;
2690
+
2691
+ this.toTakeAdvice(res);
2692
+ } else if (res.fun === 'toUnionExamine()') {
2693
+ //联合审核
2694
+ this.flowType = 'unionExamine';
2695
+ this.flowTitle = res.value;
2696
+ this.flowDisabled = false;
2697
+ this.flowMultiple = true;
2698
+ this.toStartDraf(res);
2699
+ } else if (res.fun === 'toTaskReview()') {
2700
+ // 复核
2701
+ this.flowType = 'taskReview';
2702
+ this.flowDisabled = true;
2703
+ this.flowTitle = res.value;
2704
+ this.toStartDraf(res);
2705
+ } else if (res.fun === 'toUnionSeal()') {
2706
+ // 联合用印
2707
+ this.flowType = 'unionSeal';
2708
+ this.flowDisabled = false;
2709
+ this.flowTitle = res.value;
2710
+ this.toStartDraf(res);
2711
+ } else if (res.fun == 'toTwoOfficesDispatch()') {
2712
+ // 报送两办
2713
+ this.flowType = 'twoOfficesDispatch';
2714
+ this.flowDisabled = true;
2715
+ this.flowTitle = res.value;
2716
+ this.toStartDraf(res);
2717
+ } else if (res.fun == 'toFreeStartFlow()') {
2718
+ this.getFreeStartParams();
2719
+ // 报送两办
2720
+ // this.flowType = 'twoOfficesDispatch';
2721
+ // this.flowDisabled = true;
2722
+ // this.flowTitle = res.value;
2723
+ // this.toStartDraf(res);
2724
+ } else if (res.fun == 'default') {
2725
+ this.btnType = 'default';
2726
+ } else {
2727
+ this.$message.warning('暂未开放,敬请期待!');
2728
+ }
2729
+ // isCanStartSubFlow
2730
+ },
2731
+ /**
2732
+ * toTakeAdvice
2733
+ * @desc:征求意见
2734
+ * @author liufan
2735
+ * @date 2022年9月29日
2736
+ **/
2737
+ toTakeAdvice(res) {
2738
+ if (this.beforeSubmit != undefined) {
2739
+ this.beforeSubmit()
2740
+ .then((next) => {
2741
+ this.saveToTakeAdvice(res);
2742
+ })
2743
+ .catch((e) => {});
2744
+ } else {
2745
+ this.saveToTakeAdvice(res);
2746
+ }
2747
+ // return this.$message.warning('暂未开放!敬请期待');
2748
+ },
2749
+ saveToTakeAdvice(resInfo) {
2750
+ let params = {
2751
+ url: isCanStartSubFlow,
2752
+ data: {
2753
+ appId: this.taskExamineInfo.appId,
2754
+ inevitableNode: resInfo.inevitableNode
2755
+ },
2756
+ method: 'post',
2757
+ headers: { Accept: 'application/json,text/plain' }
2758
+ };
2759
+ this.loading = util.loading(this.$loading, '加载中...');
2760
+ util
2761
+ .ajax(params)
2762
+ .then((res) => {
2763
+ const { message } = res;
2764
+ this.loading.close();
2765
+ if (message == 'success') {
2766
+ // this.showTaskUnionExamine = true;
2767
+ this.btnType = ''
2768
+ setTimeout(() => {
2769
+ this.btnType = this.btnFunValue(resInfo.fun)
2770
+ }, 0);
2771
+ } else {
2772
+ this.$message.error(message || '系统错误,请联系管理员!');
2773
+ }
2774
+ })
2775
+ .catch((err) => {
2776
+ this.loading.close();
2777
+ if (err.message && err.message !== 'canceled') {
2778
+ this.$message.error(err.message);
2779
+ }
2780
+ });
2781
+ },
2782
+ /**
2783
+ * toStartDraf
2784
+ * @desc: 稿件递送、联合审核、复核
2785
+ * @author liufan
2786
+ * @date 2022年9月29日
2787
+ **/
2788
+ toStartDraf(res) {
2789
+ console.log(res)
2790
+ if (this.beforeSubmit != undefined) {
2791
+ this.beforeSubmit()
2792
+ .then((next) => {
2793
+ // this.showTaskUnionExamine = true;
2794
+ this.btnType = ''
2795
+ setTimeout(() => {
2796
+ this.btnType = this.btnFunValue(res.fun)
2797
+ }, 0);
2798
+ // this.btnType = this.btnFunValue(res.fun) //this.btnFunValue(res.fun);
2799
+ })
2800
+ .catch((e) => {});
2801
+ } else {
2802
+ // this.showTaskUnionExamine = true;
2803
+ this.btnType = ''
2804
+ setTimeout(() => {
2805
+ this.btnType = this.btnFunValue(res.fun)
2806
+ }, 0);
2807
+ }
2808
+ },
2809
+ /**
2810
+ * toSendMsg
2811
+ * @desc:核稿通知
2812
+ * @author liufan
2813
+ * @date 2022年9月29日
2814
+ **/
2815
+ toSendMsg(res) {
2816
+ if (this.beforeSubmit != undefined) {
2817
+ this.beforeSubmit()
2818
+ .then((next) => {
2819
+ this.showSendMsg = true;
2820
+ })
2821
+ .catch((e) => {});
2822
+ } else {
2823
+ this.showSendMsg = true;
2824
+ }
2825
+ },
2826
+ /**
2827
+ * toTaskReadAndEnd
2828
+ * @desc:分阅并办结
2829
+ * @author liufan
2830
+ * @date 2022年9月29日
2831
+ **/
2832
+ toTaskReadAndEnd(res) {
2833
+ if (this.beforeSubmit != undefined) {
2834
+ this.beforeSubmit()
2835
+ .then((next) => {
2836
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
2837
+ this.taskReadType = 'taskReadAndEnd';
2838
+ this.showTaskRead = true;
2839
+ })
2840
+ .catch((e) => {});
2841
+ } else {
2842
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
2843
+ this.taskReadType = 'taskReadAndEnd';
2844
+ this.showTaskRead = true;
2845
+ }
2846
+ },
2847
+ /**
2848
+ * rejectAndEnd
2849
+ * @desc:驳回并办结
2850
+ * @author liufan
2851
+ * @date 2022年9月29日
2852
+ **/
2853
+ rejectAndEnd(res) {
2854
+ if (this.isOpinionRequired == 1 && (this.value == '' || !this.value)) {
2855
+ if (!this.$refs.commonOpinions.validate()) return;
2856
+ }
2857
+ if (this.beforeSubmit != undefined) {
2858
+ this.beforeSubmit()
2859
+ .then((next) => {
2860
+ this.saveRejectAndEnd(res);
2861
+ })
2862
+ .catch((e) => {});
2863
+ } else {
2864
+ this.saveRejectAndEnd(res);
2865
+ }
2866
+ },
2867
+ saveRejectAndEnd(res) {
2868
+ this.$confirm('确认' + res.value + '?')
2869
+ .then(() => {
2870
+ // return this.$message.warning('请填写意见');
2871
+ let params = {
2872
+ url: rejectAndEnd,
2873
+ headers: { Accept: 'application/json,text/plain' },
2874
+ method: 'post',
2875
+ data: {
2876
+ opinion: this.value,
2877
+ pendingId: this.pendingId,
2878
+ isSinglePage: false
2879
+ }
2880
+ };
2881
+ this.loading = util.loading(this.$loading, '加载中...');
2882
+ util
2883
+ .ajax(params)
2884
+ .then((res) => {
2885
+ const { status, message } = res;
2886
+ this.loading.close();
2887
+ if (status === 'success') {
2888
+ this.flowSuccess();
2889
+ // this.$message.success('提交成功');
2890
+ // this.$emit('success');
2891
+ } else {
2892
+ this.$message.error(message || '系统错误,请联系管理员!');
2893
+ this.$emit('error');
2894
+ }
2895
+ })
2896
+ .catch((err) => {
2897
+ this.loading.close();
2898
+ if (err.message && err.message !== 'canceled') {
2899
+ this.$message.error(err.message);
2900
+ }
2901
+ });
2902
+ })
2903
+ .catch(() => {
2904
+ // on cancel
2905
+ });
2906
+ },
2907
+ /**
2908
+ * toTransfer
2909
+ * @desc:转办
2910
+ * @author liufan
2911
+ * @date 2022年9月29日
2912
+ **/
2913
+ toTransfer(res) {
2914
+ if (this.beforeSubmit != undefined) {
2915
+ this.beforeSubmit(0)
2916
+ .then((next) => {
2917
+ this.taskReadType = 'transfer';
2918
+ this.showTaskRead = true;
2919
+ })
2920
+ .catch((e) => {});
2921
+ } else {
2922
+ this.taskReadType = 'transfer';
2923
+ this.showTaskRead = true;
2924
+ }
2925
+ },
2926
+ handleChangeTime(val) {
2927
+ this.nextNode.customLimitTime = val;
2928
+ },
2929
+ /**
2930
+ * getNodeInfo
2931
+ * @desc:获取节点信息
2932
+ * @author liufan
2933
+ * @date 2022年5月25日
2934
+ **/
2935
+ getNodeInfo() {
2936
+ let params = {
2937
+ processDefinitionId: this.nodeInfo.nextNode,
2938
+ nextNodeId: this.nextNode.nextNodeId,
2939
+ taskId: this.taskId,
2940
+ userId: util.getStorage('userId'),
2941
+ pendingId: this.pendingId,
2942
+ businessId: this.businessIds
2943
+ };
2944
+ util
2945
+ .ajax({ url: getNodeInfo, params })
2946
+ .then((res) => {
2947
+ const { status, message, data } = res;
2948
+ this.loading.close();
2949
+ if (status === 'success') {
2950
+ this.isCurrentNodeForbiddenChangeCandidate =
2951
+ data.nodeExtAttr.isCurrentNodeForbiddenChangeCandidate;
2952
+ this.currentNodeEnableItemHandleDescription =
2953
+ data.nodeExtAttr.currentNodeEnableItemHandleDescription == 1;
2954
+ this.enableCustomLimitTimeSetting =
2955
+ data.nodeExtAttr.enableCustomLimitTimeSetting == 1;
2956
+ if (
2957
+ this.enableCustomLimitTimeSetting &&
2958
+ data.nodeMoreInfo.defaultCustomLimitDays
2959
+ ) {
2960
+ this.nextNode.customLimitTime =
2961
+ this.nextNode.customLimitTimeText =
2962
+ data.nodeMoreInfo.defaultCustomLimitDays + '';
2963
+ }
2964
+ if (
2965
+ this.currentOrgSelectorParams.department &&
2966
+ !this.currentOrgSelectorParams.department.roleid &&
2967
+ this.selectorParams.roleid &&
2968
+ data.nodeExtAttr.deptRoleCode
2969
+ ) {
2970
+ this.currentOrgSelectorParams.department.roleid =
2971
+ data.nodeExtAttr.deptRoleCode;
2972
+ }
2973
+ if (data.nodeMoreInfo.currentOrgDefaultSelectObjectItems) {
2974
+ if (
2975
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems.deptIds
2976
+ .length > 0
2977
+ ) {
2978
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems.deptIds.map(
2979
+ (x, i) => {
2980
+ this.nextCurrentOrgselectUserList.push({
2981
+ showname:
2982
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems
2983
+ .deptNames[i],
2984
+ showid: x,
2985
+ stype: 'department'
2986
+ });
2987
+ }
2988
+ );
2989
+ }
2990
+ if (
2991
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems.userIds
2992
+ .length > 0
2993
+ ) {
2994
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems.userIds.map(
2995
+ (x, i) => {
2996
+ this.nextCurrentOrgselectUserList.push({
2997
+ showname:
2998
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems
2999
+ .userNames[i],
3000
+ showid: x,
3001
+ stype: 'employee'
3002
+ });
3003
+ }
3004
+ );
3005
+ }
3006
+ if (
3007
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems.orgIds
3008
+ .length > 0
3009
+ ) {
3010
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems.orgIds.map(
3011
+ (x, i) => {
3012
+ this.nextCurrentOrgselectUserList.push({
3013
+ showname:
3014
+ data.nodeMoreInfo.currentOrgDefaultSelectObjectItems
3015
+ .orgNames[i],
3016
+ showid: x,
3017
+ stype: 'enterprise'
3018
+ });
3019
+ }
3020
+ );
3021
+ }
3022
+ }
3023
+ if (
3024
+ data.nodeMoreInfo
3025
+ .chooseCurrentOrgUserCandidateNeedForbiddenSubDept === true
3026
+ ) {
3027
+ this.params.only_filid = true;
3028
+ }
3029
+ data.otherOrgDisabledObjId &&
3030
+ (this.otherOrgDisabledObjId =
3031
+ data.otherOrgDisabledObjId.split(','));
3032
+ data.currentOrgDisabledObjId &&
3033
+ (this.currentOrgDisabledObjId =
3034
+ data.currentOrgDisabledObjId.split(','));
3035
+ if (data != null) {
3036
+ if (
3037
+ data.nodeExtAttr.userSelectionType == 7 ||
3038
+ data.nodeExtAttr.userSelectionType == 8 ||
3039
+ data.nodeExtAttr.userSelectionType == 9 ||
3040
+ data.nodeExtAttr.userSelectionType == 10 ||
3041
+ data.nodeExtAttr.userSelectionType == 11 ||
3042
+ data.nodeExtAttr.userSelectionType == 12
3043
+ ) {
3044
+ this.getIsShowNextUser(
3045
+ data.nodeExtAttr && data.nodeExtAttr.userSelectionType
3046
+ );
3047
+ } else {
3048
+ this.isMultiple(
3049
+ data.nodeExtAttr && data.nodeExtAttr.userSelectionType,
3050
+ this.choiceOrgId,
3051
+ this.choiceDeptId,
3052
+ this.pOrgId
3053
+ );
3054
+ }
3055
+ this.isReadMultiple(
3056
+ data.nodeExtAttr && data.nodeExtAttr.userSelectionType
3057
+ );
3058
+ this.isTaskread = data.nodeExtAttr.isTaskread;
3059
+ this.isHandleExplain = data.nodeExtAttr.isHandleExplain;
3060
+ this.isLimitedTimeHandling =
3061
+ data.nodeExtAttr.isLimitedTimeHandling;
3062
+ this.nodeType = data.nodeExtAttr.nodeType;
3063
+ //如果当前为承办节点/会签节点,则展示本单位外单位办理人选择
3064
+ if (this.nodeType === 1 || this.nodeType === 2) {
3065
+ this.isMainSubProcess === true
3066
+ ? (this.isNodeShowProcess = true)
3067
+ : (this.isNodeShowProcess = false);
3068
+ this.isMainSubProcess === true
3069
+ ? (this.isMainSubProcess = true)
3070
+ : (this.isMainSubProcess = false);
3071
+ this.isNextUser = false;
3072
+ this.isHideCurrentOrg =
3073
+ res.data.nodeExtAttr.isHideCurrentOrg == 1 ? false : true; //判断是否隐藏本单位
3074
+ this.isHideOtherOrg =
3075
+ res.data.nodeExtAttr.isHideOtherOrg == 1 ? false : true; //判断是否隐藏外单位
3076
+ } else {
3077
+ this.isHideCurrentOrg = false;
3078
+ this.isHideOtherOrg = false;
3079
+ this.isNodeShowProcess = false;
3080
+ this.isMainSubProcess = false;
3081
+ this.isNextUser = this.nextNode.nextOperate != 9;
3082
+ // this.isMainSubProcess === true
3083
+ // ? (this.isMainSubProcess = true)
3084
+ // : (this.isMainSubProcess = false);
3085
+ }
3086
+ this.multiple
3087
+ ? (this.nextNode.nextUserId = [])
3088
+ : (this.nextNode.nextUserId = '');
3089
+ if (
3090
+ this.multiple &&
3091
+ data.nodeExtAttr.isDefSelectedObj == 1 &&
3092
+ data.nextUserList !== undefined
3093
+ ) {
3094
+ data.nextUserList.map((item) => {
3095
+ if (item.userId && item.username) {
3096
+ this.nextNode.nextUserId.push(item.userId);
3097
+ this.selectUserList.push({
3098
+ showname: item.username,
3099
+ showid: item.userId
3100
+ });
3101
+ }
3102
+ });
3103
+ }
3104
+ data.nextUserList.map((item) => {
3105
+ if (item.userId && item.username) {
3106
+ this.options.push({
3107
+ showname: item.username,
3108
+ showid: item.userId
3109
+ });
3110
+ }
3111
+ });
3112
+ if (data.nodeExtAttr.presetEdit != 0) {
3113
+ this.radioList = this.options;
3114
+ }
3115
+ if (
3116
+ !this.multiple &&
3117
+ data.nextUserList.length > 0 &&
3118
+ data.nodeExtAttr.isDefSelectedObj == 1
3119
+ ) {
3120
+ this.nextNode.nextUserId = data.nextUserList[0].userId;
3121
+ this.selectUserList.push({
3122
+ showname: data.nextUserList[0].username,
3123
+ showid: data.nextUserList[0].userId
3124
+ });
3125
+ }
3126
+ this.isLimitedTimeHandling =
3127
+ data.nodeExtAttr.isLimitedTimeHandling;
3128
+ this.isCustomUser = data.nodeExtAttr.isCustomUser;
3129
+ this.presetEdit = data.nodeExtAttr.presetEdit;
3130
+ this.countersignaturetypeCode = data.countersignaturetypeCode; //是否展示处理方式
3131
+ this.handleMode = data.countersignaturetypeText;
3132
+ if (data.globalNodeType === 'endEvent') {
3133
+ this.isNextUser = data.globalNodeType != 'endEvent';
3134
+ data.globalNodeType === 'endEvent' ? (this.endFlow = true) : '';
3135
+ }
3136
+ }
3137
+ this.isCustomPreset &&
3138
+ this.$refs.customPreset.getPresetFlowInfo(
3139
+ this.nextNode.nextNodeId,
3140
+ this.nodeInfo.nextNode,
3141
+ true
3142
+ );
3143
+ } else {
3144
+ this.$message.error(message || '系统错误,请联系管理员!');
3145
+ }
3146
+ })
3147
+ .catch((err) => {
3148
+ this.loading.close();
3149
+ if (err.message && err.message !== 'canceled') {
3150
+ this.$message.error(err.message);
3151
+ }
3152
+ });
3153
+ },
3154
+ /**
3155
+ * selecNext
3156
+ * @desc:下步节点变化时更新数据
3157
+ * @author liufan
3158
+ * @param {String} val 当前选中值
3159
+ * @date 2022年5月25日
3160
+ **/
3161
+ selecNext(val, type, isDef) {
3162
+ let isNextNode = false;
3163
+ if (type && val && this.operationList.length > 0) {
3164
+ let arr = this.operationList.filter((x) => x.key == val);
3165
+ if (arr.length > 0) {
3166
+ isNextNode = arr[0].isNextNode;
3167
+ }
3168
+ }
3169
+ this.loading = util.loading(this.$loading, '加载中...');
3170
+ if (this.multiple) {
3171
+ this.nextNode.nextUserId = [];
3172
+ } else {
3173
+ this.nextNode.nextUserId = '';
3174
+ }
3175
+ if (isNextNode) {
3176
+ this.oldNextOperate = this.operationList.filter(
3177
+ (x) => x.key == val
3178
+ )[0].nextOperate;
3179
+ } else {
3180
+ this.oldNextOperate = '';
3181
+ }
3182
+ this.options = [];
3183
+ this.selectUserList = [];
3184
+ this.radioList = [];
3185
+
3186
+ if (type) {
3187
+ this.isNextUser = false;
3188
+ this.isShowNode = false;
3189
+ this.isMainSubProcess = false;
3190
+ this.isNodeShowProcess = false;
3191
+ if (!isDef) {
3192
+ this.endFlow = false;
3193
+ }
3194
+ this.nextNode.nextNodeId = '';
3195
+ this.nextNode.isReturnSubmitter = 0;
3196
+ this.nextNode.isUndertakeReply = 0;
3197
+ this.nextNode.isTakeAdviceReply = 0;
3198
+ this.nextNode.isUndertakeEnd = 0;
3199
+ this.nextNode.isTakeAdviceEnd = 0;
3200
+ this.nextNode.isReadDealReply = 0;
3201
+ this.nextNode.isReadDealEnd = 0;
3202
+ this.nextNode.isReturnRejectNode = 0;
3203
+ this.nextNode.isSerialSubmit = 0;
3204
+ this.nodeInfos = [];
3205
+ this.operationList.forEach((item) => {
3206
+ if (item.key === val) {
3207
+ if (!item.taskNodeList) {
3208
+ this.nodeInfos = [];
3209
+ } else {
3210
+ this.nodeInfos = item.taskNodeList;
3211
+
3212
+ if (this.taskOperationShiftedNodeList) {
3213
+ this.nodeInfos = item.taskNodeList.filter(
3214
+ (x) =>
3215
+ this.taskOperationShiftedNodeList.indexOf(x.nodeId) == -1
3216
+ );
3217
+ }
3218
+ }
3219
+ return;
3220
+ }
3221
+ });
3222
+ if (this.defaultNextNode) {
3223
+ let defaultNode = this.nodeInfos.filter(
3224
+ (item) => item.nodeId == this.defaultNextNode
3225
+ );
3226
+ if (this.nodeInfos.length > 0 && defaultNode.length == 0) {
3227
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
3228
+ } else {
3229
+ this.nextNode.nextNodeId = this.defaultNextNode;
3230
+ }
3231
+ } else if (this.nodeInfos.length > 0) {
3232
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
3233
+ }
3234
+ }
3235
+ if (isNextNode) {
3236
+ this.nodeInfos = [];
3237
+ this.nextNode.nextNodeId = val;
3238
+ }
3239
+ if (val === 9) {
3240
+ this.isReject = true;
3241
+ } else {
3242
+ this.isReject = false;
3243
+ }
3244
+ if (this.isSpecial) {
3245
+ if (val == -1) {
3246
+ this.nextNode.isSerialSubmit = 1;
3247
+ this.loading.close();
3248
+ return;
3249
+ } else if (val == 0) {
3250
+ this.isNextUser = true;
3251
+ this.isShowNode = true;
3252
+ } else if (val == 1) {
3253
+ this.isNextUser = true;
3254
+ this.isShowNode = true;
3255
+ } else if (val == 2) {
3256
+ this.nextNode.isReturnSubmitter = 1;
3257
+ this.loading.close();
3258
+ return;
3259
+ } else if (val == 3) {
3260
+ this.nextNode.isUndertakeReply = 1;
3261
+ this.loading.close();
3262
+ return;
3263
+ } else if (val == 4) {
3264
+ this.nextNode.isTakeAdviceReply = 1;
3265
+ this.loading.close();
3266
+ return;
3267
+ } else if (val == 5) {
3268
+ this.nextNode.isUndertakeEnd = 1;
3269
+ this.loading.close();
3270
+ return;
3271
+ } else if (val == 6) {
3272
+ this.nextNode.isTakeAdviceEnd = 1;
3273
+ this.loading.close();
3274
+ return;
3275
+ } else if (val == 7) {
3276
+ this.nextNode.isReadDealReply = 1;
3277
+ this.loading.close();
3278
+ return;
3279
+ } else if (val == 8) {
3280
+ this.nextNode.isReadDealEnd = 1;
3281
+ this.loading.close();
3282
+ return;
3283
+ } else if (val == 9) {
3284
+ this.nextNode.isReturnRejectNode = 1;
3285
+ this.loading.close();
3286
+ return;
3287
+ } else {
3288
+ }
3289
+ }
3290
+ if (this.endFlow && isDef) {
3291
+ this.loading.close();
3292
+ } else {
3293
+ this.getNodeInfo();
3294
+ }
3295
+ },
3296
+ /**
3297
+ * isMultiple
3298
+ * @desc:是否多选
3299
+ * @author liufan
3300
+ * @date 2022年9月13日
3301
+ **/
3302
+ isMultiple(val, choiceOrgId, choiceDeptId, pOrgId) {
3303
+ if (val == 2 || val == 4 || val == 6 || val == 16) {
3304
+ this.multiple = true;
3305
+ } else {
3306
+ this.multiple = false;
3307
+ }
3308
+ if (val == 1 || val == 2 || val == 5) {
3309
+ this.params.filid = this.userModel.orgId;
3310
+ if (choiceOrgId) {
3311
+ this.params.filid = choiceOrgId;
3312
+ }
3313
+ }
3314
+ if (val == 5 || val == 6) {
3315
+ this.params.filid = this.userModel.orgId;
3316
+ this.params.mydeptid = this.userModel.depId;
3317
+ if (choiceDeptId) {
3318
+ this.params.mydeptid = choiceDeptId;
3319
+ }
3320
+ if (choiceOrgId) {
3321
+ this.params.filid = choiceOrgId;
3322
+ }
3323
+ }
3324
+ if (val == 15 || val == 16) {
3325
+ this.params.filid = this.userModel.orgId;
3326
+ if (pOrgId) {
3327
+ this.params.filid = pOrgId;
3328
+ }
3329
+ }
3330
+ },
3331
+ btnFunValue(fun) {
3332
+ return fun.replace('()', '');
3333
+ },
3334
+ /**
3335
+ * getHedInfo
3336
+ * @desc:获取审核页面数据
3337
+ * @author liufan
3338
+ * @date 2022年5月25日
3339
+ **/
3340
+ getHedInfo() {
3341
+ this.loading = util.loading(this.$loading, '加载中...');
3342
+ let params = {
3343
+ pendingId: this.pendingId,
3344
+ userId: util.getStorage('userId')
3345
+ };
3346
+ util
3347
+ .ajax({ url: getHandleInfoHtml, params })
3348
+ .then((res) => {
3349
+ //pc返回数据
3350
+
3351
+ this.loading.close();
3352
+
3353
+ if (res.status === 'success') {
3354
+ const {
3355
+ data: {
3356
+ nextNodeList,
3357
+ taskOperations,
3358
+ isCustomPreset,
3359
+ presetTaskNodeKeyStr,
3360
+ presetTaskNodeMap,
3361
+ temporarySaveButtonName,
3362
+ circularReadParamsMap,
3363
+ isPreset,
3364
+ choiceOrgId,
3365
+ nextOperateCheckType,
3366
+ choiceDeptId,
3367
+ readOnlyNotificationType,
3368
+ notificationMessageReadOnly,
3369
+ nextNodeCheckType,
3370
+ pOrgId,
3371
+ extendData,
3372
+ currentOrgName,
3373
+ pendingItemHandleDescription,
3374
+ currentOrgSelectorParams,
3375
+ otherOrgName,
3376
+ taskExamine,
3377
+ nodeInfoMap,
3378
+ canRemoveSignUserList,
3379
+ defaultNotificationMessage,
3380
+ customPresetHintMessage,
3381
+ isCanAddSign,
3382
+ isCanRemoveSign,
3383
+ attachedCode,
3384
+ isSpecial,
3385
+ canPresetRead,
3386
+ isCdjxjTaskHandle,
3387
+ taskOperationShiftedNodeList,
3388
+ taskButtonList,
3389
+ simpleTips,
3390
+ opinion,
3391
+ isCanPreAddSign
3392
+ }
3393
+ } = res;
3394
+ if (temporarySaveButtonName) {
3395
+ this.saveButtonName = temporarySaveButtonName;
3396
+ }
3397
+ if (simpleTips != undefined) {
3398
+ this.simpleTips = simpleTips;
3399
+ }
3400
+ this.$emit('startTaskRead', res);
3401
+ this.$emit('start-task-read', res);
3402
+ if (
3403
+ taskOperationShiftedNodeList &&
3404
+ taskOperationShiftedNodeList.length > 0
3405
+ ) {
3406
+ this.taskOperationShiftedNodeList = [];
3407
+ taskOperationShiftedNodeList.map((x) => {
3408
+ this.taskOperationShiftedNodeList.push(x.nodeId);
3409
+ taskOperations.push({
3410
+ key: x.nodeId,
3411
+ value: x.nodeName,
3412
+ nextOperate: x.nextOperate,
3413
+ isNextNode: true
3414
+ });
3415
+ });
3416
+ }
3417
+ this.isHideTemporarySave =
3418
+ nodeInfoMap.nodeExtAttr.isHideTemporarySave == 1;
3419
+ this.pendingItemHandleDescription = pendingItemHandleDescription;
3420
+ if (currentOrgSelectorParams.enableCurrentOrgConfig == 'true') {
3421
+ this.currentOrgSelectorTabs =
3422
+ currentOrgSelectorParams.currentOrgType.split(',');
3423
+ let currentOrgparams =
3424
+ currentOrgSelectorParams.currentOrgRange.split(',');
3425
+ this.currentOrgSelectorTabs.map((x, i) => {
3426
+ this.currentOrgSelectorParams[x] = {
3427
+ filid:
3428
+ currentOrgparams[i] == 'my'
3429
+ ? choiceOrgId
3430
+ : currentOrgparams[i],
3431
+ only_filid: true,
3432
+ roleid: this.selectorParams.roleid
3433
+ };
3434
+ });
3435
+ }
3436
+ if (currentOrgSelectorParams.enableForeignOrgConfig == 'true') {
3437
+ this.foreignOrgSelectorTabs =
3438
+ currentOrgSelectorParams.foreignOrgType.split(',');
3439
+ let foreignOrgparams =
3440
+ currentOrgSelectorParams.foreignOrgRange.split(',');
3441
+ this.foreignOrgSelectorTabs.map((x, i) => {
3442
+ this.foreignOrgSelectorParams[x] = {
3443
+ filid:
3444
+ foreignOrgparams[i] == 'my'
3445
+ ? choiceOrgId
3446
+ : x == 'filgroup'
3447
+ ? ''
3448
+ : foreignOrgparams[i] == 'nofilidorg' ||
3449
+ foreignOrgparams[i] == 'nofiliddept'
3450
+ ? 'all'
3451
+ : foreignOrgparams[i],
3452
+ nofilid:
3453
+ foreignOrgparams[i] == 'nofilidorg'
3454
+ ? sessionStorage.getItem('orgId')
3455
+ : foreignOrgparams[i] == 'nofiliddept'
3456
+ ? sessionStorage.getItem('depId')
3457
+ : foreignOrgparams[i] == 'other'
3458
+ ? 1
3459
+ : 0,
3460
+ roleid:
3461
+ this.circularReadParamsMap.circularReadOrgRoleCode ||
3462
+ this.foreignOrgSelectorParams.roleid
3463
+ };
3464
+ });
3465
+ }
3466
+ this.circularReadParamsMap = circularReadParamsMap || {};
3467
+ if (this.circularReadParamsMap.circularReadOrgRoleCode) {
3468
+ this.foreignOrgSelectorParams.roleid =
3469
+ this.circularReadParamsMap.circularReadOrgRoleCode;
3470
+ }
3471
+ this.currentOrgName = currentOrgName;
3472
+ this.nextOperateCheckType = nextOperateCheckType || 'select';
3473
+ this.currentNodeIsCircularReadNode =
3474
+ nodeInfoMap.nodeExtAttr.currentNodeIsCircularReadNode == 1;
3475
+
3476
+ this.submitButtonFunKey =
3477
+ nodeInfoMap.nodeExtAttr.submitButtonFunKey;
3478
+ this.taskNodeButtons = nodeInfoMap.nodeExtAttr.taskNodeButtons;
3479
+ this.readOnlyNotificationType = readOnlyNotificationType;
3480
+
3481
+ this.readOnlyNotificationType = readOnlyNotificationType;
3482
+ this.isSpecial = isSpecial;
3483
+ this.notificationMessageReadOnly =
3484
+ notificationMessageReadOnly == 'true';
3485
+ this.otherOrgName = otherOrgName;
3486
+ this.isCanPreAddSign = isCanPreAddSign;
3487
+ this.endFlowInfo.choiceOrgId = choiceOrgId;
3488
+ this.endFlowInfo.choiceDeptId = choiceDeptId;
3489
+ this.endFlowInfo.pendingId = this.pendingId;
3490
+ this.attachedCode = attachedCode;
3491
+ this.endFlowInfo.pOrgId = pOrgId;
3492
+ this.canPresetRead = canPresetRead;
3493
+ this.isCdjxjTaskHandle = isCdjxjTaskHandle;
3494
+ nextNodeCheckType && (this.nextNodeCheckType = nextNodeCheckType);
3495
+ this.operationList = taskOperations || [];
3496
+ this.customPresetHintMessage = customPresetHintMessage;
3497
+ if (canPresetRead) {
3498
+ let ids =
3499
+ nodeInfoMap.nodeExtAttr.presetReadCandinateIds.split(',');
3500
+ let names =
3501
+ nodeInfoMap.nodeExtAttr.presetReadCandinateNames.split(',');
3502
+ ids.map((item, index) => {
3503
+ this.presetReadUserId.push({
3504
+ showid: item,
3505
+ showname: names[index]
3506
+ });
3507
+ this.selectPresetUserList.push({
3508
+ showid: item,
3509
+ showname: names[index]
3510
+ });
3511
+ this.nextNode.presetReadUserId.push(item);
3512
+ });
3513
+ }
3514
+ if (!this.isFlow) this.getFile(this.pendingId, attachedCode);
3515
+ if (nextNodeList && nextNodeList.length != 0) {
3516
+ this.nextNodeList = nextNodeList;
3517
+ if (
3518
+ nextNodeList[0].nodeType === 'endEvent' &&
3519
+ nextNodeList.length == 1
3520
+ ) {
3521
+ this.isNextUser = nextNodeList[0].nodeType != 'endEvent';
3522
+ nextNodeList[0].nodeType === 'endEvent'
3523
+ ? (this.endFlow = true)
3524
+ : '';
3525
+ }
3526
+ }
3527
+
3528
+ if (canRemoveSignUserList && canRemoveSignUserList.length != 0)
3529
+ this.removeUsers = canRemoveSignUserList;
3530
+ if (taskOperations && taskOperations.length != 0) {
3531
+ let isSelected = false;
3532
+ taskOperations.map((item) => {
3533
+ if (item.key === 9) this.isReject = true;
3534
+ if (item.isSelected) {
3535
+ this.nodeInfos = [];
3536
+ this.nextNode.nextOperate = item.key;
3537
+ if (item.taskNodeList != null) {
3538
+ this.nodeInfos = item.taskNodeList;
3539
+ }
3540
+ isSelected = true;
3541
+ }
3542
+ });
3543
+ if (taskOperations.length > 0 && !isSelected) {
3544
+ this.nodeInfos = [];
3545
+ this.nextNode.nextOperate = taskOperations[0].key;
3546
+ if (taskOperations[0].taskNodeList != null) {
3547
+ this.nodeInfos = taskOperations[0].taskNodeList;
3548
+ }
3549
+ }
3550
+ }
3551
+ if (nodeInfoMap && JSON.stringify(nodeInfoMap) != '{}') {
3552
+ this.needRetrialAuth =
3553
+ !!nodeInfoMap.nodeExtAttr.isCurrentNodeSubmitNeedRetrialAuth;
3554
+ if (nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList) {
3555
+ let notice = JSON.parse(
3556
+ nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList
3557
+ );
3558
+ notice.map((x) => {
3559
+ this.nodeFixedOpinionSelectList.push({ content: x });
3560
+ });
3561
+ }
3562
+
3563
+ this.value = opinion || '';
3564
+ this.nodeDefaultSubmitOpinion =
3565
+ nodeInfoMap.nodeExtAttr.nodeDefaultSubmitOpinion;
3566
+ this.isSubmitButtonShowAgreeAndDisagree =
3567
+ nodeInfoMap.nodeExtAttr.isSubmitButtonShowAgreeAndDisagree;
3568
+ this.isBanInputOpinion =
3569
+ nodeInfoMap.nodeExtAttr.isBanInputOpinion;
3570
+ this.nodeDefaultRejectOpinion =
3571
+ nodeInfoMap.nodeExtAttr.nodeDefaultRejectOpinion;
3572
+ this.isOpinionRequired =
3573
+ nodeInfoMap.nodeExtAttr.isOpinionRequired;
3574
+ this.isChooseNextNode = nodeInfoMap.nodeExtAttr.isChooseNextNode;
3575
+ // this.isHideDefaultOperation =
3576
+ // nodeInfoMap.nodeExtAttr.isHideDefaultOperation == 1;
3577
+ this.defaultNextNode = nodeInfoMap.nodeExtAttr.defaultNextNode;
3578
+ if (nodeInfoMap.nodeExtAttr.defaultNextNode) {
3579
+ let defaultNode = this.nodeInfos.filter(
3580
+ (item) =>
3581
+ item.nodeId == nodeInfoMap.nodeExtAttr.defaultNextNode
3582
+ );
3583
+ if (this.nodeInfos.length > 0 && defaultNode.length == 0) {
3584
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
3585
+ } else {
3586
+ this.nextNode.nextNodeId =
3587
+ nodeInfoMap.nodeExtAttr.defaultNextNode;
3588
+ }
3589
+ } else if (this.nodeInfos.length > 0) {
3590
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
3591
+ }
3592
+ this.isForceDisplayDefaultOptionForPrefix =
3593
+ nodeInfoMap.nodeExtAttr.isForceDisplayDefaultOptionForPrefix ==
3594
+ 1;
3595
+ if (nodeInfoMap.nodeExtAttr.submitText) {
3596
+ this.btnList.map((x) => {
3597
+ if (x.event === 'sub') {
3598
+ x.text = nodeInfoMap.nodeExtAttr.submitText;
3599
+ }
3600
+ });
3601
+ }
3602
+ }
3603
+ this.choiceOrgId = choiceOrgId;
3604
+ this.choiceDeptId = choiceDeptId;
3605
+ this.pOrgId = pOrgId;
3606
+ if (res.data && res.data.isEndUserTask != undefined) {
3607
+ this.isEndUserTask = res.data.isEndUserTask;
3608
+ }
3609
+ if (JSON.stringify(taskExamine) != '{}' && taskExamine) {
3610
+ this.nodeInfo.nextNode = taskExamine.processDefinitionId;
3611
+ this.NodeName = taskExamine.nodeName;
3612
+ this.taskId = taskExamine.taskId;
3613
+ this.businessIds = taskExamine.businessId;
3614
+ this.appId = taskExamine.appId;
3615
+ this.taskExamineInfo = taskExamine;
3616
+ this.taskExamineInfo.choiceOrgId = choiceOrgId;
3617
+ this.taskExamineInfo.choiceDeptId = choiceDeptId;
3618
+ this.endFlowInfo.processType = taskExamine.processType;
3619
+ // this.endFlowInfo.isReturnSubmitter =
3620
+ // taskExamine.isReturnSubmitter;
3621
+ // this.nextNode.isReturnSubmitter = taskExamine.isReturnSubmitter;
3622
+ // this.nextNode.isUndertakeReply = taskExamine.isUndertakeReply;
3623
+ // this.nextNode.isTakeAdviceReply = taskExamine.isTakeAdviceReply;
3624
+ // this.nextNode.isUndertakeEnd = taskExamine.isUndertakeEnd;
3625
+ // this.nextNode.isTakeAdviceEnd = taskExamine.isTakeAdviceEnd;
3626
+ // this.nextNode.isReadDealReply = taskExamine.isReadDealReply;
3627
+ // this.nextNode.isReadDealEnd = taskExamine.isReadDealEnd;
3628
+ // this.nextNode.isReturnRejectNode = taskExamine.isReturnRejectNode;
3629
+ // this.nextNode.isSerialSubmit = taskExamine.isSerialSubmit;
3630
+ this.endFlowInfo.isSubFlow = taskExamine.isSubFlow;
3631
+ this.endFlowInfo.isUndertakeReply = taskExamine.isUndertakeReply;
3632
+ this.endFlowInfo.isUndertakeEnd = taskExamine.isUndertakeEnd;
3633
+ this.endFlowInfo.isTakeAdviceEnd = taskExamine.isTakeAdviceEnd;
3634
+ this.endFlowInfo.isTakeAdviceReply =
3635
+ taskExamine.isTakeAdviceReply;
3636
+ this.endFlowInfo.isReadDealEnd = taskExamine.isReadDealEnd;
3637
+ this.endFlowInfo.isReadDealReply = taskExamine.isReadDealReply;
3638
+ this.endFlowInfo.isReturnRejectNode =
3639
+ taskExamine.isReturnRejectNode;
3640
+ this.endFlowInfo.isSerialSubmit = taskExamine.isSerialSubmit;
3641
+ // this.endFlowInfo.isReadDealReply =
3642
+ // taskExamine.isReadDealReplybusinessId;
3643
+ this.endFlowInfo.appId = taskExamine.appId;
3644
+ this.endFlowInfo.businessId = taskExamine.businessId;
3645
+ this.endFlowInfo.processDefinitionId =
3646
+ taskExamine.processDefinitionId;
3647
+ this.endFlowInfo.nodeId = taskExamine.nodeId;
3648
+ }
3649
+ if (
3650
+ extendData &&
3651
+ extendData.pendingData &&
3652
+ extendData.pendingData.itemname
3653
+ ) {
3654
+ this.NodeName = extendData.pendingData.itemname;
3655
+ }
3656
+ if (this.nodeName) {
3657
+ this.NodeName = this.nodeName;
3658
+ }
3659
+ this.isCanAddSign = isCanAddSign;
3660
+ this.processObj = res.data;
3661
+ if (this.isCanAddSign) {
3662
+ this.nextNode.isAddSign = '2';
3663
+ }
3664
+ this.isCanRemoveSign = isCanRemoveSign;
3665
+ if (this.isCanRemoveSign) {
3666
+ this.nextNode.isRemoveSign = '2';
3667
+ }
3668
+
3669
+ if (!this.isOpinionRequired) {
3670
+ this.isOpinionRequired = 0;
3671
+ }
3672
+ // opinion && (this.value = opinion);
3673
+ this.nextNode.notificationMsg = defaultNotificationMessage;
3674
+ this.moreList = [];
3675
+ console.log(taskButtonList, 'taskButtonList');
3676
+ if (taskButtonList && taskButtonList.length != 0) {
3677
+ taskButtonList.map((item) => {
3678
+ if (item.fun === 'reject()') {
3679
+ this.rejectObj = item;
3680
+ } else if (item.fun === 'toStartTaskRead()') {
3681
+ this.pointsReadingObj = item;
3682
+ } else {
3683
+ this.moreList.push(item);
3684
+ }
3685
+ });
3686
+ this.typeList = this.typeList.concat(taskButtonList);
3687
+ }
3688
+ this.isMainSubProcess = res.data.isMainSubProcess == 'true';
3689
+ this.isCustomPreset = isCustomPreset;
3690
+ this.isPreset = isPreset;
3691
+ this.presetTaskNodeMap = presetTaskNodeMap;
3692
+ this.presetTaskNodeKeyStr = presetTaskNodeKeyStr;
3693
+ this.getFind();
3694
+ this.selecNext(this.nextNode.nextOperate, true, true);
3695
+ // this.getNodeInfo();
3696
+ this.StartTaskReadKey++;
3697
+ } else {
3698
+ if (res.status === 'taskCompleted') {
3699
+ this.$emit('shrink', true);
3700
+ this.shrinkAbled = true;
3701
+ this.$message.warning(res.message || '系统错误,请联系管理员!');
3702
+ } else {
3703
+ this.$message.error(res.message || '系统错误,请联系管理员!');
3704
+ }
3705
+ }
3706
+ this.showOpinion = false;
3707
+ setTimeout(() => {
3708
+ this.showOpinion = true;
3709
+ }, 0);
3710
+ })
3711
+ .catch((err) => {
3712
+ this.loading.close();
3713
+ if (err.message && err.message !== 'canceled') {
3714
+ this.$message.error(err.message);
3715
+ }
3716
+ });
3717
+ },
3718
+ /**
3719
+ * closeProcess
3720
+ * @desc:关闭弹窗
3721
+ * @author liufan
3722
+ * @param {boolean} val 当前是否办理流程
3723
+ * @param {String} type 当前点击的弹窗类型
3724
+ * @date 2022年5月25日
3725
+ **/
3726
+ closeProcess(val, type, closeParent) {
3727
+ if (this.closeParent && !this.startFlowPageEmbeddedIntoStartFlowIndex) {
3728
+ this.$refs[type].handleClosed();
3729
+ } else if (!this.startFlowPageEmbeddedIntoStartFlowIndex) {
3730
+ this[type] = false;
3731
+ }
3732
+ if (
3733
+ this.freeStartFlowParams.useScene &&
3734
+ this.freeStartFlowParams.useScene != 'multiInsMidwayWithSubmitScene'
3735
+ ) {
3736
+ this[type] = false;
3737
+ return;
3738
+ }
3739
+ if (
3740
+ val == 'taskReadAndEnd' ||
3741
+ (val == true && type != 'taskRead') ||
3742
+ val == 'transfer' ||
3743
+ this.typeCode == 'read'
3744
+ ) {
3745
+ this.flowSuccess(true);
3746
+ // this.$emit('success');
3747
+ } else {
3748
+ this.$emit('cancel');
3749
+ }
3750
+ },
3751
+ /**
3752
+ * selectChange
3753
+ * @desc:常用语选择
3754
+ * @author liufan
3755
+ * @param {String} val 选中值
3756
+ * @date 2022年5月25日
3757
+ **/
3758
+ selectChange(val) {
3759
+ this.value = val;
3760
+ },
3761
+ /**
3762
+ * upDate
3763
+ * @desc:修改常用语
3764
+ * @author liufan
3765
+ * @param {Object} val 修改值
3766
+ * @date 2022年5月25日
3767
+ **/
3768
+ upDate(val) {
3769
+ this.FormData.id = val.id;
3770
+ this.addVisible = true;
3771
+ },
3772
+
3773
+ /**
3774
+ * getProcess
3775
+ * @desc:获取选择流程
3776
+ * @author liufan
3777
+ * @date 2022年5月25日
3778
+ **/
3779
+ getProcess(val) {
3780
+ let params = {
3781
+ businessId: this.businessId,
3782
+ flowTypeCode: val || this.flowTypeCode,
3783
+ // defaultProcessKey: this.defaultProcessKey,
3784
+ isOnly: true,
3785
+ hideTempSave: true,
3786
+ ...this.param
3787
+ // onlyFlag: true
3788
+ };
3789
+ this.loading = util.loading(this.$loading, '加载中...');
3790
+ util
3791
+ .ajax({ url: getProcessDefList, params })
3792
+ .then((res) => {
3793
+ const { status, message, data } = res;
3794
+ this.loading.close();
3795
+ if (status === 'success') {
3796
+ if (data.simpleTips != undefined) {
3797
+ this.simpleTips = data.simpleTips;
3798
+ }
3799
+ this.isStartFlowChartView = data.isStartFlowChartView;
3800
+ if (
3801
+ !Object.keys(data).length ||
3802
+ (data.definitionList && !data.definitionList.length)
3803
+ ) {
3804
+ this.$message.error('流程不存在或未关联对应流程!');
3805
+ } else {
3806
+ this.startFlowPageEmbeddedIntoStartFlowIndex =
3807
+ data.startFlowPageEmbeddedIntoStartFlowIndex;
3808
+ this.activitiDefinitionSort = data.activitiDefinitionSort;
3809
+ this.nodeInfo.option = data.definitionList;
3810
+ this.nodeInfo.nextNode = data.definitionList.filter(
3811
+ (item) => item.processDefKey == this.defaultProcessKey
3812
+ );
3813
+ if (this.nodeInfo.nextNode.length) {
3814
+ this.nodeInfo.nextNode = this.nodeInfo.nextNode[0].processDefId;
3815
+ } else {
3816
+ if (data.definitionList.length != 0) {
3817
+ this.nodeInfo.nextNode = data.definitionList[0].processDefId;
3818
+ } else {
3819
+ this.nodeInfo.nextNode = '';
3820
+ }
3821
+ }
3822
+ if (this.nodeInfo.nextNode) {
3823
+ this.handleChange(this.nodeInfo.nextNode, true);
3824
+ }
3825
+ if (
3826
+ this.showCirculate != undefined &&
3827
+ !this.showCirculate &&
3828
+ this.urgencyLevel
3829
+ ) {
3830
+ this.getAdminMsgType();
3831
+ }
3832
+ }
3833
+ } else {
3834
+ this.$message.error(message || '系统错误,请联系管理员!');
3835
+ }
3836
+ })
3837
+ .catch((err) => {
3838
+ this.loading.close();
3839
+ if (err.message && err.message !== 'canceled') {
3840
+ this.$message.error(err.message);
3841
+ }
3842
+ });
3843
+ },
3844
+ /**
3845
+ * getPendedhistoryList
3846
+ * @desc:获取流程列表
3847
+ * @author liufan
3848
+ * @date 2022年5月25日
3849
+ **/
3850
+ getPendedhistoryList() {
3851
+ let params = {
3852
+ apprecordId: this.businessIds,
3853
+ userId: util.getStorage('userId'),
3854
+ type: 2
3855
+ };
3856
+ util
3857
+ .ajax({ url: pendedhistoryList, data: params, method: 'post' })
3858
+ .then((res) => {
3859
+ const { rCode, msg, results } = res;
3860
+ if (!rCode) {
3861
+ this.nextNode.nextUserId = [];
3862
+ this.showNews = false;
3863
+ this.nextNode.notificationType = [];
3864
+ this.pendingId = results[results.length - 1].attachId;
3865
+ this.getHedInfo();
3866
+ } else {
3867
+ this.$message.error(msg || '系统错误,请联系管理员!');
3868
+ }
3869
+ })
3870
+ .catch((err) => {
3871
+ if (err.message && err.message !== 'canceled') {
3872
+ this.$message.error(err.message);
3873
+ }
3874
+ });
3875
+ },
3876
+ reqCircularRead(type) {
3877
+ const _that = this;
3878
+ let params = {
3879
+ url: checkForeignOrgStartedCircularRead,
3880
+ params: {
3881
+ foreignOrgObj: _that.nextNode.nextOtherOrgObj,
3882
+ circularReadProcessKey: _that.taskExamineInfo.processDefinitionId,
3883
+ pendingId: _that.pendingId,
3884
+ currentBusinessId: _that.taskExamineInfo.businessId
3885
+ }
3886
+ };
3887
+ this.loading = util.loading(this.$loading, '提交中...');
3888
+ util.ajax(params).then((res) => {
3889
+ this.loading.close();
3890
+ if (res.rCode == 0) {
3891
+ if (res.results.alert) {
3892
+ _that
3893
+ .$confirm(res.results.message, {
3894
+ confirmButtonText: '确定',
3895
+ cancelButtonText: '取消',
3896
+ type: 'warning'
3897
+ })
3898
+ .then(() => {
3899
+ _that.subMit(res.results, type);
3900
+ })
3901
+ .catch(() => {});
3902
+ } else {
3903
+ _that.sendData(type);
3904
+ }
3905
+ }
3906
+ });
3907
+ },
3908
+ subMit(res, type) {
3909
+ if (
3910
+ (res.status == 'forbiddenForeignOrg' &&
3911
+ this.nextNode.nextCurrentOrgObj.length != 0) ||
3912
+ res.status == 'availableForeignOrg'
3913
+ ) {
3914
+ this.sendData(type);
3915
+ }
3916
+ },
3917
+ // 提交流程前验证
3918
+ beforeSubProcess() {},
3919
+ // 提交流程
3920
+ /**
3921
+ * subProcess
3922
+ * @desc:提交流程
3923
+ * @author liufan
3924
+ * @param {String} formName 当前form表单ref值
3925
+ * @date 2022年5月25日
3926
+ **/
3927
+ subProcess(val, type) {
3928
+ if (this.btnType != 'default') {
3929
+ if (
3930
+ this.btnType == 'reject' &&
3931
+ this.$refs[this.btnType].rejectObj.length == 0
3932
+ ) {
3933
+ warning('暂无可驳回节点及对象');
3934
+ return;
3935
+ }
3936
+ console.log('taskReadBtn', this.btnType);
3937
+ this.$refs[this.btnType].subProcess('nextNode');
3938
+ return;
3939
+ }
3940
+ return this.$refs['nextNode'].validate((valid) => {
3941
+ if (valid) {
3942
+ if (this.isSubmitButtonShowAgreeAndDisagree == 1) {
3943
+ this.value = this.value.replace(RegExp('不同意。', 'g'), '');
3944
+ this.value = this.value.replace(RegExp('同意。', 'g'), '');
3945
+ this.value = val + this.value;
3946
+ }
3947
+ if (!this.validInfo()) {
3948
+ this.freeValid = false;
3949
+ return;
3950
+ } else {
3951
+ this.freeValid = true;
3952
+ }
3953
+ // if (
3954
+ // this.currentNodeIsCircularReadNode &&
3955
+ // this.nextNode.nextOtherOrgObj.length != 0
3956
+ // ) {
3957
+ // this.reqCircularRead(type);
3958
+ // return;
3959
+ // }
3960
+ if (this.submitButtonFunKey) {
3961
+ let btnInfo = this.taskNodeButtons.filter(
3962
+ (x) => x.key === this.submitButtonFunKey
3963
+ );
3964
+ if (btnInfo.length > 0) {
3965
+ if (btnInfo[0].type == 4) {
3966
+ this.$emit(
3967
+ 'buttonClick',
3968
+ { fun: btnInfo[0].fun, opinion: this.value },
3969
+ this.sendData
3970
+ );
3971
+ } else if (btnInfo[0].type == 2) {
3972
+ this.goView(btnInfo[0]);
3973
+ }
3974
+ }
3975
+ return;
3976
+ }
3977
+ if (type == 'multiInsMidwayWithSubmitScene') {
3978
+ this.sendData(type);
3979
+ return;
3980
+ }
3981
+ if (this.beforeSubmit == undefined) {
3982
+ this.subFun(this.sendData);
3983
+ } else {
3984
+ this.beforeSubmit(1)
3985
+ .then((next) => {
3986
+ this.sendData();
3987
+ })
3988
+ .catch((e) => {});
3989
+ }
3990
+ }
3991
+ });
3992
+ },
3993
+ validInfo() {
3994
+ if (
3995
+ !this.endFlow &&
3996
+ this.newTypeCode != 'fenyue' &&
3997
+ !this.shrink &&
3998
+ this.nextNode.isAddSign != '1' &&
3999
+ this.nextNode.isRemoveSign != '1' &&
4000
+ this.isSpecial &&
4001
+ !this.isReject &&
4002
+ this.nodeInfos.length != 0 &&
4003
+ this.isNextUser
4004
+ ) {
4005
+ if (this.isShowNextUser) {
4006
+ if (
4007
+ this.nextNode.nextUserId == '' ||
4008
+ (this.multiple && this.nextNode.nextUserId.length == 0)
4009
+ ) {
4010
+ this.$message.warning(
4011
+ `请选择${this.flowLabelConfig.nextUser || '下步办理人'}`
4012
+ );
4013
+ return false;
4014
+ }
4015
+ } else {
4016
+ if (
4017
+ this.nextNode.nextOrgId == '' ||
4018
+ (this.multiple && this.nextNode.nextOrgId.length == 0)
4019
+ ) {
4020
+ this.$message.warning('请选择办理对象');
4021
+ return false;
4022
+ }
4023
+ }
4024
+ }
4025
+
4026
+ if (
4027
+ this.nextNode.isAddSign == '1' &&
4028
+ this.nextNode.addSignUserId.length == 0
4029
+ ) {
4030
+ this.$message.warning('请选择加签办理人');
4031
+ return false;
4032
+ }
4033
+ if (
4034
+ this.nextNode.isRemoveSign == '1' &&
4035
+ this.nextNode.removeSignUserId.length == 0
4036
+ ) {
4037
+ this.$message.warning('请选择减签办理人');
4038
+ return false;
4039
+ }
4040
+ if (!this.value && this.isOpinionRequired === 1) {
4041
+ this.$message.warning('请选择输入审批意见');
4042
+ return false;
4043
+ }
4044
+ // if (this.isHideCurrentOrg && !this.nextNode.nextCurrentOrgObjJson) {
4045
+ // this.$message.warning(`请选择${this.currentOrgName || '本单位'}`);
4046
+ // return false;
4047
+ // }
4048
+
4049
+ if (
4050
+ (this.currentNodeIsCircularReadNode ||
4051
+ (this.isHideOtherOrg && this.isHideCurrentOrg)) &&
4052
+ this.nextNode.nextCurrentOrgObj.length == 0 &&
4053
+ this.nextNode.nextOtherOrgObj.length == 0 &&
4054
+ this.nextNode.isReturnSubmitter != 1
4055
+ ) {
4056
+ this.$message.warning(`请选择下步办理对象!`);
4057
+ return false;
4058
+ }
4059
+ return true;
4060
+ },
4061
+ flowSuccess(hideMessage) {
4062
+ if (!this.simpleTips) {
4063
+ this.$alert('提交成功', '', {
4064
+ confirmButtonText: '确定',
4065
+ type: 'success',
4066
+ callback: (action) => {
4067
+ this.$emit('success');
4068
+ }
4069
+ });
4070
+ } else {
4071
+ if (!hideMessage) {
4072
+ this.$message.success('提交成功');
4073
+ }
4074
+ this.$emit('success');
4075
+ }
4076
+ },
4077
+
4078
+ sendData(freetype) {
4079
+ if (this.isFlow && !this.nodeInfo.nextNode) {
4080
+ this.$message.warning('请选择流程');
4081
+ return;
4082
+ }
4083
+ if (
4084
+ this.isFlow &&
4085
+ this.nodeInfo.nextNode &&
4086
+ this.startFlowPageEmbeddedIntoStartFlowIndex
4087
+ ) {
4088
+ if (this.directCreateCircularReadWhenFlowStarted) {
4089
+ this.$refs.flowCirculate.subMit();
4090
+ } else {
4091
+ this.$refs.processFormIndex.subProcess('nextNode');
4092
+ }
4093
+ return;
4094
+ }
4095
+ this.$refs['nextNode'].validate(async (valid) => {
4096
+ if (valid) {
4097
+ if (this.isFlow) {
4098
+ if (
4099
+ this.isOpinionRequired &&
4100
+ !this.$refs.commonOpinions.validate()
4101
+ ) {
4102
+ this.$message.warning('请输入审批意见');
4103
+ return;
4104
+ }
4105
+ if (this.directCreateCircularReadWhenFlowStarted) {
4106
+ this.circulateVisible = true;
4107
+ } else {
4108
+ this.handleVisible = true;
4109
+ }
4110
+ return;
4111
+ }
4112
+ let nextUserId = [];
4113
+ if (this.multiple) {
4114
+ this.nextNode.nextUserId &&
4115
+ this.nextNode.nextUserId.map((item) => nextUserId.push(item));
4116
+ }
4117
+ let addSignUserId = [];
4118
+ if (this.isCanAddSign && this.nextNode.isAddSign == '1') {
4119
+ this.nextNode.addSignUserId.map((item) => {
4120
+ addSignUserId.push(item);
4121
+ });
4122
+ }
4123
+ let removeSignUserId = [];
4124
+ if (this.isCanRemoveSign && this.nextNode.isRemoveSign == '1') {
4125
+ this.nextNode.removeSignUserId.map((item) => {
4126
+ removeSignUserId.push(item);
4127
+ });
4128
+ }
4129
+ let str = '';
4130
+ if (this.value) {
4131
+ str = this.value.replace(/\s+/g, '');
4132
+ }
4133
+ if ((!this.value || str === '') && this.nodeDefaultSubmitOpinion) {
4134
+ this.value = this.nodeDefaultSubmitOpinion;
4135
+ }
4136
+ if (!this.isSpecial) {
4137
+ delete this.nextNode.nextOperate;
4138
+ delete this.nextNode.nextNodeId;
4139
+ }
4140
+ if (this.nextNode.nextOperate === 9 || this.oldNextOperate == 9) {
4141
+ this.nextNode.isReturnRejectNode = 1;
4142
+ this.nextNode.processDefinitionId =
4143
+ this.processObj.taskExamine.processDefinitionId;
4144
+ }
4145
+ if (
4146
+ (this.nextNode.nextOperate != 0 &&
4147
+ this.nextNode.nextOperate != 1 &&
4148
+ this.oldNextOperate === '') ||
4149
+ (this.oldNextOperate !== '' &&
4150
+ this.oldNextOperate != 0 &&
4151
+ this.oldNextOperate != 1)
4152
+ ) {
4153
+ delete this.nextNode.nextNodeId;
4154
+ }
4155
+ if (this.isCancelSecondConfirmationType) {
4156
+ this.$confirm('确认提交吗?', '提示', {
4157
+ confirmButtonText: '确定',
4158
+ cancelButtonText: '取消',
4159
+ type: 'warning'
4160
+ }).then(async () => {
4161
+ if (freetype != 'multiInsMidwayWithSubmitScene') {
4162
+ await this.saveInfo('subMit');
4163
+ this.loading = util.loading(this.$loading, '加载中...');
4164
+ }
4165
+
4166
+ let notificationType = '';
4167
+ notificationType = this.nextNode.notificationType.join(',');
4168
+ addSignUserId = addSignUserId.join(',');
4169
+ removeSignUserId = removeSignUserId.join(',');
4170
+ if (!this.isCanPreAddSign || this.nextNode.isAddSign != '1') {
4171
+ delete this.nextNode.addSignMode;
4172
+ }
4173
+
4174
+ let params = {
4175
+ ...this.nextNode,
4176
+ nextOperate:
4177
+ this.oldNextOperate !== ''
4178
+ ? this.oldNextOperate
4179
+ : this.nextNode.nextOperate,
4180
+ pendingId: this.pendingId,
4181
+ opinion:
4182
+ this.isForceDisplayDefaultOptionForPrefix &&
4183
+ !this.value.startsWith(this.nodeDefaultSubmitOpinion)
4184
+ ? this.nodeDefaultSubmitOpinion + this.value
4185
+ : this.value,
4186
+ userId: util.getStorage('userId'),
4187
+ nextUserId: this.multiple
4188
+ ? nextUserId.join(',')
4189
+ : this.nextNode.nextUserId,
4190
+ addSignUserId,
4191
+ customPresetUserJson: JSON.stringify(this.presetList),
4192
+ presetUserJson: JSON.stringify(this.presetUserJson),
4193
+ removeSignUserId,
4194
+ nextReadUserId: this.readMultiple
4195
+ ? this.mixReadList && this.mixReadList.join('|')
4196
+ : this.nextNode.nextReadUserId,
4197
+ nextOrgId: !this.isShowNextUser
4198
+ ? this.multiple
4199
+ ? this.mixOrgIdList && this.mixOrgIdList.join('|')
4200
+ : this.nextNode.nextOrgId
4201
+ : '',
4202
+ presetReadUserId:
4203
+ this.mixPresetList && this.mixPresetList.length > 0
4204
+ ? this.mixPresetList.join('|')
4205
+ : this.nextNode.presetReadUserId.join(','),
4206
+ notificationType
4207
+ };
4208
+ if (this.activeNames != '1') delete params.customPresetUserJson;
4209
+ delete params.customLimitTimeText;
4210
+ if (this.nextNode.isRemoveSign != '1') {
4211
+ delete params.removeSignUserId;
4212
+ }
4213
+ if (this.nextNode.isAddSign != '1') {
4214
+ delete params.addSignUserId;
4215
+ }
4216
+ if (!this.isSpecial) {
4217
+ delete params.nextUserId;
4218
+ }
4219
+ if (freetype === 'multiInsMidwayWithSubmitScene') {
4220
+ params.isSubFlow = this.taskExamineInfo.isSubFlow;
4221
+ this.taskParams = params;
4222
+ return;
4223
+ }
4224
+ this.loading = util.loading(this.$loading, '提交中...');
4225
+ const {
4226
+ isEndUserTask,
4227
+ choiceOrgId,
4228
+ choiceDeptId,
4229
+ pOrgId,
4230
+ taskExamineInfo,
4231
+ currentNodeIsCircularReadNode,
4232
+ needRetrialAuth,
4233
+ circularReadParamsMap,
4234
+ currentNodeEnableItemHandleDescription
4235
+ } = this;
4236
+ params.isEndUserTask = isEndUserTask;
4237
+ params.choiceOrgId = choiceOrgId;
4238
+ params.choiceDeptId = choiceDeptId;
4239
+ params.pOrgId = pOrgId;
4240
+ params.processType = taskExamineInfo.processType;
4241
+ params.businessId = taskExamineInfo.businessId;
4242
+ params.appId = taskExamineInfo.appId;
4243
+ params.processDefinitionId = taskExamineInfo.processDefinitionId;
4244
+ params.isSubFlow = taskExamineInfo.isSubFlow;
4245
+ params.nodeId = taskExamineInfo.nodeId;
4246
+ params.needRetrialAuth = needRetrialAuth;
4247
+ params.taskHandleSubmitMode = currentNodeIsCircularReadNode
4248
+ ? 'circularReadMode'
4249
+ : undefined;
4250
+ if (currentNodeIsCircularReadNode) {
4251
+ params.orgRoleCode =
4252
+ circularReadParamsMap.circularReadOrgRoleCode;
4253
+ }
4254
+ if (!currentNodeEnableItemHandleDescription) {
4255
+ delete params.nextItemHandleDescription;
4256
+ }
4257
+ return util
4258
+ .ajax({ url: taskHandleHtml, method: 'post', data: params })
4259
+ .then((res) => {
4260
+ const { status, message } = res;
4261
+ this.loading.close();
4262
+ if (status === 'success') {
4263
+ this.flowSuccess();
4264
+ } else {
4265
+ this.$message.error(message || '系统错误,请联系管理员!');
4266
+ this.$emit('error');
4267
+ }
4268
+ })
4269
+ .catch((err) => {
4270
+ this.loading.close();
4271
+ if (err.message && err.message !== 'canceled') {
4272
+ this.$message.error(err.message);
4273
+ }
4274
+ });
4275
+ });
4276
+ return;
4277
+ }
4278
+ if (freetype != 'multiInsMidwayWithSubmitScene') {
4279
+ await this.saveInfo('subMit');
4280
+ this.loading = util.loading(this.$loading, '加载中...');
4281
+ }
4282
+
4283
+ let notificationType = '';
4284
+ notificationType = this.nextNode.notificationType.join(',');
4285
+ addSignUserId = addSignUserId.join(',');
4286
+ removeSignUserId = removeSignUserId.join(',');
4287
+ if (!this.isCanPreAddSign || this.nextNode.isAddSign != '1') {
4288
+ delete this.nextNode.addSignMode;
4289
+ }
4290
+
4291
+ let params = {
4292
+ ...this.nextNode,
4293
+ nextOperate:
4294
+ this.oldNextOperate !== ''
4295
+ ? this.oldNextOperate
4296
+ : this.nextNode.nextOperate,
4297
+ pendingId: this.pendingId,
4298
+ opinion:
4299
+ this.isForceDisplayDefaultOptionForPrefix &&
4300
+ !this.value.startsWith(this.nodeDefaultSubmitOpinion)
4301
+ ? this.nodeDefaultSubmitOpinion + this.value
4302
+ : this.value,
4303
+ userId: util.getStorage('userId'),
4304
+ nextUserId: this.multiple
4305
+ ? nextUserId.join(',')
4306
+ : this.nextNode.nextUserId,
4307
+ addSignUserId,
4308
+ customPresetUserJson: JSON.stringify(this.presetList),
4309
+ presetUserJson: JSON.stringify(this.presetUserJson),
4310
+ removeSignUserId,
4311
+ nextReadUserId: this.readMultiple
4312
+ ? this.mixReadList && this.mixReadList.join('|')
4313
+ : this.nextNode.nextReadUserId,
4314
+ nextOrgId: !this.isShowNextUser
4315
+ ? this.multiple
4316
+ ? this.mixOrgIdList && this.mixOrgIdList.join('|')
4317
+ : this.nextNode.nextOrgId
4318
+ : '',
4319
+ presetReadUserId:
4320
+ this.mixPresetList && this.mixPresetList.length > 0
4321
+ ? this.mixPresetList.join('|')
4322
+ : this.nextNode.presetReadUserId.join(','),
4323
+ notificationType
4324
+ };
4325
+ if (this.activeNames != '1') delete params.customPresetUserJson;
4326
+ delete params.customLimitTimeText;
4327
+ if (this.nextNode.isRemoveSign != '1') {
4328
+ delete params.removeSignUserId;
4329
+ }
4330
+ if (this.nextNode.isAddSign != '1') {
4331
+ delete params.addSignUserId;
4332
+ }
4333
+ if (!this.isSpecial) {
4334
+ delete params.nextUserId;
4335
+ }
4336
+ if (freetype === 'multiInsMidwayWithSubmitScene') {
4337
+ params.isSubFlow = this.taskExamineInfo.isSubFlow;
4338
+ this.taskParams = params;
4339
+ return;
4340
+ }
4341
+ this.loading = util.loading(this.$loading, '提交中...');
4342
+ const {
4343
+ isEndUserTask,
4344
+ choiceOrgId,
4345
+ choiceDeptId,
4346
+ pOrgId,
4347
+ taskExamineInfo,
4348
+ currentNodeIsCircularReadNode,
4349
+ needRetrialAuth,
4350
+ circularReadParamsMap,
4351
+ currentNodeEnableItemHandleDescription
4352
+ } = this;
4353
+ params.isEndUserTask = isEndUserTask;
4354
+ params.choiceOrgId = choiceOrgId;
4355
+ params.choiceDeptId = choiceDeptId;
4356
+ params.pOrgId = pOrgId;
4357
+ params.processType = taskExamineInfo.processType;
4358
+ params.businessId = taskExamineInfo.businessId;
4359
+ params.appId = taskExamineInfo.appId;
4360
+ params.processDefinitionId = taskExamineInfo.processDefinitionId;
4361
+ params.isSubFlow = taskExamineInfo.isSubFlow;
4362
+ params.nodeId = taskExamineInfo.nodeId;
4363
+ params.needRetrialAuth = needRetrialAuth;
4364
+ params.taskHandleSubmitMode = currentNodeIsCircularReadNode
4365
+ ? 'circularReadMode'
4366
+ : undefined;
4367
+ if (currentNodeIsCircularReadNode) {
4368
+ params.orgRoleCode = circularReadParamsMap.circularReadOrgRoleCode;
4369
+ }
4370
+ if (!currentNodeEnableItemHandleDescription) {
4371
+ delete params.nextItemHandleDescription;
4372
+ }
4373
+ return util
4374
+ .ajax({ url: taskHandleHtml, method: 'post', data: params })
4375
+ .then((res) => {
4376
+ const { status, message } = res;
4377
+ this.loading.close();
4378
+ if (status === 'success') {
4379
+ this.flowSuccess();
4380
+ } else {
4381
+ this.$message.error(message || '系统错误,请联系管理员!');
4382
+ this.$emit('error');
4383
+ }
4384
+ })
4385
+ .catch((err) => {
4386
+ this.loading.close();
4387
+ if (err.message && err.message !== 'canceled') {
4388
+ this.$message.error(err.message);
4389
+ }
4390
+ });
4391
+ } else {
4392
+ // this.loading.close();
4393
+ return false;
4394
+ }
4395
+ });
4396
+ },
4397
+ // 单位选择完回调
4398
+ disposeAppUnit(res, type) {
4399
+ let label = type.substring(0, type.lastIndexOf('Select'));
4400
+ this.nextNode[label + 'Name'] = '';
4401
+ res.options && (this[type] = res.options);
4402
+ let obj = {};
4403
+ // if (typeof res.mixList == 'array')
4404
+ res.mixList && (this.nextNode[label] = res.mixList.join('|'));
4405
+ res.options.map((item) => {
4406
+ if (obj[item.stype]) {
4407
+ obj[item.stype].push(item.showname);
4408
+ } else {
4409
+ obj[item.stype] = [item.showname];
4410
+ }
4411
+ });
4412
+ for (let key in obj) {
4413
+ if (
4414
+ key === 'enterprise' &&
4415
+ this.nextNode[label + 'Name'].indexOf('[企业]') == -1
4416
+ ) {
4417
+ this.nextNode[label + 'Name'] = this.nextNode[label + 'Name']
4418
+ ? this.nextNode[label + 'Name'] +
4419
+ '|' +
4420
+ '[企业]-' +
4421
+ obj[key].join(',')
4422
+ : '' + '[企业]-' + obj[key].join(',');
4423
+ }
4424
+ if (
4425
+ key === 'department' &&
4426
+ this.nextNode[label + 'Name'].indexOf('[部门]') == -1
4427
+ ) {
4428
+ this.nextNode[label + 'Name'] = this.nextNode[label + 'Name']
4429
+ ? this.nextNode[label + 'Name'] +
4430
+ '|' +
4431
+ '[部门]-' +
4432
+ obj[key].join(',')
4433
+ : '' + '[部门]-' + obj[key].join(',');
4434
+ }
4435
+ if (
4436
+ key === 'employee' &&
4437
+ this.nextNode[label + 'Name'].indexOf('[部门员工]') == -1
4438
+ ) {
4439
+ this.nextNode[label + 'Name'] = this.nextNode[label + 'Name']
4440
+ ? this.nextNode[label + 'Name'] +
4441
+ '|' +
4442
+ '[部门员工]-' +
4443
+ obj[key].join(',')
4444
+ : '' + '[部门员工]-' + obj[key].join(',');
4445
+ }
4446
+ }
4447
+ // this.nextNode[label + 'Name'] = obj.enterprise?;
4448
+ if (!this.currentNodeIsCircularReadNode) {
4449
+ this.nextNode[label + 'SerialId'] = res.nextUser.join(',');
4450
+ this.nextNode[label + 'Json'] = JSON.stringify(res.options);
4451
+ }
4452
+ this.getsubProcessColumns();
4453
+ }
4454
+ }
4455
+ };
4456
+ </script>