eoss-ui 0.6.77 → 0.6.78

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