eoss-ui 0.7.22 → 0.7.24

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 (119) hide show
  1. package/lib/button-group.js +48 -7
  2. package/lib/button.js +48 -7
  3. package/lib/calogin.js +48 -7
  4. package/lib/checkbox-group.js +48 -7
  5. package/lib/data-table-form.js +48 -7
  6. package/lib/data-table.js +48 -7
  7. package/lib/date-picker.js +48 -7
  8. package/lib/dialog.js +48 -7
  9. package/lib/eoss-ui.common.js +608 -525
  10. package/lib/flow-group.js +70 -9
  11. package/lib/flow-list.js +129 -88
  12. package/lib/flow.js +340 -294
  13. package/lib/form.js +48 -7
  14. package/lib/handle-user.js +48 -7
  15. package/lib/handler.js +48 -7
  16. package/lib/icon.js +48 -7
  17. package/lib/index.js +1 -1
  18. package/lib/input-number.js +48 -7
  19. package/lib/input.js +48 -7
  20. package/lib/login.js +74 -16
  21. package/lib/main.js +176 -135
  22. package/lib/nav.js +48 -7
  23. package/lib/page.js +48 -7
  24. package/lib/pagination.js +48 -7
  25. package/lib/player.js +48 -7
  26. package/lib/qr-code.js +48 -7
  27. package/lib/radio-group.js +48 -7
  28. package/lib/retrial-auth.js +48 -7
  29. package/lib/select-ganged.js +48 -7
  30. package/lib/select.js +48 -7
  31. package/lib/selector-panel.js +48 -7
  32. package/lib/selector.js +48 -7
  33. package/lib/sizer.js +48 -7
  34. package/lib/steps.js +48 -7
  35. package/lib/switch.js +48 -7
  36. package/lib/table-form.js +48 -7
  37. package/lib/tabs.js +48 -7
  38. package/lib/theme-chalk/index.css +1 -1
  39. package/lib/theme-chalk/login.css +1 -1
  40. package/lib/tips.js +48 -7
  41. package/lib/tree-group.js +48 -7
  42. package/lib/tree.js +48 -7
  43. package/lib/upload.js +48 -7
  44. package/lib/utils/util.js +48 -7
  45. package/lib/wujie.js +48 -7
  46. package/lib/wxlogin.js +48 -7
  47. package/package.json +160 -160
  48. package/packages/.DS_Store +0 -0
  49. package/packages/button-group/src/main.vue +346 -346
  50. package/packages/calogin/.DS_Store +0 -0
  51. package/packages/calogin/src/main.vue +412 -412
  52. package/packages/data-table/src/column.vue +988 -988
  53. package/packages/data-table/src/main.vue +1831 -1831
  54. package/packages/date-picker/.DS_Store +0 -0
  55. package/packages/date-picker/src/.DS_Store +0 -0
  56. package/packages/flow/.DS_Store +0 -0
  57. package/packages/flow/src/.DS_Store +0 -0
  58. package/packages/flow/src/component/Circulate.vue +413 -413
  59. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  60. package/packages/flow/src/component/FileList.vue +97 -97
  61. package/packages/flow/src/component/FreeCirculation.vue +240 -240
  62. package/packages/flow/src/component/SendMsg.vue +242 -242
  63. package/packages/flow/src/component/taskUnionExamine.vue +738 -738
  64. package/packages/flow/src/freeStartFlow.vue +2847 -2847
  65. package/packages/flow/src/main.vue +3843 -3843
  66. package/packages/flow/src/processForm.vue +1370 -1366
  67. package/packages/flow/src/processReject.vue +308 -308
  68. package/packages/flow/src/reset.vue +941 -941
  69. package/packages/flow/src/startTaskRead.vue +691 -691
  70. package/packages/flow/src/supervise.vue +159 -159
  71. package/packages/flow-group/src/main.vue +717 -696
  72. package/packages/flow-list/.DS_Store +0 -0
  73. package/packages/flow-list/src/main.vue +1770 -1770
  74. package/packages/form/.DS_Store +0 -0
  75. package/packages/form/src/main.vue +3901 -3901
  76. package/packages/form/src/table.vue +1512 -1512
  77. package/packages/handle-user/src/main.vue +137 -137
  78. package/packages/handler/src/main.vue +496 -496
  79. package/packages/icon/src/main.vue +104 -104
  80. package/packages/login/.DS_Store +0 -0
  81. package/packages/login/src/main.vue +2020 -1994
  82. package/packages/login/src/resetPassword.vue +557 -557
  83. package/packages/main/.DS_Store +0 -0
  84. package/packages/main/src/.DS_Store +0 -0
  85. package/packages/main/src/default/userinfo.vue +502 -502
  86. package/packages/main/src/public/search.vue +464 -464
  87. package/packages/main/src/simplicity/avatar.vue +82 -82
  88. package/packages/main/src/simplicity/handler.vue +263 -263
  89. package/packages/main/src/simplicity/index.vue +2125 -2125
  90. package/packages/main/src/simplicity/user.vue +259 -259
  91. package/packages/main/src/simplicity/userinfo.vue +398 -398
  92. package/packages/menu/.DS_Store +0 -0
  93. package/packages/select/.DS_Store +0 -0
  94. package/packages/select/src/main.vue +782 -782
  95. package/packages/selector/.DS_Store +0 -0
  96. package/packages/selector/src/main.vue +761 -761
  97. package/packages/selector-panel/.DS_Store +0 -0
  98. package/packages/selector-panel/src/main.vue +1027 -1027
  99. package/packages/selector-panel/src/selection.vue +170 -170
  100. package/packages/switch/src/main.vue +170 -170
  101. package/packages/theme-chalk/lib/index.css +1 -1
  102. package/packages/theme-chalk/lib/login.css +1 -1
  103. package/packages/theme-chalk/src/.DS_Store +0 -0
  104. package/packages/theme-chalk/src/flow.scss +351 -351
  105. package/packages/theme-chalk/src/form.scss +501 -501
  106. package/packages/theme-chalk/src/handler.scss +148 -148
  107. package/packages/theme-chalk/src/icon.scss +1817 -1817
  108. package/packages/theme-chalk/src/login.scss +987 -984
  109. package/packages/theme-chalk/src/selector.scss +92 -92
  110. package/packages/theme-chalk/src/simplicity.scss +1366 -1366
  111. package/packages/theme-chalk/src/upload.scss +172 -172
  112. package/packages/upload/.DS_Store +0 -0
  113. package/packages/upload/src/main.vue +1343 -1343
  114. package/src/.DS_Store +0 -0
  115. package/src/config/api.js +315 -315
  116. package/src/index.js +163 -163
  117. package/src/utils/.DS_Store +0 -0
  118. package/src/utils/rules.js +18 -18
  119. package/src/utils/util.js +49 -9
@@ -1,1366 +1,1370 @@
1
- <template>
2
- <div
3
- v-loading="loading"
4
- class="es-flow-form"
5
- element-loading-text="加载中..."
6
- element-loading-spinner="el-icon-loading"
7
- element-loading-background="rgba(255, 255,255, 0.8)"
8
- >
9
- <el-form
10
- ref="nextNode"
11
- :model="nextNode"
12
- class="demo-dynamic"
13
- label-width="100px"
14
- :rules="rules"
15
- :label-position="labelPosition"
16
- >
17
- <div
18
- :style="`height:${
19
- showBtn ? '430px' : 'auto'
20
- }; overflow-y: auto; margin-bottom: 10px`"
21
- >
22
- <el-form-item
23
- v-show="showBtn"
24
- prop="nodeName"
25
- label="当前节点"
26
- :rules="[
27
- { required: true, message: `请选择下步节点`, trigger: 'blur' }
28
- ]"
29
- >
30
- <el-input v-model="nextNode.nodeName" disabled />
31
- </el-form-item>
32
- <el-form-item
33
- v-if="isSinglePage || copyHistory || formType == 'readTransfer'"
34
- prop="newOpinion"
35
- :label="
36
- copyHistory || formType == 'readTransfer' ? '填写意见' : '意见'
37
- "
38
- >
39
- <CommonOpinions
40
- class="opinions"
41
- :opinion="nextNode.newOpinion"
42
- :rows="copyHistory || formType == 'readTransfer' ? 2 : 5"
43
- @change="(val) => (nextNode.newOpinion = val)"
44
- />
45
- </el-form-item>
46
- <el-form-item
47
- prop="nextOperate"
48
- label="下步操作"
49
- v-if="isChooseNextNode == 1"
50
- :rules="[
51
- { required: true, message: `请选择下步操作`, trigger: 'blur' }
52
- ]"
53
- >
54
- <el-select
55
- v-if="nextOperateCheckType == 'select'"
56
- v-model="nextNode.nextOperate"
57
- :placeholder="`请选择下步操作`"
58
- @change="selecNext"
59
- >
60
- <el-option
61
- v-for="items in operationList"
62
- :key="items.key"
63
- :label="items.value"
64
- :value="items.key"
65
- ></el-option>
66
- </el-select>
67
- <es-radio-group
68
- v-else-if="nextOperateCheckType == 'radio'"
69
- v-model="nextNode.nextOperate"
70
- :data="operationList"
71
- @change="selecNext($event, true)"
72
- value-key="key"
73
- label-key="value"
74
- ></es-radio-group>
75
- </el-form-item>
76
- <el-form-item
77
- prop="nextNode"
78
- label="下步节点"
79
- :rules="[
80
- { required: false, message: `请选择下步节点`, trigger: 'blur' }
81
- ]"
82
- >
83
- <el-select
84
- v-if="nextNodeCheckType == 'select'"
85
- v-model="nextNode.nextNode"
86
- :placeholder="`请选择下步节点`"
87
- @change="changeSel"
88
- >
89
- <el-option
90
- v-for="items in nextNode.nodeInfo"
91
- :key="items.id"
92
- :label="items.nodeName"
93
- :value="items.nodeId"
94
- ></el-option>
95
- </el-select>
96
- <es-radio-group
97
- v-else-if="nextNodeCheckType == 'radio'"
98
- v-model="nextNode.nextNode"
99
- :data="nextNode.nodeInfo"
100
- @change="changeSel"
101
- value-key="nodeId"
102
- label-key="nodeName"
103
- ></es-radio-group>
104
- </el-form-item>
105
- <el-form-item
106
- v-if="countersignaturetypeCode != 0"
107
- prop="countersignaturetypeText"
108
- label="处理方式"
109
- >
110
- <el-input
111
- v-model="nextNode.countersignaturetypeText"
112
- placeholder="请输入内容"
113
- disabled
114
- />
115
- </el-form-item>
116
- <!-- <el-form-item
117
- prop="nextNode"
118
- label="下步办理人"
119
- v-if="isShowNextUser"
120
- :rules="[
121
- { required: true, message: `请选择下步办理人`, trigger: 'blur' }
122
- ]"
123
- >
124
- <SelectUser
125
- :nextUser="nextNode.nextUser"
126
- :radioList="radioList"
127
- :multiple="multiple"
128
- :isCustomUser="isCustomUser"
129
- :options="options"
130
- :presetEdit="presetEdit"
131
- :isDefSelectedObj="isDefSelectedObj"
132
- :selectUserList="selectUserList"
133
- @change="changeSelectUser"
134
- :types="nextUserTypes"
135
- :params="params"
136
- />
137
- </el-form-item> -->
138
- <el-form-item
139
- :prop="isShowNextUser ? 'nextUser' : 'nextOrgId'"
140
- :label="isShowNextUser ? '下步办理人' : '办理对象'"
141
- >
142
- <SelectUser
143
- :nextUser="isShowNextUser ? nextNode.nextUser : nextNode.nextOrgId"
144
- :radioList="radioList"
145
- :multiple="multiple"
146
- :isCustomUser="!isShowNextUser ? 1 : isCustomUser"
147
- :options="options"
148
- :presetEdit="presetEdit"
149
- :mix="multiple"
150
- :isDefSelectedObj="isDefSelectedObj"
151
- :selectUserList="selectUserList"
152
- @change="
153
- changeSelectUser(
154
- $event,
155
- isShowNextUser ? 'nextUser' : 'nextOrgId'
156
- )
157
- "
158
- :types="
159
- !isShowNextUser
160
- ? nextUserTypes
161
- : isCdjxjTaskHandle != 'true'
162
- ? ['employee', 'persongroup']
163
- : ['employee']
164
- "
165
- :params="isShowNextUser ? params : {}"
166
- :tabs="nextUserTabs"
167
- />
168
- </el-form-item>
169
- <el-form-item
170
- prop="nextReadUserId"
171
- v-if="isTaskread == 1"
172
- label="
173
- 分阅用户
174
- "
175
- >
176
- <SelectUser
177
- :nextUser="nextNode.nextReadUserId"
178
- :multiple="true"
179
- :selectUserList="selectReadUserList"
180
- :options="userOptions"
181
- title="分阅用户"
182
- :mix="true"
183
- :types="types"
184
- @change="changeSelectReadUser($event, 'nextReadUserId')"
185
- :tabs="tabs"
186
- />
187
- </el-form-item>
188
- <el-form-item
189
- prop="presetReadUserId"
190
- v-if="canPresetRead"
191
- label="
192
- 自动分阅
193
- "
194
- >
195
- <SelectUser
196
- :nextUser="nextNode.presetReadUserId"
197
- :multiple="true"
198
- :selectUserList="selectPresetUserList"
199
- :options="presetOptions"
200
- title="分阅用户"
201
- :radioList="presetReadUserId"
202
- :presetEdit="1"
203
- :mix="true"
204
- :types="types"
205
- @change="changeSelectReadUser($event, 'presetReadUserId')"
206
- :tabs="tabs"
207
- />
208
- </el-form-item>
209
- <el-form-item
210
- v-if="enableCustomLimitTimeSetting"
211
- prop="customLimitTime"
212
- label="限时办理"
213
- :rules="[
214
- {
215
- required: enableCustomLimitTimeSetting,
216
- message: showCustomLimitTimeText
217
- ? '请输入限时办理天数'
218
- : '请选择限时办理天数',
219
- trigger: 'blur'
220
- },
221
- {
222
- required: enableCustomLimitTimeSetting,
223
- validator: checkCustomLimitTime,
224
- trigger: 'blur'
225
- }
226
- ]"
227
- >
228
- <el-input
229
- v-model="nextNode.customLimitTime"
230
- placeholder="请输入限时办理的天数"
231
- class="input-with-select custom-limit-time"
232
- @change="changeCustomLimitTime"
233
- >
234
- <es-select
235
- v-if="!showCustomLimitTimeText"
236
- v-model="nextNode.customLimitTime"
237
- placeholder="请选择"
238
- slot="prepend"
239
- sysCode="bpm_custom_limit_time"
240
- ></es-select>
241
- <es-button
242
- type="primary"
243
- slot="append"
244
- @click="
245
- () => {
246
- nextNode.customLimitTime = '';
247
- showCustomLimitTimeText = !showCustomLimitTimeText;
248
- }
249
- "
250
- >切换{{
251
- showCustomLimitTimeText ? '选择框' : '文本框'
252
- }}</es-button
253
- >
254
- </el-input>
255
- </el-form-item>
256
- <el-form-item
257
- v-if="isHandleExplain == 1"
258
- prop="handleExplain"
259
- label="办理说明"
260
- >
261
- <el-input
262
- placeholder="请输入办理说明"
263
- v-model="nextNode.handleExplain"
264
- />
265
- </el-form-item>
266
- <el-form-item
267
- prop="noticeType"
268
- label="通知方式"
269
- v-show="showBtn && nextNode.noticeList.length > 0"
270
- >
271
- <el-checkbox-group v-model="nextNode.noticeType">
272
- <el-checkbox
273
- v-for="item of nextNode.noticeList"
274
- :key="item.cciValue"
275
- :label="item.cciValue"
276
- :disabled="
277
- readOnlyNotificationType
278
- ? readOnlyNotificationType.indexOf(item.cciValue) != -1
279
- : false
280
- "
281
- >
282
- {{ item.shortName }}
283
- </el-checkbox>
284
- </el-checkbox-group>
285
- </el-form-item>
286
- <el-form-item
287
- v-show="nextNode.noticeType.length != 0 && showBtn"
288
- prop="nextNode"
289
- label="通知消息"
290
- >
291
- <es-input
292
- style="
293
- border-color: #ccc;
294
- padding: 5px;
295
- border-radius: 5px;
296
- font-size: 13px;
297
- "
298
- type="textarea"
299
- v-model="nextNode.noticeInfo"
300
- :readonly="notificationMessageReadOnly"
301
- />
302
- </el-form-item>
303
- <CustomPreset
304
- v-show="isCustomPreset"
305
- ref="customPreset"
306
- @changeCustom="
307
- (data) => {
308
- presetList = data;
309
- }
310
- "
311
- :customPresetHintMessage="customPresetHintMessage"
312
- @changeActiveNames="(val) => (activeNames = val)"
313
- @loadingEnd="loading = false"
314
- @loadingStart="loading = true"
315
- :nextNode="nextNode.nextNode"
316
- :id="id"
317
- :processDefinitionId="processDefinitionId"
318
- />
319
- <Preset
320
- v-show="isPreset"
321
- @changePreset="
322
- (data) => {
323
- presetUserJson = data;
324
- }
325
- "
326
- @loadingEnd="loading = false"
327
- @loadingStart="loading = true"
328
- :customPresetHintMessage="customPresetHintMessage"
329
- :nodeId="nextNode.nextNode"
330
- :businessId="id"
331
- :processDefinitionId="processDefinitionId"
332
- :presetTaskNodeMap="presetTaskNodeMap"
333
- :presetTaskNodeKeyStr="presetTaskNodeKeyStr"
334
- />
335
- </div>
336
- <el-form-item style="margin-bottom: 0px" v-show="showBtn">
337
- <div style="text-align: right">
338
- <el-button
339
- type="primary"
340
- size="small"
341
- @click="subProcess('nextNode')"
342
- >
343
- 确认
344
- </el-button>
345
- <el-button size="small" @click="quit"> 取消 </el-button>
346
- </div>
347
- </el-form-item>
348
- </el-form>
349
- <div
350
- v-if="!showBtn && nextNode.noticeList.length > 0"
351
- style="padding: 5px; background: #fff"
352
- >
353
- <div class="news" @click="showNews = !showNews">
354
- <span class="news-item">消息通知</span>
355
- <span :class="showNews ? 'show' : 'sj'"></span>
356
- </div>
357
- <div v-if="showNews" ref="messagebox" style="transition: 1s">
358
- <el-checkbox-group v-model="nextNode.noticeType">
359
- <el-checkbox
360
- v-for="item of nextNode.noticeList"
361
- :key="item.cciValue"
362
- :label="item.cciValue"
363
- :disabled="
364
- readOnlyNotificationType
365
- ? readOnlyNotificationType.indexOf(item.cciValue) != -1
366
- : false
367
- "
368
- >
369
- {{ item.shortName }}
370
- </el-checkbox>
371
- </el-checkbox-group>
372
- <es-input
373
- style="
374
- border-color: #ccc;
375
- padding: 5px;
376
- border-radius: 5px;
377
- font-size: 13px;
378
- "
379
- autosize
380
- v-show="showNews"
381
- type="textarea"
382
- v-model="nextNode.noticeInfo"
383
- @change="handleChange"
384
- :readonly="notificationMessageReadOnly"
385
- />
386
- </div>
387
- </div>
388
- </div>
389
- </template>
390
-
391
- <script>
392
- import {
393
- toStartFlow,
394
- getNodeInfo,
395
- findSysCodes,
396
- getNotificationMsg,
397
- findCodeValues,
398
- loginUserInfo,
399
- register,
400
- freeStartFlow,
401
- freeStartFlowWithSubmitTask,
402
- startReadTransferHandleFlowWithTaskReadEnd
403
- } from 'eoss-ui/src/config/api';
404
- import util from 'eoss-ui/src/utils/util';
405
- import SelectUser from './selectUser.vue';
406
- import CommonOpinions from './component/CommonOpinions.vue';
407
- import CustomPreset from './component/CustomPreset.vue';
408
- import Preset from './component/Preset.vue';
409
- export default {
410
- name: 'ProcessForm',
411
-
412
- components: {
413
- [Option.name]: Option,
414
- [SelectUser.name]: SelectUser,
415
- [CustomPreset.name]: CustomPreset,
416
- [CommonOpinions.name]: CommonOpinions,
417
- Preset
418
- },
419
- props: {
420
- processDefinitionId: {
421
- type: String,
422
- default: ''
423
- },
424
- copyHistory: {
425
- type: String,
426
- default: ''
427
- },
428
- simpleTips: {
429
- type: Boolean,
430
- default: true
431
- },
432
- formType: {
433
- type: String,
434
- default: 'freeStart'
435
- },
436
- id: {
437
- type: String,
438
- default: ''
439
- },
440
- pendingId: {
441
- type: String,
442
- default: ''
443
- },
444
- opinion: {
445
- type: String,
446
- default: ''
447
- },
448
- isFreeStartFlow: {
449
- type: Boolean,
450
- default: false
451
- },
452
- taskParams: {
453
- type: Object,
454
- default: () => {}
455
- },
456
- taskExamineParam: {
457
- type: String,
458
- default: ''
459
- },
460
- labelPosition: {
461
- type: String,
462
- default: 'left'
463
- },
464
- formTitle: {
465
- type: String,
466
- default: ''
467
- },
468
- showBtn: { type: Boolean, default: true },
469
- messageType: {
470
- type: Array,
471
- default: () => []
472
- },
473
- urgencyLevel: {
474
- type: [Number, String],
475
- default: ''
476
- },
477
- keyCount: {
478
- type: [Number, String],
479
- default: 0
480
- }
481
- },
482
- data() {
483
- return {
484
- loading: false,
485
- isCustomUser: 0,
486
- allLoading: null,
487
- selectUser: false,
488
- multiple: false,
489
- readMultiple: true,
490
- customPresetHintMessage: '', //流程预设标题
491
- nextNodeCheckType: 'select',
492
- nextOperateCheckType: 'select',
493
- showNews: false, // 是否展示通知信息
494
- notificationMessageReadOnly: false,
495
- isChangeMessage: false,
496
- readOnlyNotificationType: '',
497
- show: true,
498
- enableCustomLimitTimeSetting: false,
499
- radioList: [],
500
- showCustomLimitTimeText: false,
501
- activeNames: '',
502
- selectUserList: [],
503
- defaultNextNode: '',
504
- presetUserJson: [],
505
- businessId: '',
506
- isTaskread: 0, //是否显示分阅用户
507
- isHandleExplain: 0, //是否展示办理说明
508
- options: [],
509
- presetList: [],
510
- presetReadUserId: [], //自动分阅
511
- canPresetRead: false, //是否展示自动分阅
512
- nextUserTypes: ['employee', 'persongroup'],
513
- isCustomPreset: false, //是否展示预设节点
514
- isPreset: false, //是否展示预设办理人
515
- isSinglePage: false,
516
- presetEdit: 0,
517
- isDefSelectedObj: 0,
518
- isChooseNextNode: 0,
519
- isHideDefaultOperation: 0,
520
- countersignaturetypeCode: 0,
521
- presetTaskNodeKeyStr: '', //预设办理人顺序
522
- presetTaskNodeMap: {}, //预设办理人
523
- params: {
524
- filid: 'all', //选择范围(my:本单位/ "" or all:全部)
525
- selectmix: 'true1',
526
- deptid: '' //指定部门(my:本部门)
527
- },
528
- newOpinion: '',
529
- operationList: [],
530
- tabs: {
531
- employee: {
532
- param: {
533
- filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId,
534
- name: '本单位用户'
535
- }
536
- },
537
- department: {
538
- param: {
539
- filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId
540
- }
541
- }
542
- },
543
- userModel: {},
544
- nextUserTabs: {},
545
- selectPresetUserList: [],
546
- presetOptions: [],
547
- selectReadUserList: [],
548
- userOptions: [],
549
- mixReadList: [],
550
- mixPresetList: [],
551
- isCdjxjTaskHandle: '',
552
- isShowNextUser: true,
553
- oldMessage: '',
554
- mixOrgIdList: [], //办理对象混选
555
- nextNode: {
556
- nodeName: '',
557
- customLimitTime: '',
558
- newOpinion: '',
559
- countersignaturetypeText: '',
560
- nextNode: '',
561
- nextReadUserId: [],
562
- nextOrgId: [],
563
- noticeType: [],
564
- nextOperate: '',
565
- nextUser: [],
566
- presetReadUserId: [], //自动分阅
567
- noticeInfo: '',
568
- nodeInfo: [],
569
- userInfo: [],
570
- handleExplain: '',
571
- noticeList: [],
572
- msgTypeCount: 0
573
- }
574
- };
575
- },
576
- watch: {
577
- messageType: {
578
- handler(val) {
579
- if (this.urgencyLevel) {
580
- this.nextNode.noticeList = val;
581
- let arr = [];
582
- this.nextNode.noticeList.map((item) => {
583
- this.nextNode.noticeType.map((x) => {
584
- if (x == item.cciValue) {
585
- arr.push(x);
586
- }
587
- });
588
- });
589
- this.nextNode.noticeType = arr;
590
- } else {
591
- this.msgTypeCount++;
592
- }
593
- }
594
- },
595
- processDefinitionId(val) {
596
- Object.assign(this.$data, this.$options.data());
597
- this.getUserInfo();
598
- this.getNodeType();
599
- this.getStartFlow(val);
600
- if (this.copyHistory) {
601
- this.nextNode.newOpinion = this.opinion;
602
- } else if (this.formType != 'readTransfer') {
603
- this.newOpinion = this.opinion;
604
- }
605
- // this.getStartFlow(val);
606
- },
607
- opinion(val) {
608
- this.newOpinion = this.opinion;
609
- },
610
- formTitle: {
611
- handler(val) {
612
- if (!this.showBtn && !this.isChangeMessage) {
613
- this.nextNode.noticeInfo = this.oldMessage.replace('{title}', val);
614
- }
615
- },
616
- deep: true,
617
- immediate: true
618
- }
619
- },
620
- computed: {
621
- rules() {
622
- return {
623
- customLimitTime: [
624
- {
625
- required: this.enableCustomLimitTimeSetting,
626
- message: this.showCustomLimitTimeText
627
- ? '请输入限时办理天数'
628
- : '请选择限时办理天数',
629
- trigger: 'blur'
630
- },
631
- {
632
- required: this.enableCustomLimitTimeSetting,
633
- validator: this.checkCustomLimitTime,
634
- trigger: 'blur'
635
- }
636
- ]
637
- };
638
- },
639
- types() {
640
- if (this.isCdjxjTaskHandle == 'true') {
641
- return ['employee', 'enterprise', 'department'];
642
- } else {
643
- return ['employee', 'enterprise', 'department', 'persongroup'];
644
- }
645
- }
646
- },
647
- created() {
648
- this.getUserInfo();
649
- },
650
- mounted() {
651
- if (!this.urgencyLevel) {
652
- this.getNodeType();
653
- }
654
- this.getStartFlow(this.processDefinitionId);
655
- if (this.copyHistory) {
656
- this.nextNode.newOpinion = this.opinion;
657
- } else if (this.formType != 'readTransfer') {
658
- this.newOpinion = this.opinion;
659
- }
660
- },
661
- methods: {
662
- limitTimevalidate() {
663
- let validSate = true;
664
- this.$refs.nextNode.validate((valid) => {
665
- if (valid) {
666
- validSate = true;
667
- } else {
668
- validSate = false;
669
- }
670
- });
671
- return validSate;
672
- },
673
- checkCustomLimitTime(rule, value, callback) {
674
- if (!Number(value) || value.indexOf('.') != -1 || Number(value) < 0) {
675
- callback(new Error('请输入正确的天数'));
676
- this.nextNode.customLimitTime = '';
677
- } else {
678
- callback();
679
- }
680
- },
681
- handleChange() {
682
- this.isChangeMessage = true;
683
- },
684
- changeCustomLimitTime(val) {
685
- if (!Number(val) || val.indexOf('.') != -1 || Number(val) < 0) {
686
- this.$message.warning('请输入正确的天数');
687
- this.nextNode.customLimitTime = '';
688
- }
689
- },
690
- getUserInfo() {
691
- let mainConfig = util.getStorage('mainConfig');
692
- if (mainConfig) {
693
- this.userModel = JSON.parse(mainConfig).userModel;
694
- } else {
695
- util
696
- .ajax({ url: loginUserInfo })
697
- .then((res) => {
698
- const { status, data } = res;
699
- if (status == 'success') {
700
- this.userModel = data;
701
- } else {
702
- let msg = res.msg || '系统错误,请联系管理员!';
703
- this.$message.error(msg);
704
- }
705
- })
706
- .catch((err) => {
707
- if (err.message && err.message !== 'canceled') {
708
- this.$message.error(err.message);
709
- }
710
- });
711
- }
712
- },
713
- getIsShowNextUser(val) {
714
- if (
715
- val == 7 ||
716
- val == 8 ||
717
- val == 9 ||
718
- val == 10 ||
719
- val == 11 ||
720
- val == 12
721
- ) {
722
- this.isShowNextUser = false;
723
- //设置办理角色
724
- // $("#orgRoleCode").val(handleRoleId);
725
- if (val == 7 || val == 8) {
726
- this.nextUserTypes = ['department'];
727
- this.nextUserTabs = {
728
- department: {
729
- param: {
730
- filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId
731
- }
732
- }
733
- };
734
- this.multiple = true;
735
- } else if (val == 9 || val == 10) {
736
- this.nextUserTypes = ['enterprise'];
737
- this.nextUserTabs = { enterprise: { param: { filid: 'other' } } };
738
- this.multiple = true;
739
- } else if (val == 11 || val == 12) {
740
- this.nextUserTypes = ['department', 'enterprise'];
741
- this.nextUserTabs = {
742
- enterprise: { param: { filid: 'other' } },
743
- department: {
744
- param: {
745
- filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId
746
- }
747
- }
748
- };
749
- this.multiple = true;
750
- }
751
- }
752
- if (val == 7 || val == 9 || val == 11) {
753
- this.multiple = false;
754
- }
755
- },
756
- // 分阅是否多选
757
- isReadMultiple(nextReadUserSelectType) {
758
- if (nextReadUserSelectType == 1) {
759
- this.readMultiple = false;
760
- } else if (nextReadUserSelectType == 2) {
761
- this.readMultiple = true;
762
- } else if (nextReadUserSelectType == 3) {
763
- this.readMultiple = false;
764
- } else if (nextReadUserSelectType == 4) {
765
- this.readMultiple = true;
766
- } else if (nextReadUserSelectType == 5) {
767
- this.readMultiple = false;
768
- } else if (nextReadUserSelectType == 6) {
769
- this.readMultiple = true;
770
- }
771
- },
772
- changeSelectReadUser(val, type) {
773
- const { nextUser, mixList } = val;
774
- this.nextNode[type] = nextUser;
775
- if (type === 'presetReadUserId') {
776
- this.mixPresetList = mixList;
777
- } else {
778
- this.mixReadList = mixList;
779
- }
780
- },
781
- selecNext(val) {
782
- this.nextNode.nextUser = [];
783
- this.options = [];
784
- this.selectUserList = [];
785
- this.radioList = [];
786
- if (this.showBtn) {
787
- this.loading = true;
788
- } else {
789
- this.allLoading = util.loading(this.$loading, '加载中...');
790
- }
791
- this.nextNode.nodeInfo = this.operationList[val].list;
792
- if (this.nextNode.nodeInfo.length > 0) {
793
- this.nextNode.nextNode =
794
- this.defaultNextNode || this.nextNode.nodeInfo[0].nodeId;
795
- }
796
- this.getNodeInfos();
797
- },
798
- changeSelectUser(val, type) {
799
- const { nextUser, options, mixList } = val;
800
- this.nextNode[type] = nextUser;
801
- this.mixOrgIdList = mixList;
802
- },
803
- getNodeType() {
804
- util
805
- .ajax({
806
- url: findCodeValues,
807
- params: {
808
- ccCode: 'notification_type',
809
- userId: util.getStorage('userId')
810
- }
811
- })
812
- .then((res) => {
813
- const { status, data } = res;
814
- if (status === 'success') {
815
- this.nextNode.noticeList = data;
816
- }
817
- })
818
- .catch((err) => {
819
- if (this.showBtn) {
820
- this.loading = false;
821
- } else {
822
- this.allLoading.close();
823
- }
824
- if (err.message && err.message !== 'canceled') {
825
- this.$message.error(err.message);
826
- }
827
- });
828
- },
829
- //获取通知信息
830
- getMessage() {
831
- let params = {
832
- processDefinitionId: this.processDefinitionId,
833
- nodeId: this.nextNode.nextNode,
834
- businessId: this.id
835
- };
836
- if (!this.showBtn) {
837
- params.openMode = 'samepage';
838
- }
839
- util
840
- .ajax({ url: getNotificationMsg, params, methods: 'post' })
841
- .then((res) => {
842
- if (res.status === 'success') {
843
- if (!this.showBtn) {
844
- this.oldMessage = res.message;
845
- this.nextNode.noticeInfo = res.message.replace(
846
- '{title}',
847
- this.formTitle
848
- );
849
- } else {
850
- this.nextNode.noticeInfo = res.message;
851
- }
852
- }
853
- })
854
- .catch((err) => {
855
- if (this.showBtn) {
856
- this.loading = false;
857
- } else {
858
- this.allLoading.close();
859
- }
860
- if (err.message && err.message !== 'canceled') {
861
- this.$message.error(err.message);
862
- }
863
- });
864
- },
865
- // 提交表单
866
- subProcess(formName) {
867
- this.saveProcess(formName);
868
- },
869
- saveProcess(formName) {
870
- this.$refs[formName].validate((valid) => {
871
- if (valid) {
872
- const {
873
- nextNode,
874
- nextUser,
875
- noticeInfo,
876
- noticeType,
877
- handleExplain,
878
- presetReadUserId,
879
- nextReadUserId,
880
- nextOrgId,
881
- newOpinion,
882
- customLimitTime
883
- } = this.nextNode;
884
- // if (noticeType.length === 0) {
885
- // return this.$message.warning('请选择通知方式');
886
- // }
887
- if (this.isShowNextUser) {
888
- if (nextUser == '' || (this.multiple && nextUser.length == 0)) {
889
- return this.$message.warning('请选择下步办理人');
890
- }
891
- } else {
892
- if (nextOrgId == '' || (this.multiple && nextOrgId.length == 0)) {
893
- return this.$message.warning('请选择办理对象');
894
- }
895
- }
896
- if (this.showBtn) {
897
- this.loading = true;
898
- } else {
899
- this.allLoading = util.loading(this.$loading, '加载中...');
900
- }
901
- let newNextUser = [];
902
- if (this.multiple) {
903
- nextUser && nextUser.map((item) => newNextUser.push(item));
904
- }
905
- let newNoticeType = '';
906
- if (noticeType) {
907
- newNoticeType = noticeType.join(',');
908
- }
909
- let params = {
910
- processDefinitionId: this.processDefinitionId,
911
- nextUserId: this.multiple ? newNextUser.join(',') : nextUser,
912
- nextNodeId: nextNode,
913
- businessId: this.businessId,
914
- notificationType: newNoticeType,
915
- userId: util.getStorage('userId'),
916
- notificationMsg: noticeInfo,
917
- customPresetUserJson: JSON.stringify(this.presetList),
918
- presetUserJson: JSON.stringify(this.presetUserJson),
919
- nextReadUserId: this.readMultiple
920
- ? this.mixReadList && this.mixReadList.join('|')
921
- : nextReadUserId,
922
- nextOrgId: !this.isShowNextUser
923
- ? this.multiple
924
- ? this.mixOrgIdList && this.mixOrgIdList.join('|')
925
- : nextOrgId
926
- : '',
927
- handleExplain: handleExplain,
928
- presetReadUserId:
929
- this.mixPresetList && this.mixPresetList.length > 0
930
- ? this.mixPresetList.join('|')
931
- : presetReadUserId.join(','),
932
- opinion: this.newOpinion || newOpinion
933
- };
934
- if (this.enableCustomLimitTimeSetting) {
935
- params.customLimitTime = customLimitTime;
936
- if (!customLimitTime) {
937
- this.$message.warning('请选择或输入限时办理的天数');
938
- this.nextNode.customLimitTime = '';
939
- return;
940
- } else if (
941
- !Number(customLimitTime) ||
942
- val.indexOf('.') != -1 ||
943
- Number(customLimitTime) < 0
944
- ) {
945
- this.$message.warning('请输入正确的天数');
946
- this.nextNode.customLimitTime = '';
947
- return;
948
- }
949
- }
950
- if (this.activeNames != '1') delete params.customPresetUserJson;
951
- if (this.isFreeStartFlow || this.formType === 'readTransfer') {
952
- let newParm = {};
953
- newParm.copyHistory = this.copyHistory === 'needCopyPendedHistory';
954
- newParm.startFlowParamJson = params;
955
- // newParm.startFlowParamJson.businessId = this.id; //this.id
956
- newParm.startFlowParamJson.taskExamineParam = {
957
- startFlowFirstNodeName: this.taskExamineParam
958
- };
959
- newParm.startFlowParamJson = JSON.stringify(
960
- newParm.startFlowParamJson
961
- );
962
- for (let key in this.taskParams) {
963
- if (Array.isArray(this.taskParams[key])) {
964
- this.taskParams[key] =
965
- this.taskParams[key].length > 0
966
- ? this.taskParams[key].join(',')
967
- : '';
968
- }
969
- }
970
-
971
- newParm.submitTaskParamJson = JSON.stringify(this.taskParams);
972
- if (this.formType == 'readTransfer') {
973
- newParm.readTransferHandleStartFlowParamJson =
974
- JSON.stringify(params);
975
- newParm.taskReadEndParamJson = JSON.stringify(this.taskParams);
976
- delete newParm.copyHistory;
977
- delete newParm.startFlowParamJson;
978
- delete newParm.submitTaskParamJson;
979
- }
980
- params = newParm;
981
- }
982
- if (this.copyHistory && !this.isFreeStartFlow) {
983
- params.pendingId = this.pendingId;
984
- delete params.businessId;
985
- }
986
- util
987
- .ajax({
988
- url: this.isFreeStartFlow
989
- ? freeStartFlowWithSubmitTask
990
- : this.formType == 'readTransfer'
991
- ? startReadTransferHandleFlowWithTaskReadEnd
992
- : this.copyHistory
993
- ? freeStartFlow
994
- : register,
995
- method: 'post',
996
- data: params
997
- })
998
- .then((res) => {
999
- const { status, message } = res;
1000
- if (this.showBtn) {
1001
- this.loading = false;
1002
- } else {
1003
- this.allLoading.close();
1004
- }
1005
- if (status === 'success' || res.rCode == 0) {
1006
- this.quit(true);
1007
- this.simpleTips && this.$message.success('操作成功');
1008
- } else {
1009
- this.$message.error(message || '系统错误,请联系管理员!');
1010
- }
1011
- })
1012
- .catch((err) => {
1013
- if (this.showBtn) {
1014
- this.loading = false;
1015
- } else {
1016
- this.allLoading.close();
1017
- }
1018
- if (err.message && err.message !== 'canceled') {
1019
- this.$message.error(err.message);
1020
- }
1021
- });
1022
- } else {
1023
- return false;
1024
- }
1025
- });
1026
- },
1027
- getNodeInfos(nodeId, index) {
1028
- let params = {
1029
- processDefinitionId: this.processDefinitionId,
1030
- nextNodeId: nodeId ? nodeId : this.nextNode.nextNode,
1031
- businessId: this.id,
1032
- userId: util.getStorage('userId')
1033
- };
1034
- util
1035
- .ajax({ url: getNodeInfo, params })
1036
- .then((res) => {
1037
- const {
1038
- status,
1039
- message,
1040
- data: {
1041
- nextUserList,
1042
- nodeExtAttr,
1043
- countersignaturetypeText,
1044
- countersignaturetypeCode
1045
- }
1046
- } = res;
1047
- if (this.showBtn) {
1048
- this.loading = false;
1049
- } else {
1050
- this.allLoading.close();
1051
- }
1052
- if (status === 'success') {
1053
- this.nextNode.userInfo = nextUserList;
1054
- this.countersignaturetypeCode = countersignaturetypeCode;
1055
- this.nextNode.countersignaturetypeText = countersignaturetypeText;
1056
- this.enableCustomLimitTimeSetting =
1057
- nodeExtAttr.enableCustomLimitTimeSetting == 1;
1058
- this.isTaskread = nodeExtAttr.isTaskread;
1059
- this.isHandleExplain = nodeExtAttr.isHandleExplain;
1060
- this.isCustomUser = nodeExtAttr.isCustomUser; //是否展示选人组件按钮
1061
- this.presetEdit = nodeExtAttr.presetEdit; //是否展示备选人
1062
- this.isDefSelectedObj = nodeExtAttr.isDefSelectedObj; //是否默认选中
1063
- if (
1064
- nodeExtAttr.userSelectionType == 7 ||
1065
- nodeExtAttr.userSelectionType == 8 ||
1066
- nodeExtAttr.userSelectionType == 9 ||
1067
- nodeExtAttr.userSelectionType == 10 ||
1068
- nodeExtAttr.userSelectionType == 11 ||
1069
- nodeExtAttr.userSelectionType == 12
1070
- ) {
1071
- this.getIsShowNextUser(
1072
- nodeExtAttr && nodeExtAttr.userSelectionType
1073
- );
1074
- } else {
1075
- const { multiple, params } = this.isMultiple(
1076
- nodeExtAttr.userSelectionType
1077
- );
1078
- this.multiple = multiple;
1079
- this.params = params;
1080
- }
1081
- // this.isReadMultiple(nodeExtAttr.userSelectionType);
1082
-
1083
- nextUserList.map((item) => {
1084
- if (
1085
- this.multiple &&
1086
- nodeExtAttr.isDefSelectedObj == 1 &&
1087
- nextUserList !== undefined
1088
- ) {
1089
- this.nextNode.nextUser.push(item.userId);
1090
- this.selectUserList.push({
1091
- showname: item.username,
1092
- showid: item.userId
1093
- });
1094
- }
1095
-
1096
- this.options.push({
1097
- showname: item.username,
1098
- showid: item.userId
1099
- });
1100
- });
1101
- if (this.multiple) {
1102
- this.nextNode.nextReadUserId = [];
1103
- } else {
1104
- this.nextNode.nextReadUserId = '';
1105
- }
1106
- if (
1107
- nextUserList.length > 0 &&
1108
- nodeExtAttr.isDefSelectedObj == 1 &&
1109
- !this.multiple
1110
- ) {
1111
- this.nextNode.nextUser = nextUserList[0].userId;
1112
- this.selectUserList.push({
1113
- showname: nextUserList[0].username,
1114
- showid: nextUserList[0].userId
1115
- });
1116
- }
1117
- this.radioList = this.options;
1118
- } else {
1119
- this.$message.error(message || '系统错误,请联系管理员!');
1120
- }
1121
- nodeId && this.$refs.selectUser[index].changeInfo();
1122
- })
1123
- .catch((err) => {
1124
- if (this.showBtn) {
1125
- this.loading = false;
1126
- } else {
1127
- this.allLoading.close();
1128
- }
1129
- if (err.message && err.message !== 'canceled') {
1130
- this.$message.error(err.message);
1131
- }
1132
- });
1133
- },
1134
- changeSel(val) {
1135
- this.nextNode.nextUser = [];
1136
- this.options = [];
1137
- this.selectUserList = [];
1138
- this.radioList = [];
1139
- if (this.showBtn) {
1140
- this.loading = true;
1141
- } else {
1142
- this.allLoading = util.loading(this.$loading, '加载中...');
1143
- }
1144
- this.getNodeInfos();
1145
- },
1146
- // 取消
1147
- quit(val) {
1148
- if (val === true) return this.$emit('cancel', val);
1149
- this.$emit('cancel', false);
1150
- },
1151
- getFind() {
1152
- util
1153
- .ajax({
1154
- url: findSysCodes
1155
- })
1156
- .then((res) => {
1157
- const { status, message } = res;
1158
- if (status === 'success') {
1159
- this.nextNode.noticeType = message.split(',');
1160
- let arr = [];
1161
- this.nextNode.noticeList.map((item) => {
1162
- this.nextNode.noticeType.map((x) => {
1163
- if (x == item.cciValue) {
1164
- arr.push(x);
1165
- }
1166
- });
1167
- });
1168
- this.nextNode.noticeType = arr;
1169
- } else {
1170
- this.$message.error(message || '系统错误,请联系管理员!');
1171
- }
1172
- })
1173
- .catch((err) => {
1174
- if (this.showBtn) {
1175
- this.loading = false;
1176
- } else {
1177
- this.allLoading.close();
1178
- }
1179
- if (err.message && err.message !== 'canceled') {
1180
- this.$message.error(err.message);
1181
- }
1182
- });
1183
- },
1184
- /**
1185
- * isMultiple
1186
- * @desc:是否多选
1187
- * @author liufan
1188
- * @date 2022年9月13日
1189
- **/
1190
- isMultiple(val, choiceOrgId, choiceDeptId, pOrgId) {
1191
- let multiple = false;
1192
- let params = {};
1193
- if (val == 2 || val == 4 || val == 6 || val == 16 || val == 12) {
1194
- multiple = true;
1195
- }
1196
- if (val == 1 || val == 2 || val == 5) {
1197
- params.filid = this.userModel.orgId;
1198
- params.only_filid = true;
1199
- if (choiceOrgId) {
1200
- params.filid = choiceOrgId;
1201
- }
1202
- }
1203
- if (val == 5 || val == 6) {
1204
- params.filid = this.userModel.orgId;
1205
- params.deptid = this.userModel.orgId;
1206
- if (choiceDeptId) {
1207
- params.deptid = choiceDeptId;
1208
- }
1209
- if (choiceOrgId) {
1210
- params.filid = choiceOrgId;
1211
- }
1212
- }
1213
- if (val == 15 || val == 16) {
1214
- params.filid = this.userModel.orgId;
1215
- if (pOrgId) {
1216
- params.filid = pOrgId;
1217
- }
1218
- }
1219
- return { multiple, params };
1220
- },
1221
- getStartFlow(processId) {
1222
- if (!processId) {
1223
- return false;
1224
- }
1225
- if (this.showBtn) {
1226
- this.loading = true;
1227
- } else {
1228
- this.allLoading = util.loading(this.$loading, '加载中...');
1229
- }
1230
- this.businessId = this.id;
1231
- let params = {
1232
- processDefinitionId: processId, // processId || this.processDefinitionId,
1233
- userId: util.getStorage('userId'),
1234
- businessId: this.businessId
1235
- };
1236
- // 获取节点
1237
- util
1238
- .ajax({ url: toStartFlow, params })
1239
- .then((res) => {
1240
- //pc接口返回数据处理
1241
- const { status, message, data } = res;
1242
- if (status == 'success') {
1243
- data.nodeInfoMap.nodeExtAttr.submitTipsMsg &&
1244
- this.$confirm(
1245
- data.nodeInfoMap.nodeExtAttr.submitTipsMsg,
1246
- '提示',
1247
- {
1248
- confirmButtonText: '确定',
1249
- cancelButtonText: '取消',
1250
- type: 'warning'
1251
- }
1252
- )
1253
- .then(() => {})
1254
- .catch(() => {
1255
- this.quit();
1256
- });
1257
- data.nextNodeCheckType &&
1258
- (this.nextNodeCheckType = data.nextNodeCheckType);
1259
- data.nextOperateCheckType &&
1260
- (this.nextOperateCheckType = data.nextOperateCheckType);
1261
- this.customPresetHintMessage = data.customPresetHintMessage;
1262
- this.readOnlyNotificationType = data.readOnlyNotificationType;
1263
- this.notificationMessageReadOnly =
1264
- data.notificationMessageReadOnly == 'true';
1265
- this.nextNode.nodeInfo = data.nextNodeList;
1266
- this.nextNode.nextNode = data.nextNodeList[0].nodeId;
1267
- this.isPreset = data.isPreset;
1268
- this.isHideDefaultOperation =
1269
- data.nodeInfoMap.nodeExtAttr.isHideDefaultOperation;
1270
- this.defaultNextNode = data.nodeInfoMap.nodeExtAttr.defaultNextNode;
1271
- this.isChooseNextNode =
1272
- data.nodeInfoMap.nodeExtAttr.isChooseNextNode;
1273
- this.isCdjxjTaskHandle = data.isCdjxjTaskHandle;
1274
- if (this.isChooseNextNode == 1) {
1275
- this.operationList = [
1276
- { key: 0, value: '默认', list: [] },
1277
- { key: 1, value: '自定义', list: [] }
1278
- ];
1279
- let arr = [];
1280
- for (let key in data.taskNodeMap) {
1281
- arr.push({ nodeName: data.taskNodeMap[key], nodeId: key });
1282
- }
1283
- this.operationList[0].list = data.nextNodeList;
1284
- this.operationList[1].list = arr;
1285
- if (this.isHideDefaultOperation != 1) {
1286
- this.nextNode.nextOperate = 0;
1287
- this.nextNode.nodeInfo = this.operationList[0].list;
1288
- if (this.nextNode.nodeInfo.length > 0) {
1289
- let defaultNodeData = data.nextNodeList.filter(
1290
- (x) => x.nodeId == this.defaultNextNode
1291
- );
1292
- this.nextNode.nextNode =
1293
- defaultNodeData.length > 0
1294
- ? this.defaultNextNode
1295
- : data.nextNodeList[0].nodeId;
1296
- }
1297
- } else if (
1298
- data.nodeInfoMap.nodeExtAttr.defaultNextOperate == 1 ||
1299
- data.nodeInfoMap.nodeExtAttr.isHideDefaultOperation == 1
1300
- ) {
1301
- // this.nextNode.nodeInfo = data.nextNodeList
1302
- this.nextNode.nextOperate = 1;
1303
- this.nextNode.nodeInfo = this.operationList[1].list;
1304
- if (this.nextNode.nodeInfo.length > 0) {
1305
- let defaultNodeData = data.nextNodeList.filter(
1306
- (x) => x.nodeId == this.defaultNextNode
1307
- );
1308
- this.nextNode.nextNode =
1309
- defaultNodeData.length > 0
1310
- ? this.defaultNextNode
1311
- : data.nextNodeList[0].nodeId;
1312
- }
1313
- }
1314
- }
1315
- this.isCustomPreset = data.isCustomPreset;
1316
- this.presetTaskNodeKeyStr = data.presetTaskNodeKeyStr;
1317
- this.presetTaskNodeMap = data.presetTaskNodeMap;
1318
- this.isSinglePage = data.taskExamine.isSinglePage;
1319
- this.isSinglePage &&
1320
- (this.nextNode.opinion = data.taskExamine.opinion);
1321
- // this.nextNode.noticeInfo = data.taskExamine.notificationMsg;
1322
- this.nextNode.nodeName = data.taskExamine.nodeName;
1323
- this.canPresetRead = data.canPresetRead;
1324
- if (data.canPresetRead) {
1325
- let ids =
1326
- data.nodeInfoMap.nodeExtAttr.presetReadCandinateIds.split(',');
1327
- let names =
1328
- data.nodeInfoMap.nodeExtAttr.presetReadCandinateNames.split(
1329
- ','
1330
- );
1331
- ids.map((item, index) => {
1332
- this.presetReadUserId.push({
1333
- showid: item,
1334
- showname: names[index]
1335
- });
1336
- this.selectPresetUserList.push({
1337
- showid: item,
1338
- showname: names[index]
1339
- });
1340
- this.nextNode.presetReadUserId.push(item);
1341
- });
1342
- }
1343
- this.getNodeInfos();
1344
- // this.getPresetFlowInfo();
1345
- this.isCustomPreset &&
1346
- this.$refs.customPreset.getPresetFlowInfo(this.nextNode.nextNode);
1347
- this.getFind();
1348
- this.getMessage();
1349
- } else {
1350
- this.$message.error(message || '系统错误,请联系管理员!');
1351
- }
1352
- })
1353
- .catch((err) => {
1354
- if (this.showBtn) {
1355
- this.loading = false;
1356
- } else {
1357
- this.allLoading.close();
1358
- }
1359
- if (err.message && err.message !== 'canceled') {
1360
- this.$message.error(err.message);
1361
- }
1362
- });
1363
- }
1364
- }
1365
- };
1366
- </script>
1
+ <template>
2
+ <div
3
+ v-loading="loading"
4
+ class="es-flow-form"
5
+ element-loading-text="加载中..."
6
+ element-loading-spinner="el-icon-loading"
7
+ element-loading-background="rgba(255, 255,255, 0.8)"
8
+ >
9
+ <el-form
10
+ ref="nextNode"
11
+ :model="nextNode"
12
+ class="demo-dynamic"
13
+ label-width="100px"
14
+ :rules="rules"
15
+ :label-position="labelPosition"
16
+ >
17
+ <div
18
+ :style="`height:${
19
+ showBtn ? '430px' : 'auto'
20
+ }; overflow-y: auto; margin-bottom: 10px`"
21
+ >
22
+ <el-form-item
23
+ v-show="showBtn"
24
+ prop="nodeName"
25
+ label="当前节点"
26
+ :rules="[
27
+ { required: true, message: `请选择下步节点`, trigger: 'blur' }
28
+ ]"
29
+ >
30
+ <el-input v-model="nextNode.nodeName" disabled />
31
+ </el-form-item>
32
+ <el-form-item
33
+ v-if="isSinglePage || copyHistory || formType == 'readTransfer'"
34
+ prop="newOpinion"
35
+ :label="
36
+ copyHistory || formType == 'readTransfer' ? '填写意见' : '意见'
37
+ "
38
+ >
39
+ <CommonOpinions
40
+ class="opinions"
41
+ :opinion="nextNode.newOpinion"
42
+ :rows="copyHistory || formType == 'readTransfer' ? 2 : 5"
43
+ @change="(val) => (nextNode.newOpinion = val)"
44
+ />
45
+ </el-form-item>
46
+ <el-form-item
47
+ prop="nextOperate"
48
+ label="下步操作"
49
+ v-if="isChooseNextNode == 1"
50
+ :rules="[
51
+ { required: true, message: `请选择下步操作`, trigger: 'blur' }
52
+ ]"
53
+ >
54
+ <el-select
55
+ v-if="nextOperateCheckType == 'select'"
56
+ v-model="nextNode.nextOperate"
57
+ :placeholder="`请选择下步操作`"
58
+ @change="selecNext"
59
+ >
60
+ <el-option
61
+ v-for="items in operationList"
62
+ :key="items.key"
63
+ :label="items.value"
64
+ :value="items.key"
65
+ ></el-option>
66
+ </el-select>
67
+ <es-radio-group
68
+ v-else-if="nextOperateCheckType == 'radio'"
69
+ v-model="nextNode.nextOperate"
70
+ :data="operationList"
71
+ @change="selecNext($event, true)"
72
+ value-key="key"
73
+ label-key="value"
74
+ ></es-radio-group>
75
+ </el-form-item>
76
+ <el-form-item
77
+ prop="nextNode"
78
+ label="下步节点"
79
+ :rules="[
80
+ { required: false, message: `请选择下步节点`, trigger: 'blur' }
81
+ ]"
82
+ >
83
+ <el-select
84
+ v-if="nextNodeCheckType == 'select'"
85
+ v-model="nextNode.nextNode"
86
+ :placeholder="`请选择下步节点`"
87
+ @change="changeSel"
88
+ >
89
+ <el-option
90
+ v-for="items in nextNode.nodeInfo"
91
+ :key="items.id"
92
+ :label="items.nodeName"
93
+ :value="items.nodeId"
94
+ ></el-option>
95
+ </el-select>
96
+ <es-radio-group
97
+ v-else-if="nextNodeCheckType == 'radio'"
98
+ v-model="nextNode.nextNode"
99
+ :data="nextNode.nodeInfo"
100
+ @change="changeSel"
101
+ value-key="nodeId"
102
+ label-key="nodeName"
103
+ ></es-radio-group>
104
+ </el-form-item>
105
+ <el-form-item
106
+ v-if="countersignaturetypeCode != 0"
107
+ prop="countersignaturetypeText"
108
+ label="处理方式"
109
+ >
110
+ <el-input
111
+ v-model="nextNode.countersignaturetypeText"
112
+ placeholder="请输入内容"
113
+ disabled
114
+ />
115
+ </el-form-item>
116
+ <!-- <el-form-item
117
+ prop="nextNode"
118
+ label="下步办理人"
119
+ v-if="isShowNextUser"
120
+ :rules="[
121
+ { required: true, message: `请选择下步办理人`, trigger: 'blur' }
122
+ ]"
123
+ >
124
+ <SelectUser
125
+ :nextUser="nextNode.nextUser"
126
+ :radioList="radioList"
127
+ :multiple="multiple"
128
+ :isCustomUser="isCustomUser"
129
+ :options="options"
130
+ :presetEdit="presetEdit"
131
+ :isDefSelectedObj="isDefSelectedObj"
132
+ :selectUserList="selectUserList"
133
+ @change="changeSelectUser"
134
+ :types="nextUserTypes"
135
+ :params="params"
136
+ />
137
+ </el-form-item> -->
138
+ <el-form-item
139
+ :prop="isShowNextUser ? 'nextUser' : 'nextOrgId'"
140
+ :label="isShowNextUser ? '下步办理人' : '办理对象'"
141
+ >
142
+ <SelectUser
143
+ :nextUser="isShowNextUser ? nextNode.nextUser : nextNode.nextOrgId"
144
+ :radioList="radioList"
145
+ :multiple="multiple"
146
+ :isCustomUser="!isShowNextUser ? 1 : isCustomUser"
147
+ :isCurrentNodeForbiddenChangeCandidate="isCurrentNodeForbiddenChangeCandidate"
148
+ :options="options"
149
+ :presetEdit="presetEdit"
150
+ :mix="multiple"
151
+ :isDefSelectedObj="isDefSelectedObj"
152
+ :selectUserList="selectUserList"
153
+ @change="
154
+ changeSelectUser(
155
+ $event,
156
+ isShowNextUser ? 'nextUser' : 'nextOrgId'
157
+ )
158
+ "
159
+ :types="
160
+ !isShowNextUser
161
+ ? nextUserTypes
162
+ : isCdjxjTaskHandle != 'true'
163
+ ? ['employee', 'persongroup']
164
+ : ['employee']
165
+ "
166
+ :params="isShowNextUser ? params : {}"
167
+ :tabs="nextUserTabs"
168
+ />
169
+ </el-form-item>
170
+ <el-form-item
171
+ prop="nextReadUserId"
172
+ v-if="isTaskread == 1"
173
+ label="
174
+ 分阅用户
175
+ "
176
+ >
177
+ <SelectUser
178
+ :nextUser="nextNode.nextReadUserId"
179
+ :multiple="true"
180
+ :selectUserList="selectReadUserList"
181
+ :options="userOptions"
182
+ title="分阅用户"
183
+ :mix="true"
184
+ :types="types"
185
+ @change="changeSelectReadUser($event, 'nextReadUserId')"
186
+ :tabs="tabs"
187
+ />
188
+ </el-form-item>
189
+ <el-form-item
190
+ prop="presetReadUserId"
191
+ v-if="canPresetRead"
192
+ label="
193
+ 自动分阅
194
+ "
195
+ >
196
+ <SelectUser
197
+ :nextUser="nextNode.presetReadUserId"
198
+ :multiple="true"
199
+ :selectUserList="selectPresetUserList"
200
+ :options="presetOptions"
201
+ title="分阅用户"
202
+ :radioList="presetReadUserId"
203
+ :presetEdit="1"
204
+ :mix="true"
205
+ :types="types"
206
+ @change="changeSelectReadUser($event, 'presetReadUserId')"
207
+ :tabs="tabs"
208
+ />
209
+ </el-form-item>
210
+ <el-form-item
211
+ v-if="enableCustomLimitTimeSetting"
212
+ prop="customLimitTime"
213
+ label="限时办理"
214
+ :rules="[
215
+ {
216
+ required: enableCustomLimitTimeSetting,
217
+ message: showCustomLimitTimeText
218
+ ? '请输入限时办理天数'
219
+ : '请选择限时办理天数',
220
+ trigger: 'blur'
221
+ },
222
+ {
223
+ required: enableCustomLimitTimeSetting,
224
+ validator: checkCustomLimitTime,
225
+ trigger: 'blur'
226
+ }
227
+ ]"
228
+ >
229
+ <el-input
230
+ v-model="nextNode.customLimitTime"
231
+ placeholder="请输入限时办理的天数"
232
+ class="input-with-select custom-limit-time"
233
+ @change="changeCustomLimitTime"
234
+ >
235
+ <es-select
236
+ v-if="!showCustomLimitTimeText"
237
+ v-model="nextNode.customLimitTime"
238
+ placeholder="请选择"
239
+ slot="prepend"
240
+ sysCode="bpm_custom_limit_time"
241
+ ></es-select>
242
+ <es-button
243
+ type="primary"
244
+ slot="append"
245
+ @click="
246
+ () => {
247
+ nextNode.customLimitTime = '';
248
+ showCustomLimitTimeText = !showCustomLimitTimeText;
249
+ }
250
+ "
251
+ >切换{{
252
+ showCustomLimitTimeText ? '选择框' : '文本框'
253
+ }}</es-button
254
+ >
255
+ </el-input>
256
+ </el-form-item>
257
+ <el-form-item
258
+ v-if="isHandleExplain == 1"
259
+ prop="handleExplain"
260
+ label="办理说明"
261
+ >
262
+ <el-input
263
+ placeholder="请输入办理说明"
264
+ v-model="nextNode.handleExplain"
265
+ />
266
+ </el-form-item>
267
+ <el-form-item
268
+ prop="noticeType"
269
+ label="通知方式"
270
+ v-show="showBtn && nextNode.noticeList.length > 0"
271
+ >
272
+ <el-checkbox-group v-model="nextNode.noticeType">
273
+ <el-checkbox
274
+ v-for="item of nextNode.noticeList"
275
+ :key="item.cciValue"
276
+ :label="item.cciValue"
277
+ :disabled="
278
+ readOnlyNotificationType
279
+ ? readOnlyNotificationType.indexOf(item.cciValue) != -1
280
+ : false
281
+ "
282
+ >
283
+ {{ item.shortName }}
284
+ </el-checkbox>
285
+ </el-checkbox-group>
286
+ </el-form-item>
287
+ <el-form-item
288
+ v-show="nextNode.noticeType.length != 0 && showBtn"
289
+ prop="nextNode"
290
+ label="通知消息"
291
+ >
292
+ <es-input
293
+ style="
294
+ border-color: #ccc;
295
+ padding: 5px;
296
+ border-radius: 5px;
297
+ font-size: 13px;
298
+ "
299
+ type="textarea"
300
+ v-model="nextNode.noticeInfo"
301
+ :readonly="notificationMessageReadOnly"
302
+ />
303
+ </el-form-item>
304
+ <CustomPreset
305
+ v-show="isCustomPreset"
306
+ ref="customPreset"
307
+ @changeCustom="
308
+ (data) => {
309
+ presetList = data;
310
+ }
311
+ "
312
+ :customPresetHintMessage="customPresetHintMessage"
313
+ @changeActiveNames="(val) => (activeNames = val)"
314
+ @loadingEnd="loading = false"
315
+ @loadingStart="loading = true"
316
+ :nextNode="nextNode.nextNode"
317
+ :id="id"
318
+ :processDefinitionId="processDefinitionId"
319
+ />
320
+ <Preset
321
+ v-show="isPreset"
322
+ @changePreset="
323
+ (data) => {
324
+ presetUserJson = data;
325
+ }
326
+ "
327
+ @loadingEnd="loading = false"
328
+ @loadingStart="loading = true"
329
+ :customPresetHintMessage="customPresetHintMessage"
330
+ :nodeId="nextNode.nextNode"
331
+ :businessId="id"
332
+ :processDefinitionId="processDefinitionId"
333
+ :presetTaskNodeMap="presetTaskNodeMap"
334
+ :presetTaskNodeKeyStr="presetTaskNodeKeyStr"
335
+ />
336
+ </div>
337
+ <el-form-item style="margin-bottom: 0px" v-show="showBtn">
338
+ <div style="text-align: right">
339
+ <el-button
340
+ type="primary"
341
+ size="small"
342
+ @click="subProcess('nextNode')"
343
+ >
344
+ 确认
345
+ </el-button>
346
+ <el-button size="small" @click="quit"> 取消 </el-button>
347
+ </div>
348
+ </el-form-item>
349
+ </el-form>
350
+ <div
351
+ v-if="!showBtn && nextNode.noticeList.length > 0"
352
+ style="padding: 5px; background: #fff"
353
+ >
354
+ <div class="news" @click="showNews = !showNews">
355
+ <span class="news-item">消息通知</span>
356
+ <span :class="showNews ? 'show' : 'sj'"></span>
357
+ </div>
358
+ <div v-if="showNews" ref="messagebox" style="transition: 1s">
359
+ <el-checkbox-group v-model="nextNode.noticeType">
360
+ <el-checkbox
361
+ v-for="item of nextNode.noticeList"
362
+ :key="item.cciValue"
363
+ :label="item.cciValue"
364
+ :disabled="
365
+ readOnlyNotificationType
366
+ ? readOnlyNotificationType.indexOf(item.cciValue) != -1
367
+ : false
368
+ "
369
+ >
370
+ {{ item.shortName }}
371
+ </el-checkbox>
372
+ </el-checkbox-group>
373
+ <es-input
374
+ style="
375
+ border-color: #ccc;
376
+ padding: 5px;
377
+ border-radius: 5px;
378
+ font-size: 13px;
379
+ "
380
+ autosize
381
+ v-show="showNews"
382
+ type="textarea"
383
+ v-model="nextNode.noticeInfo"
384
+ @change="handleChange"
385
+ :readonly="notificationMessageReadOnly"
386
+ />
387
+ </div>
388
+ </div>
389
+ </div>
390
+ </template>
391
+
392
+ <script>
393
+ import {
394
+ toStartFlow,
395
+ getNodeInfo,
396
+ findSysCodes,
397
+ getNotificationMsg,
398
+ findCodeValues,
399
+ loginUserInfo,
400
+ register,
401
+ freeStartFlow,
402
+ freeStartFlowWithSubmitTask,
403
+ startReadTransferHandleFlowWithTaskReadEnd
404
+ } from 'eoss-ui/src/config/api';
405
+ import util from 'eoss-ui/src/utils/util';
406
+ import SelectUser from './selectUser.vue';
407
+ import CommonOpinions from './component/CommonOpinions.vue';
408
+ import CustomPreset from './component/CustomPreset.vue';
409
+ import Preset from './component/Preset.vue';
410
+ export default {
411
+ name: 'ProcessForm',
412
+
413
+ components: {
414
+ [Option.name]: Option,
415
+ [SelectUser.name]: SelectUser,
416
+ [CustomPreset.name]: CustomPreset,
417
+ [CommonOpinions.name]: CommonOpinions,
418
+ Preset
419
+ },
420
+ props: {
421
+ processDefinitionId: {
422
+ type: String,
423
+ default: ''
424
+ },
425
+ copyHistory: {
426
+ type: String,
427
+ default: ''
428
+ },
429
+ simpleTips: {
430
+ type: Boolean,
431
+ default: true
432
+ },
433
+ formType: {
434
+ type: String,
435
+ default: 'freeStart'
436
+ },
437
+ id: {
438
+ type: String,
439
+ default: ''
440
+ },
441
+ pendingId: {
442
+ type: String,
443
+ default: ''
444
+ },
445
+ opinion: {
446
+ type: String,
447
+ default: ''
448
+ },
449
+ isFreeStartFlow: {
450
+ type: Boolean,
451
+ default: false
452
+ },
453
+ taskParams: {
454
+ type: Object,
455
+ default: () => {}
456
+ },
457
+ taskExamineParam: {
458
+ type: String,
459
+ default: ''
460
+ },
461
+ labelPosition: {
462
+ type: String,
463
+ default: 'left'
464
+ },
465
+ formTitle: {
466
+ type: String,
467
+ default: ''
468
+ },
469
+ showBtn: { type: Boolean, default: true },
470
+ messageType: {
471
+ type: Array,
472
+ default: () => []
473
+ },
474
+ urgencyLevel: {
475
+ type: [Number, String],
476
+ default: ''
477
+ },
478
+ keyCount: {
479
+ type: [Number, String],
480
+ default: 0
481
+ }
482
+ },
483
+ data() {
484
+ return {
485
+ loading: false,
486
+ isCustomUser: 0,
487
+ isCurrentNodeForbiddenChangeCandidate:0,
488
+ allLoading: null,
489
+ selectUser: false,
490
+ multiple: false,
491
+ readMultiple: true,
492
+ customPresetHintMessage: '', //流程预设标题
493
+ nextNodeCheckType: 'select',
494
+ nextOperateCheckType: 'select',
495
+ showNews: false, // 是否展示通知信息
496
+ notificationMessageReadOnly: false,
497
+ isChangeMessage: false,
498
+ readOnlyNotificationType: '',
499
+ show: true,
500
+ enableCustomLimitTimeSetting: false,
501
+ radioList: [],
502
+ showCustomLimitTimeText: false,
503
+ activeNames: '',
504
+ selectUserList: [],
505
+ defaultNextNode: '',
506
+ presetUserJson: [],
507
+ businessId: '',
508
+ isTaskread: 0, //是否显示分阅用户
509
+ isHandleExplain: 0, //是否展示办理说明
510
+ options: [],
511
+ presetList: [],
512
+ presetReadUserId: [], //自动分阅
513
+ canPresetRead: false, //是否展示自动分阅
514
+ nextUserTypes: ['employee', 'persongroup'],
515
+ isCustomPreset: false, //是否展示预设节点
516
+ isPreset: false, //是否展示预设办理人
517
+ isSinglePage: false,
518
+ presetEdit: 0,
519
+ isDefSelectedObj: 0,
520
+ isChooseNextNode: 0,
521
+ isHideDefaultOperation: 0,
522
+ countersignaturetypeCode: 0,
523
+ presetTaskNodeKeyStr: '', //预设办理人顺序
524
+ presetTaskNodeMap: {}, //预设办理人
525
+ params: {
526
+ filid: 'all', //选择范围(my:本单位/ "" or all:全部)
527
+ selectmix: 'true1',
528
+ deptid: '' //指定部门(my:本部门)
529
+ },
530
+ newOpinion: '',
531
+ operationList: [],
532
+ tabs: {
533
+ employee: {
534
+ param: {
535
+ filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId,
536
+ name: '本单位用户'
537
+ }
538
+ },
539
+ department: {
540
+ param: {
541
+ filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId
542
+ }
543
+ }
544
+ },
545
+ userModel: {},
546
+ nextUserTabs: {},
547
+ selectPresetUserList: [],
548
+ presetOptions: [],
549
+ selectReadUserList: [],
550
+ userOptions: [],
551
+ mixReadList: [],
552
+ mixPresetList: [],
553
+ isCdjxjTaskHandle: '',
554
+ isShowNextUser: true,
555
+ oldMessage: '',
556
+ mixOrgIdList: [], //办理对象混选
557
+ nextNode: {
558
+ nodeName: '',
559
+ customLimitTime: '',
560
+ newOpinion: '',
561
+ countersignaturetypeText: '',
562
+ nextNode: '',
563
+ nextReadUserId: [],
564
+ nextOrgId: [],
565
+ noticeType: [],
566
+ nextOperate: '',
567
+ nextUser: [],
568
+ presetReadUserId: [], //自动分阅
569
+ noticeInfo: '',
570
+ nodeInfo: [],
571
+ userInfo: [],
572
+ handleExplain: '',
573
+ noticeList: [],
574
+ msgTypeCount: 0
575
+ }
576
+ };
577
+ },
578
+ watch: {
579
+ messageType: {
580
+ handler(val) {
581
+ if (this.urgencyLevel) {
582
+ this.nextNode.noticeList = val;
583
+ let arr = [];
584
+ this.nextNode.noticeList.map((item) => {
585
+ this.nextNode.noticeType.map((x) => {
586
+ if (x == item.cciValue) {
587
+ arr.push(x);
588
+ }
589
+ });
590
+ });
591
+ this.nextNode.noticeType = arr;
592
+ } else {
593
+ this.msgTypeCount++;
594
+ }
595
+ }
596
+ },
597
+ processDefinitionId(val) {
598
+ Object.assign(this.$data, this.$options.data());
599
+ this.getUserInfo();
600
+ this.getNodeType();
601
+ this.getStartFlow(val);
602
+ if (this.copyHistory) {
603
+ this.nextNode.newOpinion = this.opinion;
604
+ } else if (this.formType != 'readTransfer') {
605
+ this.newOpinion = this.opinion;
606
+ }
607
+ // this.getStartFlow(val);
608
+ },
609
+ opinion(val) {
610
+ this.newOpinion = this.opinion;
611
+ },
612
+ formTitle: {
613
+ handler(val) {
614
+ if (!this.showBtn && !this.isChangeMessage) {
615
+ this.nextNode.noticeInfo = this.oldMessage.replace('{title}', val);
616
+ }
617
+ },
618
+ deep: true,
619
+ immediate: true
620
+ }
621
+ },
622
+ computed: {
623
+ rules() {
624
+ return {
625
+ customLimitTime: [
626
+ {
627
+ required: this.enableCustomLimitTimeSetting,
628
+ message: this.showCustomLimitTimeText
629
+ ? '请输入限时办理天数'
630
+ : '请选择限时办理天数',
631
+ trigger: 'blur'
632
+ },
633
+ {
634
+ required: this.enableCustomLimitTimeSetting,
635
+ validator: this.checkCustomLimitTime,
636
+ trigger: 'blur'
637
+ }
638
+ ]
639
+ };
640
+ },
641
+ types() {
642
+ if (this.isCdjxjTaskHandle == 'true') {
643
+ return ['employee', 'enterprise', 'department'];
644
+ } else {
645
+ return ['employee', 'enterprise', 'department', 'persongroup'];
646
+ }
647
+ }
648
+ },
649
+ created() {
650
+ this.getUserInfo();
651
+ },
652
+ mounted() {
653
+ if (!this.urgencyLevel) {
654
+ this.getNodeType();
655
+ }
656
+ this.getStartFlow(this.processDefinitionId);
657
+ if (this.copyHistory) {
658
+ this.nextNode.newOpinion = this.opinion;
659
+ } else if (this.formType != 'readTransfer') {
660
+ this.newOpinion = this.opinion;
661
+ }
662
+ },
663
+ methods: {
664
+ limitTimevalidate() {
665
+ let validSate = true;
666
+ this.$refs.nextNode.validate((valid) => {
667
+ if (valid) {
668
+ validSate = true;
669
+ } else {
670
+ validSate = false;
671
+ }
672
+ });
673
+ return validSate;
674
+ },
675
+ checkCustomLimitTime(rule, value, callback) {
676
+ if (!Number(value) || value.indexOf('.') != -1 || Number(value) < 0) {
677
+ callback(new Error('请输入正确的天数'));
678
+ this.nextNode.customLimitTime = '';
679
+ } else {
680
+ callback();
681
+ }
682
+ },
683
+ handleChange() {
684
+ this.isChangeMessage = true;
685
+ },
686
+ changeCustomLimitTime(val) {
687
+ if (!Number(val) || val.indexOf('.') != -1 || Number(val) < 0) {
688
+ this.$message.warning('请输入正确的天数');
689
+ this.nextNode.customLimitTime = '';
690
+ }
691
+ },
692
+ getUserInfo() {
693
+ let mainConfig = util.getStorage('mainConfig');
694
+ if (mainConfig) {
695
+ this.userModel = JSON.parse(mainConfig).userModel;
696
+ } else {
697
+ util
698
+ .ajax({ url: loginUserInfo })
699
+ .then((res) => {
700
+ const { status, data } = res;
701
+ if (status == 'success') {
702
+ this.userModel = data;
703
+ } else {
704
+ let msg = res.msg || '系统错误,请联系管理员!';
705
+ this.$message.error(msg);
706
+ }
707
+ })
708
+ .catch((err) => {
709
+ if (err.message && err.message !== 'canceled') {
710
+ this.$message.error(err.message);
711
+ }
712
+ });
713
+ }
714
+ },
715
+ getIsShowNextUser(val) {
716
+ if (
717
+ val == 7 ||
718
+ val == 8 ||
719
+ val == 9 ||
720
+ val == 10 ||
721
+ val == 11 ||
722
+ val == 12
723
+ ) {
724
+ this.isShowNextUser = false;
725
+ //设置办理角色
726
+ // $("#orgRoleCode").val(handleRoleId);
727
+ if (val == 7 || val == 8) {
728
+ this.nextUserTypes = ['department'];
729
+ this.nextUserTabs = {
730
+ department: {
731
+ param: {
732
+ filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId
733
+ }
734
+ }
735
+ };
736
+ this.multiple = true;
737
+ } else if (val == 9 || val == 10) {
738
+ this.nextUserTypes = ['enterprise'];
739
+ this.nextUserTabs = { enterprise: { param: { filid: 'other' } } };
740
+ this.multiple = true;
741
+ } else if (val == 11 || val == 12) {
742
+ this.nextUserTypes = ['department', 'enterprise'];
743
+ this.nextUserTabs = {
744
+ enterprise: { param: { filid: 'other' } },
745
+ department: {
746
+ param: {
747
+ filid: JSON.parse(util.getStorage('mainConfig')).userModel.orgId
748
+ }
749
+ }
750
+ };
751
+ this.multiple = true;
752
+ }
753
+ }
754
+ if (val == 7 || val == 9 || val == 11) {
755
+ this.multiple = false;
756
+ }
757
+ },
758
+ // 分阅是否多选
759
+ isReadMultiple(nextReadUserSelectType) {
760
+ if (nextReadUserSelectType == 1) {
761
+ this.readMultiple = false;
762
+ } else if (nextReadUserSelectType == 2) {
763
+ this.readMultiple = true;
764
+ } else if (nextReadUserSelectType == 3) {
765
+ this.readMultiple = false;
766
+ } else if (nextReadUserSelectType == 4) {
767
+ this.readMultiple = true;
768
+ } else if (nextReadUserSelectType == 5) {
769
+ this.readMultiple = false;
770
+ } else if (nextReadUserSelectType == 6) {
771
+ this.readMultiple = true;
772
+ }
773
+ },
774
+ changeSelectReadUser(val, type) {
775
+ const { nextUser, mixList } = val;
776
+ this.nextNode[type] = nextUser;
777
+ if (type === 'presetReadUserId') {
778
+ this.mixPresetList = mixList;
779
+ } else {
780
+ this.mixReadList = mixList;
781
+ }
782
+ },
783
+ selecNext(val) {
784
+ this.nextNode.nextUser = [];
785
+ this.options = [];
786
+ this.selectUserList = [];
787
+ this.radioList = [];
788
+ if (this.showBtn) {
789
+ this.loading = true;
790
+ } else {
791
+ this.allLoading = util.loading(this.$loading, '加载中...');
792
+ }
793
+ this.nextNode.nodeInfo = this.operationList[val].list;
794
+ if (this.nextNode.nodeInfo.length > 0) {
795
+ this.nextNode.nextNode =
796
+ this.defaultNextNode || this.nextNode.nodeInfo[0].nodeId;
797
+ }
798
+ this.getNodeInfos();
799
+ },
800
+ changeSelectUser(val, type) {
801
+ const { nextUser, options, mixList } = val;
802
+ this.nextNode[type] = nextUser;
803
+ this.mixOrgIdList = mixList;
804
+ },
805
+ getNodeType() {
806
+ util
807
+ .ajax({
808
+ url: findCodeValues,
809
+ params: {
810
+ ccCode: 'notification_type',
811
+ userId: util.getStorage('userId')
812
+ }
813
+ })
814
+ .then((res) => {
815
+ const { status, data } = res;
816
+ if (status === 'success') {
817
+ this.nextNode.noticeList = data;
818
+ }
819
+ })
820
+ .catch((err) => {
821
+ if (this.showBtn) {
822
+ this.loading = false;
823
+ } else {
824
+ this.allLoading.close();
825
+ }
826
+ if (err.message && err.message !== 'canceled') {
827
+ this.$message.error(err.message);
828
+ }
829
+ });
830
+ },
831
+ //获取通知信息
832
+ getMessage() {
833
+ let params = {
834
+ processDefinitionId: this.processDefinitionId,
835
+ nodeId: this.nextNode.nextNode,
836
+ businessId: this.id
837
+ };
838
+ if (!this.showBtn) {
839
+ params.openMode = 'samepage';
840
+ }
841
+ util
842
+ .ajax({ url: getNotificationMsg, params, methods: 'post' })
843
+ .then((res) => {
844
+ if (res.status === 'success') {
845
+ if (!this.showBtn) {
846
+ this.oldMessage = res.message;
847
+ this.nextNode.noticeInfo = res.message.replace(
848
+ '{title}',
849
+ this.formTitle
850
+ );
851
+ } else {
852
+ this.nextNode.noticeInfo = res.message;
853
+ }
854
+ }
855
+ })
856
+ .catch((err) => {
857
+ if (this.showBtn) {
858
+ this.loading = false;
859
+ } else {
860
+ this.allLoading.close();
861
+ }
862
+ if (err.message && err.message !== 'canceled') {
863
+ this.$message.error(err.message);
864
+ }
865
+ });
866
+ },
867
+ // 提交表单
868
+ subProcess(formName) {
869
+ this.saveProcess(formName);
870
+ },
871
+ saveProcess(formName) {
872
+ this.$refs[formName].validate((valid) => {
873
+ if (valid) {
874
+ const {
875
+ nextNode,
876
+ nextUser,
877
+ noticeInfo,
878
+ noticeType,
879
+ handleExplain,
880
+ presetReadUserId,
881
+ nextReadUserId,
882
+ nextOrgId,
883
+ newOpinion,
884
+ customLimitTime
885
+ } = this.nextNode;
886
+ // if (noticeType.length === 0) {
887
+ // return this.$message.warning('请选择通知方式');
888
+ // }
889
+ if (this.isShowNextUser) {
890
+ if (nextUser == '' || (this.multiple && nextUser.length == 0)) {
891
+ return this.$message.warning('请选择下步办理人');
892
+ }
893
+ } else {
894
+ if (nextOrgId == '' || (this.multiple && nextOrgId.length == 0)) {
895
+ return this.$message.warning('请选择办理对象');
896
+ }
897
+ }
898
+ if (this.showBtn) {
899
+ this.loading = true;
900
+ } else {
901
+ this.allLoading = util.loading(this.$loading, '加载中...');
902
+ }
903
+ let newNextUser = [];
904
+ if (this.multiple) {
905
+ nextUser && nextUser.map((item) => newNextUser.push(item));
906
+ }
907
+ let newNoticeType = '';
908
+ if (noticeType) {
909
+ newNoticeType = noticeType.join(',');
910
+ }
911
+ let params = {
912
+ processDefinitionId: this.processDefinitionId,
913
+ nextUserId: this.multiple ? newNextUser.join(',') : nextUser,
914
+ nextNodeId: nextNode,
915
+ businessId: this.businessId,
916
+ notificationType: newNoticeType,
917
+ userId: util.getStorage('userId'),
918
+ notificationMsg: noticeInfo,
919
+ customPresetUserJson: JSON.stringify(this.presetList),
920
+ presetUserJson: JSON.stringify(this.presetUserJson),
921
+ nextReadUserId: this.readMultiple
922
+ ? this.mixReadList && this.mixReadList.join('|')
923
+ : nextReadUserId,
924
+ nextOrgId: !this.isShowNextUser
925
+ ? this.multiple
926
+ ? this.mixOrgIdList && this.mixOrgIdList.join('|')
927
+ : nextOrgId
928
+ : '',
929
+ handleExplain: handleExplain,
930
+ presetReadUserId:
931
+ this.mixPresetList && this.mixPresetList.length > 0
932
+ ? this.mixPresetList.join('|')
933
+ : presetReadUserId.join(','),
934
+ opinion: this.newOpinion || newOpinion
935
+ };
936
+ if (this.enableCustomLimitTimeSetting) {
937
+ params.customLimitTime = customLimitTime;
938
+ if (!customLimitTime) {
939
+ this.$message.warning('请选择或输入限时办理的天数');
940
+ this.nextNode.customLimitTime = '';
941
+ return;
942
+ } else if (
943
+ !Number(customLimitTime) ||
944
+ val.indexOf('.') != -1 ||
945
+ Number(customLimitTime) < 0
946
+ ) {
947
+ this.$message.warning('请输入正确的天数');
948
+ this.nextNode.customLimitTime = '';
949
+ return;
950
+ }
951
+ }
952
+ if (this.activeNames != '1') delete params.customPresetUserJson;
953
+ if (this.isFreeStartFlow || this.formType === 'readTransfer') {
954
+ let newParm = {};
955
+ newParm.copyHistory = this.copyHistory === 'needCopyPendedHistory';
956
+ newParm.startFlowParamJson = params;
957
+ // newParm.startFlowParamJson.businessId = this.id; //this.id
958
+ newParm.startFlowParamJson.taskExamineParam = {
959
+ startFlowFirstNodeName: this.taskExamineParam
960
+ };
961
+ newParm.startFlowParamJson = JSON.stringify(
962
+ newParm.startFlowParamJson
963
+ );
964
+ for (let key in this.taskParams) {
965
+ if (Array.isArray(this.taskParams[key])) {
966
+ this.taskParams[key] =
967
+ this.taskParams[key].length > 0
968
+ ? this.taskParams[key].join(',')
969
+ : '';
970
+ }
971
+ }
972
+
973
+ newParm.submitTaskParamJson = JSON.stringify(this.taskParams);
974
+ if (this.formType == 'readTransfer') {
975
+ newParm.readTransferHandleStartFlowParamJson =
976
+ JSON.stringify(params);
977
+ newParm.taskReadEndParamJson = JSON.stringify(this.taskParams);
978
+ delete newParm.copyHistory;
979
+ delete newParm.startFlowParamJson;
980
+ delete newParm.submitTaskParamJson;
981
+ }
982
+ params = newParm;
983
+ }
984
+ if (this.copyHistory && !this.isFreeStartFlow) {
985
+ params.pendingId = this.pendingId;
986
+ delete params.businessId;
987
+ }
988
+ util
989
+ .ajax({
990
+ url: this.isFreeStartFlow
991
+ ? freeStartFlowWithSubmitTask
992
+ : this.formType == 'readTransfer'
993
+ ? startReadTransferHandleFlowWithTaskReadEnd
994
+ : this.copyHistory
995
+ ? freeStartFlow
996
+ : register,
997
+ method: 'post',
998
+ data: params
999
+ })
1000
+ .then((res) => {
1001
+ const { status, message } = res;
1002
+ if (this.showBtn) {
1003
+ this.loading = false;
1004
+ } else {
1005
+ this.allLoading.close();
1006
+ }
1007
+ if (status === 'success' || res.rCode == 0) {
1008
+ this.quit(true);
1009
+ this.simpleTips && this.$message.success('操作成功');
1010
+ } else {
1011
+ this.$message.error(message || '系统错误,请联系管理员!');
1012
+ }
1013
+ })
1014
+ .catch((err) => {
1015
+ if (this.showBtn) {
1016
+ this.loading = false;
1017
+ } else {
1018
+ this.allLoading.close();
1019
+ }
1020
+ if (err.message && err.message !== 'canceled') {
1021
+ this.$message.error(err.message);
1022
+ }
1023
+ });
1024
+ } else {
1025
+ return false;
1026
+ }
1027
+ });
1028
+ },
1029
+ getNodeInfos(nodeId, index) {
1030
+ let params = {
1031
+ processDefinitionId: this.processDefinitionId,
1032
+ nextNodeId: nodeId ? nodeId : this.nextNode.nextNode,
1033
+ businessId: this.id,
1034
+ userId: util.getStorage('userId')
1035
+ };
1036
+ util
1037
+ .ajax({ url: getNodeInfo, params })
1038
+ .then((res) => {
1039
+ const {
1040
+ status,
1041
+ message,
1042
+ data: {
1043
+ nextUserList,
1044
+ nodeExtAttr,
1045
+ countersignaturetypeText,
1046
+ countersignaturetypeCode
1047
+ }
1048
+ } = res;
1049
+ if (this.showBtn) {
1050
+ this.loading = false;
1051
+ } else {
1052
+ this.allLoading.close();
1053
+ }
1054
+ if (status === 'success') {
1055
+ this.isCurrentNodeForbiddenChangeCandidate =
1056
+ nodeExtAttr.isCurrentNodeForbiddenChangeCandidate;
1057
+ this.nextNode.userInfo = nextUserList;
1058
+ this.countersignaturetypeCode = countersignaturetypeCode;
1059
+ this.nextNode.countersignaturetypeText = countersignaturetypeText;
1060
+ this.enableCustomLimitTimeSetting =
1061
+ nodeExtAttr.enableCustomLimitTimeSetting == 1;
1062
+ this.isTaskread = nodeExtAttr.isTaskread;
1063
+ this.isHandleExplain = nodeExtAttr.isHandleExplain;
1064
+ this.isCustomUser = nodeExtAttr.isCustomUser; //是否展示选人组件按钮
1065
+ this.presetEdit = nodeExtAttr.presetEdit; //是否展示备选人
1066
+ this.isDefSelectedObj = nodeExtAttr.isDefSelectedObj; //是否默认选中
1067
+ if (
1068
+ nodeExtAttr.userSelectionType == 7 ||
1069
+ nodeExtAttr.userSelectionType == 8 ||
1070
+ nodeExtAttr.userSelectionType == 9 ||
1071
+ nodeExtAttr.userSelectionType == 10 ||
1072
+ nodeExtAttr.userSelectionType == 11 ||
1073
+ nodeExtAttr.userSelectionType == 12
1074
+ ) {
1075
+ this.getIsShowNextUser(
1076
+ nodeExtAttr && nodeExtAttr.userSelectionType
1077
+ );
1078
+ } else {
1079
+ const { multiple, params } = this.isMultiple(
1080
+ nodeExtAttr.userSelectionType
1081
+ );
1082
+ this.multiple = multiple;
1083
+ this.params = params;
1084
+ }
1085
+ // this.isReadMultiple(nodeExtAttr.userSelectionType);
1086
+
1087
+ nextUserList.map((item) => {
1088
+ if (
1089
+ this.multiple &&
1090
+ nodeExtAttr.isDefSelectedObj == 1 &&
1091
+ nextUserList !== undefined
1092
+ ) {
1093
+ this.nextNode.nextUser.push(item.userId);
1094
+ this.selectUserList.push({
1095
+ showname: item.username,
1096
+ showid: item.userId
1097
+ });
1098
+ }
1099
+
1100
+ this.options.push({
1101
+ showname: item.username,
1102
+ showid: item.userId
1103
+ });
1104
+ });
1105
+ if (this.multiple) {
1106
+ this.nextNode.nextReadUserId = [];
1107
+ } else {
1108
+ this.nextNode.nextReadUserId = '';
1109
+ }
1110
+ if (
1111
+ nextUserList.length > 0 &&
1112
+ nodeExtAttr.isDefSelectedObj == 1 &&
1113
+ !this.multiple
1114
+ ) {
1115
+ this.nextNode.nextUser = nextUserList[0].userId;
1116
+ this.selectUserList.push({
1117
+ showname: nextUserList[0].username,
1118
+ showid: nextUserList[0].userId
1119
+ });
1120
+ }
1121
+ this.radioList = this.options;
1122
+ } else {
1123
+ this.$message.error(message || '系统错误,请联系管理员!');
1124
+ }
1125
+ nodeId && this.$refs.selectUser[index].changeInfo();
1126
+ })
1127
+ .catch((err) => {
1128
+ if (this.showBtn) {
1129
+ this.loading = false;
1130
+ } else {
1131
+ this.allLoading.close();
1132
+ }
1133
+ if (err.message && err.message !== 'canceled') {
1134
+ this.$message.error(err.message);
1135
+ }
1136
+ });
1137
+ },
1138
+ changeSel(val) {
1139
+ this.nextNode.nextUser = [];
1140
+ this.options = [];
1141
+ this.selectUserList = [];
1142
+ this.radioList = [];
1143
+ if (this.showBtn) {
1144
+ this.loading = true;
1145
+ } else {
1146
+ this.allLoading = util.loading(this.$loading, '加载中...');
1147
+ }
1148
+ this.getNodeInfos();
1149
+ },
1150
+ // 取消
1151
+ quit(val) {
1152
+ if (val === true) return this.$emit('cancel', val);
1153
+ this.$emit('cancel', false);
1154
+ },
1155
+ getFind() {
1156
+ util
1157
+ .ajax({
1158
+ url: findSysCodes
1159
+ })
1160
+ .then((res) => {
1161
+ const { status, message } = res;
1162
+ if (status === 'success') {
1163
+ this.nextNode.noticeType = message.split(',');
1164
+ let arr = [];
1165
+ this.nextNode.noticeList.map((item) => {
1166
+ this.nextNode.noticeType.map((x) => {
1167
+ if (x == item.cciValue) {
1168
+ arr.push(x);
1169
+ }
1170
+ });
1171
+ });
1172
+ this.nextNode.noticeType = arr;
1173
+ } else {
1174
+ this.$message.error(message || '系统错误,请联系管理员!');
1175
+ }
1176
+ })
1177
+ .catch((err) => {
1178
+ if (this.showBtn) {
1179
+ this.loading = false;
1180
+ } else {
1181
+ this.allLoading.close();
1182
+ }
1183
+ if (err.message && err.message !== 'canceled') {
1184
+ this.$message.error(err.message);
1185
+ }
1186
+ });
1187
+ },
1188
+ /**
1189
+ * isMultiple
1190
+ * @desc:是否多选
1191
+ * @author liufan
1192
+ * @date 2022年9月13日
1193
+ **/
1194
+ isMultiple(val, choiceOrgId, choiceDeptId, pOrgId) {
1195
+ let multiple = false;
1196
+ let params = {};
1197
+ if (val == 2 || val == 4 || val == 6 || val == 16 || val == 12) {
1198
+ multiple = true;
1199
+ }
1200
+ if (val == 1 || val == 2 || val == 5) {
1201
+ params.filid = this.userModel.orgId;
1202
+ params.only_filid = true;
1203
+ if (choiceOrgId) {
1204
+ params.filid = choiceOrgId;
1205
+ }
1206
+ }
1207
+ if (val == 5 || val == 6) {
1208
+ params.filid = this.userModel.orgId;
1209
+ params.deptid = this.userModel.orgId;
1210
+ if (choiceDeptId) {
1211
+ params.deptid = choiceDeptId;
1212
+ }
1213
+ if (choiceOrgId) {
1214
+ params.filid = choiceOrgId;
1215
+ }
1216
+ }
1217
+ if (val == 15 || val == 16) {
1218
+ params.filid = this.userModel.orgId;
1219
+ if (pOrgId) {
1220
+ params.filid = pOrgId;
1221
+ }
1222
+ }
1223
+ return { multiple, params };
1224
+ },
1225
+ getStartFlow(processId) {
1226
+ if (!processId) {
1227
+ return false;
1228
+ }
1229
+ if (this.showBtn) {
1230
+ this.loading = true;
1231
+ } else {
1232
+ this.allLoading = util.loading(this.$loading, '加载中...');
1233
+ }
1234
+ this.businessId = this.id;
1235
+ let params = {
1236
+ processDefinitionId: processId, // processId || this.processDefinitionId,
1237
+ userId: util.getStorage('userId'),
1238
+ businessId: this.businessId
1239
+ };
1240
+ // 获取节点
1241
+ util
1242
+ .ajax({ url: toStartFlow, params })
1243
+ .then((res) => {
1244
+ //pc接口返回数据处理
1245
+ const { status, message, data } = res;
1246
+ if (status == 'success') {
1247
+ data.nodeInfoMap.nodeExtAttr.submitTipsMsg &&
1248
+ this.$confirm(
1249
+ data.nodeInfoMap.nodeExtAttr.submitTipsMsg,
1250
+ '提示',
1251
+ {
1252
+ confirmButtonText: '确定',
1253
+ cancelButtonText: '取消',
1254
+ type: 'warning'
1255
+ }
1256
+ )
1257
+ .then(() => {})
1258
+ .catch(() => {
1259
+ this.quit();
1260
+ });
1261
+ data.nextNodeCheckType &&
1262
+ (this.nextNodeCheckType = data.nextNodeCheckType);
1263
+ data.nextOperateCheckType &&
1264
+ (this.nextOperateCheckType = data.nextOperateCheckType);
1265
+ this.customPresetHintMessage = data.customPresetHintMessage;
1266
+ this.readOnlyNotificationType = data.readOnlyNotificationType;
1267
+ this.notificationMessageReadOnly =
1268
+ data.notificationMessageReadOnly == 'true';
1269
+ this.nextNode.nodeInfo = data.nextNodeList;
1270
+ this.nextNode.nextNode = data.nextNodeList[0].nodeId;
1271
+ this.isPreset = data.isPreset;
1272
+ this.isHideDefaultOperation =
1273
+ data.nodeInfoMap.nodeExtAttr.isHideDefaultOperation;
1274
+ this.defaultNextNode = data.nodeInfoMap.nodeExtAttr.defaultNextNode;
1275
+ this.isChooseNextNode =
1276
+ data.nodeInfoMap.nodeExtAttr.isChooseNextNode;
1277
+ this.isCdjxjTaskHandle = data.isCdjxjTaskHandle;
1278
+ if (this.isChooseNextNode == 1) {
1279
+ this.operationList = [
1280
+ { key: 0, value: '默认', list: [] },
1281
+ { key: 1, value: '自定义', list: [] }
1282
+ ];
1283
+ let arr = [];
1284
+ for (let key in data.taskNodeMap) {
1285
+ arr.push({ nodeName: data.taskNodeMap[key], nodeId: key });
1286
+ }
1287
+ this.operationList[0].list = data.nextNodeList;
1288
+ this.operationList[1].list = arr;
1289
+ if (this.isHideDefaultOperation != 1) {
1290
+ this.nextNode.nextOperate = 0;
1291
+ this.nextNode.nodeInfo = this.operationList[0].list;
1292
+ if (this.nextNode.nodeInfo.length > 0) {
1293
+ let defaultNodeData = data.nextNodeList.filter(
1294
+ (x) => x.nodeId == this.defaultNextNode
1295
+ );
1296
+ this.nextNode.nextNode =
1297
+ defaultNodeData.length > 0
1298
+ ? this.defaultNextNode
1299
+ : data.nextNodeList[0].nodeId;
1300
+ }
1301
+ } else if (
1302
+ data.nodeInfoMap.nodeExtAttr.defaultNextOperate == 1 ||
1303
+ data.nodeInfoMap.nodeExtAttr.isHideDefaultOperation == 1
1304
+ ) {
1305
+ // this.nextNode.nodeInfo = data.nextNodeList
1306
+ this.nextNode.nextOperate = 1;
1307
+ this.nextNode.nodeInfo = this.operationList[1].list;
1308
+ if (this.nextNode.nodeInfo.length > 0) {
1309
+ let defaultNodeData = data.nextNodeList.filter(
1310
+ (x) => x.nodeId == this.defaultNextNode
1311
+ );
1312
+ this.nextNode.nextNode =
1313
+ defaultNodeData.length > 0
1314
+ ? this.defaultNextNode
1315
+ : data.nextNodeList[0].nodeId;
1316
+ }
1317
+ }
1318
+ }
1319
+ this.isCustomPreset = data.isCustomPreset;
1320
+ this.presetTaskNodeKeyStr = data.presetTaskNodeKeyStr;
1321
+ this.presetTaskNodeMap = data.presetTaskNodeMap;
1322
+ this.isSinglePage = data.taskExamine.isSinglePage;
1323
+ this.isSinglePage &&
1324
+ (this.nextNode.opinion = data.taskExamine.opinion);
1325
+ // this.nextNode.noticeInfo = data.taskExamine.notificationMsg;
1326
+ this.nextNode.nodeName = data.taskExamine.nodeName;
1327
+ this.canPresetRead = data.canPresetRead;
1328
+ if (data.canPresetRead) {
1329
+ let ids =
1330
+ data.nodeInfoMap.nodeExtAttr.presetReadCandinateIds.split(',');
1331
+ let names =
1332
+ data.nodeInfoMap.nodeExtAttr.presetReadCandinateNames.split(
1333
+ ','
1334
+ );
1335
+ ids.map((item, index) => {
1336
+ this.presetReadUserId.push({
1337
+ showid: item,
1338
+ showname: names[index]
1339
+ });
1340
+ this.selectPresetUserList.push({
1341
+ showid: item,
1342
+ showname: names[index]
1343
+ });
1344
+ this.nextNode.presetReadUserId.push(item);
1345
+ });
1346
+ }
1347
+ this.getNodeInfos();
1348
+ // this.getPresetFlowInfo();
1349
+ this.isCustomPreset &&
1350
+ this.$refs.customPreset.getPresetFlowInfo(this.nextNode.nextNode);
1351
+ this.getFind();
1352
+ this.getMessage();
1353
+ } else {
1354
+ this.$message.error(message || '系统错误,请联系管理员!');
1355
+ }
1356
+ })
1357
+ .catch((err) => {
1358
+ if (this.showBtn) {
1359
+ this.loading = false;
1360
+ } else {
1361
+ this.allLoading.close();
1362
+ }
1363
+ if (err.message && err.message !== 'canceled') {
1364
+ this.$message.error(err.message);
1365
+ }
1366
+ });
1367
+ }
1368
+ }
1369
+ };
1370
+ </script>