eoss-ui 0.8.13 → 0.8.14

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