eoss 0.1.0-alpha.21 → 0.1.0-alpha.23

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