eoss-ui 0.6.57 → 0.6.59

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