eoss-ui 0.6.38 → 0.6.40

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.
Files changed (90) hide show
  1. package/lib/button-group.js +572 -374
  2. package/lib/button.js +572 -374
  3. package/lib/checkbox-group.js +573 -375
  4. package/lib/config/api.js +31 -19
  5. package/lib/data-table-form.js +584 -386
  6. package/lib/data-table.js +597 -392
  7. package/lib/date-picker.js +572 -374
  8. package/lib/dialog.js +572 -374
  9. package/lib/eoss-ui.common.js +10749 -3855
  10. package/lib/error-page.js +4 -4
  11. package/lib/flow-group.js +590 -377
  12. package/lib/flow-list.js +577 -379
  13. package/lib/flow.js +9723 -2852
  14. package/lib/form.js +577 -379
  15. package/lib/handle-user.js +573 -375
  16. package/lib/handler.js +573 -375
  17. package/lib/icon.js +573 -375
  18. package/lib/index.js +1 -1
  19. package/lib/input-number.js +572 -374
  20. package/lib/input.js +572 -374
  21. package/lib/layout.js +2 -2
  22. package/lib/login.js +587 -389
  23. package/lib/main.js +609 -411
  24. package/lib/nav.js +572 -374
  25. package/lib/notify.js +127 -109
  26. package/lib/page.js +572 -374
  27. package/lib/pagination.js +572 -374
  28. package/lib/player.js +572 -374
  29. package/lib/qr-code.js +572 -374
  30. package/lib/radio-group.js +573 -375
  31. package/lib/retrial-auth.js +575 -377
  32. package/lib/select-ganged.js +573 -375
  33. package/lib/select.js +573 -375
  34. package/lib/selector-panel.js +595 -396
  35. package/lib/selector.js +576 -378
  36. package/lib/sizer.js +578 -380
  37. package/lib/steps.js +572 -374
  38. package/lib/switch.js +572 -374
  39. package/lib/table-form.js +572 -374
  40. package/lib/tabs.js +576 -378
  41. package/lib/theme-chalk/flow.css +1 -1
  42. package/lib/theme-chalk/index.css +1 -1
  43. package/lib/tips.js +573 -375
  44. package/lib/tree-group.js +572 -374
  45. package/lib/tree.js +573 -375
  46. package/lib/upload.js +582 -384
  47. package/lib/utils/util.js +448 -268
  48. package/lib/wujie.js +572 -374
  49. package/lib/wxlogin.js +572 -374
  50. package/package.json +2 -1
  51. package/packages/.DS_Store +0 -0
  52. package/packages/data-table/.DS_Store +0 -0
  53. package/packages/data-table/src/column.vue +9 -3
  54. package/packages/data-table/src/main.vue +5 -1
  55. package/packages/data-table-form/.DS_Store +0 -0
  56. package/packages/data-table-form/src/table.vue +6 -6
  57. package/packages/error-page/.DS_Store +0 -0
  58. package/packages/error-page/src/main.vue +2 -2
  59. package/packages/flow/.DS_Store +0 -0
  60. package/packages/flow/src/component/CommonOpinions.vue +5 -1
  61. package/packages/flow/src/component/taskUnionExamine.vue +83 -27
  62. package/packages/flow/src/freeStartFlow.vue +2843 -0
  63. package/packages/flow/src/main.vue +769 -636
  64. package/packages/flow/src/processForm.vue +62 -9
  65. package/packages/flow/src/reset.vue +901 -0
  66. package/packages/flow/src/selectUser.vue +5 -0
  67. package/packages/flow-group/src/main.vue +4 -0
  68. package/packages/form/.DS_Store +0 -0
  69. package/packages/form/src/main.vue +3 -3
  70. package/packages/login/.DS_Store +0 -0
  71. package/packages/login/src/main.vue +4 -6
  72. package/packages/main/.DS_Store +0 -0
  73. package/packages/main/src/.DS_Store +0 -0
  74. package/packages/selector/.DS_Store +0 -0
  75. package/packages/selector/src/main.vue +1 -1
  76. package/packages/selector-panel/.DS_Store +0 -0
  77. package/packages/selector-panel/src/main.vue +3 -2
  78. package/packages/sizer/.DS_Store +0 -0
  79. package/packages/sizer/src/main.vue +5 -5
  80. package/packages/tabs/.DS_Store +0 -0
  81. package/packages/tabs/src/main.vue +2 -2
  82. package/packages/theme-chalk/lib/flow.css +1 -1
  83. package/packages/theme-chalk/lib/index.css +1 -1
  84. package/packages/theme-chalk/src/.DS_Store +0 -0
  85. package/packages/theme-chalk/src/flow.scss +2 -0
  86. package/packages/upload/.DS_Store +0 -0
  87. package/src/.DS_Store +0 -0
  88. package/src/config/api.js +31 -19
  89. package/src/index.js +157 -157
  90. package/src/utils/util.js +433 -258
@@ -0,0 +1,2843 @@
1
+ <template>
2
+ <div
3
+ class="es-flow-index"
4
+ :class="{ 'es-flow-narrow': shrink }"
5
+ :style="styles"
6
+ v-if="!shrinkAbled"
7
+ >
8
+ <Reset
9
+ :type="newTypeCode"
10
+ :appId="resetAppId"
11
+ :flowParams="param"
12
+ v-if="newTypeCode == 'reset' || newTypeCode == 'continuation'"
13
+ />
14
+ <div v-else>
15
+ <div class="es-flow-top" style="height: 245px">
16
+ <div class="es-flow-title">
17
+ <span v-show="!shrink"
18
+ >当前节点:{{ isFlow ? '拟稿' : NodeName }}</span
19
+ >
20
+ </div>
21
+ <div class="es-opinion" v-show="!shrink">
22
+ <span class="es-eidt-title" :style="`${!isFlow ? 'color:red' : ''}`"
23
+ >填写意见</span
24
+ >
25
+ <span
26
+ v-show="!isFlow && newTypeCode != 'fenyue'"
27
+ class="es-opinion-file"
28
+ @click="showFileList = true"
29
+ ><i class="es-icon-fujian"></i>意见附件<span
30
+ class="es-file-num"
31
+ v-show="fileNum > 0"
32
+ >({{ fileNum }})</span
33
+ ></span
34
+ >
35
+ </div>
36
+ <CommonOpinions
37
+ class="es-common-opinions"
38
+ v-show="!shrink"
39
+ :rows="3"
40
+ ref="commonOpinions"
41
+ @change="(val) => (value = val)"
42
+ :opinion="value"
43
+ :isBanInputOpinion="isBanInputOpinion"
44
+ :nodeFixedOpinionSelectList="nodeFixedOpinionSelectList"
45
+ />
46
+ </div>
47
+ <div
48
+ v-show="
49
+ (!endFlow || nodeInfos.length > 1) &&
50
+ newTypeCode != 'fenyue' &&
51
+ !shrink
52
+ "
53
+ class="es-info"
54
+ >
55
+ <el-form
56
+ ref="nextNode"
57
+ :model="isFlow ? nodeInfo : nextNode"
58
+ class="demo-dynamic"
59
+ label-width="120px"
60
+ >
61
+ <el-form-item
62
+ v-if="isFlow && nodeInfo.option.length > 0"
63
+ prop="nextNode"
64
+ label="选择流程"
65
+ :rules="[
66
+ { required: true, message: `请选择流程`, trigger: 'blur' }
67
+ ]"
68
+ >
69
+ <el-input
70
+ placeholder="请输入内容"
71
+ class="input-with-select select-process"
72
+ :class="{ 'hide-flow-char': isStartFlowChartView != 'true' }"
73
+ >
74
+ <el-select
75
+ slot="prepend"
76
+ v-model="nodeInfo.nextNode"
77
+ style="width: calc(100% + 40px)"
78
+ :placeholder="`请选择流程`"
79
+ @change="handleChange"
80
+ >
81
+ <el-option
82
+ v-for="items in nodeInfo.option"
83
+ :key="items.id"
84
+ :label="items.name"
85
+ :value="items.processDefId"
86
+ ></el-option>
87
+ </el-select>
88
+ <el-button
89
+ slot="append"
90
+ v-show="isStartFlowChartView == 'true'"
91
+ icon="el-icon-picture"
92
+ @click="
93
+ () => {
94
+ showFlowChart = true;
95
+ }
96
+ "
97
+ ></el-button>
98
+ </el-input>
99
+ </el-form-item>
100
+ <div v-else>
101
+ <!-- 加签开始 -->
102
+ <el-form-item
103
+ prop="isAddSign"
104
+ v-if="isCanAddSign"
105
+ label="是否加签"
106
+ :rules="[
107
+ { required: true, message: `请选择是否加签`, trigger: 'blur' }
108
+ ]"
109
+ >
110
+ <el-radio-group v-model="nextNode.isAddSign">
111
+ <el-radio label="1">是</el-radio>
112
+ <el-radio label="2">否</el-radio>
113
+ </el-radio-group>
114
+ </el-form-item>
115
+ <div v-show="nextNode.isAddSign === '1'">
116
+ <el-form-item
117
+ prop="addSignUserId"
118
+ label="增加本环节办理人"
119
+ :rules="[
120
+ { required: false, message: `请选择办理人`, trigger: 'blur' }
121
+ ]"
122
+ >
123
+ <SelectUser
124
+ :nextUser="nextNode.addSignUserId"
125
+ :multiple="true"
126
+ title="增加办理人"
127
+ @change="changeSelectUser($event, 'addSignUserId', true)"
128
+ />
129
+ </el-form-item>
130
+ <el-form-item
131
+ prop="addSignMode"
132
+ v-if="isCanPreAddSign"
133
+ label="加签模式"
134
+ :rules="[{ required: true, trigger: 'blur' }]"
135
+ >
136
+ <el-radio-group v-model="nextNode.addSignMode">
137
+ <el-radio label="preAddSign">前置加签</el-radio>
138
+ <el-radio label="postAddSign">后置加签</el-radio>
139
+ </el-radio-group>
140
+ </el-form-item>
141
+ </div>
142
+ <!-- 加签结束 -->
143
+ <!-- 减签开始 -->
144
+ <el-form-item
145
+ v-if="isCanRemoveSign"
146
+ prop="isRemoveSign"
147
+ label="是否减签"
148
+ :rules="[
149
+ { required: true, message: `请选择是否加签`, trigger: 'blur' }
150
+ ]"
151
+ >
152
+ <el-radio-group v-model="nextNode.isRemoveSign">
153
+ <el-radio label="1">是</el-radio>
154
+ <el-radio label="2">否</el-radio>
155
+ </el-radio-group>
156
+ </el-form-item>
157
+ <div v-show="nextNode.isRemoveSign === '1'">
158
+ <el-form-item
159
+ prop="removeSignUserId"
160
+ label="删除本环节办理人"
161
+ :rules="[
162
+ { required: false, message: `请选择办理人`, trigger: 'blur' }
163
+ ]"
164
+ >
165
+ <el-checkbox-group v-model="nextNode.removeSignUserId">
166
+ <el-checkbox
167
+ v-for="item of removeUsers"
168
+ :key="item.userId"
169
+ :label="item.userId"
170
+ >{{ item.username }}</el-checkbox
171
+ >
172
+ </el-checkbox-group>
173
+ </el-form-item>
174
+ </div>
175
+ <!-- 减签结束 -->
176
+ <div
177
+ v-if="
178
+ nextNode.isAddSign != '1' &&
179
+ nextNode.isRemoveSign != '1' &&
180
+ isSpecial
181
+ "
182
+ >
183
+ <el-form-item
184
+ prop="nextOperate"
185
+ label="下步操作"
186
+ v-if="isChooseNextNode == 1"
187
+ :rules="[
188
+ { required: true, message: `请选择下步操作`, trigger: 'blur' }
189
+ ]"
190
+ >
191
+ <el-select
192
+ v-model="nextNode.nextOperate"
193
+ :placeholder="`请选择下步操作`"
194
+ :disabled="operationList && operationList.length == 1"
195
+ @change="selecNext($event, true)"
196
+ >
197
+ <el-option
198
+ v-for="items in operationList"
199
+ :key="items.key"
200
+ :label="items.value"
201
+ :value="items.key"
202
+ ></el-option>
203
+ </el-select>
204
+ </el-form-item>
205
+ <div>
206
+ <el-form-item
207
+ v-if="!isReject && nodeInfos.length != 0 && isShowNode"
208
+ prop="nextNodeId"
209
+ label="下步节点"
210
+ :rules="[
211
+ {
212
+ required: true,
213
+ message: `请选择下步节点`,
214
+ trigger: 'blur'
215
+ }
216
+ ]"
217
+ >
218
+ <el-select
219
+ v-if="nextNodeCheckType == 'select'"
220
+ v-model="nextNode.nextNodeId"
221
+ :placeholder="`请选择下步节点`"
222
+ :disabled="nodeInfos && nodeInfos.length == 1"
223
+ @change="selecNext($event, false)"
224
+ >
225
+ <el-option
226
+ v-for="items in nodeInfos"
227
+ :key="items.id"
228
+ :label="items.nodeName"
229
+ :value="items.nodeId"
230
+ ></el-option>
231
+ </el-select>
232
+ <es-radio-group
233
+ v-else-if="nextNodeCheckType == 'radio'"
234
+ v-model="nextNode.nextNodeId"
235
+ :data="nodeInfos"
236
+ @change="selecNext(nextNode.nextNodeId, false)"
237
+ value-key="nodeId"
238
+ label-key="nodeName"
239
+ ></es-radio-group>
240
+ </el-form-item>
241
+ <el-form-item
242
+ v-if="countersignaturetypeCode != 0"
243
+ prop="handleMode"
244
+ label="处理方式"
245
+ >
246
+ <el-input
247
+ v-model="handleMode"
248
+ placeholder="请输入内容"
249
+ disabled
250
+ />
251
+ </el-form-item>
252
+ <el-form-item
253
+ v-if="isNextUser"
254
+ :prop="isShowNextUser ? 'nextUserId' : 'nextOrgId'"
255
+ :label="isShowNextUser ? '下步办理人' : '办理对象'"
256
+ >
257
+ <SelectUser
258
+ :nextUser="
259
+ isShowNextUser ? nextNode.nextUserId : nextNode.nextOrgId
260
+ "
261
+ :radioList="radioList"
262
+ :multiple="multiple"
263
+ :isCustomUser="!isShowNextUser ? 1 : isCustomUser"
264
+ :isCurrentNodeForbiddenChangeCandidate="
265
+ isCurrentNodeForbiddenChangeCandidate
266
+ "
267
+ :options="options"
268
+ :mix="multiple"
269
+ :presetEdit="presetEdit"
270
+ :selectUserList="selectUserList"
271
+ @change="
272
+ changeSelectUser(
273
+ $event,
274
+ isShowNextUser ? 'nextUserId' : 'nextOrgId',
275
+ true
276
+ )
277
+ "
278
+ :types="nextUserTypes"
279
+ :params="isShowNextUser ? params : {}"
280
+ :tabs="nextUserTabs"
281
+ />
282
+ </el-form-item>
283
+ <el-form-item
284
+ v-if="isHideCurrentOrg"
285
+ prop="nextCurrentOrgObj"
286
+ :label="currentOrgName ? currentOrgName : '本单位'"
287
+ >
288
+ <SelectUser
289
+ :nextUser="nextCurrentOrgObjSelect"
290
+ multiple
291
+ mix
292
+ :disableds="currentOrgDisabledObjId"
293
+ @change="disposeAppUnit($event, 'nextCurrentOrgObjSelect')"
294
+ :types="['department', 'employee']"
295
+ :params="{ filid: userModel.orgId }"
296
+ />
297
+ </el-form-item>
298
+ <el-form-item
299
+ v-if="isHideOtherOrg"
300
+ prop="nextOtherOrgObj"
301
+ :label="otherOrgName ? otherOrgName : '外单位'"
302
+ >
303
+ <SelectUser
304
+ :nextUser="nextOtherOrgObjSelect"
305
+ multiple
306
+ mix
307
+ :disableds="otherOrgDisabledObjId"
308
+ @change="disposeAppUnit($event, 'nextOtherOrgObjSelect')"
309
+ :types="['enterprise']"
310
+ :params="{ filid: 'all' }"
311
+ />
312
+ </el-form-item>
313
+ <el-form-item
314
+ v-if="isMainSubProcess && isNodeShowProcess"
315
+ prop="mainSubId"
316
+ label="主办"
317
+ >
318
+ <el-select
319
+ v-model="nextNode.mainSubId"
320
+ :placeholder="`请选择主办`"
321
+ >
322
+ <el-option
323
+ v-for="items in subProcessColumns"
324
+ :key="items.id"
325
+ :label="items.name"
326
+ :value="items.value"
327
+ ></el-option>
328
+ </el-select>
329
+ </el-form-item>
330
+ <TimeLimit
331
+ v-if="nodeType !== 0 && isLimitedTimeHandling === 1"
332
+ :newsList="newsList"
333
+ @change="(val) => (nextNode = { ...nextNode, ...val })"
334
+ />
335
+ <el-form-item
336
+ prop="nextReadUserId"
337
+ v-if="isTaskread == 1"
338
+ label="
339
+ 分阅用户
340
+ "
341
+ >
342
+ <SelectUser
343
+ :nextUser="nextNode.nextReadUserId"
344
+ :multiple="true"
345
+ :selectUserList="selectReadUserList"
346
+ :options="userOptions"
347
+ title="分阅用户"
348
+ :mix="true"
349
+ :types="types"
350
+ @change="changeSelectReadUser($event, 'nextReadUserId')"
351
+ :tabs="tabs"
352
+ />
353
+ </el-form-item>
354
+ <el-form-item
355
+ prop="presetReadUserId"
356
+ v-if="canPresetRead"
357
+ label="
358
+ 自动分阅
359
+ "
360
+ >
361
+ <SelectUser
362
+ :nextUser="nextNode.presetReadUserId"
363
+ :multiple="true"
364
+ :selectUserList="selectPresetUserList"
365
+ :options="presetOptions"
366
+ :radioList="presetReadUserId"
367
+ :presetEdit="1"
368
+ title="分阅用户"
369
+ :mix="true"
370
+ :types="types"
371
+ @change="changeSelectReadUser($event, 'presetReadUserId')"
372
+ :tabs="tabs"
373
+ />
374
+ </el-form-item>
375
+ <el-form-item
376
+ v-if="isHandleExplain == 1"
377
+ prop="handleExplain"
378
+ label="办理说明"
379
+ >
380
+ <el-input
381
+ placeholder="请输入办理说明"
382
+ v-model="nextNode.handleExplain"
383
+ />
384
+ </el-form-item>
385
+ </div>
386
+ </div>
387
+ </div>
388
+ <CustomPreset
389
+ v-if="isCustomPreset"
390
+ ref="customPreset"
391
+ @changeCustom="
392
+ (data) => {
393
+ presetList = data;
394
+ }
395
+ "
396
+ @changeActiveNames="(val) => (activeNames = val)"
397
+ @loadingEnd="customLoading('end')"
398
+ @loadingStart="customLoading('start')"
399
+ :nextNode="nextNode.nextNodeId"
400
+ :customPresetHintMessage="customPresetHintMessage"
401
+ :id="businessIds"
402
+ :processDefinitionId="nodeInfo.nextNode"
403
+ />
404
+ <Preset
405
+ v-if="isPreset"
406
+ @changePreset="
407
+ (data) => {
408
+ presetUserJson = data;
409
+ }
410
+ "
411
+ @loadingEnd="customLoading('end')"
412
+ @loadingStart="customLoading('start')"
413
+ :nodeId="nextNode.nextNodeId"
414
+ :businessId="businessIds"
415
+ :customPresetHintMessage="customPresetHintMessage"
416
+ :processDefinitionId="nodeInfo.nextNode"
417
+ :presetTaskNodeMap="presetTaskNodeMap"
418
+ :presetTaskNodeKeyStr="presetTaskNodeKeyStr"
419
+ />
420
+ </el-form>
421
+ <div v-if="!isFlow && isSpecial" style="padding: 5px; background: #fff">
422
+ <div class="news" @click="showNews = !showNews">
423
+ <span class="news-item">消息通知</span>
424
+ <span :class="showNews ? 'show' : 'sj'"></span>
425
+ </div>
426
+ <div v-show="showNews" style="transition: 1s">
427
+ <el-checkbox-group v-model="nextNode.notificationType">
428
+ <el-checkbox
429
+ v-for="item of newsList"
430
+ :key="item.cciValue"
431
+ :label="item.cciValue"
432
+ :disabled="
433
+ readOnlyNotificationType
434
+ ? readOnlyNotificationType.indexOf(item.cciValue) != -1
435
+ : false
436
+ "
437
+ >
438
+ {{ item.shortName }}
439
+ </el-checkbox>
440
+ </el-checkbox-group>
441
+ <!-- <div
442
+ v-show="showNews"
443
+ style="
444
+ border: 1px solid #ccc;
445
+ padding: 5px;
446
+ border-radius: 5px;
447
+ font-size: 13px;
448
+ "
449
+ >
450
+ {{ nextNode.notificationMsg }}
451
+ </div> -->
452
+ <es-input
453
+ style="
454
+ border-color: #ccc;
455
+ padding: 5px;
456
+ border-radius: 5px;
457
+ font-size: 13px;
458
+ "
459
+ v-show="showNews"
460
+ type="textarea"
461
+ v-model="nextNode.notificationMsg"
462
+ :readonly="notificationMessageReadOnly"
463
+ />
464
+ </div>
465
+ </div>
466
+ </div>
467
+ <div
468
+ class="es-flow-buttons"
469
+ v-if="newTypeCode != 'fenyue' && !shrink"
470
+ style="margin-top: 10px"
471
+ >
472
+ <div v-if="isSubmitButtonShowAgreeAndDisagree == 1">
473
+ <el-button
474
+ class="es-button-agree"
475
+ type="primary"
476
+ @click="subProcess('同意。')"
477
+ >同意</el-button
478
+ >
479
+ <el-button class="es-button-agree" @click="subProcess('不同意。')"
480
+ >不同意</el-button
481
+ >
482
+ <el-button class="es-button-agree-save" @click="saveInfo()"
483
+ >暂存</el-button
484
+ >
485
+ </div>
486
+ <div
487
+ class="es-user-defined"
488
+ v-if="
489
+ (nodeInfos.length > 0 ||
490
+ nodeInfo.option.length > 0 ||
491
+ operationList.length > 0) &&
492
+ btnList.length <= 2
493
+ "
494
+ >
495
+ <el-button
496
+ v-show="isSubmitButtonShowAgreeAndDisagree != 1"
497
+ v-for="item of hideBtn ? btnList.slice(0, 1) : btnList"
498
+ :key="item.name"
499
+ :type="item.type"
500
+ :style="btnStyle"
501
+ @click="item.event === 'sub' ? subProcess() : saveInfo(false, item)"
502
+ >
503
+ {{ item.text }}
504
+ </el-button>
505
+
506
+ <div
507
+ v-if="
508
+ btnList.length > 1 ||
509
+ (!isFlow && (rejectObj.fun || pointsReadingObj.fun || moreList))
510
+ "
511
+ placement="top"
512
+ :class="{ 'em-flow-more-btn': !hideBtn }"
513
+ trigger="click"
514
+ >
515
+ <div v-if="!isFlow && !hideBtn" class="es-footer-btn">
516
+ <el-button
517
+ v-if="rejectObj.fun"
518
+ @click="rejectBtn"
519
+ style="margin-right: 10px"
520
+ type="danger"
521
+ >
522
+ {{ rejectObj.value }}
523
+ </el-button>
524
+ <el-button
525
+ v-if="pointsReadingObj.fun"
526
+ class="es-flow-btn"
527
+ @click="taskReadBtn"
528
+ >分阅</el-button
529
+ >
530
+ <el-button
531
+ class="es-flow-btn"
532
+ v-for="item of moreList"
533
+ :key="item.key"
534
+ @click="goView(item)"
535
+ >
536
+ {{ item.value }}
537
+ </el-button>
538
+ </div>
539
+ <el-button-group
540
+ slot="reference"
541
+ style="margin: 0px 10px"
542
+ v-if="hideBtn"
543
+ >
544
+ <el-button
545
+ v-show="isSubmitButtonShowAgreeAndDisagree != 1"
546
+ v-for="item of btnList.slice(1)"
547
+ :key="item.name"
548
+ :type="item.type"
549
+ :style="btnStyle"
550
+ @click.stop="
551
+ item.event === 'sub' ? subProcess() : saveInfo(false, item)
552
+ "
553
+ >
554
+ {{ item.text }}
555
+ </el-button>
556
+ <el-dropdown
557
+ v-if="
558
+ !isFlow &&
559
+ (rejectObj.fun || pointsReadingObj.fun || moreList.length > 0)
560
+ "
561
+ trigger="click"
562
+ placement="top"
563
+ style="border-left: 1px solid #d9d9d9"
564
+ >
565
+ <el-button>...</el-button>
566
+ <el-dropdown-menu slot="dropdown">
567
+ <el-dropdown-item v-for="item of moreList" :key="item.key">
568
+ <div class="es-flow-btn" @click="goView(item)">
569
+ {{ item.value }}
570
+ </div>
571
+ </el-dropdown-item>
572
+ <el-dropdown-item v-if="pointsReadingObj.fun">
573
+ <div class="es-flow-btn" @click="taskReadBtn">分阅</div>
574
+ </el-dropdown-item>
575
+ <el-dropdown-item v-if="rejectObj.fun">
576
+ <div style="color: red" @click="rejectBtn">
577
+ {{ rejectObj.value }}
578
+ </div>
579
+ </el-dropdown-item>
580
+ </el-dropdown-menu>
581
+ </el-dropdown>
582
+ </el-button-group>
583
+ </div>
584
+ </div>
585
+ </div>
586
+ <div v-else-if="!shrink" class="es-fenyue-buttons">
587
+ <el-button
588
+ type="primary"
589
+ size="medium"
590
+ style="width: 100%; margin: 10px 0px"
591
+ @click="taskRead()"
592
+ >
593
+ 阅结
594
+ </el-button>
595
+ <el-button
596
+ class="es-flow-btn"
597
+ v-if="isCanFenyue == '1'"
598
+ size="medium"
599
+ style="margin-left: 0px"
600
+ @click="taskReadBtn"
601
+ >分阅</el-button
602
+ >
603
+ </div>
604
+ <!-- 弹窗内容 -->
605
+ <es-dialog
606
+ v-if="handleVisible"
607
+ append-to-body
608
+ height="auto"
609
+ class="flow-dialog"
610
+ ref="handleVisible"
611
+ :title="title"
612
+ :close-on-click-modal="false"
613
+ :visible.sync="handleVisible"
614
+ :closeParent="closeParent"
615
+ >
616
+ <ProcessForm
617
+ :id="businessIds"
618
+ :is-free-start-flow="useScene === 'multiInsMidwayWithSubmitScene'"
619
+ :copy-history="pendedHistoryHandle"
620
+ :process-definition-id="nodeInfo.nextNode"
621
+ :opinion="value"
622
+ :taskParams="taskParams"
623
+ @cancel="closeProcess($event, 'handleVisible', closeParent)"
624
+ />
625
+ </es-dialog>
626
+ <es-dialog
627
+ append-to-body
628
+ :close-on-click-modal="false"
629
+ title="流程图查看"
630
+ :visible.sync="showFlowChart"
631
+ v-if="showFlowChart"
632
+ >
633
+ <!-- <FlowChart :nodeId="nodeInfo.nextNode" v-if="showFlowChart" /> -->
634
+ <img
635
+ style="width: 100%"
636
+ :src="`${charUrl}/bpm/service/diagram/getpng.png?processDefinitionId=${nodeInfo.nextNode}`"
637
+ alt="加载失败"
638
+ />
639
+ </es-dialog>
640
+ <es-dialog
641
+ v-if="showReject"
642
+ append-to-body
643
+ class="flow-dialog"
644
+ height="400px"
645
+ title="驳回"
646
+ ref="showReject"
647
+ :close-on-click-modal="false"
648
+ :visible.sync="showReject"
649
+ >
650
+ <ProcessReject
651
+ :pending-id="pendingId"
652
+ :option="value"
653
+ :show-reject="showReject"
654
+ :news-info="nextNode.notificationMsg"
655
+ @cancel="closeProcess(true, 'showReject')"
656
+ />
657
+ </es-dialog>
658
+ <es-dialog
659
+ v-if="showTaskRead"
660
+ append-to-body
661
+ class="flow-dialog"
662
+ height="400px"
663
+ ref="showTaskRead"
664
+ :close-on-click-modal="false"
665
+ :title="taskReadType === 'transfer' ? '转办' : '分阅'"
666
+ :visible.sync="showTaskRead"
667
+ >
668
+ <StartTaskRead
669
+ :pending-id="pendingId"
670
+ :opinion="value"
671
+ :type="taskReadType"
672
+ :taskExamine="taskExamineInfo"
673
+ :news-info="nextNode.notificationMsg"
674
+ @cancel="closeProcess($event, 'showTaskRead')"
675
+ />
676
+ </es-dialog>
677
+ <es-dialog
678
+ v-if="showFileList"
679
+ append-to-body
680
+ title="意见附件"
681
+ class="flow-dialog"
682
+ :close-on-click-modal="false"
683
+ :visible.sync="showFileList"
684
+ >
685
+ <FileList
686
+ :ownId="pendingId"
687
+ :code="attachedCode"
688
+ @changeFileNum="(val) => (fileNum = val)"
689
+ />
690
+ </es-dialog>
691
+ <es-dialog
692
+ v-if="showSendMsg"
693
+ append-to-body
694
+ height="auto"
695
+ title="发送消息"
696
+ class="flow-dialog"
697
+ ref="showSendMsg"
698
+ :close-on-click-modal="false"
699
+ :visible.sync="showSendMsg"
700
+ >
701
+ <SendMsg
702
+ @cancel="closeProcess($event, 'showSendMsg')"
703
+ :pendingId="pendingId"
704
+ :newsList="newsList"
705
+ />
706
+ </es-dialog>
707
+ <es-dialog
708
+ v-if="showTaskUnionExamine"
709
+ append-to-body
710
+ height="auto"
711
+ class="flow-dialog"
712
+ ref="showTaskUnionExamine"
713
+ :close-on-click-modal="false"
714
+ :title="flowTitle"
715
+ :visible.sync="showTaskUnionExamine"
716
+ >
717
+ <TaskUnionExamine
718
+ @cancel="closeProcess($event, 'showTaskUnionExamine')"
719
+ :pendingId="pendingId"
720
+ :defaultOpinion="nodeDefaultSubmitOpinion"
721
+ :type="flowType"
722
+ :multiple="flowMultiple"
723
+ :disabled="flowDisabled"
724
+ />
725
+ </es-dialog>
726
+ <es-dialog
727
+ v-if="showFreeStartFlow"
728
+ append-to-body
729
+ height="auto"
730
+ class="flow-dialog"
731
+ ref="showFreeStartFlow"
732
+ :close-on-click-modal="false"
733
+ :title="flowTitle"
734
+ :visible.sync="showFreeStartFlow"
735
+ >
736
+ <es-flow
737
+ v-if="showFreeStartFlow"
738
+ isStartFlow
739
+ :businessId="freeStartFlowParams.businessId"
740
+ :flowTypeCode="freeStartFlowParams.flowTypeCode"
741
+ :defaultProcessKey="freeStartFlowParams.defaultProcessKey"
742
+ ></es-flow>
743
+ <!-- @success="handleSuccess"
744
+ @save="handleSave" -->
745
+ </es-dialog>
746
+ </div>
747
+ </div>
748
+ </template>
749
+
750
+ <script>
751
+ import CommonOpinions from './component/CommonOpinions.vue';
752
+ import ProcessForm from './processForm.vue';
753
+ import CustomPreset from './component/CustomPreset.vue';
754
+ import Preset from './component/Preset.vue';
755
+ import FileList from './component/FileList.vue';
756
+ import SendMsg from './component/SendMsg.vue';
757
+ import TimeLimit from './component/TimeLimit.vue';
758
+ import ProcessReject from './processReject.vue';
759
+ import StartTaskRead from './startTaskRead.vue';
760
+ import Reset from './reset.vue';
761
+ import TaskUnionExamine from './component/taskUnionExamine.vue';
762
+ import SelectUser from './selectUser.vue';
763
+ import {
764
+ findSysCodes,
765
+ getHandleInfoHtml,
766
+ getNodeInfo,
767
+ tempSave,
768
+ getProcessDefList,
769
+ pendedhistoryList,
770
+ endFlowHtml,
771
+ taskReadHtml,
772
+ findCodeValues,
773
+ toStartTaskReadIndex,
774
+ loginUserInfo,
775
+ getAdjunctFileInfos,
776
+ rejectAndEnd,
777
+ getFreeStartFlowParams,
778
+ isCanStartSubFlow,
779
+ taskHandleHtml
780
+ } from 'eoss-ui/src/config/api';
781
+ import util from 'eoss-ui/src/utils/util';
782
+ export default {
783
+ name: 'EsFreeStartFlow',
784
+ componentName: 'EsFreeStartFlow',
785
+ components: {
786
+ [ProcessForm.name]: ProcessForm,
787
+ [ProcessReject.name]: ProcessReject,
788
+ [StartTaskRead.name]: StartTaskRead,
789
+ [CustomPreset.name]: CustomPreset,
790
+ [CommonOpinions.name]: CommonOpinions,
791
+ [FileList.name]: FileList,
792
+ [TimeLimit.name]: TimeLimit,
793
+ [SendMsg.name]: SendMsg,
794
+ [SelectUser.name]: SelectUser,
795
+ [TaskUnionExamine.name]: TaskUnionExamine,
796
+ Preset,
797
+ Reset
798
+ },
799
+ props: {
800
+ isStartFlow: { type: Boolean, default: false },
801
+ startFlowBusinessId: { type: String, default: '' },
802
+ pendingId: { type: String, default: '' },
803
+ useScene: { type: String, default: '' },
804
+ pendedHistoryHandle: { type: String, default: '' },
805
+ nodeName: { type: String, default: '' },
806
+ typeCode: { type: String, default: '' },
807
+ flowTypeCode: { type: String, default: '' },
808
+ defaultProcessKey: { type: String, default: '' },
809
+ hideBtn: { type: Boolean, default: false },
810
+ btnList: {
811
+ type: Array,
812
+ default: () => [
813
+ { text: '提交', event: 'sub', type: 'primary' },
814
+ { text: '暂存', event: 'save' }
815
+ ]
816
+ },
817
+ subFun: {
818
+ type: Function,
819
+ default: (callBack) => {
820
+ callBack();
821
+ }
822
+ },
823
+ beforeSubmit: Function,
824
+ title: { type: String, default: '事务表单办理' },
825
+ closeParent: Boolean,
826
+ param: {
827
+ type: Object,
828
+ default: () => {}
829
+ },
830
+ width: {
831
+ type: String
832
+ },
833
+ resetAppId: { type: String },
834
+ userSelectRange: {
835
+ type: String
836
+ },
837
+ defaultProcessShowStrategy: { type: String, default: '' },
838
+ taskParams: {
839
+ type: Object,
840
+ default: () => {}
841
+ }
842
+ },
843
+ data() {
844
+ return {
845
+ styles: {},
846
+ userModel: {},
847
+ showFreeStartFlow: false, //自由发起流程弹窗
848
+ freeStartFlowParam: {}, //自由发起流程参数
849
+ otherOrgDisabledObjId: [],
850
+ currentOrgDisabledObjId: [],
851
+ nextNodeCheckType: 'select',
852
+ readOnlyNotificationType: '',
853
+ notificationMessageReadOnly: false,
854
+ isCanPreAddSign: false,
855
+ isStartFlowChartView: undefined,
856
+ nextOtherOrgObjSelect: [],
857
+ subProcessColumns: [],
858
+ nextCurrentOrgObjSelect: [],
859
+ loading: null, // 加载中
860
+ newTypeCode: '',
861
+ NodeName: '', // 当前节点值
862
+ radioList: [],
863
+ taskReadOpinionRequired: undefined,
864
+ value: '',
865
+ nodeFixedOpinionSelectList: [],
866
+ customPresetHintMessage: '', //流程预设标题
867
+ flowType: '',
868
+ flowDisabled: false,
869
+ activeNames: '',
870
+ isEndUserTask: true,
871
+ isForceDisplayDefaultOptionForPrefix: false,
872
+ selectUserList: [],
873
+ selectNextCurrentOrgObjList: [],
874
+ flowMultiple: true,
875
+ isCustomUser: 0,
876
+ shrink: false,
877
+ shrinkAbled: false,
878
+ taskExamineInfo: {},
879
+ presetUserJson: [],
880
+ presetList: [],
881
+ fileNum: 0, //附件数量
882
+ showFileList: false, //意见附件弹窗
883
+ attachedCode: '', //附件code码
884
+ isCustomPreset: false,
885
+ isBanInputOpinion: 0, //是否可以填写意见 0是 1否
886
+ isPreset: false,
887
+ businessIds: '',
888
+ presetTaskNodeKeyStr: '',
889
+ presetTaskNodeMap: {},
890
+ flowTitle: '',
891
+ endFlowInfo: {},
892
+ isCanFenyue: '0',
893
+ appId: '',
894
+ multiple: false, //是否多选(true/false)
895
+ readMultiple: true, //分阅用户是否多选(true/false)
896
+ selectReadUserList: [], //选中分阅用户
897
+ mixPresetList: [], //自动分阅混选
898
+ selectPresetUserList: [], //自动分阅选中用户
899
+ presetOptions: [], //自动分阅
900
+ isLimitedTimeHandling: 0, //是否支持发起子流程限时办理
901
+ nodeType: 0, //节点类型, (普通节点0,承办节点1,会签节点2,阅办节点3)
902
+ userOptions: [], //分阅用户
903
+ mixReadList: [], //分阅混选
904
+ mixCurrentOrg: [], //本单位混选
905
+ isTaskread: 0, //是否展示分阅用户
906
+ showSendMsg: false, //是否展示核稿通知页面
907
+ canPresetRead: false, //是否展示自动分阅
908
+ isHideCurrentOrg: false, //是否隐藏本单位(承办)
909
+ isHideOtherOrg: false, //是否隐藏外单位(承办)
910
+ isMainSubProcess: false, // 判断是否子-主流程
911
+ isNodeShowProcess: false, //是否展示主办
912
+ isNextUser: false,
913
+ isShowNode: false,
914
+ nextNodeList: [],
915
+ removeUsers: [],
916
+ options: [],
917
+ params: {
918
+ filid: 'all', //选择范围(my:本单位/ "" or all:全部)
919
+ selectmix: 'true1',
920
+ deptid: '' //指定部门(my:本部门)
921
+ },
922
+ showReject: false, // 是否展示驳回按钮
923
+ showTaskRead: false, // 是否展示分阅按钮
924
+ taskReadType: '', //分阅类型
925
+ isChooseNextNode: 1, //是否展示下步操作
926
+ isHandleExplain: 0, //是否展示办理说明
927
+ handleVisible: false,
928
+ defaultNextNode: '', //默认节点
929
+ showFlowChart: false, // 展示流程图弹窗
930
+ isReject: false, // 是否驳回
931
+ showTaskUnionExamine: false, //展示联合审核弹窗
932
+ charUrl: util.win.location.origin,
933
+ endFlow: false, // 是否结束流程
934
+ isCurrentNodeForbiddenChangeCandidate: 0, //是否禁止选择办理人
935
+ isSubmitButtonShowAgreeAndDisagree: 0, //是否展示同意和不同意按钮
936
+ pointsReadingObj: {
937
+ value: '分阅',
938
+ fun: undefined
939
+ }, // 分阅
940
+ rejectObj: {
941
+ value: '驳回',
942
+ fun: undefined
943
+ },
944
+ isLimitedTimeHandling: false, // 是否支持发起子流程限时办理
945
+ moreList: [], // 更多数组
946
+ newsList: [], // 通知类型
947
+ isSpecial: false,
948
+ taskId: '',
949
+ showNews: false, // 是否展示通知信息
950
+ userInfo: '', // 用户信息
951
+ objType: '',
952
+ nodeDefaultSubmitOpinion: '', // 默认保存意见
953
+ nodeDefaultRejectOpinion: '', // 默认驳回意见
954
+ choiceOrgId: '',
955
+ choiceDeptId: '',
956
+ pOrgId: '',
957
+ // userSelectionType: '',
958
+ isOpinionRequired: 0, // 常用意见是否必填
959
+ nextUserSelectList: [], // 下步选中办理人
960
+ processObj: {}, // 流程信息
961
+ pid: '123',
962
+ isCanRemoveSign: false, // 是否显示减签
963
+ isCanAddSign: false, // 是否显示加签
964
+ AddSignUserList: [], // 加签办理人数组
965
+ RemoveSignUserList: [], // 减签办理人数组
966
+ operationList: [], // 下一步操作
967
+ userList: [], // 下步办理人数组
968
+ handleMode: '',
969
+ countersignaturetypeCode: 0, //是否展示处理方式
970
+ presetEdit: 0,
971
+ isShowNextUser: true, //是否展示下步办理人
972
+ nextUserTypes: ['employee', 'persongroup'], //下步办理人类型配置
973
+ nextUserTabs: {}, //下步办理人权限配置
974
+ presetReadUserId: [],
975
+ nextNode: {
976
+ nextNodeId: '', // 下步节点
977
+ addSignMode: 'postAddSign',
978
+ isAddSign: '', // 是否加签
979
+ isRemoveSign: '', // 是否减签
980
+ nextOperate: '', // 下步操作
981
+ notificationMsg: '', // 通知信息
982
+ addSignUserId: [], // 加签办理人
983
+ removeSignUserId: [], // 减签办理人
984
+ nextUserId: [], // 下步办理人
985
+ nextOrgId: [], //办理对象
986
+ nextCurrentOrgObj: [],
987
+ nextCurrentOrgObjSerialId: [], //本单位用户
988
+ nextOtherOrgObj: [], //外单位
989
+ nextReadUserId: [], //分阅用户
990
+ presetReadUserId: [], //自动分阅
991
+ handleExplain: '', //办理意见
992
+ notificationType: [], // 通知方式
993
+ isLimitedTime: '2', // 是否限时办理
994
+ mainSubId: ''
995
+ },
996
+ nodeInfos: [], // 下步节点选择数组
997
+ nextFlowNode: '',
998
+ currentOrgName: '', //本单位名称
999
+ otherOrgName: '', //外单位名称
1000
+ needRetrialAuth: false, //是否二次鉴权
1001
+ nodeInfo: {
1002
+ nextNode: '',
1003
+ nextUser: '',
1004
+ option: []
1005
+ }
1006
+ };
1007
+ },
1008
+ created() {
1009
+ this.getUserInfo();
1010
+ },
1011
+ destroyed() {
1012
+ this.shrink = false;
1013
+ },
1014
+ mounted() {
1015
+ this.businessIds = this.startFlowBusinessId
1016
+ this.nextNode.nextNodeId = this.nextNodeId;
1017
+ this.getNodeType();
1018
+ !this.isFlow &&
1019
+ (this.newTypeCode = this.typeCode || this.$route.query.typecode);
1020
+ if (this.isFlow) {
1021
+ this.startFlowBusinessId && this.getProcess();
1022
+ } else if (this.newTypeCode == 'fenyue') {
1023
+ this.getTaskReadFlow();
1024
+ } else if (
1025
+ this.newTypeCode != 'reset' &&
1026
+ this.newTypeCode != 'continuation'
1027
+ ) {
1028
+ this.getHedInfo();
1029
+ }
1030
+ },
1031
+ watch: {
1032
+ width: {
1033
+ immediate: true,
1034
+ handler(val) {
1035
+ if (val) {
1036
+ this.styles = { width: parseInt(val, 10) + 'px' };
1037
+ }
1038
+ }
1039
+ },
1040
+ businessId(val) {
1041
+ if (val) {
1042
+ this.businessIds = val;
1043
+ if (this.isFlow) {
1044
+ this.getProcess();
1045
+ }
1046
+ }
1047
+ }
1048
+ },
1049
+ computed: {
1050
+ tabs() {
1051
+ return {
1052
+ employee: {
1053
+ param: {
1054
+ filid: this.userModel.orgId,
1055
+ name: '本单位用户'
1056
+ }
1057
+ },
1058
+ department: { param: { filid: this.userModel.orgId } }
1059
+ };
1060
+ },
1061
+ currentTabs() {
1062
+ return {
1063
+ department: {
1064
+ param: { filid: this.userModel.orgId }
1065
+ },
1066
+ employee: {
1067
+ param: { filid: this.userModel.orgId }
1068
+ }
1069
+ };
1070
+ }, //
1071
+ // 是否开始流程
1072
+ isFlow() {
1073
+ return this.isStartFlow;
1074
+ },
1075
+ types() {
1076
+ if (this.isCdjxjTaskHandle == 'true') {
1077
+ return ['employee', 'enterprise', 'department'];
1078
+ } else {
1079
+ return ['employee', 'enterprise', 'department', 'persongroup'];
1080
+ }
1081
+ },
1082
+ btnStyle() {
1083
+ if (this.btnList.length > 1) {
1084
+ return {};
1085
+ } else {
1086
+ return { width: '100%' };
1087
+ }
1088
+ }
1089
+ },
1090
+ methods: {
1091
+ handleChange(val) {
1092
+ this.$parent.$emit('flowChange', val);
1093
+ },
1094
+ getsubProcessColumns() {
1095
+ if (!this.isMainSubProcess || !this.isNodeShowProcess) return [];
1096
+ let data = [];
1097
+ let obj = { name: '[部门员工]-' };
1098
+ if (this.nextCurrentOrgObjSelect.length > 0) {
1099
+ this.nextCurrentOrgObjSelect.map((x) => {
1100
+ if (x.stype == 'employee') {
1101
+ obj.name = !obj.value
1102
+ ? obj.name + x.showname
1103
+ : obj.name + ',' + x.showname;
1104
+ obj.value = obj.value
1105
+ ? obj.value + ',' + x.showid
1106
+ : 'employee-' + x.showid;
1107
+ } else {
1108
+ data.push({
1109
+ name: '[部门]' + x.showname,
1110
+ value: 'department-' + x.showid
1111
+ });
1112
+ }
1113
+ });
1114
+ }
1115
+ obj.value && data.push(obj);
1116
+ if (this.nextOtherOrgObjSelect.length > 0) {
1117
+ this.nextOtherOrgObjSelect.map((x) => {
1118
+ data.push({
1119
+ name: '[企业]' + x.showname,
1120
+ value: 'enterprise-' + x.showid
1121
+ });
1122
+ });
1123
+ }
1124
+ this.subProcessColumns = data;
1125
+ // return data;
1126
+ },
1127
+ // 分阅是否多选
1128
+ isReadMultiple(nextReadUserSelectType) {
1129
+ if (nextReadUserSelectType == 1) {
1130
+ this.readMultiple = false;
1131
+ } else if (nextReadUserSelectType == 2) {
1132
+ this.readMultiple = true;
1133
+ } else if (nextReadUserSelectType == 3) {
1134
+ this.readMultiple = false;
1135
+ } else if (nextReadUserSelectType == 4) {
1136
+ this.readMultiple = true;
1137
+ } else if (nextReadUserSelectType == 5) {
1138
+ this.readMultiple = false;
1139
+ } else if (nextReadUserSelectType == 6) {
1140
+ this.readMultiple = true;
1141
+ }
1142
+ },
1143
+ // 监听分阅/自动分阅用户选中
1144
+ changeSelectReadUser(val, type) {
1145
+ const { nextUser, mixList } = val;
1146
+ this.nextNode[type] = nextUser;
1147
+ if (type === 'presetReadUserId') {
1148
+ this.mixPresetList = mixList;
1149
+ } else {
1150
+ this.mixReadList = mixList;
1151
+ }
1152
+ },
1153
+ //获取附件
1154
+ getFile(ownId, code) {
1155
+ let params = {
1156
+ url: getAdjunctFileInfos,
1157
+ params: { ownId, code }
1158
+ };
1159
+ util
1160
+ .ajax(params)
1161
+ .then((res) => {
1162
+ const { rCode, results, msg } = res;
1163
+ if (rCode == 0) {
1164
+ results && (this.fileNum = results.length);
1165
+ } else {
1166
+ this.$message.error(msg || '系统错误,请联系管理员!');
1167
+ }
1168
+ })
1169
+ .catch((err) => {
1170
+ if (err.message && err.message !== 'canceled') {
1171
+ this.$message.error(err.message);
1172
+ }
1173
+ });
1174
+ },
1175
+ //判断展示下步办理人/办理对象
1176
+ getIsShowNextUser(val) {
1177
+ if (
1178
+ val == 7 ||
1179
+ val == 8 ||
1180
+ val == 9 ||
1181
+ val == 10 ||
1182
+ val == 11 ||
1183
+ val == 12
1184
+ ) {
1185
+ this.isShowNextUser = false;
1186
+ //设置办理角色
1187
+ // $("#orgRoleCode").val(handleRoleId);
1188
+ if (val == 7 || val == 8) {
1189
+ this.nextUserTypes = ['department'];
1190
+ this.nextUserTabs = {
1191
+ department: { param: { filid: this.userModel.orgId } }
1192
+ };
1193
+ this.multiple = true;
1194
+ } else if (val == 9 || val == 10) {
1195
+ this.nextUserTypes = ['enterprise'];
1196
+ this.nextUserTabs = { enterprise: { param: { filid: 'other' } } };
1197
+ this.multiple = true;
1198
+ } else if (val == 11 || val == 12) {
1199
+ this.nextUserTypes = ['department', 'enterprise'];
1200
+ this.nextUserTabs = {
1201
+ enterprise: { param: { filid: 'other' } },
1202
+ department: { param: { filid: this.userModel.orgId } }
1203
+ };
1204
+ this.multiple = true;
1205
+ }
1206
+ if (val == 7 || val == 9 || val == 11) {
1207
+ this.multiple = false;
1208
+ }
1209
+ }
1210
+ },
1211
+ setShrink() {
1212
+ this.shrink = !this.shrink;
1213
+ this.styles = this.shrink
1214
+ ? { width: 0 }
1215
+ : { width: this.width ? parseInt(this.width, 10) + 'px' : '' };
1216
+ this.$emit('shrink', this.shrink);
1217
+ },
1218
+ customLoading(type) {
1219
+ if (type != 'end') {
1220
+ this.loading = util.loading(this.$loading, '加载中...');
1221
+ } else {
1222
+ this.loading.close();
1223
+ }
1224
+ },
1225
+ taskRead() {
1226
+ if (this.taskReadOpinionRequired == 'true' && !this.value) {
1227
+ if (!this.$refs.commonOpinions.validate()) return;
1228
+ }
1229
+ this.$confirm('确认提交?', '提示', {
1230
+ confirmButtonText: '确定',
1231
+ cancelButtonText: '取消',
1232
+ type: 'warning'
1233
+ })
1234
+ .then(() => {
1235
+ this.loading = util.loading(this.$loading, '加载中...');
1236
+ const { businessId, appId, processDefinitionId, pendingId } =
1237
+ this.taskExamineInfo;
1238
+ let params = {
1239
+ businessId,
1240
+ appId,
1241
+ processDefinitionId,
1242
+ pendingId,
1243
+ opinion: this.value,
1244
+ taskAction: 'complete'
1245
+ };
1246
+ util
1247
+ .ajax({
1248
+ url: taskReadHtml,
1249
+ params: { taskAction: 'complete' },
1250
+ headers: {
1251
+ Accept: 'application/json,text/plain'
1252
+ },
1253
+ method: 'post',
1254
+ data: params
1255
+ })
1256
+ .then((res) => {
1257
+ const { status, message } = res;
1258
+ this.loading.close();
1259
+ if (status === 'success') {
1260
+ this.$message.success('提交成功');
1261
+ this.$emit('success');
1262
+ } else {
1263
+ this.$message.error(message || '系统错误,请联系管理员!');
1264
+ this.$emit('error');
1265
+ }
1266
+ })
1267
+ .catch((err) => {
1268
+ this.loading.close();
1269
+ if (err.message && err.message !== 'canceled') {
1270
+ this.$message.error(err.message);
1271
+ }
1272
+ });
1273
+ })
1274
+ .catch(() => {});
1275
+ },
1276
+ getTaskReadFlow() {
1277
+ this.loading = util.loading(this.$loading, '加载中...');
1278
+ util
1279
+ .ajax({
1280
+ url: toStartTaskReadIndex,
1281
+ params: { pendingId: this.pendingId }
1282
+ })
1283
+ .then((res) => {
1284
+ const {
1285
+ status,
1286
+ message,
1287
+ data: { isCanFenyue, taskExamine, taskReadOpinionRequired }
1288
+ } = res;
1289
+ if (status === 'success') {
1290
+ this.taskExamineInfo = taskExamine;
1291
+ this.taskReadOpinionRequired = taskReadOpinionRequired;
1292
+ this.isCanFenyue = isCanFenyue;
1293
+ if (this.nodeName) {
1294
+ this.NodeName = this.nodeName;
1295
+ }
1296
+ this.getNodeType();
1297
+ } else {
1298
+ this.$message.error(message || '系统错误,请联系管理员!');
1299
+ }
1300
+ this.loading.close();
1301
+ })
1302
+ .catch((err) => {
1303
+ this.loading.close();
1304
+ if (err.message && err.message !== 'canceled') {
1305
+ this.$message.error(err.message);
1306
+ }
1307
+ });
1308
+ },
1309
+ getUserInfo() {
1310
+ let mainConfig = util.getStorage('mainConfig');
1311
+ if (mainConfig) {
1312
+ this.userModel = JSON.parse(mainConfig).userModel;
1313
+ } else {
1314
+ util
1315
+ .ajax({ url: loginUserInfo })
1316
+ .then((res) => {
1317
+ const { status, data } = res;
1318
+ if (status == 'success') {
1319
+ this.userModel = data;
1320
+ } else {
1321
+ let msg = res.msg || '系统错误,请联系管理员!';
1322
+ this.$message.error(msg);
1323
+ }
1324
+ })
1325
+ .catch((err) => {
1326
+ if (err.message && err.message !== 'canceled') {
1327
+ this.$message.error(err.message);
1328
+ }
1329
+ });
1330
+ }
1331
+ },
1332
+ changeSelectUser(val, type, isNextNode) {
1333
+ // const { nextUser,mixList } = val;
1334
+ const { nextUser, mixList } = val;
1335
+ if (isNextNode) {
1336
+ this.nextNode[type] = nextUser;
1337
+ if (type == 'nextCurrentOrgObjSerialId') {
1338
+ this.mixCurrentOrg = mixList;
1339
+ }
1340
+ } else {
1341
+ this[type] = nextUser;
1342
+ }
1343
+ },
1344
+ getNodeType() {
1345
+ util
1346
+ .ajax({
1347
+ url: findCodeValues,
1348
+ params: {
1349
+ ccCode: 'notification_type',
1350
+ userId: util.getStorage('userId')
1351
+ }
1352
+ })
1353
+ .then((res) => {
1354
+ const { status, data } = res;
1355
+ if (status === 'success') {
1356
+ this.newsList = data;
1357
+ }
1358
+ })
1359
+ .catch((err) => {
1360
+ if (err.message && err.message !== 'canceled') {
1361
+ this.$message.error(err.message);
1362
+ }
1363
+ });
1364
+ },
1365
+ /**
1366
+ * saveInfo
1367
+ * @desc:暂存
1368
+ * @author liufan
1369
+ * @date 2022年9月9日
1370
+ **/
1371
+ saveInfo(type, btn) {
1372
+ if (this.isFlow) {
1373
+ if (!type) {
1374
+ if (btn && btn.before) {
1375
+ btn
1376
+ .before(
1377
+ Object.prototype.hasOwnProperty.call(btn, 'code') ? btn.code : 1
1378
+ )
1379
+ .then((next) => {
1380
+ this.$emit('save', this.businessIds);
1381
+ })
1382
+ .catch((e) => {});
1383
+ } else if (this.beforeSubmit != undefined) {
1384
+ this.beforeSubmit(
1385
+ btn && Object.prototype.hasOwnProperty.call(btn, 'code')
1386
+ ? btn.code
1387
+ : 1
1388
+ )
1389
+ .then((next) => {
1390
+ this.$emit('save', this.businessIds);
1391
+ })
1392
+ .catch((e) => {});
1393
+ } else {
1394
+ this.$emit('save', this.businessIds);
1395
+ }
1396
+ }
1397
+ } else {
1398
+ if (btn && btn.before && !type) {
1399
+ btn
1400
+ .before(
1401
+ Object.prototype.hasOwnProperty.call(btn, 'code') ? btn.code : 2
1402
+ )
1403
+ .then((next) => {
1404
+ this.saveFlowInfo();
1405
+ })
1406
+ .catch((e) => {});
1407
+ } else if (this.beforeSubmit == undefined && !type) {
1408
+ this.subFun(this.saveFlowInfo);
1409
+ } else if (!type && this.beforeSubmit != undefined) {
1410
+ this.beforeSubmit(
1411
+ btn && Object.prototype.hasOwnProperty.call(btn, 'code')
1412
+ ? btn.code
1413
+ : 2
1414
+ )
1415
+ .then((next) => {
1416
+ this.saveFlowInfo();
1417
+ })
1418
+ .catch((e) => {});
1419
+ } else {
1420
+ this.saveFlowInfo(type);
1421
+ }
1422
+ }
1423
+ },
1424
+ saveFlowInfo(isSave) {
1425
+ let params = {
1426
+ opinion: this.value,
1427
+ pendingId: this.pendingId
1428
+ };
1429
+ this.loading = util.loading(this.$loading, '保存中...');
1430
+ util
1431
+ .ajax({ url: tempSave, params })
1432
+ .then((res) => {
1433
+ const { status, message } = res;
1434
+ if (!isSave) this.loading.close();
1435
+ if (status == 'success') {
1436
+ // this.$message.success('暂存成功');
1437
+ !isSave && this.$emit('save', this.businessIds);
1438
+ } else {
1439
+ this.$message.error(message || '系统错误,请联系管理员!');
1440
+ }
1441
+ })
1442
+ .catch((err) => {
1443
+ if (!isSave) this.loading.close();
1444
+ if (err.message && err.message !== 'canceled') {
1445
+ this.$message.error(err.message);
1446
+ }
1447
+ });
1448
+ },
1449
+ /**
1450
+ * rejectBtn
1451
+ * @desc:点击驳回
1452
+ * @author liufan
1453
+ * @date 2022年5月25日
1454
+ **/
1455
+ rejectBtn() {
1456
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
1457
+ if (!this.value) {
1458
+ if (!this.$refs.commonOpinions.validate()) return;
1459
+ }
1460
+ if (this.beforeSubmit != undefined) {
1461
+ this.beforeSubmit(0)
1462
+ .then((next) => {
1463
+ this.showReject = true;
1464
+ })
1465
+ .catch((e) => {});
1466
+ } else {
1467
+ this.showReject = true;
1468
+ }
1469
+ },
1470
+ /**
1471
+ * taskReadBtn
1472
+ * @desc:点击分阅
1473
+ * @author liufan
1474
+ * @date 2022年5月25日
1475
+ **/
1476
+ taskReadBtn() {
1477
+ // return this.$message.warning('暂未开放!敬请期待');
1478
+ if (this.beforeSubmit != undefined) {
1479
+ this.beforeSubmit()
1480
+ .then((next) => {
1481
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
1482
+ this.taskReadType = 'create';
1483
+ this.showTaskRead = true;
1484
+ })
1485
+ .catch((e) => {});
1486
+ } else {
1487
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
1488
+ this.taskReadType = 'create';
1489
+ this.showTaskRead = true;
1490
+ }
1491
+ },
1492
+ /**
1493
+ * getFind
1494
+ * @desc:获取通知方式
1495
+ * @author liufan
1496
+ * @date 2022年5月25日
1497
+ **/
1498
+ getFind() {
1499
+ util
1500
+ .ajax({
1501
+ url: findSysCodes
1502
+ })
1503
+ .then((res) => {
1504
+ const { status, message } = res;
1505
+ if (status === 'success') {
1506
+ this.nextNode.notificationType = message.split(',');
1507
+ let arr = [];
1508
+ this.newsList.map((item) => {
1509
+ this.nextNode.notificationType.map((x) => {
1510
+ if (x == item.cciValue) {
1511
+ arr.push(x);
1512
+ }
1513
+ });
1514
+ });
1515
+ this.nextNode.notificationType = arr;
1516
+ }
1517
+ })
1518
+ .catch((err) => {
1519
+ if (err.message && err.message !== 'canceled') {
1520
+ this.$message.error(err.message);
1521
+ }
1522
+ });
1523
+ },
1524
+ getFreeStartParams() {
1525
+ const { businessId, processDefinitionId, nodeId } = this.endFlowInfo;
1526
+ let param = {
1527
+ url: getFreeStartFlowParams,
1528
+ params: {
1529
+ businessId,
1530
+ processDefinitionId,
1531
+ nodeId
1532
+ }
1533
+ };
1534
+ util.ajax(param).then((res) => {
1535
+ if (res.rCode == 0 || res.status == 'success') {
1536
+ this.freeStartFlowParams = res.results;
1537
+ this.showFreeStartFlow = true;
1538
+ } else {
1539
+ this.$message.error(res.message || '系统错误,请联系管理员!');
1540
+ }
1541
+ });
1542
+ },
1543
+ /**
1544
+ * endFlows
1545
+ * @desc:直接办结
1546
+ * @author liufan
1547
+ * @param {Object} res 直接办结数据
1548
+ * @date 2022年5月25日
1549
+ **/
1550
+ endFlows(res) {
1551
+ if (this.beforeSubmit != undefined) {
1552
+ this.beforeSubmit()
1553
+ .then((next) => {
1554
+ this.saveEndFlows(res);
1555
+ })
1556
+ .catch((e) => {});
1557
+ } else {
1558
+ this.saveEndFlows(res);
1559
+ }
1560
+ },
1561
+ saveEndFlows(res) {
1562
+ this.$confirm('确认' + res.value + '?')
1563
+ .then(() => {
1564
+ let params = {
1565
+ url: endFlowHtml,
1566
+ headers: { Accept: 'application/json,text/plain' },
1567
+ method: 'post',
1568
+ data: {
1569
+ ...this.endFlowInfo,
1570
+ ...this.nextNode,
1571
+ opinion: this.value,
1572
+ userId: util.getStorage('userId'),
1573
+ nextUserId: this.multiple
1574
+ ? this.nextNode.nextUserId.join(',')
1575
+ : this.nextNode.nextUserId,
1576
+ addSignUserId: this.nextNode.addSignUserId.join(','),
1577
+ customPresetUserJson: JSON.stringify(this.presetList),
1578
+ presetUserJson: JSON.stringify(this.presetUserJson),
1579
+ removeSignUserId: this.nextNode.removeSignUserId.join(','),
1580
+ notificationType: this.nextNode.notificationType.join(',')
1581
+ }
1582
+ };
1583
+ this.loading = util.loading(this.$loading, '加载中...');
1584
+ util
1585
+ .ajax(params)
1586
+ .then((res) => {
1587
+ const { status, message } = res;
1588
+ this.loading.close();
1589
+ if (status === 'success') {
1590
+ this.$message.success('提交成功');
1591
+ this.$emit('success');
1592
+ } else {
1593
+ this.$message.error(message || '系统错误,请联系管理员!');
1594
+ this.$emit('error');
1595
+ }
1596
+ })
1597
+ .catch((err) => {
1598
+ this.loading.close();
1599
+ if (err.message && err.message !== 'canceled') {
1600
+ this.$message.error(err.message);
1601
+ }
1602
+ });
1603
+ })
1604
+ .catch((e) => {});
1605
+ },
1606
+ /**
1607
+ * goView
1608
+ * @desc:更多流程按钮操作
1609
+ * @author liufan
1610
+ * @param {Object} res 当前点击操作按钮数据
1611
+ * @date 2022年5月25日
1612
+ **/
1613
+ goView(res) {
1614
+ // 驳回并办结:rejectAndEndHtml
1615
+ // 获取转办页面:toTaskTransferHtml
1616
+ // 转办:taskTransferHtml
1617
+ // 获取分阅页面信息:toStartTaskReadHtml
1618
+ // 分阅:taskReadHtml
1619
+ // 获取驳回页面信息:toTaskRejectHtml(注释有误:appId改为pendingId)
1620
+ // 驳回:taskRejectHtml
1621
+ // 直接办结:endFlowHtml
1622
+ // 自由发起子流程:toFreeStartFlow
1623
+ if (res.fun === 'toStartTaskRead()') {
1624
+ // 分阅
1625
+ this.taskReadBtn();
1626
+ } else if (res.fun === 'reject()') {
1627
+ // 驳回
1628
+ this.rejectBtn();
1629
+ } else if (res.fun === 'endFlow()') {
1630
+ // 直接办结
1631
+ this.endFlows(res);
1632
+ } else if (res.fun === 'rejectAndEnd()') {
1633
+ // 驳回并办结
1634
+ this.rejectAndEnd(res);
1635
+ } else if (res.fun === 'toTransfer()') {
1636
+ // 转办
1637
+ this.toTransfer(res);
1638
+ } else if (res.fun === 'toTaskReadAndEnd()') {
1639
+ this.toTaskReadAndEnd(res);
1640
+ } else if (res.fun === 'toSendMsg()') {
1641
+ // 核稿通知
1642
+ this.toSendMsg(res);
1643
+ } else if (res.fun === 'toStartDraf()') {
1644
+ //稿件递送
1645
+ this.flowType = 'startDraf';
1646
+ this.flowMultiple = false;
1647
+ this.flowDisabled = false;
1648
+ this.flowTitle = res.value;
1649
+ this.toStartDraf(res);
1650
+ } else if (res.fun === 'toTakeAdvice()') {
1651
+ //征求意见
1652
+ this.flowType = 'takeAdvice';
1653
+ this.flowMultiple = true;
1654
+ this.flowDisabled = false;
1655
+ this.flowTitle = res.value;
1656
+
1657
+ this.toTakeAdvice(res);
1658
+ } else if (res.fun === 'toUnionExamine()') {
1659
+ //联合审核
1660
+ this.flowType = 'unionExamine';
1661
+ this.flowTitle = res.value;
1662
+ this.flowDisabled = false;
1663
+ this.flowMultiple = true;
1664
+ this.toStartDraf();
1665
+ } else if (res.fun === 'toTaskReview()') {
1666
+ // 复核
1667
+ this.flowType = 'taskReview';
1668
+ this.flowDisabled = true;
1669
+ this.flowTitle = res.value;
1670
+ this.toStartDraf(res);
1671
+ } else if (res.fun === 'toUnionSeal()') {
1672
+ // 联合用印
1673
+ this.flowType = 'unionSeal';
1674
+ this.flowDisabled = true;
1675
+ this.flowTitle = res.value;
1676
+ this.toStartDraf(res);
1677
+ } else if (res.fun == 'toTwoOfficesDispatch()') {
1678
+ // 报送两办
1679
+ this.flowType = 'twoOfficesDispatch';
1680
+ this.flowDisabled = true;
1681
+ this.flowTitle = res.value;
1682
+ this.toStartDraf(res);
1683
+ } else if (res.fun == 'toFreeStartFlow()') {
1684
+ this.getFreeStartParams();
1685
+ // 报送两办
1686
+ // this.flowType = 'twoOfficesDispatch';
1687
+ // this.flowDisabled = true;
1688
+ // this.flowTitle = res.value;
1689
+ // this.toStartDraf(res);
1690
+ } else {
1691
+ this.$message.warning('暂未开放,敬请期待!');
1692
+ }
1693
+ // isCanStartSubFlow
1694
+ },
1695
+ /**
1696
+ * toTakeAdvice
1697
+ * @desc:征求意见
1698
+ * @author liufan
1699
+ * @date 2022年9月29日
1700
+ **/
1701
+ toTakeAdvice(res) {
1702
+ if (this.beforeSubmit != undefined) {
1703
+ this.beforeSubmit()
1704
+ .then((next) => {
1705
+ this.saveToTakeAdvice(res);
1706
+ })
1707
+ .catch((e) => {});
1708
+ } else {
1709
+ this.saveToTakeAdvice(res);
1710
+ }
1711
+ // return this.$message.warning('暂未开放!敬请期待');
1712
+ },
1713
+ saveToTakeAdvice(res) {
1714
+ let params = {
1715
+ url: isCanStartSubFlow,
1716
+ data: {
1717
+ appId: this.taskExamineInfo.appId,
1718
+ inevitableNode: res.inevitableNode
1719
+ },
1720
+ method: 'post',
1721
+ headers: { Accept: 'application/json,text/plain' }
1722
+ };
1723
+ this.loading = util.loading(this.$loading, '加载中...');
1724
+ util
1725
+ .ajax(params)
1726
+ .then((res) => {
1727
+ const { message } = res;
1728
+ this.loading.close();
1729
+ if (message == 'success') {
1730
+ this.showTaskUnionExamine = true;
1731
+ } else {
1732
+ this.$message.error(message || '系统错误,请联系管理员!');
1733
+ }
1734
+ })
1735
+ .catch((err) => {
1736
+ this.loading.close();
1737
+ if (err.message && err.message !== 'canceled') {
1738
+ this.$message.error(err.message);
1739
+ }
1740
+ });
1741
+ },
1742
+ /**
1743
+ * toStartDraf
1744
+ * @desc: 稿件递送、联合审核、复核
1745
+ * @author liufan
1746
+ * @date 2022年9月29日
1747
+ **/
1748
+ toStartDraf(res) {
1749
+ if (this.beforeSubmit != undefined) {
1750
+ this.beforeSubmit()
1751
+ .then((next) => {
1752
+ this.showTaskUnionExamine = true;
1753
+ })
1754
+ .catch((e) => {});
1755
+ } else {
1756
+ this.showTaskUnionExamine = true;
1757
+ }
1758
+ },
1759
+ /**
1760
+ * toSendMsg
1761
+ * @desc:核稿通知
1762
+ * @author liufan
1763
+ * @date 2022年9月29日
1764
+ **/
1765
+ toSendMsg(res) {
1766
+ if (this.beforeSubmit != undefined) {
1767
+ this.beforeSubmit()
1768
+ .then((next) => {
1769
+ this.showSendMsg = true;
1770
+ })
1771
+ .catch((e) => {});
1772
+ } else {
1773
+ this.showSendMsg = true;
1774
+ }
1775
+ },
1776
+ /**
1777
+ * toTaskReadAndEnd
1778
+ * @desc:分阅并办结
1779
+ * @author liufan
1780
+ * @date 2022年9月29日
1781
+ **/
1782
+ toTaskReadAndEnd(res) {
1783
+ if (this.beforeSubmit != undefined) {
1784
+ this.beforeSubmit()
1785
+ .then((next) => {
1786
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
1787
+ this.taskReadType = 'taskReadAndEnd';
1788
+ this.showTaskRead = true;
1789
+ })
1790
+ .catch((e) => {});
1791
+ } else {
1792
+ if (this.value === '') this.value = this.nodeDefaultRejectOpinion;
1793
+ this.taskReadType = 'taskReadAndEnd';
1794
+ this.showTaskRead = true;
1795
+ }
1796
+ },
1797
+ /**
1798
+ * rejectAndEnd
1799
+ * @desc:驳回并办结
1800
+ * @author liufan
1801
+ * @date 2022年9月29日
1802
+ **/
1803
+ rejectAndEnd(res) {
1804
+ if (this.isOpinionRequired == 1 && (this.value == '' || !this.value)) {
1805
+ if (!this.$refs.commonOpinions.validate()) return;
1806
+ }
1807
+ if (this.beforeSubmit != undefined) {
1808
+ this.beforeSubmit()
1809
+ .then((next) => {
1810
+ this.saveRejectAndEnd(res);
1811
+ })
1812
+ .catch((e) => {});
1813
+ } else {
1814
+ this.saveRejectAndEnd(res);
1815
+ }
1816
+ },
1817
+ saveRejectAndEnd(res) {
1818
+ this.$confirm('确认' + res.value + '?')
1819
+ .then(() => {
1820
+ // return this.$message.warning('请填写意见');
1821
+ let params = {
1822
+ url: rejectAndEnd,
1823
+ headers: { Accept: 'application/json,text/plain' },
1824
+ method: 'post',
1825
+ data: {
1826
+ opinion: this.value,
1827
+ pendingId: this.pendingId,
1828
+ isSinglePage: false
1829
+ }
1830
+ };
1831
+ this.loading = util.loading(this.$loading, '加载中...');
1832
+ util
1833
+ .ajax(params)
1834
+ .then((res) => {
1835
+ const { status, message } = res;
1836
+ this.loading.close();
1837
+ if (status === 'success') {
1838
+ this.$message.success('提交成功');
1839
+ this.$emit('success');
1840
+ } else {
1841
+ this.$message.error(message || '系统错误,请联系管理员!');
1842
+ this.$emit('error');
1843
+ }
1844
+ })
1845
+ .catch((err) => {
1846
+ this.loading.close();
1847
+ if (err.message && err.message !== 'canceled') {
1848
+ this.$message.error(err.message);
1849
+ }
1850
+ });
1851
+ })
1852
+ .catch(() => {
1853
+ // on cancel
1854
+ });
1855
+ },
1856
+ /**
1857
+ * toTransfer
1858
+ * @desc:转办
1859
+ * @author liufan
1860
+ * @date 2022年9月29日
1861
+ **/
1862
+ toTransfer(res) {
1863
+ if (this.beforeSubmit != undefined) {
1864
+ this.beforeSubmit(0)
1865
+ .then((next) => {
1866
+ this.taskReadType = 'transfer';
1867
+ this.showTaskRead = true;
1868
+ })
1869
+ .catch((e) => {});
1870
+ } else {
1871
+ this.taskReadType = 'transfer';
1872
+ this.showTaskRead = true;
1873
+ }
1874
+ },
1875
+ /**
1876
+ * getNodeInfo
1877
+ * @desc:获取节点信息
1878
+ * @author liufan
1879
+ * @date 2022年5月25日
1880
+ **/
1881
+ getNodeInfo() {
1882
+ let params = {
1883
+ processDefinitionId: this.nodeInfo.nextNode,
1884
+ nextNodeId: this.nextNode.nextNodeId,
1885
+ taskId: this.taskId,
1886
+ userId: util.getStorage('userId'),
1887
+ pendingId: this.pendingId,
1888
+ businessId: this.businessIds
1889
+ };
1890
+ util
1891
+ .ajax({ url: getNodeInfo, params })
1892
+ .then((res) => {
1893
+ const { status, message, data } = res;
1894
+ this.loading.close();
1895
+ if (status === 'success') {
1896
+ data.otherOrgDisabledObjId &&
1897
+ (this.otherOrgDisabledObjId =
1898
+ data.otherOrgDisabledObjId.split(','));
1899
+ data.currentOrgDisabledObjId &&
1900
+ (this.currentOrgDisabledObjId =
1901
+ data.currentOrgDisabledObjId.split(','));
1902
+ if (data != null) {
1903
+ if (
1904
+ data.nodeExtAttr.userSelectionType == 7 ||
1905
+ data.nodeExtAttr.userSelectionType == 8 ||
1906
+ data.nodeExtAttr.userSelectionType == 9 ||
1907
+ data.nodeExtAttr.userSelectionType == 10 ||
1908
+ data.nodeExtAttr.userSelectionType == 11 ||
1909
+ data.nodeExtAttr.userSelectionType == 12
1910
+ ) {
1911
+ this.getIsShowNextUser(
1912
+ data.nodeExtAttr && data.nodeExtAttr.userSelectionType
1913
+ );
1914
+ } else {
1915
+ this.isMultiple(
1916
+ data.nodeExtAttr && data.nodeExtAttr.userSelectionType,
1917
+ this.choiceOrgId,
1918
+ this.choiceDeptId,
1919
+ this.pOrgId
1920
+ );
1921
+ }
1922
+ this.isReadMultiple(
1923
+ data.nodeExtAttr && data.nodeExtAttr.userSelectionType
1924
+ );
1925
+ this.isTaskread = data.nodeExtAttr.isTaskread;
1926
+ this.isHandleExplain = data.nodeExtAttr.isHandleExplain;
1927
+ this.isLimitedTimeHandling =
1928
+ data.nodeExtAttr.isLimitedTimeHandling;
1929
+ this.nodeType = data.nodeExtAttr.nodeType;
1930
+ //如果当前为承办节点/会签节点,则展示本单位外单位办理人选择
1931
+ if (this.nodeType === 1 || this.nodeType === 2) {
1932
+ this.isMainSubProcess === true
1933
+ ? (this.isNodeShowProcess = true)
1934
+ : (this.isNodeShowProcess = false);
1935
+ this.isMainSubProcess === true
1936
+ ? (this.isMainSubProcess = true)
1937
+ : (this.isMainSubProcess = false);
1938
+ this.isNextUser = false;
1939
+ this.isHideCurrentOrg =
1940
+ res.data.nodeExtAttr.isHideCurrentOrg == 1 ? false : true; //判断是否隐藏本单位
1941
+ this.isHideOtherOrg =
1942
+ res.data.nodeExtAttr.isHideOtherOrg == 1 ? false : true; //判断是否隐藏外单位
1943
+ } else {
1944
+ this.isHideCurrentOrg = false;
1945
+ this.isHideOtherOrg = false;
1946
+ this.isNodeShowProcess = false;
1947
+ this.isMainSubProcess = false;
1948
+ this.isNextUser = this.nextNode.nextOperate != 9;
1949
+ // this.isMainSubProcess === true
1950
+ // ? (this.isMainSubProcess = true)
1951
+ // : (this.isMainSubProcess = false);
1952
+ }
1953
+ this.multiple
1954
+ ? (this.nextNode.nextUserId = [])
1955
+ : (this.nextNode.nextUserId = '');
1956
+ if (
1957
+ this.multiple &&
1958
+ data.nodeExtAttr.isDefSelectedObj == 1 &&
1959
+ data.nextUserList !== undefined
1960
+ ) {
1961
+ data.nextUserList.map((item) => {
1962
+ if (item.userId && item.username) {
1963
+ this.nextNode.nextUserId.push(item.userId);
1964
+ this.selectUserList.push({
1965
+ showname: item.username,
1966
+ showid: item.userId
1967
+ });
1968
+ }
1969
+ });
1970
+ }
1971
+ data.nextUserList.map((item) => {
1972
+ if (item.userId && item.username) {
1973
+ this.options.push({
1974
+ showname: item.username,
1975
+ showid: item.userId
1976
+ });
1977
+ }
1978
+ });
1979
+ if (data.nodeExtAttr.presetEdit != 0) {
1980
+ this.radioList = this.options;
1981
+ }
1982
+ if (
1983
+ !this.multiple &&
1984
+ data.nextUserList.length > 0 &&
1985
+ data.nodeExtAttr.isDefSelectedObj == 1
1986
+ ) {
1987
+ this.nextNode.nextUserId = data.nextUserList[0].userId;
1988
+ this.selectUserList.push({
1989
+ showname: data.nextUserList[0].username,
1990
+ showid: data.nextUserList[0].userId
1991
+ });
1992
+ }
1993
+ this.isLimitedTimeHandling =
1994
+ data.nodeExtAttr.isLimitedTimeHandling;
1995
+ this.isCustomUser = data.nodeExtAttr.isCustomUser;
1996
+ this.presetEdit = data.nodeExtAttr.presetEdit;
1997
+ this.countersignaturetypeCode = data.countersignaturetypeCode; //是否展示处理方式
1998
+ this.handleMode = data.countersignaturetypeText;
1999
+ data.globalNodeType === 'endEvent' ? (this.endFlow = true) : '';
2000
+ }
2001
+ this.isCustomPreset &&
2002
+ this.$refs.customPreset.getPresetFlowInfo(
2003
+ this.nextNode.nextNodeId,
2004
+ this.nodeInfo.nextNode,
2005
+ true
2006
+ );
2007
+ } else {
2008
+ this.$message.error(message || '系统错误,请联系管理员!');
2009
+ }
2010
+ })
2011
+ .catch((err) => {
2012
+ this.loading.close();
2013
+ if (err.message && err.message !== 'canceled') {
2014
+ this.$message.error(err.message);
2015
+ }
2016
+ });
2017
+ },
2018
+ /**
2019
+ * selecNext
2020
+ * @desc:下步节点变化时更新数据
2021
+ * @author liufan
2022
+ * @param {String} val 当前选中值
2023
+ * @date 2022年5月25日
2024
+ **/
2025
+ selecNext(val, type, isDef) {
2026
+ this.loading = util.loading(this.$loading, '加载中...');
2027
+ if (this.multiple) {
2028
+ this.nextNode.nextUserId = [];
2029
+ } else {
2030
+ this.nextNode.nextUserId = '';
2031
+ }
2032
+ this.options = [];
2033
+ this.selectUserList = [];
2034
+ this.radioList = [];
2035
+
2036
+ if (type) {
2037
+ this.isNextUser = false;
2038
+ this.isShowNode = false;
2039
+ this.isMainSubProcess = false;
2040
+ this.isNodeShowProcess = false;
2041
+ this.nextNode.nextNodeId = '';
2042
+ this.nextNode.isReturnSubmitter = 0;
2043
+ this.nextNode.isUndertakeReply = 0;
2044
+ this.nextNode.isTakeAdviceReply = 0;
2045
+ this.nextNode.isUndertakeEnd = 0;
2046
+ this.nextNode.isTakeAdviceEnd = 0;
2047
+ this.nextNode.isReadDealReply = 0;
2048
+ this.nextNode.isReadDealEnd = 0;
2049
+ this.nextNode.isReturnRejectNode = 0;
2050
+ this.nextNode.isSerialSubmit = 0;
2051
+ this.nodeInfos = [];
2052
+ this.operationList.forEach((item) => {
2053
+ if (item.key === val) {
2054
+ if (!item.taskNodeList) {
2055
+ this.nodeInfos = [];
2056
+ } else {
2057
+ this.nodeInfos = item.taskNodeList;
2058
+ }
2059
+ return;
2060
+ }
2061
+ });
2062
+ if (this.defaultNextNode) {
2063
+ let defaultNode = this.nodeInfos.filter(
2064
+ (item) => item.nodeId == this.defaultNextNode
2065
+ );
2066
+ if (this.nodeInfos.length > 0 && defaultNode.length == 0) {
2067
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
2068
+ } else {
2069
+ this.nextNode.nextNodeId = this.defaultNextNode;
2070
+ }
2071
+ } else if (this.nodeInfos.length > 0) {
2072
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
2073
+ }
2074
+ }
2075
+
2076
+ if (val === 9) {
2077
+ this.isReject = true;
2078
+ } else {
2079
+ this.isReject = false;
2080
+ }
2081
+ if (this.isSpecial) {
2082
+ if (val == -1) {
2083
+ this.nextNode.isSerialSubmit = 1;
2084
+ this.loading.close();
2085
+ return;
2086
+ } else if (val == 0) {
2087
+ this.isNextUser = true;
2088
+ this.isShowNode = true;
2089
+ } else if (val == 1) {
2090
+ this.isNextUser = true;
2091
+ this.isShowNode = true;
2092
+ } else if (val == 2) {
2093
+ this.nextNode.isReturnSubmitter = 1;
2094
+ this.loading.close();
2095
+ return;
2096
+ } else if (val == 3) {
2097
+ this.nextNode.isUndertakeReply = 1;
2098
+ this.loading.close();
2099
+ return;
2100
+ } else if (val == 4) {
2101
+ this.nextNode.isTakeAdviceReply = 1;
2102
+ this.loading.close();
2103
+ return;
2104
+ } else if (val == 5) {
2105
+ this.nextNode.isUndertakeEnd = 1;
2106
+ this.loading.close();
2107
+ return;
2108
+ } else if (val == 6) {
2109
+ this.nextNode.isTakeAdviceEnd = 1;
2110
+ this.loading.close();
2111
+ return;
2112
+ } else if (val == 7) {
2113
+ this.nextNode.isReadDealReply = 1;
2114
+ this.loading.close();
2115
+ return;
2116
+ } else if (val == 8) {
2117
+ this.nextNode.isReadDealEnd = 1;
2118
+ this.loading.close();
2119
+ return;
2120
+ } else if (val == 9) {
2121
+ this.nextNode.isReturnRejectNode = 1;
2122
+ this.loading.close();
2123
+ return;
2124
+ } else {
2125
+ }
2126
+ }
2127
+
2128
+ if (isDef !== true) this.getNodeInfo();
2129
+ },
2130
+ /**
2131
+ * isMultiple
2132
+ * @desc:是否多选
2133
+ * @author liufan
2134
+ * @date 2022年9月13日
2135
+ **/
2136
+ isMultiple(val, choiceOrgId, choiceDeptId, pOrgId) {
2137
+ if (val == 2 || val == 4 || val == 6 || val == 16) {
2138
+ this.multiple = true;
2139
+ } else {
2140
+ this.multiple = false;
2141
+ }
2142
+ if (val == 1 || val == 2 || val == 5) {
2143
+ this.params.filid = this.userModel.orgId;
2144
+ if (choiceOrgId) {
2145
+ this.params.filid = choiceOrgId;
2146
+ }
2147
+ }
2148
+ if (val == 5 || val == 6) {
2149
+ this.params.filid = this.userModel.orgId;
2150
+ this.params.deptid = this.userModel.orgId;
2151
+ if (choiceDeptId) {
2152
+ this.params.deptid = choiceDeptId;
2153
+ }
2154
+ if (choiceOrgId) {
2155
+ this.params.filid = choiceOrgId;
2156
+ }
2157
+ }
2158
+ if (val == 15 || val == 16) {
2159
+ this.params.filid = this.userModel.orgId;
2160
+ if (pOrgId) {
2161
+ this.params.filid = pOrgId;
2162
+ }
2163
+ }
2164
+ },
2165
+ /**
2166
+ * getHedInfo
2167
+ * @desc:获取审核页面数据
2168
+ * @author liufan
2169
+ * @date 2022年5月25日
2170
+ **/
2171
+ getHedInfo() {
2172
+ this.loading = util.loading(this.$loading, '加载中...');
2173
+ let params = {
2174
+ pendingId: this.pendingId,
2175
+ userId: util.getStorage('userId')
2176
+ };
2177
+ util
2178
+ .ajax({ url: getHandleInfoHtml, params })
2179
+ .then((res) => {
2180
+ //pc返回数据
2181
+
2182
+ this.loading.close();
2183
+ if (res.status === 'success') {
2184
+ const {
2185
+ data: {
2186
+ nextNodeList,
2187
+ taskOperations,
2188
+ isCustomPreset,
2189
+ presetTaskNodeKeyStr,
2190
+ presetTaskNodeMap,
2191
+ isPreset,
2192
+ choiceOrgId,
2193
+ choiceDeptId,
2194
+ readOnlyNotificationType,
2195
+ notificationMessageReadOnly,
2196
+ nextNodeCheckType,
2197
+ pOrgId,
2198
+ currentOrgName,
2199
+ otherOrgName,
2200
+ taskExamine,
2201
+ nodeInfoMap,
2202
+ canRemoveSignUserList,
2203
+ defaultNotificationMessage,
2204
+ customPresetHintMessage,
2205
+ isCanAddSign,
2206
+ isCanRemoveSign,
2207
+ attachedCode,
2208
+ isSpecial,
2209
+ canPresetRead,
2210
+ isCdjxjTaskHandle,
2211
+ taskButtonList,
2212
+ isCanPreAddSign
2213
+ }
2214
+ } = res;
2215
+ this.$emit('startTaskRead', res);
2216
+ this.$emit('start-task-read', res);
2217
+ this.currentOrgName = currentOrgName;
2218
+ this.readOnlyNotificationType = readOnlyNotificationType;
2219
+ this.isSpecial = isSpecial;
2220
+ this.notificationMessageReadOnly =
2221
+ notificationMessageReadOnly == 'true';
2222
+ this.otherOrgName = otherOrgName;
2223
+ this.isCanPreAddSign = isCanPreAddSign;
2224
+ this.endFlowInfo.choiceOrgId = choiceOrgId;
2225
+ this.endFlowInfo.choiceDeptId = choiceDeptId;
2226
+ this.endFlowInfo.pendingId = this.pendingId;
2227
+ this.attachedCode = attachedCode;
2228
+ this.endFlowInfo.pOrgId = pOrgId;
2229
+ this.canPresetRead = canPresetRead;
2230
+ this.isCdjxjTaskHandle = isCdjxjTaskHandle;
2231
+ nextNodeCheckType && (this.nextNodeCheckType = nextNodeCheckType);
2232
+ this.operationList = taskOperations || [];
2233
+ this.customPresetHintMessage = customPresetHintMessage;
2234
+ if (canPresetRead) {
2235
+ let ids =
2236
+ nodeInfoMap.nodeExtAttr.presetReadCandinateIds.split(',');
2237
+ let names =
2238
+ nodeInfoMap.nodeExtAttr.presetReadCandinateNames.split(',');
2239
+ ids.map((item, index) => {
2240
+ this.presetReadUserId.push({
2241
+ showid: item,
2242
+ showname: names[index]
2243
+ });
2244
+ this.selectPresetUserList.push({
2245
+ showid: item,
2246
+ showname: names[index]
2247
+ });
2248
+ this.nextNode.presetReadUserId.push(item);
2249
+ });
2250
+ }
2251
+ if (!this.isFlow) this.getFile(this.pendingId, attachedCode);
2252
+ if (nextNodeList && nextNodeList.length != 0) {
2253
+ this.nextNodeList = nextNodeList;
2254
+ }
2255
+ if (canRemoveSignUserList && canRemoveSignUserList.length != 0)
2256
+ this.removeUsers = canRemoveSignUserList;
2257
+ if (taskOperations && taskOperations.length != 0) {
2258
+ taskOperations.map((item) => {
2259
+ if (item.key === 9) this.isReject = true;
2260
+ if (item.isSelected) {
2261
+ this.nodeInfos = [];
2262
+ this.nextNode.nextOperate = item.key;
2263
+ if (item.taskNodeList != null) {
2264
+ this.nodeInfos = item.taskNodeList;
2265
+ }
2266
+ }
2267
+ if (taskOperations.length == 1) {
2268
+ this.nodeInfos = [];
2269
+ this.nextNode.nextOperate = taskOperations[0].key;
2270
+ if (taskOperations[0].taskNodeList != null) {
2271
+ this.nodeInfos = taskOperations[0].taskNodeList;
2272
+ }
2273
+ }
2274
+ });
2275
+ this.selecNext(this.nextNode.nextOperate, true, true);
2276
+ }
2277
+ if (nodeInfoMap && JSON.stringify(nodeInfoMap) != '{}') {
2278
+ this.needRetrialAuth =
2279
+ !!nodeInfoMap.nodeExtAttr.isCurrentNodeSubmitNeedRetrialAuth;
2280
+ if (nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList) {
2281
+ let notice = JSON.parse(
2282
+ nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList
2283
+ );
2284
+ notice.map((x) => {
2285
+ this.nodeFixedOpinionSelectList.push({ content: x });
2286
+ });
2287
+ }
2288
+ this.isCurrentNodeForbiddenChangeCandidate =
2289
+ nodeInfoMap.nodeExtAttr.isCurrentNodeForbiddenChangeCandidate;
2290
+ this.nodeDefaultSubmitOpinion =
2291
+ nodeInfoMap.nodeExtAttr.nodeDefaultSubmitOpinion;
2292
+ this.isSubmitButtonShowAgreeAndDisagree =
2293
+ nodeInfoMap.nodeExtAttr.isSubmitButtonShowAgreeAndDisagree;
2294
+ this.isBanInputOpinion =
2295
+ nodeInfoMap.nodeExtAttr.isBanInputOpinion;
2296
+ this.nodeDefaultRejectOpinion =
2297
+ nodeInfoMap.nodeExtAttr.nodeDefaultRejectOpinion;
2298
+ this.isOpinionRequired =
2299
+ nodeInfoMap.nodeExtAttr.isOpinionRequired;
2300
+ // this.isChooseNextNode = nodeInfoMap.nodeExtAttr.isChooseNextNode;
2301
+ this.defaultNextNode = nodeInfoMap.nodeExtAttr.defaultNextNode;
2302
+ if (nodeInfoMap.nodeExtAttr.defaultNextNode) {
2303
+ let defaultNode = this.nodeInfos.filter(
2304
+ (item) =>
2305
+ item.nodeId == nodeInfoMap.nodeExtAttr.defaultNextNode
2306
+ );
2307
+ if (this.nodeInfos.length > 0 && defaultNode.length == 0) {
2308
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
2309
+ } else {
2310
+ this.nextNode.nextNodeId =
2311
+ nodeInfoMap.nodeExtAttr.defaultNextNode;
2312
+ }
2313
+ } else if (this.nodeInfos.length > 0) {
2314
+ this.nextNode.nextNodeId = this.nodeInfos[0].nodeId;
2315
+ }
2316
+ this.isForceDisplayDefaultOptionForPrefix =
2317
+ nodeInfoMap.nodeExtAttr.isForceDisplayDefaultOptionForPrefix ==
2318
+ 1;
2319
+ if (nodeInfoMap.nodeExtAttr.submitText) {
2320
+ this.btnList.map((x) => {
2321
+ if (x.event === 'sub') {
2322
+ x.text = nodeInfoMap.nodeExtAttr.submitText;
2323
+ }
2324
+ });
2325
+ }
2326
+ }
2327
+ this.choiceOrgId = choiceOrgId;
2328
+ this.choiceDeptId = choiceDeptId;
2329
+ this.pOrgId = pOrgId;
2330
+ if (res.data && res.data.isEndUserTask != undefined) {
2331
+ this.isEndUserTask = res.data.isEndUserTask;
2332
+ }
2333
+ if (JSON.stringify(taskExamine) != '{}' && taskExamine) {
2334
+ this.nodeInfo.nextNode = taskExamine.processDefinitionId;
2335
+ this.NodeName = taskExamine.nodeName;
2336
+ this.taskId = taskExamine.taskId;
2337
+ this.businessIds = taskExamine.businessId;
2338
+ this.appId = taskExamine.appId;
2339
+ this.taskExamineInfo = taskExamine;
2340
+ this.taskExamineInfo.choiceOrgId = choiceOrgId;
2341
+ this.taskExamineInfo.choiceDeptId = choiceDeptId;
2342
+ this.endFlowInfo.processType = taskExamine.processType;
2343
+ this.endFlowInfo.isReturnSubmitter =
2344
+ taskExamine.isReturnSubmitter;
2345
+ this.nextNode.isReturnSubmitter = taskExamine.isReturnSubmitter;
2346
+ this.nextNode.isUndertakeReply = taskExamine.isUndertakeReply;
2347
+ this.nextNode.isTakeAdviceReply = taskExamine.isTakeAdviceReply;
2348
+ this.nextNode.isUndertakeEnd = taskExamine.isUndertakeEnd;
2349
+ this.nextNode.isTakeAdviceEnd = taskExamine.isTakeAdviceEnd;
2350
+ this.nextNode.isReadDealReply = taskExamine.isReadDealReply;
2351
+ this.nextNode.isReadDealEnd = taskExamine.isReadDealEnd;
2352
+ this.nextNode.isReturnRejectNode = taskExamine.isReturnRejectNode;
2353
+ this.nextNode.isSerialSubmit = taskExamine.isSerialSubmit;
2354
+ this.endFlowInfo.isSubFlow = taskExamine.isSubFlow;
2355
+ this.endFlowInfo.isUndertakeReply = taskExamine.isUndertakeReply;
2356
+ this.endFlowInfo.isUndertakeEnd = taskExamine.isUndertakeEnd;
2357
+ this.endFlowInfo.isTakeAdviceEnd = taskExamine.isTakeAdviceEnd;
2358
+ this.endFlowInfo.isTakeAdviceReply =
2359
+ taskExamine.isTakeAdviceReply;
2360
+ this.endFlowInfo.isReadDealEnd = taskExamine.isReadDealEnd;
2361
+ this.endFlowInfo.isReadDealReply = taskExamine.isReadDealReply;
2362
+ this.endFlowInfo.isReturnRejectNode =
2363
+ taskExamine.isReturnRejectNode;
2364
+ this.endFlowInfo.isSerialSubmit = taskExamine.isSerialSubmit;
2365
+ // this.endFlowInfo.isReadDealReply =
2366
+ // taskExamine.isReadDealReplybusinessId;
2367
+ this.endFlowInfo.appId = taskExamine.appId;
2368
+ this.endFlowInfo.businessId = taskExamine.businessId;
2369
+ this.endFlowInfo.processDefinitionId =
2370
+ taskExamine.processDefinitionId;
2371
+ this.endFlowInfo.nodeId = taskExamine.nodeId;
2372
+ }
2373
+ if (this.nodeName) {
2374
+ this.NodeName = this.nodeName;
2375
+ }
2376
+ this.isCanAddSign = isCanAddSign;
2377
+ this.processObj = res.data;
2378
+ if (this.isCanAddSign) {
2379
+ this.nextNode.isAddSign = '2';
2380
+ }
2381
+ this.isCanRemoveSign = isCanRemoveSign;
2382
+ if (this.isCanRemoveSign) {
2383
+ this.nextNode.isRemoveSign = '2';
2384
+ }
2385
+
2386
+ if (!this.isOpinionRequired) {
2387
+ this.isOpinionRequired = 0;
2388
+ }
2389
+ // opinion && (this.value = opinion);
2390
+ this.nextNode.notificationMsg = defaultNotificationMessage;
2391
+ this.moreList = [];
2392
+ if (taskButtonList && taskButtonList.length != 0) {
2393
+ taskButtonList.map((item) => {
2394
+ if (item.fun === 'reject()') {
2395
+ this.rejectObj = item;
2396
+ } else if (item.fun === 'toStartTaskRead()') {
2397
+ this.pointsReadingObj = item;
2398
+ } else {
2399
+ this.moreList.push(item);
2400
+ }
2401
+ });
2402
+ }
2403
+ this.isMainSubProcess = res.data.isMainSubProcess == 'true';
2404
+ this.isCustomPreset = isCustomPreset;
2405
+ this.isPreset = isPreset;
2406
+ this.presetTaskNodeMap = presetTaskNodeMap;
2407
+ this.presetTaskNodeKeyStr = presetTaskNodeKeyStr;
2408
+ this.getFind();
2409
+
2410
+ this.getNodeInfo();
2411
+ } else {
2412
+ if (res.status === 'taskCompleted') {
2413
+ this.$emit('shrink', true);
2414
+ this.shrinkAbled = true;
2415
+ this.$message.warning(res.message || '系统错误,请联系管理员!');
2416
+ } else {
2417
+ this.$message.error(res.message || '系统错误,请联系管理员!');
2418
+ }
2419
+ }
2420
+ })
2421
+ .catch((err) => {
2422
+ this.loading.close();
2423
+ if (err.message && err.message !== 'canceled') {
2424
+ this.$message.error(err.message);
2425
+ }
2426
+ });
2427
+ },
2428
+ /**
2429
+ * closeProcess
2430
+ * @desc:关闭弹窗
2431
+ * @author liufan
2432
+ * @param {boolean} val 当前是否办理流程
2433
+ * @param {String} type 当前点击的弹窗类型
2434
+ * @date 2022年5月25日
2435
+ **/
2436
+ closeProcess(val, type, closeParent) {
2437
+ if (closeParent) {
2438
+ this.$refs[type].handleClosed();
2439
+ } else {
2440
+ this[type] = false;
2441
+ }
2442
+ if(this.useScene != 'multiInsMidwayWithSubmitScene'){
2443
+ this.$emit('close');
2444
+ return
2445
+ }
2446
+ if (
2447
+ val == 'taskReadAndEnd' ||
2448
+ (val == true && type != 'taskRead') ||
2449
+ val == 'transfer'
2450
+ ) {
2451
+ this.$emit('success');
2452
+ }
2453
+ },
2454
+ /**
2455
+ * selectChange
2456
+ * @desc:常用语选择
2457
+ * @author liufan
2458
+ * @param {String} val 选中值
2459
+ * @date 2022年5月25日
2460
+ **/
2461
+ selectChange(val) {
2462
+ this.value = val;
2463
+ },
2464
+ /**
2465
+ * upDate
2466
+ * @desc:修改常用语
2467
+ * @author liufan
2468
+ * @param {Object} val 修改值
2469
+ * @date 2022年5月25日
2470
+ **/
2471
+ upDate(val) {
2472
+ this.FormData.id = val.id;
2473
+ this.addVisible = true;
2474
+ },
2475
+
2476
+ /**
2477
+ * getProcess
2478
+ * @desc:获取选择流程
2479
+ * @author liufan
2480
+ * @date 2022年5月25日
2481
+ **/
2482
+ getProcess() {
2483
+ let params = {
2484
+ businessId: this.startFlowBusinessId,
2485
+ flowTypeCode: this.flowTypeCode,
2486
+ defaultProcessKey: this.defaultProcessKey,
2487
+ // isOnly: true,
2488
+ hideTempSave: true,
2489
+ onlyShowDefaultProcess:
2490
+ this.defaultProcessShowStrategy == 'onlyShowDefaultProcess'
2491
+ // onlyFlag: true
2492
+ };
2493
+ this.loading = util.loading(this.$loading, '加载中...');
2494
+ util
2495
+ .ajax({ url: getProcessDefList, params })
2496
+ .then((res) => {
2497
+ const { status, message, data } = res;
2498
+ this.loading.close();
2499
+ if (status === 'success') {
2500
+ this.isStartFlowChartView = data.isStartFlowChartView;
2501
+ if (
2502
+ !Object.keys(data).length ||
2503
+ (data.definitionList && !data.definitionList.length)
2504
+ ) {
2505
+ this.$message.error('流程不存在或未关联对应流程!');
2506
+ } else {
2507
+ this.nodeInfo.option = data.definitionList;
2508
+ this.nodeInfo.nextNode = data.definitionList.filter(
2509
+ (item) => item.processDefKey == this.defaultProcessKey
2510
+ );
2511
+ if (this.nodeInfo.nextNode.length) {
2512
+ this.nodeInfo.nextNode = this.nodeInfo.nextNode[0].processDefId;
2513
+ } else {
2514
+ if (data.definitionList.length == 1) {
2515
+ this.nodeInfo.nextNode = data.definitionList[0].processDefId;
2516
+ } else {
2517
+ this.nodeInfo.nextNode = '';
2518
+ }
2519
+ }
2520
+ if (this.nodeInfo.nextNode) {
2521
+ this.handleChange(this.nodeInfo.nextNode);
2522
+ }
2523
+ }
2524
+ } else {
2525
+ this.$message.error(message || '系统错误,请联系管理员!');
2526
+ }
2527
+ })
2528
+ .catch((err) => {
2529
+ this.loading.close();
2530
+ if (err.message && err.message !== 'canceled') {
2531
+ this.$message.error(err.message);
2532
+ }
2533
+ });
2534
+ },
2535
+ /**
2536
+ * getPendedhistoryList
2537
+ * @desc:获取流程列表
2538
+ * @author liufan
2539
+ * @date 2022年5月25日
2540
+ **/
2541
+ getPendedhistoryList() {
2542
+ let params = {
2543
+ apprecordId: this.businessIds,
2544
+ userId: util.getStorage('userId'),
2545
+ type: 2
2546
+ };
2547
+ util
2548
+ .ajax({ url: pendedhistoryList, data: params, method: 'post' })
2549
+ .then((res) => {
2550
+ const { rCode, msg, results } = res;
2551
+ if (!rCode) {
2552
+ this.nextNode.nextUserId = [];
2553
+ this.showNews = false;
2554
+ this.nextNode.notificationType = [];
2555
+ this.pendingId = results[results.length - 1].attachId;
2556
+ this.getHedInfo();
2557
+ } else {
2558
+ this.$message.error(msg || '系统错误,请联系管理员!');
2559
+ }
2560
+ })
2561
+ .catch((err) => {
2562
+ if (err.message && err.message !== 'canceled') {
2563
+ this.$message.error(err.message);
2564
+ }
2565
+ });
2566
+ },
2567
+ // 提交流程
2568
+ /**
2569
+ * subProcess
2570
+ * @desc:提交流程
2571
+ * @author liufan
2572
+ * @param {String} formName 当前form表单ref值
2573
+ * @date 2022年5月25日
2574
+ **/
2575
+ subProcess(val) {
2576
+ this.$refs['nextNode'].validate((valid) => {
2577
+ if (valid) {
2578
+ if (this.isSubmitButtonShowAgreeAndDisagree == 1) {
2579
+ this.value = this.value.replace(RegExp('不同意。', 'g'), '');
2580
+ this.value = this.value.replace(RegExp('同意。', 'g'), '');
2581
+ this.value = val + this.value;
2582
+ }
2583
+ if (!this.validInfo()) return;
2584
+ if (this.beforeSubmit == undefined) {
2585
+ this.subFun(this.sendData);
2586
+ } else {
2587
+ this.beforeSubmit(1)
2588
+ .then((next) => {
2589
+ this.sendData();
2590
+ })
2591
+ .catch((e) => {});
2592
+ }
2593
+ }
2594
+ });
2595
+ },
2596
+ validInfo() {
2597
+ if (
2598
+ !this.endFlow &&
2599
+ this.newTypeCode != 'fenyue' &&
2600
+ !this.shrink &&
2601
+ this.nextNode.isAddSign != '1' &&
2602
+ this.nextNode.isRemoveSign != '1' &&
2603
+ this.isSpecial &&
2604
+ !this.isReject &&
2605
+ this.nodeInfos.length != 0 &&
2606
+ this.isNextUser
2607
+ ) {
2608
+ if (this.isShowNextUser) {
2609
+ if (
2610
+ this.nextNode.nextUserId == '' ||
2611
+ (this.multiple && this.nextNode.nextUserId.length == 0)
2612
+ ) {
2613
+ this.$message.warning('请选择下步办理人');
2614
+ return false;
2615
+ }
2616
+ } else {
2617
+ if (
2618
+ this.nextNode.nextOrgId == '' ||
2619
+ (this.multiple && this.nextNode.nextOrgId.length == 0)
2620
+ ) {
2621
+ this.$message.warning('请选择办理对象');
2622
+ return false;
2623
+ }
2624
+ }
2625
+ }
2626
+
2627
+ if (
2628
+ this.nextNode.isAddSign == '1' &&
2629
+ this.nextNode.addSignUserId.length == 0
2630
+ ) {
2631
+ this.$message.warning('请选择加签办理人');
2632
+ return false;
2633
+ }
2634
+ if (
2635
+ this.nextNode.isRemoveSign == '1' &&
2636
+ this.nextNode.removeSignUserId.length == 0
2637
+ ) {
2638
+ this.$message.warning('请选择减签办理人');
2639
+ return false;
2640
+ }
2641
+ if (!this.value && this.isOpinionRequired === 1) {
2642
+ this.$message.warning('请选择输入审批意见');
2643
+ return false;
2644
+ }
2645
+ if (this.isHideCurrentOrg && !this.nextNode.nextCurrentOrgObjJson) {
2646
+ this.$message.warning(`请选择${this.currentOrgName || '本单位'}`);
2647
+ return false;
2648
+ }
2649
+ return true;
2650
+ },
2651
+ sendData() {
2652
+ this.$refs['nextNode'].validate(async (valid) => {
2653
+ if (valid) {
2654
+ if (this.isFlow) return (this.handleVisible = true);
2655
+ let nextUserId = [];
2656
+ if (this.multiple) {
2657
+ this.nextNode.nextUserId &&
2658
+ this.nextNode.nextUserId.map((item) => nextUserId.push(item));
2659
+ }
2660
+ let addSignUserId = [];
2661
+ if (this.isCanAddSign && this.nextNode.isAddSign == '1') {
2662
+ this.nextNode.addSignUserId.map((item) => {
2663
+ addSignUserId.push(item);
2664
+ });
2665
+ }
2666
+ let removeSignUserId = [];
2667
+ if (this.isCanRemoveSign && this.nextNode.isRemoveSign == '1') {
2668
+ this.nextNode.removeSignUserId.map((item) => {
2669
+ removeSignUserId.push(item);
2670
+ });
2671
+ }
2672
+ let str = '';
2673
+ if (this.value) {
2674
+ str = this.value.replace(/\s+/g, '');
2675
+ }
2676
+ if ((!this.value || str === '') && this.nodeDefaultSubmitOpinion) {
2677
+ this.value = this.nodeDefaultSubmitOpinion;
2678
+ }
2679
+ if (!this.isSpecial) {
2680
+ delete this.nextNode.nextOperate;
2681
+ delete this.nextNode.nextNodeId;
2682
+ }
2683
+ if (this.nextNode.nextOperate === 9) {
2684
+ this.nextNode.isReturnRejectNode = 1;
2685
+ this.nextNode.processDefinitionId =
2686
+ this.processObj.taskExamine.processDefinitionId;
2687
+ }
2688
+ if (
2689
+ this.nextNode.nextOperate != 0 &&
2690
+ this.nextNode.nextOperate != 1
2691
+ ) {
2692
+ delete this.nextNode.nextNodeId;
2693
+ }
2694
+ await this.saveInfo('subMit');
2695
+ this.loading = util.loading(this.$loading, '加载中...');
2696
+
2697
+ let notificationType = '';
2698
+ notificationType = this.nextNode.notificationType.join(',');
2699
+ addSignUserId = addSignUserId.join(',');
2700
+ removeSignUserId = removeSignUserId.join(',');
2701
+ if (!this.isCanPreAddSign || this.nextNode.isAddSign != '1') {
2702
+ delete this.nextNode.addSignMode;
2703
+ }
2704
+ let params = {
2705
+ ...this.nextNode,
2706
+ pendingId: this.pendingId,
2707
+ opinion:
2708
+ this.isForceDisplayDefaultOptionForPrefix &&
2709
+ !this.value.startsWith(this.nodeDefaultSubmitOpinion)
2710
+ ? this.nodeDefaultSubmitOpinion + this.value
2711
+ : this.value,
2712
+ userId: util.getStorage('userId'),
2713
+ nextUserId: this.multiple
2714
+ ? nextUserId.join(',')
2715
+ : this.nextNode.nextUserId,
2716
+ addSignUserId,
2717
+ customPresetUserJson: JSON.stringify(this.presetList),
2718
+ presetUserJson: JSON.stringify(this.presetUserJson),
2719
+ removeSignUserId,
2720
+ nextReadUserId: this.readMultiple
2721
+ ? this.mixReadList && this.mixReadList.join('|')
2722
+ : this.nextNode.nextReadUserId,
2723
+ nextOrgId: !this.isShowNextUser
2724
+ ? this.multiple
2725
+ ? this.mixOrgIdList && this.mixOrgIdList.join('|')
2726
+ : this.nextNode.nextOrgId
2727
+ : '',
2728
+ presetReadUserId:
2729
+ this.mixPresetList && this.mixPresetList.length > 0
2730
+ ? this.mixPresetList.join('|')
2731
+ : this.nextNode.presetReadUserId.join(','),
2732
+ notificationType
2733
+ };
2734
+ if (this.activeNames != '1') delete params.customPresetUserJson;
2735
+ if (this.nextNode.isRemoveSign != '1') {
2736
+ delete params.removeSignUserId;
2737
+ }
2738
+ if (this.nextNode.isAddSign != '1') {
2739
+ delete params.addSignUserId;
2740
+ }
2741
+ this.loading = util.loading(this.$loading, '提交中...');
2742
+ const {
2743
+ isEndUserTask,
2744
+ choiceOrgId,
2745
+ choiceDeptId,
2746
+ pOrgId,
2747
+ taskExamineInfo,
2748
+ needRetrialAuth
2749
+ } = this;
2750
+ params.isEndUserTask = isEndUserTask;
2751
+ params.choiceOrgId = choiceOrgId;
2752
+ params.choiceDeptId = choiceDeptId;
2753
+ params.pOrgId = pOrgId;
2754
+ params.processType = taskExamineInfo.processType;
2755
+ params.businessId = taskExamineInfo.businessId;
2756
+ params.appId = taskExamineInfo.appId;
2757
+ params.processDefinitionId = taskExamineInfo.processDefinitionId;
2758
+ params.isSubFlow = taskExamineInfo.isSubFlow;
2759
+ params.nodeId = taskExamineInfo.nodeId;
2760
+ params.needRetrialAuth = needRetrialAuth;
2761
+ return util
2762
+ .ajax({ url: taskHandleHtml, method: 'post', data: params })
2763
+ .then((res) => {
2764
+ const { status, message } = res;
2765
+ this.loading.close();
2766
+ if (status === 'success') {
2767
+ this.$message.success('提交成功');
2768
+ this.$emit('success');
2769
+ } else {
2770
+ this.$message.error(message || '系统错误,请联系管理员!');
2771
+ this.$emit('error');
2772
+ }
2773
+ })
2774
+ .catch((err) => {
2775
+ this.loading.close();
2776
+ if (err.message && err.message !== 'canceled') {
2777
+ this.$message.error(err.message);
2778
+ }
2779
+ });
2780
+ } else {
2781
+ // this.loading.close();
2782
+ return false;
2783
+ }
2784
+ });
2785
+ },
2786
+ // 单位选择完回调
2787
+ disposeAppUnit(res, type) {
2788
+ let label = type.substring(0, type.lastIndexOf('Select'));
2789
+ this.nextNode[label + 'Name'] = '';
2790
+ res.options && (this[type] = res.options);
2791
+ let obj = {};
2792
+ // if (typeof res.mixList == 'array')
2793
+ res.mixList && (this.nextNode[label] = res.mixList.join('|'));
2794
+ res.options.map((item) => {
2795
+ if (obj[item.stype]) {
2796
+ obj[item.stype].push(item.showname);
2797
+ } else {
2798
+ obj[item.stype] = [item.showname];
2799
+ }
2800
+ });
2801
+ for (let key in obj) {
2802
+ if (
2803
+ key === 'enterprise' &&
2804
+ this.nextNode[label + 'Name'].indexOf('[企业]') == -1
2805
+ ) {
2806
+ this.nextNode[label + 'Name'] = this.nextNode[label + 'Name']
2807
+ ? this.nextNode[label + 'Name'] +
2808
+ '|' +
2809
+ '[企业]-' +
2810
+ obj[key].join(',')
2811
+ : '' + '[企业]-' + obj[key].join(',');
2812
+ }
2813
+ if (
2814
+ key === 'department' &&
2815
+ this.nextNode[label + 'Name'].indexOf('[部门]') == -1
2816
+ ) {
2817
+ this.nextNode[label + 'Name'] = this.nextNode[label + 'Name']
2818
+ ? this.nextNode[label + 'Name'] +
2819
+ '|' +
2820
+ '[部门]-' +
2821
+ obj[key].join(',')
2822
+ : '' + '[部门]-' + obj[key].join(',');
2823
+ }
2824
+ if (
2825
+ key === 'employee' &&
2826
+ this.nextNode[label + 'Name'].indexOf('[部门员工]') == -1
2827
+ ) {
2828
+ this.nextNode[label + 'Name'] = this.nextNode[label + 'Name']
2829
+ ? this.nextNode[label + 'Name'] +
2830
+ '|' +
2831
+ '[部门员工]-' +
2832
+ obj[key].join(',')
2833
+ : '' + '[部门员工]-' + obj[key].join(',');
2834
+ }
2835
+ }
2836
+ // this.nextNode[label + 'Name'] = obj.enterprise?;
2837
+ this.nextNode[label + 'SerialId'] = res.nextUser.join(',');
2838
+ this.nextNode[label + 'Json'] = JSON.stringify(res.options);
2839
+ this.getsubProcessColumns();
2840
+ }
2841
+ }
2842
+ };
2843
+ </script>