eoss-ui 0.6.77 → 0.6.79

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