eoss-ui 0.6.38 → 0.6.39

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