eoss-ui 0.7.48 → 0.7.49

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 (245) hide show
  1. package/lib/calogin.js +233 -233
  2. package/lib/eoss-ui.common.js +775 -756
  3. package/lib/flow-list.js +81 -81
  4. package/lib/flow.js +302 -283
  5. package/lib/index.js +1 -1
  6. package/lib/main.js +140 -140
  7. package/lib/qr-code.js +13 -13
  8. package/package.json +160 -160
  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 +39 -39
  27. package/packages/data-table/src/column.vue +992 -992
  28. package/packages/data-table/src/main.vue +1840 -1840
  29. package/packages/data-table/src/sizer.vue +195 -195
  30. package/packages/data-table-form/index.js +5 -5
  31. package/packages/data-table-form/src/checkbox.vue +101 -101
  32. package/packages/data-table-form/src/colgroup.vue +17 -17
  33. package/packages/data-table-form/src/main.vue +181 -181
  34. package/packages/data-table-form/src/radio.vue +65 -65
  35. package/packages/data-table-form/src/table.vue +233 -233
  36. package/packages/data-table-form/src/tbody.vue +336 -336
  37. package/packages/data-table-form/src/thead.vue +68 -68
  38. package/packages/date-picker/index.js +5 -5
  39. package/packages/date-picker/src/main.vue +236 -236
  40. package/packages/dialog/index.js +5 -5
  41. package/packages/enable-drag/index.js +5 -5
  42. package/packages/enterprise/index.js +5 -5
  43. package/packages/enterprise/src/main.vue +66 -66
  44. package/packages/error-page/index.js +5 -5
  45. package/packages/error-page/src/main.vue +44 -44
  46. package/packages/flow/index.js +5 -5
  47. package/packages/flow/src/component/Circulate.vue +413 -413
  48. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  49. package/packages/flow/src/component/CustomPreset.vue +322 -322
  50. package/packages/flow/src/component/FileList.vue +97 -97
  51. package/packages/flow/src/component/FreeCirculation.vue +240 -240
  52. package/packages/flow/src/component/Preset.vue +255 -255
  53. package/packages/flow/src/component/SendMsg.vue +242 -242
  54. package/packages/flow/src/component/TimeLimit.vue +190 -190
  55. package/packages/flow/src/component/taskUnionExamine.vue +756 -756
  56. package/packages/flow/src/form.vue +121 -121
  57. package/packages/flow/src/freeStartFlow.vue +2846 -2846
  58. package/packages/flow/src/main.vue +3879 -3861
  59. package/packages/flow/src/processForm.vue +1365 -1365
  60. package/packages/flow/src/processReject.vue +309 -309
  61. package/packages/flow/src/reset.vue +942 -942
  62. package/packages/flow/src/startTaskRead.vue +692 -692
  63. package/packages/flow/src/supervise.vue +159 -159
  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 +717 -717
  67. package/packages/flow-list/index.js +5 -5
  68. package/packages/flow-list/src/main.vue +1787 -1787
  69. package/packages/form/index.js +5 -5
  70. package/packages/form/src/main.vue +3901 -3901
  71. package/packages/form/src/table.vue +1512 -1512
  72. package/packages/handle-user/index.js +5 -5
  73. package/packages/handle-user/src/main.vue +137 -137
  74. package/packages/handler/index.js +5 -5
  75. package/packages/handler/src/main.vue +496 -496
  76. package/packages/icon/index.js +5 -5
  77. package/packages/icon/src/main.vue +104 -104
  78. package/packages/icons/index.js +5 -5
  79. package/packages/icons/src/main.vue +81 -81
  80. package/packages/input/index.js +5 -5
  81. package/packages/input/src/main.vue +356 -356
  82. package/packages/input-number/index.js +5 -5
  83. package/packages/input-number/src/main.vue +106 -106
  84. package/packages/label/index.js +5 -5
  85. package/packages/label/src/main.vue +457 -457
  86. package/packages/layout/index.js +5 -5
  87. package/packages/layout/src/item.vue +152 -152
  88. package/packages/layout/src/main.vue +31 -31
  89. package/packages/login/index.js +5 -5
  90. package/packages/login/src/main.vue +2082 -2082
  91. package/packages/login/src/resetPassword.vue +557 -557
  92. package/packages/main/index.js +5 -5
  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 +503 -503
  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 +227 -227
  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 +160 -160
  102. package/packages/main/src/simplicity/index.vue +2277 -2277
  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 +274 -274
  109. package/packages/main/src/simplicity/user.vue +259 -259
  110. package/packages/main/src/simplicity/userinfo.vue +401 -401
  111. package/packages/menu/index.js +5 -5
  112. package/packages/menu/src/main.vue +595 -595
  113. package/packages/nav/index.js +5 -5
  114. package/packages/nav/src/main.vue +351 -351
  115. package/packages/notify/index.js +5 -5
  116. package/packages/notify/src/main.vue +538 -538
  117. package/packages/page/index.js +5 -5
  118. package/packages/page/src/main.vue +167 -167
  119. package/packages/pagination/index.js +5 -5
  120. package/packages/pagination/src/main.vue +96 -96
  121. package/packages/player/index.js +5 -5
  122. package/packages/player/src/main.vue +194 -194
  123. package/packages/qr-code/index.js +5 -5
  124. package/packages/qr-code/src/main.vue +170 -170
  125. package/packages/radio-group/index.js +6 -6
  126. package/packages/radio-group/src/main.vue +319 -319
  127. package/packages/retrial-auth/index.js +5 -5
  128. package/packages/retrial-auth/src/main.vue +280 -280
  129. package/packages/select/index.js +5 -5
  130. package/packages/select/src/main.vue +782 -782
  131. package/packages/select-ganged/index.js +5 -5
  132. package/packages/select-ganged/src/main.vue +724 -724
  133. package/packages/selector/index.js +5 -5
  134. package/packages/selector/src/main.vue +761 -761
  135. package/packages/selector-panel/index.js +5 -5
  136. package/packages/selector-panel/src/main.vue +1027 -1027
  137. package/packages/selector-panel/src/selection.vue +170 -170
  138. package/packages/selector-panel/src/tree.vue +129 -129
  139. package/packages/sizer/index.js +5 -5
  140. package/packages/sizer/src/main.vue +254 -254
  141. package/packages/steps/index.js +5 -5
  142. package/packages/steps/src/main.vue +181 -181
  143. package/packages/switch/index.js +5 -5
  144. package/packages/switch/src/main.vue +170 -170
  145. package/packages/table-form/index.js +5 -5
  146. package/packages/tabs/index.js +5 -5
  147. package/packages/tabs/src/main.vue +788 -788
  148. package/packages/tabs-panel/index.js +5 -5
  149. package/packages/tabs-panel/src/main.vue +29 -29
  150. package/packages/theme-chalk/src/base.scss +261 -261
  151. package/packages/theme-chalk/src/button-group.scss +176 -176
  152. package/packages/theme-chalk/src/button.scss +24 -24
  153. package/packages/theme-chalk/src/calendar.scss +113 -113
  154. package/packages/theme-chalk/src/card.scss +99 -99
  155. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  156. package/packages/theme-chalk/src/clients.scss +87 -87
  157. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  158. package/packages/theme-chalk/src/data-table.scss +293 -293
  159. package/packages/theme-chalk/src/date-picker.scss +7 -7
  160. package/packages/theme-chalk/src/dialog.scss +77 -77
  161. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  162. package/packages/theme-chalk/src/enterprise.scss +5 -5
  163. package/packages/theme-chalk/src/error-page.scss +18 -18
  164. package/packages/theme-chalk/src/flow-group.scss +110 -110
  165. package/packages/theme-chalk/src/flow-list.scss +39 -39
  166. package/packages/theme-chalk/src/flow.scss +351 -351
  167. package/packages/theme-chalk/src/form.scss +501 -501
  168. package/packages/theme-chalk/src/handle-user.scss +40 -40
  169. package/packages/theme-chalk/src/handler.scss +148 -148
  170. package/packages/theme-chalk/src/icon.scss +1436 -1436
  171. package/packages/theme-chalk/src/icons.scss +99 -99
  172. package/packages/theme-chalk/src/input.scss +9 -9
  173. package/packages/theme-chalk/src/label.scss +24 -24
  174. package/packages/theme-chalk/src/layout.scss +46 -46
  175. package/packages/theme-chalk/src/login.scss +1006 -1006
  176. package/packages/theme-chalk/src/main.scss +663 -663
  177. package/packages/theme-chalk/src/menu.scss +224 -224
  178. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  179. package/packages/theme-chalk/src/nav.scss +111 -111
  180. package/packages/theme-chalk/src/page.scss +3 -3
  181. package/packages/theme-chalk/src/pagination.scss +29 -29
  182. package/packages/theme-chalk/src/player.scss +9 -9
  183. package/packages/theme-chalk/src/qr-code.scss +17 -17
  184. package/packages/theme-chalk/src/radio-group.scss +9 -9
  185. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  186. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  187. package/packages/theme-chalk/src/select.scss +8 -8
  188. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  189. package/packages/theme-chalk/src/selector.scss +114 -114
  190. package/packages/theme-chalk/src/simplicity.scss +1381 -1381
  191. package/packages/theme-chalk/src/sizer.scss +36 -36
  192. package/packages/theme-chalk/src/steps.scss +88 -88
  193. package/packages/theme-chalk/src/switch.scss +3 -3
  194. package/packages/theme-chalk/src/table-form.scss +1 -1
  195. package/packages/theme-chalk/src/tabs.scss +87 -87
  196. package/packages/theme-chalk/src/tips.scss +7 -7
  197. package/packages/theme-chalk/src/toolbar.scss +179 -179
  198. package/packages/theme-chalk/src/tree-group.scss +72 -72
  199. package/packages/theme-chalk/src/tree.scss +165 -165
  200. package/packages/theme-chalk/src/upload.scss +172 -172
  201. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  202. package/packages/tips/index.js +5 -5
  203. package/packages/tips/src/main.vue +141 -141
  204. package/packages/toolbar/index.js +5 -5
  205. package/packages/toolbar/src/main.vue +430 -430
  206. package/packages/tree/index.js +5 -5
  207. package/packages/tree-group/index.js +5 -5
  208. package/packages/upload/index.js +5 -5
  209. package/packages/upload/src/main.vue +1344 -1344
  210. package/packages/upload/src/picture.js +15 -15
  211. package/packages/wujie/index.js +5 -5
  212. package/packages/wujie/src/main.vue +145 -145
  213. package/packages/wxlogin/index.js +5 -5
  214. package/packages/wxlogin/src/main.vue +128 -128
  215. package/src/config/api.js +315 -315
  216. package/src/config/image.js +2 -2
  217. package/src/index.js +163 -163
  218. package/src/utils/bus.js +3 -3
  219. package/src/utils/date-util.js +312 -312
  220. package/src/utils/http.js +50 -50
  221. package/src/utils/rules.js +18 -18
  222. package/src/utils/store.js +21 -21
  223. package/src/utils/webSocket.js +107 -107
  224. package/lib/.DS_Store +0 -0
  225. package/packages/.DS_Store +0 -0
  226. package/packages/calogin/.DS_Store +0 -0
  227. package/packages/date-picker/.DS_Store +0 -0
  228. package/packages/date-picker/src/.DS_Store +0 -0
  229. package/packages/dialog/.DS_Store +0 -0
  230. package/packages/flow/.DS_Store +0 -0
  231. package/packages/flow/src/.DS_Store +0 -0
  232. package/packages/flow-list/.DS_Store +0 -0
  233. package/packages/form/.DS_Store +0 -0
  234. package/packages/icon/.DS_Store +0 -0
  235. package/packages/login/.DS_Store +0 -0
  236. package/packages/main/.DS_Store +0 -0
  237. package/packages/main/src/.DS_Store +0 -0
  238. package/packages/menu/.DS_Store +0 -0
  239. package/packages/select/.DS_Store +0 -0
  240. package/packages/selector/.DS_Store +0 -0
  241. package/packages/selector-panel/.DS_Store +0 -0
  242. package/packages/theme-chalk/src/.DS_Store +0 -0
  243. package/packages/upload/.DS_Store +0 -0
  244. package/src/.DS_Store +0 -0
  245. package/src/utils/.DS_Store +0 -0
@@ -1,717 +1,717 @@
1
- <template>
2
- <div class="es-flow-group" :class="{ 'is-hide-flow': !isShow }">
3
- <div class="es-flow-group-main">
4
- <el-tabs
5
- class="es-flow-tabs es-tabs"
6
- type="border-card"
7
- v-model="activeName"
8
- ref="tabs"
9
- :before-leave="handleBefore"
10
- >
11
- <template v-for="(items, indexs) in tabs">
12
- <el-tab-pane
13
- v-if="handleHide(items.hide)"
14
- :key="items.id || indexs"
15
- :immediate="items.label === '流程图' ? false : items.immediate"
16
- :name="String(indexs)"
17
- :class="{ 'es-flex-vertical': items.average }"
18
- >
19
- <span
20
- slot="label"
21
- :style="{
22
- color:
23
- activeName == String(indexs) ? items.activeColor : items.color
24
- }"
25
- >
26
- <template v-if="items.title">
27
- <template v-if="typeof items.title === 'object'">
28
- <i v-if="items.title.icon" :class="items.title.icon"></i>
29
- <el-badge
30
- v-if="items.title.count"
31
- type="primary"
32
- :value="items.title.count"
33
- :color="items.title.color"
34
- :max="99"
35
- >{{ items.title.text }}
36
- </el-badge>
37
- <template v-else>{{ items.title.text }}</template>
38
- </template>
39
- <template v-else>{{ items.title }}</template>
40
- </template>
41
- <template>{{ items.label }}</template>
42
- </span>
43
- <es-tabs-panel v-bind="items" :show="activeName === String(indexs)">
44
- <template
45
- slot-scope="{ contents, average, data, title, show, isShow }"
46
- >
47
- <template v-if="Array.isArray(contents)">
48
- <template v-for="(item, index) in contents">
49
- <div class="es-tab-pane-list" :key="index" v-if="average">
50
- <div class="es-tab-pane-main">
51
- <es-flow-list
52
- v-if="
53
- item.type === 'flow-list' ||
54
- item.type === 'flowList'
55
- "
56
- :businessId="businessId"
57
- v-bind="
58
- handleExclAttribute({
59
- data: item,
60
- attrs: ['events', 'visible', 'type']
61
- })
62
- "
63
- :display="activeName === String(indexs)"
64
- :key="index"
65
- ></es-flow-list>
66
- <es-data-table
67
- v-if="
68
- item.type === 'data-table' ||
69
- item.type === 'dataTable'
70
- "
71
- :appId="taskExamineAppId"
72
- v-bind="
73
- handleExclAttribute({
74
- data: item,
75
- attrs: ['events', 'visible', 'type']
76
- })
77
- "
78
- :class="{
79
- 'es-flow-group-data-table':
80
- item.type === 'data-table' ||
81
- item.type === 'dataTable'
82
- }"
83
- :display="activeName === String(indexs)"
84
- v-on="item.events"
85
- >
86
- <template v-if="item.dialog" slot="dialog">
87
- <template v-if="Array.isArray(item.dialog)">
88
- <es-dialog
89
- v-for="(ele, ids) in item.dialog"
90
- :isReload="true"
91
- v-bind="ele"
92
- :key="ids"
93
- :visible.sync="ele.visible"
94
- v-on="{ ...ele.events }"
95
- >
96
- </es-dialog>
97
- </template>
98
- <es-dialog
99
- v-else
100
- :isReload="true"
101
- v-bind="item.dialog"
102
- :visible.sync="item.dialog.visible"
103
- v-on="{ ...item.dialog.events }"
104
- >
105
- </es-dialog>
106
- </template>
107
- </es-data-table>
108
- <es-tree-group
109
- v-if="
110
- item.type === 'tree-group' ||
111
- item.type === 'treeGroup'
112
- "
113
- :appId="taskExamineAppId"
114
- v-bind="
115
- handleExclAttribute({
116
- data: item,
117
- attrs: ['events', 'visible', 'type']
118
- })
119
- "
120
- :display="activeName === String(indexs)"
121
- v-on="{ ...item.events }"
122
- ></es-tree-group>
123
- <iframe
124
- v-if="item.type === 'iframe' && !item.blank"
125
- :id="item.id || item.name"
126
- :name="item.name"
127
- frameborder="0"
128
- width="100%"
129
- height="100%"
130
- :src="handleUrlJoinParams(item)"
131
- ></iframe>
132
- <es-upload
133
- v-if="item.type === 'attachment'"
134
- :file-count.sync="title.count"
135
- height="auto"
136
- class="es-attachment"
137
- :ownId="businessId"
138
- v-bind="
139
- handleExclAttribute({
140
- data: item,
141
- attrs: ['events', 'type']
142
- })
143
- "
144
- :display="activeName === String(indexs)"
145
- v-on="{ ...item.events }"
146
- ></es-upload>
147
- </div>
148
- </div>
149
- <template v-else>
150
- <es-form
151
- v-if="item.type === 'form'"
152
- ref="esFlowForm"
153
- :showMsg="showMsg"
154
- v-bind="
155
- handleExclAttribute({
156
- data: item,
157
- attrs: ['events', 'visible', 'type', 'model', 'ref']
158
- })
159
- "
160
- full
161
- :key="index"
162
- :autoId="true"
163
- :show-button="false"
164
- :closeDialog="false"
165
- :display="activeName === String(indexs)"
166
- :model="item.model"
167
- :businessId.sync="businessId"
168
- v-on="{ ...item.events }"
169
- ></es-form>
170
- <es-flow-list
171
- v-if="
172
- item.type === 'flow-list' || item.type === 'flowList'
173
- "
174
- :businessId="businessId"
175
- v-bind="
176
- handleExclAttribute({
177
- data: item,
178
- attrs: ['events', 'visible', 'type']
179
- })
180
- "
181
- :display="activeName === String(indexs)"
182
- :key="index"
183
- ></es-flow-list>
184
- <es-data-table
185
- v-if="
186
- item.type === 'data-table' ||
187
- item.type === 'dataTable'
188
- "
189
- :appId="taskExamineAppId"
190
- v-bind="
191
- handleExclAttribute({
192
- data: item,
193
- attrs: ['events', 'visible', 'type']
194
- })
195
- "
196
- :key="index"
197
- :class="{
198
- 'es-flow-group-data-table':
199
- item.type === 'data-table' ||
200
- item.type === 'dataTable'
201
- }"
202
- :display="activeName === String(indexs)"
203
- v-on="item.events"
204
- >
205
- <template v-if="item.dialog" slot="dialog">
206
- <template v-if="Array.isArray(item.dialog)">
207
- <es-dialog
208
- v-for="(ele, ids) in item.dialog"
209
- :isReload="true"
210
- v-bind="ele"
211
- :key="ids"
212
- :visible.sync="ele.visible"
213
- v-on="{ ...ele.events }"
214
- >
215
- </es-dialog>
216
- </template>
217
- <es-dialog
218
- v-else
219
- :isReload="true"
220
- v-bind="item.dialog"
221
- :visible.sync="item.dialog.visible"
222
- v-on="{ ...item.dialog.events }"
223
- >
224
- </es-dialog>
225
- </template>
226
- </es-data-table>
227
- <es-tree-group
228
- v-if="
229
- item.type === 'tree-group' ||
230
- item.type === 'treeGroup'
231
- "
232
- :appId="taskExamineAppId"
233
- v-bind="
234
- handleExclAttribute({
235
- data: item,
236
- attrs: ['events', 'visible', 'type']
237
- })
238
- "
239
- :key="index"
240
- :display="activeName === String(indexs)"
241
- v-on="{ ...item.events }"
242
- ></es-tree-group>
243
- <iframe
244
- v-if="item.type === 'iframe' && !item.blank"
245
- frameborder="0"
246
- width="100%"
247
- height="100%"
248
- :key="index"
249
- :id="item.id || item.name"
250
- :name="item.name"
251
- :src="handleUrlJoinParams(item)"
252
- ></iframe>
253
- <es-upload
254
- v-if="item.type === 'attachment'"
255
- height="auto"
256
- class="es-attachment"
257
- :ownId="businessId"
258
- v-bind="
259
- handleExclAttribute({
260
- data: item,
261
- attrs: ['events', 'type']
262
- })
263
- "
264
- :key="index"
265
- :file-count.sync="title.count"
266
- :display="activeName === String(indexs)"
267
- v-on="{ ...item.events }"
268
- ></es-upload>
269
- <es-dialog
270
- v-if="
271
- item.type === 'dialog' &&
272
- activeName === String(indexs)
273
- "
274
- :isReload="true"
275
- v-bind="item"
276
- :key="index"
277
- :visible.sync="item.visible"
278
- v-on="{ ...item.events }"
279
- >
280
- </es-dialog>
281
- <component
282
- v-if="item.component || item.type == 'component'"
283
- :is="item.is || item.type"
284
- show
285
- isShow
286
- v-bind="
287
- handleExclAttribute({
288
- data: item,
289
- attrs: ['is', 'type']
290
- })
291
- "
292
- ></component>
293
- </template>
294
- </template>
295
- </template>
296
- <template v-else>
297
- <component
298
- v-if="contents.component || contents.type == 'component'"
299
- :is="contents.is || contents.type"
300
- show
301
- isShow
302
- v-bind="
303
- handleExclAttribute({
304
- data: contents,
305
- attrs: ['is', 'type']
306
- })
307
- "
308
- ></component>
309
- <es-form
310
- v-if="contents.type === 'form'"
311
- :show-button="false"
312
- ref="esFlowForm"
313
- :showMsg="showMsg"
314
- v-bind="
315
- handleExclAttribute({
316
- data: contents,
317
- attrs: ['events', 'visible', 'type', 'model', 'ref']
318
- })
319
- "
320
- full
321
- :autoId="true"
322
- :businessId.sync="businessId"
323
- :closeDialog="false"
324
- :display="activeName === String(indexs)"
325
- :model="contents.model"
326
- v-on="{ ...contents.events }"
327
- ></es-form>
328
- <es-flow-list
329
- v-if="
330
- contents.type === 'flow-list' ||
331
- contents.type === 'flowList'
332
- "
333
- :businessId="businessId"
334
- v-bind="
335
- handleExclAttribute({
336
- data: contents,
337
- attrs: ['events', 'visible', 'type']
338
- })
339
- "
340
- :display="activeName === String(indexs)"
341
- ></es-flow-list>
342
- <es-data-table
343
- v-if="
344
- contents.type === 'data-table' ||
345
- contents.type === 'dataTable'
346
- "
347
- :appId="taskExamineAppId"
348
- v-bind="
349
- handleExclAttribute({
350
- data: contents,
351
- attrs: ['events', 'visible', 'type']
352
- })
353
- "
354
- :class="{
355
- 'es-flow-group-data-table':
356
- contents.type === 'data-table' ||
357
- contents.type === 'dataTable'
358
- }"
359
- :display="activeName === String(indexs)"
360
- v-on="contents.events"
361
- >
362
- <template v-if="contents.dialog" slot="dialog">
363
- <template v-if="Array.isArray(contents.dialog)">
364
- <es-dialog
365
- v-for="(ele, ids) in contents.dialog"
366
- :isReload="true"
367
- v-bind="ele"
368
- :key="ids"
369
- :visible.sync="ele.visible"
370
- v-on="{ ...ele.events }"
371
- >
372
- </es-dialog>
373
- </template>
374
- <es-dialog
375
- v-else
376
- :isReload="true"
377
- v-bind="contents.dialog"
378
- :visible.sync="contents.dialog.visible"
379
- v-on="{ ...contents.dialog.events }"
380
- >
381
- </es-dialog>
382
- </template>
383
- </es-data-table>
384
- <es-tree-group
385
- v-if="
386
- contents.type === 'tree-group' ||
387
- contents.type === 'treeGroup'
388
- "
389
- :appId="taskExamineAppId"
390
- v-bind="
391
- handleExclAttribute({
392
- data: contents,
393
- attrs: ['events', 'visible', 'type']
394
- })
395
- "
396
- :display="activeName === String(indexs)"
397
- v-on="{ ...contents.events }"
398
- ></es-tree-group>
399
- <iframe
400
- v-if="contents.type === 'iframe' && !contents.blank"
401
- :id="contents.id || contents.name"
402
- :name="contents.name"
403
- frameborder="0"
404
- width="100%"
405
- height="100%"
406
- :src="handleUrlJoinParams(contents)"
407
- ></iframe>
408
- <es-upload
409
- v-if="contents.type === 'attachment'"
410
- :ownId="businessId"
411
- v-bind="
412
- handleExclAttribute({
413
- data: contents,
414
- attrs: ['events', 'type']
415
- })
416
- "
417
- :file-count.sync="title.count"
418
- :display="activeName === String(indexs)"
419
- height="auto"
420
- class="es-attachment"
421
- v-on="{ ...contents.events }"
422
- ></es-upload>
423
- </template>
424
- </template>
425
- </es-tabs-panel>
426
- </el-tab-pane>
427
- </template>
428
- </el-tabs>
429
- </div>
430
- <es-flow
431
- v-if="isShow"
432
- class="es-group-flow"
433
- v-bind="_flow"
434
- :width="width"
435
- :before-submit="isSubmit ? handleSubmit : undefined"
436
- :businessId="businessId"
437
- @startTaskRead="handleTaskRead"
438
- @success="handleSuccess"
439
- @save="handleSave"
440
- @endMessageChange="handleEndMessageChange"
441
- :closeParent="closeParent"
442
- ></es-flow>
443
- <slot></slot>
444
- </div>
445
- </template>
446
- <script>
447
- import util from 'eoss-ui/src/utils/util';
448
- export default {
449
- name: 'EsFlowGroup',
450
- inject: {
451
- esDialog: {
452
- default: ''
453
- },
454
- injector: {
455
- default: ''
456
- }
457
- },
458
- props: {
459
- // autoId: {
460
- // type: Boolean,
461
- // default: true
462
- // },
463
- active: {
464
- type: String,
465
- default: '0'
466
- },
467
- contents: Array,
468
- closeDialog: {
469
- type: Boolean,
470
- default: true
471
- },
472
- otherValidate: {
473
- type: Function,
474
- default: () => {
475
- return false;
476
- }
477
- },
478
- flow: Object,
479
- events: Object,
480
- recordid: String,
481
- pendingId: String,
482
- arcurl: String,
483
- itemname: String,
484
- show: {
485
- type: Boolean,
486
- default: true
487
- },
488
- closeParent: {
489
- type: Boolean,
490
- default: true
491
- },
492
- appId: String,
493
- zoom: false,
494
- width: {
495
- type: String,
496
- default: '360px'
497
- },
498
- refs: String,
499
- isSubmit: {
500
- type: Boolean,
501
- default: true
502
- }
503
- },
504
- data() {
505
- return {
506
- activeName: this.active,
507
- businessId: undefined,
508
- taskExamineAppId: this.appId,
509
- showMsg: true,
510
- formRefs: this.refs,
511
- submits: null
512
- };
513
- },
514
- computed: {
515
- tabs() {
516
- return this.contents ? this.contents : [];
517
- },
518
- isShow() {
519
- if (
520
- this.flow &&
521
- Object.prototype.hasOwnProperty.call(this.flow, 'show')
522
- ) {
523
- return this.flow.show;
524
- }
525
- let flow = util.getParams({ name: 'flow' });
526
- if (flow == 0) {
527
- return false;
528
- }
529
- return this.show;
530
- },
531
- _flow() {
532
- return !this.flow.pendingId
533
- ? { ...this.flow, pendingId: this.pendingId }
534
- : this.flow;
535
- }
536
- },
537
- watch: {
538
- activeName(val) {
539
- this.$emit('update:active', val);
540
- },
541
- businessId(val) {
542
- this.handleChangeData({ businessId: val });
543
- }
544
- },
545
- created() {
546
- if (this.flow.businessId || this.flow.pendingId) {
547
- this.businessId = this.flow.businessId || this.flow.pendingId;
548
- }
549
- },
550
- mounted() {},
551
- methods: {
552
- handleHide(res) {
553
- return typeof res === 'boolean'
554
- ? !res
555
- : typeof res === 'string'
556
- ? this[res]
557
- : true;
558
- },
559
- handleExclAttribute({ data, attrs }) {
560
- if (!attrs || !attrs.length) {
561
- this.ref && (this.formRefs = this.ref);
562
- return data;
563
- }
564
- return util.exclAttribute({
565
- data: data,
566
- attrs: attrs
567
- });
568
- },
569
- handleUrlJoinParams(res, flag = true) {
570
- let url = res.url;
571
- if (flag) {
572
- if (res.method) {
573
- this.submit = {
574
- id: res.id,
575
- url: url,
576
- method: typeof res.method === 'boolean' ? 'submit' : res.method
577
- };
578
- }
579
- }
580
- let param = util.extend(
581
- {},
582
- { id: this.businessId, appId: this.taskExamineAppId },
583
- res.param || {}
584
- );
585
- return util.urlJoinParams({ url, param });
586
- },
587
- handleBefore(active, old) {
588
- return new Promise((resolve, reject) => {
589
- let n = parseInt(active, 10);
590
- let item = this.tabs[n];
591
- let url = null;
592
- let name = item.name;
593
- let width = 0;
594
- let height = 0;
595
- let win = util.win.top;
596
- width = win.screen.availWidth - 10;
597
- height = win.screen.availHeight - 60;
598
- if (item.url) {
599
- url = this.handleUrlJoinParams(item);
600
- }
601
- if (
602
- item.contents &&
603
- item.contents.type === 'iframe' &&
604
- item.contents.blank
605
- ) {
606
- item.contents.name && (name = item.contents.name);
607
- url = this.handleUrlJoinParams(item.contents);
608
- }
609
- if (url) {
610
- reject();
611
- util.win.open(
612
- url,
613
- name,
614
- `width=${width}px,height=${height}px,resizable=yes,status=yes,menubar=no,scrollbars=yes`
615
- );
616
- } else {
617
- resolve();
618
- }
619
- });
620
- },
621
- handleSubmit(res) {
622
- if (this.submit) {
623
- if (this.submit.id) {
624
- let iframe = document.getElementById(this.submit.id); //先找到ifram
625
-
626
- if (this.submit.url) {
627
- let url = new URL(this.submit.url);
628
- let origin = url.origin;
629
- let _origin = util.win.location.origin;
630
- if (origin != _origin) {
631
- iframe.contentWindow.postMessage({ submit: res }, '*');
632
- return new Promise((resolve, reject) => {
633
- window.addEventListener('message', function (obj) {
634
- if (obj.origin == origin) {
635
- let results = obj.data;
636
- if (results.code == 0) {
637
- resolve();
638
- } else {
639
- reject();
640
- }
641
- }
642
- });
643
- });
644
- }
645
- }
646
- return iframe.contentWindow[this.submit.method](res); //用dom对象调用子页面的方法
647
- }
648
- }
649
- let esFlowForm = this.formRefs
650
- ? this.$refs[this.formRefs]
651
- : this.$refs.esFlowForm;
652
- if (Array.isArray(esFlowForm)) {
653
- esFlowForm = esFlowForm[0];
654
- }
655
- esFlowForm;
656
- this.showMsg = res == 1 ? false : true;
657
-
658
- if (this.otherValidate) {
659
- return new Promise((resolve, reject) => {
660
- esFlowForm
661
- .submitData(undefined, false, {}, res)
662
- .then(() => {
663
- // 如果submitData验证通过,则执行otherValidate验证
664
- this.otherValidate(resolve, reject);
665
- })
666
- .catch((error) => {
667
- // 处理submitData可能抛出的错误
668
- reject(error);
669
- });
670
- });
671
- }
672
- return esFlowForm.submitData(undefined, false, {}, res);
673
- },
674
- handleTaskRead(res) {
675
- if (res.data.taskExamine && res.data.taskExamine.appId) {
676
- this.taskExamineAppId = res.data.taskExamine.appId;
677
- this.injector &&
678
- this.injector.handleChangeData({ appId: this.taskExamineAppId });
679
- }
680
- },
681
- handleEndMessageChange(val) {
682
- this.$emit('endMessageChange', val);
683
- },
684
- handleSuccess() {
685
- if (this.closeDialog && this.esDialog) {
686
- this.esDialog.handleClose();
687
- } else if (util.win.top.COOS_SDK) {
688
- util.win.top.COOS_SDK.closePopup && util.win.top.COOS_SDK.closePopup();
689
- } else if (util.win.top.opener) {
690
- util.win.top.close();
691
- }
692
- if (this.events && this.events.success) {
693
- this.events.success();
694
- }
695
- this.$emit('success');
696
- },
697
- handleSave(id, event) {
698
- if (this.closeDialog && this.esDialog) {
699
- this.esDialog.handleClose();
700
- } else if (util.win.top.COOS_SDK) {
701
- util.win.top.COOS_SDK.closePopup && util.win.top.COOS_SDK.closePopup();
702
- } else if (util.win.top.opener) {
703
- util.win.top.close();
704
- }
705
- this.events && this.events.save(id, event);
706
- this.$emit('save', id, event);
707
- },
708
- handleChangeId(id) {
709
- this.businessId = id;
710
- },
711
- handleChangeData(res) {
712
- this.$emit('changeData', res);
713
- this.$emit('change-data', res);
714
- }
715
- }
716
- };
717
- </script>
1
+ <template>
2
+ <div class="es-flow-group" :class="{ 'is-hide-flow': !isShow }">
3
+ <div class="es-flow-group-main">
4
+ <el-tabs
5
+ class="es-flow-tabs es-tabs"
6
+ type="border-card"
7
+ v-model="activeName"
8
+ ref="tabs"
9
+ :before-leave="handleBefore"
10
+ >
11
+ <template v-for="(items, indexs) in tabs">
12
+ <el-tab-pane
13
+ v-if="handleHide(items.hide)"
14
+ :key="items.id || indexs"
15
+ :immediate="items.label === '流程图' ? false : items.immediate"
16
+ :name="String(indexs)"
17
+ :class="{ 'es-flex-vertical': items.average }"
18
+ >
19
+ <span
20
+ slot="label"
21
+ :style="{
22
+ color:
23
+ activeName == String(indexs) ? items.activeColor : items.color
24
+ }"
25
+ >
26
+ <template v-if="items.title">
27
+ <template v-if="typeof items.title === 'object'">
28
+ <i v-if="items.title.icon" :class="items.title.icon"></i>
29
+ <el-badge
30
+ v-if="items.title.count"
31
+ type="primary"
32
+ :value="items.title.count"
33
+ :color="items.title.color"
34
+ :max="99"
35
+ >{{ items.title.text }}
36
+ </el-badge>
37
+ <template v-else>{{ items.title.text }}</template>
38
+ </template>
39
+ <template v-else>{{ items.title }}</template>
40
+ </template>
41
+ <template>{{ items.label }}</template>
42
+ </span>
43
+ <es-tabs-panel v-bind="items" :show="activeName === String(indexs)">
44
+ <template
45
+ slot-scope="{ contents, average, data, title, show, isShow }"
46
+ >
47
+ <template v-if="Array.isArray(contents)">
48
+ <template v-for="(item, index) in contents">
49
+ <div class="es-tab-pane-list" :key="index" v-if="average">
50
+ <div class="es-tab-pane-main">
51
+ <es-flow-list
52
+ v-if="
53
+ item.type === 'flow-list' ||
54
+ item.type === 'flowList'
55
+ "
56
+ :businessId="businessId"
57
+ v-bind="
58
+ handleExclAttribute({
59
+ data: item,
60
+ attrs: ['events', 'visible', 'type']
61
+ })
62
+ "
63
+ :display="activeName === String(indexs)"
64
+ :key="index"
65
+ ></es-flow-list>
66
+ <es-data-table
67
+ v-if="
68
+ item.type === 'data-table' ||
69
+ item.type === 'dataTable'
70
+ "
71
+ :appId="taskExamineAppId"
72
+ v-bind="
73
+ handleExclAttribute({
74
+ data: item,
75
+ attrs: ['events', 'visible', 'type']
76
+ })
77
+ "
78
+ :class="{
79
+ 'es-flow-group-data-table':
80
+ item.type === 'data-table' ||
81
+ item.type === 'dataTable'
82
+ }"
83
+ :display="activeName === String(indexs)"
84
+ v-on="item.events"
85
+ >
86
+ <template v-if="item.dialog" slot="dialog">
87
+ <template v-if="Array.isArray(item.dialog)">
88
+ <es-dialog
89
+ v-for="(ele, ids) in item.dialog"
90
+ :isReload="true"
91
+ v-bind="ele"
92
+ :key="ids"
93
+ :visible.sync="ele.visible"
94
+ v-on="{ ...ele.events }"
95
+ >
96
+ </es-dialog>
97
+ </template>
98
+ <es-dialog
99
+ v-else
100
+ :isReload="true"
101
+ v-bind="item.dialog"
102
+ :visible.sync="item.dialog.visible"
103
+ v-on="{ ...item.dialog.events }"
104
+ >
105
+ </es-dialog>
106
+ </template>
107
+ </es-data-table>
108
+ <es-tree-group
109
+ v-if="
110
+ item.type === 'tree-group' ||
111
+ item.type === 'treeGroup'
112
+ "
113
+ :appId="taskExamineAppId"
114
+ v-bind="
115
+ handleExclAttribute({
116
+ data: item,
117
+ attrs: ['events', 'visible', 'type']
118
+ })
119
+ "
120
+ :display="activeName === String(indexs)"
121
+ v-on="{ ...item.events }"
122
+ ></es-tree-group>
123
+ <iframe
124
+ v-if="item.type === 'iframe' && !item.blank"
125
+ :id="item.id || item.name"
126
+ :name="item.name"
127
+ frameborder="0"
128
+ width="100%"
129
+ height="100%"
130
+ :src="handleUrlJoinParams(item)"
131
+ ></iframe>
132
+ <es-upload
133
+ v-if="item.type === 'attachment'"
134
+ :file-count.sync="title.count"
135
+ height="auto"
136
+ class="es-attachment"
137
+ :ownId="businessId"
138
+ v-bind="
139
+ handleExclAttribute({
140
+ data: item,
141
+ attrs: ['events', 'type']
142
+ })
143
+ "
144
+ :display="activeName === String(indexs)"
145
+ v-on="{ ...item.events }"
146
+ ></es-upload>
147
+ </div>
148
+ </div>
149
+ <template v-else>
150
+ <es-form
151
+ v-if="item.type === 'form'"
152
+ ref="esFlowForm"
153
+ :showMsg="showMsg"
154
+ v-bind="
155
+ handleExclAttribute({
156
+ data: item,
157
+ attrs: ['events', 'visible', 'type', 'model', 'ref']
158
+ })
159
+ "
160
+ full
161
+ :key="index"
162
+ :autoId="true"
163
+ :show-button="false"
164
+ :closeDialog="false"
165
+ :display="activeName === String(indexs)"
166
+ :model="item.model"
167
+ :businessId.sync="businessId"
168
+ v-on="{ ...item.events }"
169
+ ></es-form>
170
+ <es-flow-list
171
+ v-if="
172
+ item.type === 'flow-list' || item.type === 'flowList'
173
+ "
174
+ :businessId="businessId"
175
+ v-bind="
176
+ handleExclAttribute({
177
+ data: item,
178
+ attrs: ['events', 'visible', 'type']
179
+ })
180
+ "
181
+ :display="activeName === String(indexs)"
182
+ :key="index"
183
+ ></es-flow-list>
184
+ <es-data-table
185
+ v-if="
186
+ item.type === 'data-table' ||
187
+ item.type === 'dataTable'
188
+ "
189
+ :appId="taskExamineAppId"
190
+ v-bind="
191
+ handleExclAttribute({
192
+ data: item,
193
+ attrs: ['events', 'visible', 'type']
194
+ })
195
+ "
196
+ :key="index"
197
+ :class="{
198
+ 'es-flow-group-data-table':
199
+ item.type === 'data-table' ||
200
+ item.type === 'dataTable'
201
+ }"
202
+ :display="activeName === String(indexs)"
203
+ v-on="item.events"
204
+ >
205
+ <template v-if="item.dialog" slot="dialog">
206
+ <template v-if="Array.isArray(item.dialog)">
207
+ <es-dialog
208
+ v-for="(ele, ids) in item.dialog"
209
+ :isReload="true"
210
+ v-bind="ele"
211
+ :key="ids"
212
+ :visible.sync="ele.visible"
213
+ v-on="{ ...ele.events }"
214
+ >
215
+ </es-dialog>
216
+ </template>
217
+ <es-dialog
218
+ v-else
219
+ :isReload="true"
220
+ v-bind="item.dialog"
221
+ :visible.sync="item.dialog.visible"
222
+ v-on="{ ...item.dialog.events }"
223
+ >
224
+ </es-dialog>
225
+ </template>
226
+ </es-data-table>
227
+ <es-tree-group
228
+ v-if="
229
+ item.type === 'tree-group' ||
230
+ item.type === 'treeGroup'
231
+ "
232
+ :appId="taskExamineAppId"
233
+ v-bind="
234
+ handleExclAttribute({
235
+ data: item,
236
+ attrs: ['events', 'visible', 'type']
237
+ })
238
+ "
239
+ :key="index"
240
+ :display="activeName === String(indexs)"
241
+ v-on="{ ...item.events }"
242
+ ></es-tree-group>
243
+ <iframe
244
+ v-if="item.type === 'iframe' && !item.blank"
245
+ frameborder="0"
246
+ width="100%"
247
+ height="100%"
248
+ :key="index"
249
+ :id="item.id || item.name"
250
+ :name="item.name"
251
+ :src="handleUrlJoinParams(item)"
252
+ ></iframe>
253
+ <es-upload
254
+ v-if="item.type === 'attachment'"
255
+ height="auto"
256
+ class="es-attachment"
257
+ :ownId="businessId"
258
+ v-bind="
259
+ handleExclAttribute({
260
+ data: item,
261
+ attrs: ['events', 'type']
262
+ })
263
+ "
264
+ :key="index"
265
+ :file-count.sync="title.count"
266
+ :display="activeName === String(indexs)"
267
+ v-on="{ ...item.events }"
268
+ ></es-upload>
269
+ <es-dialog
270
+ v-if="
271
+ item.type === 'dialog' &&
272
+ activeName === String(indexs)
273
+ "
274
+ :isReload="true"
275
+ v-bind="item"
276
+ :key="index"
277
+ :visible.sync="item.visible"
278
+ v-on="{ ...item.events }"
279
+ >
280
+ </es-dialog>
281
+ <component
282
+ v-if="item.component || item.type == 'component'"
283
+ :is="item.is || item.type"
284
+ show
285
+ isShow
286
+ v-bind="
287
+ handleExclAttribute({
288
+ data: item,
289
+ attrs: ['is', 'type']
290
+ })
291
+ "
292
+ ></component>
293
+ </template>
294
+ </template>
295
+ </template>
296
+ <template v-else>
297
+ <component
298
+ v-if="contents.component || contents.type == 'component'"
299
+ :is="contents.is || contents.type"
300
+ show
301
+ isShow
302
+ v-bind="
303
+ handleExclAttribute({
304
+ data: contents,
305
+ attrs: ['is', 'type']
306
+ })
307
+ "
308
+ ></component>
309
+ <es-form
310
+ v-if="contents.type === 'form'"
311
+ :show-button="false"
312
+ ref="esFlowForm"
313
+ :showMsg="showMsg"
314
+ v-bind="
315
+ handleExclAttribute({
316
+ data: contents,
317
+ attrs: ['events', 'visible', 'type', 'model', 'ref']
318
+ })
319
+ "
320
+ full
321
+ :autoId="true"
322
+ :businessId.sync="businessId"
323
+ :closeDialog="false"
324
+ :display="activeName === String(indexs)"
325
+ :model="contents.model"
326
+ v-on="{ ...contents.events }"
327
+ ></es-form>
328
+ <es-flow-list
329
+ v-if="
330
+ contents.type === 'flow-list' ||
331
+ contents.type === 'flowList'
332
+ "
333
+ :businessId="businessId"
334
+ v-bind="
335
+ handleExclAttribute({
336
+ data: contents,
337
+ attrs: ['events', 'visible', 'type']
338
+ })
339
+ "
340
+ :display="activeName === String(indexs)"
341
+ ></es-flow-list>
342
+ <es-data-table
343
+ v-if="
344
+ contents.type === 'data-table' ||
345
+ contents.type === 'dataTable'
346
+ "
347
+ :appId="taskExamineAppId"
348
+ v-bind="
349
+ handleExclAttribute({
350
+ data: contents,
351
+ attrs: ['events', 'visible', 'type']
352
+ })
353
+ "
354
+ :class="{
355
+ 'es-flow-group-data-table':
356
+ contents.type === 'data-table' ||
357
+ contents.type === 'dataTable'
358
+ }"
359
+ :display="activeName === String(indexs)"
360
+ v-on="contents.events"
361
+ >
362
+ <template v-if="contents.dialog" slot="dialog">
363
+ <template v-if="Array.isArray(contents.dialog)">
364
+ <es-dialog
365
+ v-for="(ele, ids) in contents.dialog"
366
+ :isReload="true"
367
+ v-bind="ele"
368
+ :key="ids"
369
+ :visible.sync="ele.visible"
370
+ v-on="{ ...ele.events }"
371
+ >
372
+ </es-dialog>
373
+ </template>
374
+ <es-dialog
375
+ v-else
376
+ :isReload="true"
377
+ v-bind="contents.dialog"
378
+ :visible.sync="contents.dialog.visible"
379
+ v-on="{ ...contents.dialog.events }"
380
+ >
381
+ </es-dialog>
382
+ </template>
383
+ </es-data-table>
384
+ <es-tree-group
385
+ v-if="
386
+ contents.type === 'tree-group' ||
387
+ contents.type === 'treeGroup'
388
+ "
389
+ :appId="taskExamineAppId"
390
+ v-bind="
391
+ handleExclAttribute({
392
+ data: contents,
393
+ attrs: ['events', 'visible', 'type']
394
+ })
395
+ "
396
+ :display="activeName === String(indexs)"
397
+ v-on="{ ...contents.events }"
398
+ ></es-tree-group>
399
+ <iframe
400
+ v-if="contents.type === 'iframe' && !contents.blank"
401
+ :id="contents.id || contents.name"
402
+ :name="contents.name"
403
+ frameborder="0"
404
+ width="100%"
405
+ height="100%"
406
+ :src="handleUrlJoinParams(contents)"
407
+ ></iframe>
408
+ <es-upload
409
+ v-if="contents.type === 'attachment'"
410
+ :ownId="businessId"
411
+ v-bind="
412
+ handleExclAttribute({
413
+ data: contents,
414
+ attrs: ['events', 'type']
415
+ })
416
+ "
417
+ :file-count.sync="title.count"
418
+ :display="activeName === String(indexs)"
419
+ height="auto"
420
+ class="es-attachment"
421
+ v-on="{ ...contents.events }"
422
+ ></es-upload>
423
+ </template>
424
+ </template>
425
+ </es-tabs-panel>
426
+ </el-tab-pane>
427
+ </template>
428
+ </el-tabs>
429
+ </div>
430
+ <es-flow
431
+ v-if="isShow"
432
+ class="es-group-flow"
433
+ v-bind="_flow"
434
+ :width="width"
435
+ :before-submit="isSubmit ? handleSubmit : undefined"
436
+ :businessId="businessId"
437
+ @startTaskRead="handleTaskRead"
438
+ @success="handleSuccess"
439
+ @save="handleSave"
440
+ @endMessageChange="handleEndMessageChange"
441
+ :closeParent="closeParent"
442
+ ></es-flow>
443
+ <slot></slot>
444
+ </div>
445
+ </template>
446
+ <script>
447
+ import util from 'eoss-ui/src/utils/util';
448
+ export default {
449
+ name: 'EsFlowGroup',
450
+ inject: {
451
+ esDialog: {
452
+ default: ''
453
+ },
454
+ injector: {
455
+ default: ''
456
+ }
457
+ },
458
+ props: {
459
+ // autoId: {
460
+ // type: Boolean,
461
+ // default: true
462
+ // },
463
+ active: {
464
+ type: String,
465
+ default: '0'
466
+ },
467
+ contents: Array,
468
+ closeDialog: {
469
+ type: Boolean,
470
+ default: true
471
+ },
472
+ otherValidate: {
473
+ type: Function,
474
+ default: () => {
475
+ return false;
476
+ }
477
+ },
478
+ flow: Object,
479
+ events: Object,
480
+ recordid: String,
481
+ pendingId: String,
482
+ arcurl: String,
483
+ itemname: String,
484
+ show: {
485
+ type: Boolean,
486
+ default: true
487
+ },
488
+ closeParent: {
489
+ type: Boolean,
490
+ default: true
491
+ },
492
+ appId: String,
493
+ zoom: false,
494
+ width: {
495
+ type: String,
496
+ default: '360px'
497
+ },
498
+ refs: String,
499
+ isSubmit: {
500
+ type: Boolean,
501
+ default: true
502
+ }
503
+ },
504
+ data() {
505
+ return {
506
+ activeName: this.active,
507
+ businessId: undefined,
508
+ taskExamineAppId: this.appId,
509
+ showMsg: true,
510
+ formRefs: this.refs,
511
+ submits: null
512
+ };
513
+ },
514
+ computed: {
515
+ tabs() {
516
+ return this.contents ? this.contents : [];
517
+ },
518
+ isShow() {
519
+ if (
520
+ this.flow &&
521
+ Object.prototype.hasOwnProperty.call(this.flow, 'show')
522
+ ) {
523
+ return this.flow.show;
524
+ }
525
+ let flow = util.getParams({ name: 'flow' });
526
+ if (flow == 0) {
527
+ return false;
528
+ }
529
+ return this.show;
530
+ },
531
+ _flow() {
532
+ return !this.flow.pendingId
533
+ ? { ...this.flow, pendingId: this.pendingId }
534
+ : this.flow;
535
+ }
536
+ },
537
+ watch: {
538
+ activeName(val) {
539
+ this.$emit('update:active', val);
540
+ },
541
+ businessId(val) {
542
+ this.handleChangeData({ businessId: val });
543
+ }
544
+ },
545
+ created() {
546
+ if (this.flow.businessId || this.flow.pendingId) {
547
+ this.businessId = this.flow.businessId || this.flow.pendingId;
548
+ }
549
+ },
550
+ mounted() {},
551
+ methods: {
552
+ handleHide(res) {
553
+ return typeof res === 'boolean'
554
+ ? !res
555
+ : typeof res === 'string'
556
+ ? this[res]
557
+ : true;
558
+ },
559
+ handleExclAttribute({ data, attrs }) {
560
+ if (!attrs || !attrs.length) {
561
+ this.ref && (this.formRefs = this.ref);
562
+ return data;
563
+ }
564
+ return util.exclAttribute({
565
+ data: data,
566
+ attrs: attrs
567
+ });
568
+ },
569
+ handleUrlJoinParams(res, flag = true) {
570
+ let url = res.url;
571
+ if (flag) {
572
+ if (res.method) {
573
+ this.submit = {
574
+ id: res.id,
575
+ url: url,
576
+ method: typeof res.method === 'boolean' ? 'submit' : res.method
577
+ };
578
+ }
579
+ }
580
+ let param = util.extend(
581
+ {},
582
+ { id: this.businessId, appId: this.taskExamineAppId },
583
+ res.param || {}
584
+ );
585
+ return util.urlJoinParams({ url, param });
586
+ },
587
+ handleBefore(active, old) {
588
+ return new Promise((resolve, reject) => {
589
+ let n = parseInt(active, 10);
590
+ let item = this.tabs[n];
591
+ let url = null;
592
+ let name = item.name;
593
+ let width = 0;
594
+ let height = 0;
595
+ let win = util.win.top;
596
+ width = win.screen.availWidth - 10;
597
+ height = win.screen.availHeight - 60;
598
+ if (item.url) {
599
+ url = this.handleUrlJoinParams(item);
600
+ }
601
+ if (
602
+ item.contents &&
603
+ item.contents.type === 'iframe' &&
604
+ item.contents.blank
605
+ ) {
606
+ item.contents.name && (name = item.contents.name);
607
+ url = this.handleUrlJoinParams(item.contents);
608
+ }
609
+ if (url) {
610
+ reject();
611
+ util.win.open(
612
+ url,
613
+ name,
614
+ `width=${width}px,height=${height}px,resizable=yes,status=yes,menubar=no,scrollbars=yes`
615
+ );
616
+ } else {
617
+ resolve();
618
+ }
619
+ });
620
+ },
621
+ handleSubmit(res) {
622
+ if (this.submit) {
623
+ if (this.submit.id) {
624
+ let iframe = document.getElementById(this.submit.id); //先找到ifram
625
+
626
+ if (this.submit.url) {
627
+ let url = new URL(this.submit.url);
628
+ let origin = url.origin;
629
+ let _origin = util.win.location.origin;
630
+ if (origin != _origin) {
631
+ iframe.contentWindow.postMessage({ submit: res }, '*');
632
+ return new Promise((resolve, reject) => {
633
+ window.addEventListener('message', function (obj) {
634
+ if (obj.origin == origin) {
635
+ let results = obj.data;
636
+ if (results.code == 0) {
637
+ resolve();
638
+ } else {
639
+ reject();
640
+ }
641
+ }
642
+ });
643
+ });
644
+ }
645
+ }
646
+ return iframe.contentWindow[this.submit.method](res); //用dom对象调用子页面的方法
647
+ }
648
+ }
649
+ let esFlowForm = this.formRefs
650
+ ? this.$refs[this.formRefs]
651
+ : this.$refs.esFlowForm;
652
+ if (Array.isArray(esFlowForm)) {
653
+ esFlowForm = esFlowForm[0];
654
+ }
655
+ esFlowForm;
656
+ this.showMsg = res == 1 ? false : true;
657
+
658
+ if (this.otherValidate) {
659
+ return new Promise((resolve, reject) => {
660
+ esFlowForm
661
+ .submitData(undefined, false, {}, res)
662
+ .then(() => {
663
+ // 如果submitData验证通过,则执行otherValidate验证
664
+ this.otherValidate(resolve, reject);
665
+ })
666
+ .catch((error) => {
667
+ // 处理submitData可能抛出的错误
668
+ reject(error);
669
+ });
670
+ });
671
+ }
672
+ return esFlowForm.submitData(undefined, false, {}, res);
673
+ },
674
+ handleTaskRead(res) {
675
+ if (res.data.taskExamine && res.data.taskExamine.appId) {
676
+ this.taskExamineAppId = res.data.taskExamine.appId;
677
+ this.injector &&
678
+ this.injector.handleChangeData({ appId: this.taskExamineAppId });
679
+ }
680
+ },
681
+ handleEndMessageChange(val) {
682
+ this.$emit('endMessageChange', val);
683
+ },
684
+ handleSuccess() {
685
+ if (this.closeDialog && this.esDialog) {
686
+ this.esDialog.handleClose();
687
+ } else if (util.win.top.COOS_SDK) {
688
+ util.win.top.COOS_SDK.closePopup && util.win.top.COOS_SDK.closePopup();
689
+ } else if (util.win.top.opener) {
690
+ util.win.top.close();
691
+ }
692
+ if (this.events && this.events.success) {
693
+ this.events.success();
694
+ }
695
+ this.$emit('success');
696
+ },
697
+ handleSave(id, event) {
698
+ if (this.closeDialog && this.esDialog) {
699
+ this.esDialog.handleClose();
700
+ } else if (util.win.top.COOS_SDK) {
701
+ util.win.top.COOS_SDK.closePopup && util.win.top.COOS_SDK.closePopup();
702
+ } else if (util.win.top.opener) {
703
+ util.win.top.close();
704
+ }
705
+ this.events && this.events.save(id, event);
706
+ this.$emit('save', id, event);
707
+ },
708
+ handleChangeId(id) {
709
+ this.businessId = id;
710
+ },
711
+ handleChangeData(res) {
712
+ this.$emit('changeData', res);
713
+ this.$emit('change-data', res);
714
+ }
715
+ }
716
+ };
717
+ </script>