eoss-ui 0.7.55 → 0.7.57

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