eoss 0.1.0-alpha.21 → 0.1.0-alpha.22

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