eoss-ui 0.7.89 → 0.7.91

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 (162) hide show
  1. package/lib/button-group.js +16 -0
  2. package/lib/button.js +18 -2
  3. package/lib/calogin.js +16 -0
  4. package/lib/checkbox-group.js +16 -0
  5. package/lib/data-table-form.js +16 -0
  6. package/lib/data-table.js +32 -19
  7. package/lib/date-picker.js +16 -0
  8. package/lib/dialog.js +27 -6
  9. package/lib/eoss-ui.common.js +769 -757
  10. package/lib/flow-group.js +30 -15
  11. package/lib/flow-list.js +112 -96
  12. package/lib/flow.js +178 -162
  13. package/lib/form.js +16 -0
  14. package/lib/handle-user.js +19 -3
  15. package/lib/handler.js +26 -10
  16. package/lib/icon.js +16 -0
  17. package/lib/index.js +1 -1
  18. package/lib/input-number.js +16 -0
  19. package/lib/input.js +16 -0
  20. package/lib/login.js +16 -0
  21. package/lib/main.js +397 -386
  22. package/lib/nav.js +16 -0
  23. package/lib/page.js +16 -0
  24. package/lib/pagination.js +19 -3
  25. package/lib/player.js +16 -0
  26. package/lib/qr-code.js +16 -0
  27. package/lib/radio-group.js +16 -0
  28. package/lib/retrial-auth.js +22 -6
  29. package/lib/select-ganged.js +16 -0
  30. package/lib/select.js +18 -2
  31. package/lib/selector-panel.js +16 -0
  32. package/lib/selector.js +16 -0
  33. package/lib/sizer.js +16 -0
  34. package/lib/steps.js +16 -0
  35. package/lib/switch.js +16 -0
  36. package/lib/table-form.js +16 -0
  37. package/lib/tabs.js +16 -0
  38. package/lib/theme-chalk/index.css +1 -1
  39. package/lib/theme-chalk/login.css +1 -1
  40. package/lib/tips.js +16 -0
  41. package/lib/tree-group.js +19 -3
  42. package/lib/tree.js +16 -0
  43. package/lib/upload.js +16 -0
  44. package/lib/utils/util.js +16 -0
  45. package/lib/wujie.js +16 -0
  46. package/lib/wxlogin.js +16 -0
  47. package/package.json +1 -1
  48. package/packages/.DS_Store +0 -0
  49. package/packages/button/src/main.vue +2 -2
  50. package/packages/button-group/src/main.vue +346 -346
  51. package/packages/calogin/.DS_Store +0 -0
  52. package/packages/calogin/src/main.vue +412 -412
  53. package/packages/clients/src/main.vue +151 -151
  54. package/packages/data-table/src/column.vue +2 -5
  55. package/packages/data-table/src/main.vue +4 -3
  56. package/packages/date-picker/.DS_Store +0 -0
  57. package/packages/date-picker/src/.DS_Store +0 -0
  58. package/packages/dialog/.DS_Store +0 -0
  59. package/packages/dialog/src/main.vue +11 -4
  60. package/packages/flow/.DS_Store +0 -0
  61. package/packages/flow/src/.DS_Store +0 -0
  62. package/packages/flow/src/component/Circulate.vue +417 -417
  63. package/packages/flow/src/component/CommonOpinions.vue +376 -376
  64. package/packages/flow/src/component/CustomPreset.vue +324 -324
  65. package/packages/flow/src/component/FileList.vue +97 -97
  66. package/packages/flow/src/component/FreeCirculation.vue +244 -244
  67. package/packages/flow/src/component/Preset.vue +257 -257
  68. package/packages/flow/src/component/SendMsg.vue +242 -242
  69. package/packages/flow/src/component/SortFlow.vue +110 -110
  70. package/packages/flow/src/component/taskUnionExamine.vue +761 -761
  71. package/packages/flow/src/form.vue +123 -123
  72. package/packages/flow/src/freeStartFlow.vue +2855 -2855
  73. package/packages/flow/src/processForm.vue +1680 -1680
  74. package/packages/flow/src/processReject.vue +309 -309
  75. package/packages/flow/src/reset.vue +946 -946
  76. package/packages/flow/src/startTaskRead.vue +695 -695
  77. package/packages/flow/src/supervise.vue +159 -159
  78. package/packages/flow/src/table.vue +58 -58
  79. package/packages/flow-group/src/main.vue +728 -727
  80. package/packages/flow-list/.DS_Store +0 -0
  81. package/packages/flow-list/src/main.vue +2337 -2337
  82. package/packages/form/.DS_Store +0 -0
  83. package/packages/form/src/main.vue +3901 -3901
  84. package/packages/form/src/table.vue +1512 -1512
  85. package/packages/handle-user/src/main.vue +137 -137
  86. package/packages/handler/src/main.vue +10 -8
  87. package/packages/icon/.DS_Store +0 -0
  88. package/packages/icon/src/main.vue +104 -104
  89. package/packages/login/.DS_Store +0 -0
  90. package/packages/login/src/main.vue +2087 -2087
  91. package/packages/login/src/resetPassword.vue +557 -557
  92. package/packages/main/.DS_Store +0 -0
  93. package/packages/main/src/.DS_Store +0 -0
  94. package/packages/main/src/default/userinfo.vue +505 -503
  95. package/packages/main/src/main.vue +10 -15
  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 +2330 -2328
  103. package/packages/main/src/simplicity/menu-list.vue +135 -135
  104. package/packages/main/src/simplicity/message.vue +293 -293
  105. package/packages/main/src/simplicity/notice.vue +222 -222
  106. package/packages/main/src/simplicity/sub-menu.vue +276 -276
  107. package/packages/main/src/simplicity/user.vue +259 -259
  108. package/packages/main/src/simplicity/userinfo.vue +403 -401
  109. package/packages/main/src/simplicityTop/apps.vue +388 -388
  110. package/packages/main/src/simplicityTop/avatar.vue +82 -82
  111. package/packages/main/src/simplicityTop/handler.vue +215 -215
  112. package/packages/main/src/simplicityTop/index.vue +2620 -2618
  113. package/packages/main/src/simplicityTop/lists.vue +84 -84
  114. package/packages/main/src/simplicityTop/menu-list.vue +135 -135
  115. package/packages/main/src/simplicityTop/message.vue +293 -293
  116. package/packages/main/src/simplicityTop/notice.vue +222 -222
  117. package/packages/main/src/simplicityTop/router-page.vue +45 -45
  118. package/packages/main/src/simplicityTop/sub-menu.vue +274 -274
  119. package/packages/main/src/simplicityTop/user.vue +259 -259
  120. package/packages/main/src/simplicityTop/userinfo.vue +403 -401
  121. package/packages/menu/.DS_Store +0 -0
  122. package/packages/menu/src/main.vue +595 -595
  123. package/packages/nav/src/main.vue +351 -351
  124. package/packages/pagination/src/main.vue +1 -1
  125. package/packages/retrial-auth/src/main.vue +4 -4
  126. package/packages/select/.DS_Store +0 -0
  127. package/packages/select/src/main.vue +2 -2
  128. package/packages/selector/.DS_Store +0 -0
  129. package/packages/selector/src/main.vue +761 -761
  130. package/packages/selector-panel/.DS_Store +0 -0
  131. package/packages/selector-panel/src/main.vue +1036 -1036
  132. package/packages/selector-panel/src/selection.vue +174 -174
  133. package/packages/switch/src/main.vue +170 -170
  134. package/packages/theme-chalk/lib/index.css +1 -1
  135. package/packages/theme-chalk/lib/login.css +1 -1
  136. package/packages/theme-chalk/src/.DS_Store +0 -0
  137. package/packages/theme-chalk/src/data-table.scss +297 -297
  138. package/packages/theme-chalk/src/flow-list.scss +55 -55
  139. package/packages/theme-chalk/src/flow.scss +373 -373
  140. package/packages/theme-chalk/src/form.scss +501 -501
  141. package/packages/theme-chalk/src/handler.scss +148 -148
  142. package/packages/theme-chalk/src/icon.scss +3452 -3452
  143. package/packages/theme-chalk/src/login.scss +1006 -1006
  144. package/packages/theme-chalk/src/main.scss +664 -664
  145. package/packages/theme-chalk/src/menu.scss +224 -224
  146. package/packages/theme-chalk/src/selector.scss +114 -114
  147. package/packages/theme-chalk/src/simplicity-top.scss +1845 -1845
  148. package/packages/theme-chalk/src/simplicity.scss +1403 -1403
  149. package/packages/theme-chalk/src/tree.scss +165 -165
  150. package/packages/theme-chalk/src/upload.scss +172 -172
  151. package/packages/tips/src/main.vue +141 -141
  152. package/packages/toolbar/src/main.vue +430 -430
  153. package/packages/tree-group/src/main.vue +2 -1
  154. package/packages/upload/.DS_Store +0 -0
  155. package/packages/upload/src/main.vue +1344 -1344
  156. package/packages/wujie/src/main.vue +146 -146
  157. package/src/.DS_Store +0 -0
  158. package/src/config/api.js +348 -348
  159. package/src/index.js +163 -163
  160. package/src/utils/.DS_Store +0 -0
  161. package/src/utils/rules.js +18 -18
  162. package/src/utils/util.js +16 -0
@@ -1,727 +1,728 @@
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
- closeWindow: Boolean,
469
- closeDialog: {
470
- type: Boolean,
471
- default: true
472
- },
473
- otherValidate: Function,
474
- flow: Object,
475
- events: Object,
476
- recordid: String,
477
- pendingId: String,
478
- arcurl: String,
479
- itemname: String,
480
- show: {
481
- type: Boolean,
482
- default: true
483
- },
484
- closeParent: {
485
- type: Boolean,
486
- default: true
487
- },
488
- appId: String,
489
- zoom: false,
490
- width: {
491
- type: String,
492
- default: '360px'
493
- },
494
- refs: String,
495
- isSubmit: {
496
- type: Boolean,
497
- default: true
498
- }
499
- },
500
- data() {
501
- return {
502
- activeName: this.active,
503
- businessId: undefined,
504
- taskExamineAppId: this.appId,
505
- showMsg: true,
506
- formRefs: this.refs,
507
- submits: null
508
- };
509
- },
510
- computed: {
511
- tabs() {
512
- return this.contents ? this.contents : [];
513
- },
514
- isShow() {
515
- if (
516
- this.flow &&
517
- Object.prototype.hasOwnProperty.call(this.flow, 'show')
518
- ) {
519
- return this.flow.show;
520
- }
521
- let flow = util.getParams({ name: 'flow' });
522
- if (flow == 0) {
523
- return false;
524
- }
525
- return this.show;
526
- },
527
- _flow() {
528
- return !this.flow.pendingId
529
- ? { ...this.flow, pendingId: this.pendingId }
530
- : this.flow;
531
- }
532
- },
533
- watch: {
534
- activeName(val) {
535
- this.$emit('update:active', val);
536
- },
537
- businessId(val) {
538
- this.handleChangeData({ businessId: val });
539
- }
540
- },
541
- created() {
542
- if (this.flow.businessId || this.flow.pendingId) {
543
- this.businessId = this.flow.businessId || this.flow.pendingId;
544
- }
545
- },
546
- mounted() {},
547
- methods: {
548
- handleHide(res) {
549
- return typeof res === 'boolean'
550
- ? !res
551
- : typeof res === 'string'
552
- ? this[res]
553
- : true;
554
- },
555
- handleExclAttribute({ data, attrs }) {
556
- if (!attrs || !attrs.length) {
557
- this.ref && (this.formRefs = this.ref);
558
- return data;
559
- }
560
- return util.exclAttribute({
561
- data: data,
562
- attrs: attrs
563
- });
564
- },
565
- handleUrlJoinParams(res, flag = true) {
566
- let url = res.url;
567
- if (flag) {
568
- if (res.method) {
569
- this.submit = {
570
- id: res.id,
571
- url: url,
572
- method: typeof res.method === 'boolean' ? 'submit' : res.method
573
- };
574
- }
575
- }
576
- let param = util.extend(
577
- {},
578
- { id: this.businessId, appId: this.taskExamineAppId },
579
- res.param || {}
580
- );
581
- return util.urlJoinParams({ url, param });
582
- },
583
- handleBefore(active, old) {
584
- return new Promise((resolve, reject) => {
585
- let n = parseInt(active, 10);
586
- let item = this.tabs[n];
587
- let url = null;
588
- let name = item.name;
589
- let width = 0;
590
- let height = 0;
591
- let win = util.win.top;
592
- width = win.screen.availWidth - 10;
593
- height = win.screen.availHeight - 60;
594
- if (item.url) {
595
- url = this.handleUrlJoinParams(item);
596
- }
597
- if (
598
- item.contents &&
599
- item.contents.type === 'iframe' &&
600
- item.contents.blank
601
- ) {
602
- item.contents.name && (name = item.contents.name);
603
- url = this.handleUrlJoinParams(item.contents);
604
- }
605
- if (url) {
606
- reject();
607
- util.win.open(
608
- url,
609
- name,
610
- `width=${width}px,height=${height}px,resizable=yes,status=yes,menubar=no,scrollbars=yes`
611
- );
612
- } else {
613
- resolve();
614
- }
615
- });
616
- },
617
- handleSubmit(res) {
618
- if (this.submit) {
619
- if (this.submit.id) {
620
- let iframe = document.getElementById(this.submit.id); //先找到ifram
621
-
622
- if (this.submit.url) {
623
- let url = new URL(this.submit.url);
624
- let origin = url.origin;
625
- let _origin = util.win.location.origin;
626
- if (origin != _origin) {
627
- iframe.contentWindow.postMessage({ submit: res }, '*');
628
- return new Promise((resolve, reject) => {
629
- window.addEventListener('message', function (obj) {
630
- if (obj.origin == origin) {
631
- let results = obj.data;
632
- if (results.code == 0) {
633
- resolve();
634
- } else {
635
- reject();
636
- }
637
- }
638
- });
639
- });
640
- }
641
- }
642
- return iframe.contentWindow[this.submit.method](res); //用dom对象调用子页面的方法
643
- }
644
- }
645
- let esFlowForm = this.formRefs
646
- ? this.$refs[this.formRefs]
647
- : this.$refs.esFlowForm;
648
- if (Array.isArray(esFlowForm)) {
649
- esFlowForm = esFlowForm[0];
650
- }
651
- esFlowForm;
652
- this.showMsg = res == 1 ? false : true;
653
-
654
- if (this.otherValidate) {
655
- return new Promise((resolve, reject) => {
656
- esFlowForm
657
- .submitData(undefined, false, res, res === 1)
658
- .then(() => {
659
- // 如果submitData验证通过,则执行otherValidate验证
660
- this.otherValidate(resolve, reject);
661
- })
662
- .catch((error) => {
663
- // 处理submitData可能抛出的错误
664
- reject(error);
665
- });
666
- });
667
- }
668
- return esFlowForm.submitData(undefined, false, res, res === 1);
669
- },
670
- handleTaskRead(res) {
671
- if (res.data.taskExamine && res.data.taskExamine.appId) {
672
- this.taskExamineAppId = res.data.taskExamine.appId;
673
- this.injector &&
674
- this.injector.handleChangeData({ appId: this.taskExamineAppId });
675
- }
676
- },
677
- handleEndMessageChange(val) {
678
- this.$emit('endMessageChange', val);
679
- },
680
- handleSuccess() {
681
- let windowOpenConfig = sessionStorage.getItem('windowOpenConfig');
682
- if (this.closeWindow && windowOpenConfig) {
683
- util.busEmit(this, {
684
- method: 'windowClose',
685
- ...JSON.parse(windowOpenConfig)
686
- });
687
- util.win.top.windowClose(JSON.parse(windowOpenConfig));
688
- } else if (this.closeDialog && this.esDialog) {
689
- this.esDialog.handleClose();
690
- } else if (util.win.top.COOS_SDK) {
691
- util.win.top.COOS_SDK.closePopup && util.win.top.COOS_SDK.closePopup();
692
- } else if (util.win.top.opener) {
693
- util.win.top.close();
694
- }
695
- if (this.events && this.events.success) {
696
- this.events.success();
697
- }
698
- this.$emit('success');
699
- },
700
- handleSave(id, event) {
701
- let windowOpenConfig = sessionStorage.getItem('windowOpenConfig');
702
- if (this.closeWindow && windowOpenConfig) {
703
- util.busEmit(this, {
704
- method: 'windowClose',
705
- ...JSON.parse(windowOpenConfig)
706
- });
707
- util.win.top.windowClose(JSON.parse(windowOpenConfig));
708
- } else if (this.closeDialog && this.esDialog) {
709
- this.esDialog.handleClose();
710
- } else if (util.win.top.COOS_SDK) {
711
- util.win.top.COOS_SDK.closePopup && util.win.top.COOS_SDK.closePopup();
712
- } else if (util.win.top.opener) {
713
- util.win.top.close();
714
- }
715
- this.events && this.events.save(id, event);
716
- this.$emit('save', id, event);
717
- },
718
- handleChangeId(id) {
719
- this.businessId = id;
720
- },
721
- handleChangeData(res) {
722
- this.$emit('changeData', res);
723
- this.$emit('change-data', res);
724
- }
725
- }
726
- };
727
- </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
+ closeWindow: Boolean,
469
+ closeDialog: {
470
+ type: Boolean,
471
+ default: true
472
+ },
473
+ otherValidate: Function,
474
+ flow: Object,
475
+ events: Object,
476
+ recordid: String,
477
+ pendingId: String,
478
+ arcurl: String,
479
+ itemname: String,
480
+ show: {
481
+ type: Boolean,
482
+ default: true
483
+ },
484
+ closeParent: {
485
+ type: Boolean,
486
+ default: true
487
+ },
488
+ appId: String,
489
+ zoom: false,
490
+ width: {
491
+ type: String,
492
+ default: '360px'
493
+ },
494
+ refs: String,
495
+ isSubmit: {
496
+ type: Boolean,
497
+ default: true
498
+ }
499
+ },
500
+ data() {
501
+ return {
502
+ activeName: this.active,
503
+ businessId: undefined,
504
+ taskExamineAppId: this.appId,
505
+ showMsg: true,
506
+ formRefs: this.refs,
507
+ submits: null
508
+ };
509
+ },
510
+ computed: {
511
+ tabs() {
512
+ return this.contents ? this.contents : [];
513
+ },
514
+ isShow() {
515
+ if (
516
+ this.flow &&
517
+ Object.prototype.hasOwnProperty.call(this.flow, 'show')
518
+ ) {
519
+ return this.flow.show;
520
+ }
521
+ let flow = util.getParams({ name: 'flow' });
522
+ if (flow == 0) {
523
+ return false;
524
+ }
525
+ return this.show;
526
+ },
527
+ _flow() {
528
+ return !this.flow.pendingId
529
+ ? { ...this.flow, pendingId: this.pendingId }
530
+ : this.flow;
531
+ }
532
+ },
533
+ watch: {
534
+ activeName(val) {
535
+ this.$emit('update:active', val);
536
+ },
537
+ businessId(val) {
538
+ this.handleChangeData({ businessId: val });
539
+ }
540
+ },
541
+ created() {
542
+ if (this.flow.businessId || this.flow.pendingId) {
543
+ this.businessId = this.flow.businessId || this.flow.pendingId;
544
+ }
545
+ },
546
+ mounted() {},
547
+ methods: {
548
+ handleHide(res) {
549
+ return typeof res === 'boolean'
550
+ ? !res
551
+ : typeof res === 'string'
552
+ ? this[res]
553
+ : true;
554
+ },
555
+ handleExclAttribute({ data, attrs }) {
556
+ if (!attrs || !attrs.length) {
557
+ this.ref && (this.formRefs = this.ref);
558
+ return data;
559
+ }
560
+ return util.exclAttribute({
561
+ data: data,
562
+ attrs: attrs
563
+ });
564
+ },
565
+ handleUrlJoinParams(res, flag = true) {
566
+ let url = res.url;
567
+ if (flag) {
568
+ if (res.method) {
569
+ this.submit = {
570
+ id: res.id,
571
+ url: url,
572
+ method: typeof res.method === 'boolean' ? 'submit' : res.method
573
+ };
574
+ }
575
+ }
576
+ let param = util.extend(
577
+ {},
578
+ { id: this.businessId, appId: this.taskExamineAppId },
579
+ res.param || {}
580
+ );
581
+ return util.urlJoinParams({ url, param });
582
+ },
583
+ handleBefore(active, old) {
584
+ return new Promise((resolve, reject) => {
585
+ let n = parseInt(active, 10);
586
+ let item = this.tabs[n];
587
+ let url = null;
588
+ let name = item.name;
589
+ let width = 0;
590
+ let height = 0;
591
+ width = util.win.screen.availWidth - 10;
592
+ height = util.win.screen.availHeight - 60;
593
+ if (item.url) {
594
+ url = this.handleUrlJoinParams(item);
595
+ }
596
+ if (
597
+ item.contents &&
598
+ item.contents.type === 'iframe' &&
599
+ item.contents.blank
600
+ ) {
601
+ item.contents.name && (name = item.contents.name);
602
+ url = this.handleUrlJoinParams(item.contents);
603
+ }
604
+ if (url) {
605
+ reject();
606
+ util.win.open(
607
+ url,
608
+ name,
609
+ `width=${width}px,height=${height}px,resizable=yes,status=yes,menubar=no,scrollbars=yes`
610
+ );
611
+ } else {
612
+ resolve();
613
+ }
614
+ });
615
+ },
616
+ handleSubmit(res) {
617
+ if (this.submit) {
618
+ if (this.submit.id) {
619
+ let iframe = document.getElementById(this.submit.id); //先找到ifram
620
+
621
+ if (this.submit.url) {
622
+ let url = new URL(this.submit.url);
623
+ let origin = url.origin;
624
+ let _origin = util.win.location.origin;
625
+ if (origin != _origin) {
626
+ iframe.contentWindow.postMessage({ submit: res }, '*');
627
+ return new Promise((resolve, reject) => {
628
+ window.addEventListener('message', function (obj) {
629
+ if (obj.origin == origin) {
630
+ let results = obj.data;
631
+ if (results.code == 0) {
632
+ resolve();
633
+ } else {
634
+ reject();
635
+ }
636
+ }
637
+ });
638
+ });
639
+ }
640
+ }
641
+ return iframe.contentWindow[this.submit.method](res); //用dom对象调用子页面的方法
642
+ }
643
+ }
644
+ let esFlowForm = this.formRefs
645
+ ? this.$refs[this.formRefs]
646
+ : this.$refs.esFlowForm;
647
+ if (Array.isArray(esFlowForm)) {
648
+ esFlowForm = esFlowForm[0];
649
+ }
650
+ esFlowForm;
651
+ this.showMsg = res == 1 ? false : true;
652
+
653
+ if (this.otherValidate) {
654
+ return new Promise((resolve, reject) => {
655
+ esFlowForm
656
+ .submitData(undefined, false, res, res === 1)
657
+ .then(() => {
658
+ // 如果submitData验证通过,则执行otherValidate验证
659
+ this.otherValidate(resolve, reject);
660
+ })
661
+ .catch((error) => {
662
+ // 处理submitData可能抛出的错误
663
+ reject(error);
664
+ });
665
+ });
666
+ }
667
+ return esFlowForm.submitData(undefined, false, res, res === 1);
668
+ },
669
+ handleTaskRead(res) {
670
+ if (res.data.taskExamine && res.data.taskExamine.appId) {
671
+ this.taskExamineAppId = res.data.taskExamine.appId;
672
+ this.injector &&
673
+ this.injector.handleChangeData({ appId: this.taskExamineAppId });
674
+ }
675
+ },
676
+ handleEndMessageChange(val) {
677
+ this.$emit('endMessageChange', val);
678
+ },
679
+ handleSuccess() {
680
+ let windowOpenConfig = sessionStorage.getItem('windowOpenConfig');
681
+ if (this.closeWindow && windowOpenConfig) {
682
+ util.busEmit(this, {
683
+ method: 'windowClose',
684
+ ...JSON.parse(windowOpenConfig)
685
+ });
686
+ util.getWinTop().windowClose(JSON.parse(windowOpenConfig));
687
+ } else if (this.closeDialog && this.esDialog) {
688
+ this.esDialog.handleClose();
689
+ } else if (util.getWinTop().COOS_SDK) {
690
+ util.getWinTop().COOS_SDK.closePopup &&
691
+ util.getWinTop().COOS_SDK.closePopup();
692
+ } else if (util.getWinTop().opener) {
693
+ util.getWinTop().close();
694
+ }
695
+ if (this.events && this.events.success) {
696
+ this.events.success();
697
+ }
698
+ this.$emit('success');
699
+ },
700
+ handleSave(id, event) {
701
+ let windowOpenConfig = sessionStorage.getItem('windowOpenConfig');
702
+ if (this.closeWindow && windowOpenConfig) {
703
+ util.busEmit(this, {
704
+ method: 'windowClose',
705
+ ...JSON.parse(windowOpenConfig)
706
+ });
707
+ util.getWinTop().windowClose(JSON.parse(windowOpenConfig));
708
+ } else if (this.closeDialog && this.esDialog) {
709
+ this.esDialog.handleClose();
710
+ } else if (util.getWinTop().COOS_SDK) {
711
+ util.getWinTop().COOS_SDK.closePopup &&
712
+ util.getWinTop().COOS_SDK.closePopup();
713
+ } else if (util.getWinTop().opener) {
714
+ util.getWinTop().close();
715
+ }
716
+ this.events && this.events.save(id, event);
717
+ this.$emit('save', id, event);
718
+ },
719
+ handleChangeId(id) {
720
+ this.businessId = id;
721
+ },
722
+ handleChangeData(res) {
723
+ this.$emit('changeData', res);
724
+ this.$emit('change-data', res);
725
+ }
726
+ }
727
+ };
728
+ </script>