eoss-ui 0.6.64 → 0.6.65

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