cloud-web-corejs 1.0.258 → 1.0.259

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 (248) hide show
  1. package/package.json +32 -25
  2. package/src/components/VabUpload/fileLibraryDialog.vue +296 -0
  3. package/src/components/VabUpload/index.js +22 -2
  4. package/src/components/VabUpload/index.vue +242 -231
  5. package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
  6. package/src/components/VabUpload/mixins.js +1971 -1829
  7. package/src/components/VabUpload/privateProfileDialog.vue +2 -2
  8. package/src/components/baseArea/index.vue +1628 -0
  9. package/src/components/baseInputExport/mixins.js +48 -31
  10. package/src/components/baseInputNumber/index.vue +9 -9
  11. package/src/components/baseTabs/index.vue +16 -8
  12. package/src/components/code-editor/async.js +29 -0
  13. package/src/components/code-editor/index.vue +93 -4
  14. package/src/components/errorMsg/index.js +10 -9
  15. package/src/components/errorMsg/mixins.js +25 -23
  16. package/src/components/excelExport/exportFieldDialog.vue +40 -18
  17. package/src/components/excelExport/index.js +62 -3
  18. package/src/components/excelExport/index.vue +2 -1
  19. package/src/components/excelExport/mixins.js +496 -340
  20. package/src/components/excelImport/index.js +69 -7
  21. package/src/components/excelImport/mixins.js +841 -9
  22. package/src/components/fileLibrary/categoryMoveDialog.vue +109 -109
  23. package/src/components/fileLibrary/fileHistoryDialog.vue +1 -1
  24. package/src/components/fileLibrary/fileObjAuthDialog.vue +297 -298
  25. package/src/components/fileLibrary/fileObjAuthEdit.vue +1 -1
  26. package/src/components/fileLibrary/filterDialog.vue +1 -1
  27. package/src/components/fileLibrary/index.vue +1109 -1110
  28. package/src/components/fileLibrary/mixins/indexMixins.js +10 -0
  29. package/src/components/fileLibrary/propertiesDialog.vue +190 -190
  30. package/src/components/fileLibrary/recycleBinDialog.vue +237 -236
  31. package/src/components/formOplog/mixins.js +85 -80
  32. package/src/components/hiprint/view/design/index.vue +7 -2
  33. package/src/components/jsonImport/exportUtil.js +106 -0
  34. package/src/components/jsonImport/index.js +75 -50
  35. package/src/components/jsonImport/mixins.js +350 -348
  36. package/src/components/langImport/mixins.js +502 -500
  37. package/src/components/micro-view-host/contract.js +66 -0
  38. package/src/components/micro-view-host/index.vue +148 -0
  39. package/src/components/mobile/file/index.vue +10 -0
  40. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +51 -47
  41. package/src/components/obsUpload/index.vue +234 -231
  42. package/src/components/obsUpload/mixins.js +1542 -1476
  43. package/src/components/onlineTalk/talkUserDialog.vue +1 -1
  44. package/src/components/table/CellSlot.vue +12 -10
  45. package/src/components/table/config.js +74 -1
  46. package/src/components/table/index.js +1208 -1
  47. package/src/components/table/tableFormMixin.js +285 -1
  48. package/src/components/table/util/index.js +38 -40
  49. package/src/components/table/vxeFilter/index.js +153 -2
  50. package/src/components/table/vxeFilter/mixin.js +305 -3
  51. package/src/components/tempStorage/tempStorageDialog.vue +1 -1
  52. package/src/components/vb-tabs/x-tabs.vue +10 -5
  53. package/src/components/wf/addTaskUserdialog.vue +1 -1
  54. package/src/components/wf/mixins/setCandidateDialog.js +217 -217
  55. package/src/components/wf/mixins/setCandidateDialog2.js +252 -252
  56. package/src/components/wf/wf.js +2224 -2203
  57. package/src/components/wf/wfUtil.js +2 -1
  58. package/src/components/xform/docs/2026-08 /345/210/227/350/241/250/345/257/274/345/207/272/350/204/261/346/225/217/345/210/227/345/211/224/351/231/244/350/220/275/345/234/260/346/226/207/346/241/243.md" +173 -0
  59. package/src/components/xform/form-designer/designer.js +1 -0
  60. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +110 -1
  61. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +282 -1
  62. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +272 -0
  63. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +119 -0
  64. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +14 -0
  65. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +18 -73
  66. package/src/components/xform/form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js +451 -0
  67. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +157 -0
  68. package/src/components/xform/form-designer/form-widget/field-widget/mixins/utc-transform-mixin.js +75 -0
  69. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +112 -0
  70. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +149 -0
  71. package/src/components/xform/form-designer/form-widget/indexMixin.js +179 -1
  72. package/src/components/xform/form-designer/indexMixin.js +823 -1
  73. package/src/components/xform/form-designer/refMixinDesign.js +27 -1
  74. package/src/components/xform/form-designer/setting-panel/action-button-config-dialog.vue +241 -0
  75. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +601 -0
  76. package/src/components/xform/form-designer/setting-panel/form-setting.vue +6 -0
  77. package/src/components/xform/form-designer/setting-panel/index.vue +314 -309
  78. package/src/components/xform/form-designer/setting-panel/indexMixin.js +324 -1
  79. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +8 -7
  80. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +8 -7
  81. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +344 -0
  82. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +2 -2
  83. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +25 -0
  84. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -0
  85. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
  86. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +199 -0
  87. package/src/components/xform/form-designer/setting-panel/property-editor/field-baseAttachment/baseAttachment-fileTypes-editor.vue +23 -0
  88. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +21 -0
  89. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +157 -0
  90. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +55 -0
  91. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/vabUpload-fileTypes-editor.vue +23 -0
  92. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesEditorMixin.js +116 -0
  93. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +176 -0
  94. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +3 -3
  95. package/src/components/xform/form-designer/setting-panel/property-editor/utcTransformEnabled-editor.vue +19 -0
  96. package/src/components/xform/form-designer/setting-panel/widgetPropertyDialogMixin.js +186 -0
  97. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +566 -1
  98. package/src/components/xform/form-designer/widget-panel/indexMixin.js +290 -1
  99. package/src/components/xform/form-render/compareDelList.vue +83 -0
  100. package/src/components/xform/form-render/compareView.vue +76 -0
  101. package/src/components/xform/form-render/container-item/containerItemMixin.js +378 -1
  102. package/src/components/xform/form-render/container-item/data-table-mixin.js +35 -0
  103. package/src/components/xform/form-render/container-item/detail-item.vue +41 -0
  104. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
  105. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +416 -0
  106. package/src/components/xform/form-render/container-item/list-h5-item.vue +12 -0
  107. package/src/components/xform/form-render/dynamicDialogRender.js +195 -1
  108. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  109. package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
  110. package/src/components/xform/form-render/refMixin.js +29 -1
  111. package/src/components/xform/mixins/scriptHttp.js +172 -1
  112. package/src/components/xform/utils/dynamicSchemaUtil.js +361 -0
  113. package/src/components/xform/utils/tableCellValidateUtil.js +148 -0
  114. package/src/components/xform/utils/textMaskUtil.js +179 -0
  115. package/src/components/xform/utils/treeTableUtil.js +1265 -0
  116. package/src/components/xform/utils/util.js +1 -0
  117. package/src/components/xform/utils/validators.js +133 -1
  118. package/src/directive/LimitNumber/index.js +143 -124
  119. package/src/microRouter/index.js +447 -0
  120. package/src/mixins/tableTree/index.js +77 -14
  121. package/src/permission.js +132 -107
  122. package/src/public-path.js +38 -0
  123. package/src/router/index.js +3 -3
  124. package/src/store/modules/micro.js +57 -0
  125. package/src/store/modules/permission.js +535 -371
  126. package/src/store/modules/tagsView.js +38 -21
  127. package/src/store/modules/user.js +409 -370
  128. package/src/utils/aes.js +9 -3
  129. package/src/utils/auth.js +1 -1
  130. package/src/utils/componentDialog.js +162 -40
  131. package/src/utils/global.js +35 -34
  132. package/src/utils/index.js +579 -579
  133. package/src/utils/keepAlive.js +8 -4
  134. package/src/utils/lazyPlugin.js +66 -0
  135. package/src/utils/menuAdapter.js +277 -0
  136. package/src/utils/repeatOpen.js +48 -0
  137. package/src/utils/request.js +417 -395
  138. package/src/utils/resolveViewComponent.js +203 -0
  139. package/src/utils/vab.js +14 -3
  140. package/src/utils/validate.js +104 -106
  141. package/src/views/bd/setting/bd_attach_setting/dialog.vue +1 -1
  142. package/src/views/bd/setting/bd_attach_setting/list.vue +1 -1
  143. package/src/views/bd/setting/bd_company_env/dialog.vue +1 -1
  144. package/src/views/bd/setting/bd_company_env/list.vue +1 -1
  145. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +488 -489
  146. package/src/views/bd/setting/form_import_log/list.vue +1 -1
  147. package/src/views/bd/setting/form_script/dialog.vue +1 -1
  148. package/src/views/bd/setting/form_script/form_list.vue +174 -166
  149. package/src/views/bd/setting/form_script/list.vue +1 -1
  150. package/src/views/bd/setting/form_script/list1.vue +1 -1
  151. package/src/views/bd/setting/form_script/mixins/form_list.js +330 -322
  152. package/src/views/bd/setting/form_template/dialog.vue +1 -1
  153. package/src/views/bd/setting/form_template/formDesignerDialog.vue +172 -171
  154. package/src/views/bd/setting/form_template/ftHistoryDialog.vue +1 -1
  155. package/src/views/bd/setting/form_template/itemList.vue +1 -1
  156. package/src/views/bd/setting/form_template/list.vue +3 -3
  157. package/src/views/bd/setting/form_template/mixins/edit.js +3 -3
  158. package/src/views/bd/setting/form_template/mixins/list.js +3 -3
  159. package/src/views/bd/setting/form_template/mixins/list2.js +3 -3
  160. package/src/views/bd/setting/form_template/mixins/wf_list.js +3 -3
  161. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +253 -254
  162. package/src/views/bd/setting/form_template/wf_list.vue +3 -3
  163. package/src/views/bd/setting/logic_param/edit.vue +20 -20
  164. package/src/views/bd/setting/logic_param/list.vue +1 -1
  165. package/src/views/bd/setting/menu_kind/dialog.vue +1 -1
  166. package/src/views/bd/setting/menu_kind/list.vue +1 -1
  167. package/src/views/bd/setting/push_data/list.vue +1 -1
  168. package/src/views/bd/setting/push_data_h/list.vue +1 -1
  169. package/src/views/bd/setting/request_async_setting/list.vue +1 -1
  170. package/src/views/bd/setting/request_setting/list.vue +1 -1
  171. package/src/views/bd/setting/table_model/dialog.vue +1 -1
  172. package/src/views/bd/setting/table_model/list.vue +1 -1
  173. package/src/views/bd/setting/table_model/zdDialog.vue +1 -1
  174. package/src/views/user/access_log/list.vue +1 -1
  175. package/src/views/user/access_log/list2.vue +1 -1
  176. package/src/views/user/api_request/list.vue +1 -1
  177. package/src/views/user/area/dialog.vue +1 -1
  178. package/src/views/user/area/list.vue +1 -1
  179. package/src/views/user/bill_setting/list.vue +1 -1
  180. package/src/views/user/bill_setting/userDialog.vue +1 -1
  181. package/src/views/user/code_rules/list.vue +1 -1
  182. package/src/views/user/commMenu/index.vue +2 -2
  183. package/src/views/user/common_attribute/list.vue +2 -2
  184. package/src/views/user/common_script/list.vue +1 -1
  185. package/src/views/user/company_info/dialog.vue +1 -1
  186. package/src/views/user/country/dialog.vue +1 -1
  187. package/src/views/user/country/list.vue +1 -1
  188. package/src/views/user/data_type_setting/dialog.vue +1 -1
  189. package/src/views/user/extend_datasource/dialog.vue +4 -1
  190. package/src/views/user/extend_datasource/edit.vue +2 -1
  191. package/src/views/user/extend_datasource/list.vue +4 -1
  192. package/src/views/user/fieldTranslation/list.vue +1 -1
  193. package/src/views/user/field_values_invisible/list.vue +1 -1
  194. package/src/views/user/file_type/list.vue +1 -1
  195. package/src/views/user/file_view_area/list.vue +1 -1
  196. package/src/views/user/file_view_ins/list.vue +22 -1
  197. package/src/views/user/form/view/list.vue +64 -1
  198. package/src/views/user/groups/dialog.vue +1 -1
  199. package/src/views/user/groups/list.vue +1 -1
  200. package/src/views/user/home/default.vue +2 -2
  201. package/src/views/user/home/default2.vue +1158 -1148
  202. package/src/views/user/home/index.vue +3 -10
  203. package/src/views/user/lang_tag/dialog.vue +1 -1
  204. package/src/views/user/lang_tag/list.vue +1 -1
  205. package/src/views/user/language_setting/list.vue +1 -1
  206. package/src/views/user/login/default.vue +0 -8
  207. package/src/views/user/login/indexMixin.js +547 -556
  208. package/src/views/user/menu/list.vue +25 -2
  209. package/src/views/user/menuFallback/index.vue +123 -0
  210. package/src/views/user/mobile_menu/list.vue +1 -1
  211. package/src/views/user/notify_message/dialog.vue +22 -1
  212. package/src/views/user/notify_message/list.vue +1 -1
  213. package/src/views/user/notify_template/list.vue +1 -1
  214. package/src/views/user/notify_template/list2.vue +1 -1
  215. package/src/views/user/oplog/list.vue +1 -1
  216. package/src/views/user/outLink/form_view.vue +5 -14
  217. package/src/views/user/outLink/index.vue +6 -1
  218. package/src/views/user/outLink/view.vue +5 -13
  219. package/src/views/user/position/dialog.vue +1 -1
  220. package/src/views/user/position/list.vue +1 -1
  221. package/src/views/user/project_tag/dialog.vue +1 -1
  222. package/src/views/user/project_tag/list.vue +1 -1
  223. package/src/views/user/push_setting/list.vue +1 -1
  224. package/src/views/user/request_setting/list.vue +1 -1
  225. package/src/views/user/role/dialog.vue +1 -1
  226. package/src/views/user/role/list.vue +1 -1
  227. package/src/views/user/sale_org/dialog.vue +1 -1
  228. package/src/views/user/sale_org/list.vue +1 -1
  229. package/src/views/user/system_notice/list.vue +1 -1
  230. package/src/views/user/system_parameter/list.vue +1 -1
  231. package/src/views/user/user/dialog.vue +1 -1
  232. package/src/views/user/user/edit.vue +306 -159
  233. package/src/views/user/user/form_dialog.vue +1 -1
  234. package/src/views/user/user/form_list.vue +1 -1
  235. package/src/views/user/user/list.vue +2 -2
  236. package/src/views/user/user_log_classify/list.vue +1 -1
  237. package/src/views/user/wf/iframe/index.vue +6 -1
  238. package/src/views/user/wf/iframe/index2.vue +6 -1
  239. package/src/views/user/wf/wfReport/index.vue +12 -6
  240. package/src/views/user/wf/wf_auto_submit_data/list.vue +2 -2
  241. package/src/views/user/wf/wf_manage/list.vue +97 -24
  242. package/src/views/user/wf/wf_manage/list2.vue +875 -0
  243. package/src/views/user/wf/wf_manage/wfContentDialog.vue +23 -1
  244. package/src/views/user/wf/wf_obj_config/dialog.vue +1 -1
  245. package/src/views/user/wf/wf_obj_config/list.vue +1 -1
  246. package/src/views/user/wf/wf_obj_config/list_form.vue +1 -1
  247. package/src/views/user/wf/wf_transfer_setting/list.vue +1 -1
  248. package/src/views/user/workbench_menu/list.vue +1 -1
@@ -0,0 +1,66 @@
1
+ /**
2
+ * 详情承载契约(纯常量 + props 构造,无副作用,可完整单测)。
3
+ * micro-view-host(主/渲染方)与子应用「详情承载入口」共同遵守。
4
+ * 完整设计见 docs/qiankun动态详情页承载方案.md 第 5 节。
5
+ *
6
+ * 关键前提:qiankun loadMicroApp 的 props 是同一 JS realm 内的普通对象,
7
+ * 函数可直接传入并被子应用调用——故上行回调用函数 props,不需事件总线;
8
+ * 真正跨不过去的是 Vue 实例(parentVue)与 $parent 链,由子应用侧用 shim 合成。
9
+ */
10
+
11
+ // props 标志:子应用 mount 时据此进入「详情承载」分支(而非常规整站渲染)
12
+ export const DETAIL_HOST_MODE = "microDetailHost";
13
+
14
+ // 上行回调字段名(函数 props)。子应用承载入口据此把详情页的
15
+ // $baseReload / _handleCallback / 关闭 / outParam.sync / 任意 listeners
16
+ // 转调回渲染方(见方案 §5.2 / §5.3 的 parentVue shim)。
17
+ export const DETAIL_HOST_CALLBACKS = [
18
+ "onReload",
19
+ "onHandleCallback",
20
+ "onClose",
21
+ "onUpdateOutParam",
22
+ "onEmit",
23
+ ];
24
+
25
+ /**
26
+ * 构造下发给子应用的 props。
27
+ *
28
+ * @param {object} input
29
+ * @param {string} input.appCode 归属子应用 appCode
30
+ * @param {string} input.targetPath 剥掉 /micro/<appCode> 后的子应用内路径
31
+ * @param {object} input.bizParams 业务字段整包(objTypeCode/formCode/dataId/param/queryParam…)
32
+ * @param {object} input.viewMeta 承载元数据(visibleKey/defaultShowWfContent/viewType)
33
+ * @param {*} input.initialOutParam outParam 初值(替代 .sync 入向)
34
+ * @param {object} input.baseProps 基础 props(token/lang/userInfo/mainAdapter…)
35
+ * @param {object} input.callbacks 上行回调;仅函数值会被收录
36
+ * @returns {object} 传给 loadMicroApp 的 props
37
+ */
38
+ export function buildDetailHostProps(input = {}) {
39
+ const {
40
+ appCode,
41
+ targetPath,
42
+ bizParams,
43
+ viewMeta,
44
+ initialOutParam,
45
+ baseProps,
46
+ callbacks,
47
+ } = input;
48
+
49
+ const props = Object.assign({}, baseProps, {
50
+ [DETAIL_HOST_MODE]: true,
51
+ appCode: appCode || "",
52
+ targetPath: targetPath || "",
53
+ bizParams: bizParams || {},
54
+ viewMeta: viewMeta || {},
55
+ initialOutParam: initialOutParam,
56
+ });
57
+
58
+ const cb = callbacks || {};
59
+ DETAIL_HOST_CALLBACKS.forEach((name) => {
60
+ if (typeof cb[name] === "function") {
61
+ props[name] = cb[name];
62
+ }
63
+ });
64
+
65
+ return props;
66
+ }
@@ -0,0 +1,148 @@
1
+ <template>
2
+ <div :id="containerId" class="micro-view-host" style="height: 100%"></div>
3
+ </template>
4
+
5
+ <script>
6
+ /**
7
+ * 详情承载宿主:在弹框/容器内用 qiankun loadMicroApp 装载归属子应用,
8
+ * 渲染其私有详情页(组件不在当前 bundle,本地 require 拿不到)。
9
+ * 契约见 ./contract.js 与 docs/qiankun动态详情页承载方案.md 第 5 节。
10
+ *
11
+ * ⚠ 依赖子应用侧实现「详情承载入口」(方案 §5.5):mount 时识别 props.microDetailHost,
12
+ * 按 targetPath 解析自身组件、用 bizParams/viewMeta 绑 props、装 parentVue shim 渲染。
13
+ * 在子应用支持该入口前,本组件装载出的仍是子应用默认渲染,未必是目标详情页。
14
+ * 因此暂不接入各弹框站点——它们仍走 $message 短期提示兜底。
15
+ *
16
+ * 多实例:宿主实例名带唯一后缀,与路由保活实例(name=appCode)隔离;
17
+ * 同一 appCode 的保活实例与若干宿主实例可并存。要求子应用容忍多实例并发。
18
+ */
19
+ import { loadMicroApp } from "qiankun";
20
+ import { getToken } from "@base/utils/auth";
21
+ import { getAppRegistry, DEBUG_ENTRY } from "@base/microRouter";
22
+ import { buildDetailHostProps } from "./contract";
23
+
24
+ // 注册表一次会话内不变,缓存首个成功结果,避免每次开弹框都打逻辑参数接口
25
+ let registryCache = null;
26
+ function loadRegistry() {
27
+ if (!registryCache) {
28
+ registryCache = getAppRegistry().catch((e) => {
29
+ registryCache = null; // 失败不缓存,允许下次重试
30
+ return Promise.reject(e);
31
+ });
32
+ }
33
+ return registryCache;
34
+ }
35
+
36
+ let hostSeq = 0;
37
+
38
+ export default {
39
+ name: "MicroViewHost",
40
+ props: {
41
+ // 归属子应用 appCode(helper 的 remote 结果透出)
42
+ owner: { type: String, required: true },
43
+ // 剥掉 /micro/<appCode> 后的子应用内路径
44
+ targetPath: { type: String, default: "" },
45
+ // 业务字段整包
46
+ bizParams: { type: Object, default: () => ({}) },
47
+ // 承载元数据
48
+ viewMeta: { type: Object, default: () => ({}) },
49
+ // outParam 初值
50
+ initialOutParam: { default: undefined },
51
+ },
52
+ data() {
53
+ hostSeq += 1;
54
+ return {
55
+ containerId: "micro-viewhost-" + this.owner + "-" + hostSeq,
56
+ instance: null,
57
+ failed: false,
58
+ };
59
+ },
60
+ mounted() {
61
+ this.load();
62
+ },
63
+ beforeDestroy() {
64
+ this.unmount();
65
+ },
66
+ methods: {
67
+ load() {
68
+ loadRegistry()
69
+ .then((apps) => {
70
+ if (this._isDestroyed || this._isBeingDestroyed) return;
71
+ const app = (apps || []).find((a) => a.appCode === this.owner);
72
+ if (!app || !app.entry) {
73
+ this.fail("未在应用注册表找到子应用或缺 entry:" + this.owner);
74
+ return;
75
+ }
76
+ // 逻辑参数 micro_debug_enabled=true 时,与路由整站装载一致:改用本机约定端口,
77
+ // 不动注册表 entry。本机联调 detail-host 时子应用 devServer 起在 17527 即可。
78
+ const entry = app.debugEnabled ? DEBUG_ENTRY : app.entry;
79
+ if (app.debugEnabled) {
80
+ // eslint-disable-next-line no-console
81
+ console.warn(
82
+ "[MicroViewHost] ⚠ 调试装载:" + this.owner + " → " + entry
83
+ );
84
+ }
85
+ this.mountApp(entry);
86
+ })
87
+ .catch((e) => {
88
+ this.fail("读取应用注册表失败", e);
89
+ });
90
+ },
91
+ mountApp(entry) {
92
+ const props = buildDetailHostProps({
93
+ appCode: this.owner,
94
+ targetPath: this.targetPath,
95
+ bizParams: this.bizParams,
96
+ viewMeta: this.viewMeta,
97
+ initialOutParam: this.initialOutParam,
98
+ baseProps: {
99
+ token: getToken(),
100
+ lang: localStorage.getItem("i18n-lang") || "",
101
+ },
102
+ callbacks: {
103
+ onReload: () => this.$emit("reload"),
104
+ onHandleCallback: (flag) => this.$emit("handle-callback", flag),
105
+ onClose: () => this.$emit("close"),
106
+ onUpdateOutParam: (v) => this.$emit("update-out-param", v),
107
+ onEmit: (name, ...args) => this.$emit("bridge-emit", name, args),
108
+ },
109
+ });
110
+ try {
111
+ this.instance = loadMicroApp({
112
+ name: this.owner + "@detailhost-" + this.containerId,
113
+ entry,
114
+ container: this.$el,
115
+ props,
116
+ });
117
+ const p = this.instance.mountPromise;
118
+ if (p && typeof p.then === "function") {
119
+ p.then(() => this.$emit("mounted")).catch((e) => {
120
+ this.fail("子应用挂载失败:" + this.owner, e);
121
+ });
122
+ }
123
+ } catch (e) {
124
+ this.fail("loadMicroApp 失败:" + this.owner, e);
125
+ }
126
+ },
127
+ unmount() {
128
+ const inst = this.instance;
129
+ if (!inst) return;
130
+ this.instance = null;
131
+ const p = inst.mountPromise || Promise.resolve();
132
+ p.then(() => inst.unmount()).catch(() => {});
133
+ },
134
+ fail(msg, err) {
135
+ this.failed = true;
136
+ // eslint-disable-next-line no-console
137
+ console.error("[MicroViewHost] " + msg, err || "");
138
+ this.$emit("load-error", this.owner);
139
+ },
140
+ },
141
+ };
142
+ </script>
143
+
144
+ <style scoped>
145
+ .micro-view-host {
146
+ width: 100%;
147
+ }
148
+ </style>
@@ -185,6 +185,16 @@ export default {
185
185
  created() {
186
186
  this.init();
187
187
  },
188
+ beforeDestroy() {
189
+ // init() 里登记的全局引用(APP 原生回调 window.fileUpload 用)持有本实例,
190
+ // 销毁时必须清理,否则每个上传组件实例都会永久泄露
191
+ if (window.mobileFileRefMap && this.uuid) {
192
+ delete window.mobileFileRefMap[this.uuid];
193
+ }
194
+ if (window.currentFileTarget === this) {
195
+ window.currentFileTarget = null;
196
+ }
197
+ },
188
198
  methods: {
189
199
  appUpload() {
190
200
  let param = JSON.stringify({
@@ -1,47 +1,51 @@
1
- let mixin = {};
2
- let configUtil = {
3
- baseUrl: process.env.VUE_APP_BASE_API,
4
- requireView: (url) => {
5
- return require("@/views" + url).default;
6
- },
7
- };
8
- mixin = {
9
- name: "wfModifyMixin",
10
- props: {
11
- dataId: [String, Number],
12
- code: [String, Number],
13
- visible: Boolean,
14
- paramData: Object,
15
- parentVue: Object,
16
- wfInfo: Object,
17
- },
18
- data() {
19
- return {
20
- showModifyDialog: false,
21
- showBillEdit: false,
22
- content: "",
23
- };
24
- },
25
- async mounted() {
26
- this.openWfModifyDialog(this.code);
27
- },
28
- methods: {
29
- openWfModifyDialog() {
30
- let row = this.paramData;
31
- let url = row.mobileurl + ".vue";
32
- this.showModifyDialog = true;
33
- this.content = configUtil.requireView(url);
34
- this.$openEditView("showBillEdit");
35
- },
36
- close() {
37
- this.$destroy();
38
- this.$el.parentElement.removeChild(this.$el);
39
- },
40
- refreshEdit() {
41
- this.showModifyDialog = false;
42
- this.parentVue.$baseReload()
43
- }
44
- },
45
- };
46
-
47
- export default mixin;
1
+ import {requireViewCompat} from "@base/utils/resolveViewComponent";
2
+
3
+ let mixin = {};
4
+ let configUtil = {
5
+ baseUrl: process.env.VUE_APP_BASE_API,
6
+ // 归属自己 / 包内组件本地渲染;归属别家子应用(remote)或缺文件时返回 null,
7
+ // 不再抛错崩溃。归属解析见 @base/utils/resolveViewComponent。
8
+ requireView: (url) => {
9
+ return requireViewCompat(url);
10
+ },
11
+ };
12
+ mixin = {
13
+ name: "wfModifyMixin",
14
+ props: {
15
+ dataId: [String, Number],
16
+ code: [String, Number],
17
+ visible: Boolean,
18
+ paramData: Object,
19
+ parentVue: Object,
20
+ wfInfo: Object,
21
+ },
22
+ data() {
23
+ return {
24
+ showModifyDialog: false,
25
+ showBillEdit: false,
26
+ content: "",
27
+ };
28
+ },
29
+ async mounted() {
30
+ this.openWfModifyDialog(this.code);
31
+ },
32
+ methods: {
33
+ openWfModifyDialog() {
34
+ let row = this.paramData;
35
+ let url = row.mobileurl + ".vue";
36
+ this.showModifyDialog = true;
37
+ this.content = configUtil.requireView(url);
38
+ this.$openEditView("showBillEdit");
39
+ },
40
+ close() {
41
+ this.$destroy();
42
+ this.$el.parentElement.removeChild(this.$el);
43
+ },
44
+ refreshEdit() {
45
+ this.showModifyDialog = false;
46
+ this.parentVue.$baseReload()
47
+ }
48
+ },
49
+ };
50
+
51
+ export default mixin;