eoss-ui 0.6.44 → 0.6.46

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