@gct-paas/excel 0.1.28-beta.9 → 0.1.29

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 (347) hide show
  1. package/dist/{BaseComponent-yoXj5Q9c.js → BaseComponent-9YPaGJfR.js} +3 -1
  2. package/dist/{VueVideoPlayer-DnxMrbso.js → VueVideoPlayer-DDUZu4FR.js} +2 -2
  3. package/dist/{align-editor-B4gydK1M.js → align-editor-aEWznFoT.js} +1 -1
  4. package/dist/{barcode-design-Cid0MzDI.js → barcode-design-BxpkeU3s.js} +2 -2
  5. package/dist/base/index.es.js +718 -466
  6. package/dist/{diagonal-design-C1ZotzUS.js → diagonal-design-TclIHJPn.js} +2 -2
  7. package/dist/{dynamic-table-action-C1o2TjqX.js → dynamic-table-action-DmQ4nVdA.js} +825 -216
  8. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-D8HQKSsX.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BviS9x-o.js} +2457 -757
  9. package/dist/{edit.utils-CXmmCnxE-DEOcuCns.js → edit.utils-CXmmCnxE-pmY90xaE.js} +1 -1
  10. package/dist/excel.css +20939 -21654
  11. package/dist/{exceljs.min-DHw6Xo0Z.js → exceljs.min-DMs_Il25.js} +2 -2
  12. package/dist/{font-editor-BMzWHu2P.js → font-editor-Jk202Wfw.js} +3 -3
  13. package/dist/{image-design-Cv7Md3br.js → image-design-CV8ivT4U.js} +3 -2
  14. package/dist/index-56SEKe0q.js +56 -0
  15. package/dist/{index-ClwYjOaz.js → index-B94zjbXB.js} +2 -2
  16. package/dist/{index-DCyS2gPu.js → index-B9hn-Xpy.js} +62 -261
  17. package/dist/{index-CTfI5z2v.js → index-BI1w0HuA.js} +2 -2
  18. package/dist/{index-DYJ2NY6r.js → index-BIyoFjsu.js} +1 -1
  19. package/dist/{index-Cf0HUPLj.js → index-BNdFxtuu.js} +2 -2
  20. package/dist/index-BR3okRzi.js +26 -0
  21. package/dist/{index-B_rAitke.js → index-BVy2F-LZ.js} +2 -2
  22. package/dist/{index-CDLpl1vT.js → index-BWSh7ft6.js} +57467 -75573
  23. package/dist/{index-BQLH_u5E.js → index-BgUSwNSn.js} +1 -1
  24. package/dist/{index-DVknMcoI.js → index-BzNleuvF.js} +8 -5
  25. package/dist/{index-BC7ZPYu4.js → index-CJgeCzTz.js} +4 -7
  26. package/dist/{index-KJIuf63z.js → index-CM0bDadW.js} +3 -3
  27. package/dist/{index-DYPfKE_B.js → index-Co8dy8tY.js} +2 -2
  28. package/dist/{index-Ca8Vr4hp.js → index-CslB9Mj3.js} +3 -3
  29. package/dist/{index-B2oEU1dw.js → index-D3RlguP-.js} +2 -2
  30. package/dist/{index-De0lJXBW.js → index-DAokF2RK.js} +2 -2
  31. package/dist/{index-B_qNr-yz.js → index-DUomn6r4.js} +2 -2
  32. package/dist/{index-DGF9F0hk.js → index-DVBGDVN0.js} +2 -2
  33. package/dist/{index-DLhVj92F.js → index-DVCumM_5.js} +2 -2
  34. package/dist/{index-DHCfwj7L.js → index-DX2S50Jz.js} +1 -1
  35. package/dist/{index-b03O87gX.js → index-DXutPZQB.js} +1 -1
  36. package/dist/{index-BMaOAtO5.js → index-DXvugQoP.js} +2 -2
  37. package/dist/{index-t_DIs_9d.js → index-DmLngOvC.js} +2 -2
  38. package/dist/{index-EGCBxJ5U.js → index-Dxiaj_9W.js} +2 -2
  39. package/dist/{index-CB2KdECV.js → index-DzZ4dTHg.js} +2 -2
  40. package/dist/index-P-QlF0da.js +26 -0
  41. package/dist/{index-BNW93hpM.js → index-RHv1ncwn.js} +1 -1
  42. package/dist/{index-Bi8eFVNQ.js → index-eaPQQt2I.js} +1 -1
  43. package/dist/{index-DPHsObDL.js → index-iCBdHXeT.js} +2 -2
  44. package/dist/{index-D4SRGG7R.js → index-kZ3vhOMA.js} +2 -2
  45. package/dist/{index-yee5hcWj.js → index-q0gBBMoc.js} +2 -2
  46. package/dist/{index--m7aMhTe.js → index-s7YNVpgF.js} +1 -1
  47. package/dist/{index-DWd__rfX.js → index-zuExIXWU.js} +1 -1
  48. package/dist/index.es.js +49 -47
  49. package/dist/{mb-render-DNA0sAdk.js → mb-render-BBRR_byl.js} +3 -3
  50. package/dist/{version-select-Dt0iT2ZE.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-BGrVMSEF.js} +418 -421
  51. package/dist/{pagination-design-a-8WGmGL.js → pagination-design-DWvn4UrB.js} +2 -2
  52. package/dist/paper-widget-design-DZ7tF6Rn.js +4 -0
  53. package/dist/{qrcode-design-CWa7ucIf.js → qrcode-design-yLHw_1Hb.js} +1 -1
  54. package/dist/{revo-grid.entry-D7L9YPVS.js → revo-grid.entry-DW8yYngF.js} +1 -1
  55. package/dist/{revogr-attribution_7.entry-Cp0OE2PX.js → revogr-attribution_7.entry-WnSOjAfL.js} +3 -3
  56. package/dist/{revogr-clipboard_3.entry-CcGTw0f4.js → revogr-clipboard_3.entry-5f1ZtJWy.js} +2 -2
  57. package/dist/{revogr-data_4.entry-Bh7oCpj9.js → revogr-data_4.entry-BwcXhOPY.js} +2 -2
  58. package/dist/{revogr-filter-panel.entry-OJyr7l1E.js → revogr-filter-panel.entry-CXpo_Btw.js} +1 -1
  59. package/dist/{serialnumber-design-BDTeHe2C.js → serialnumber-design-CYdELIDU.js} +1 -1
  60. package/dist/shared/index.es.js +25 -30
  61. package/dist/{single-field-drop-C-IeYaFA.js → single-field-drop-hAnlTOzR.js} +2 -2
  62. package/dist/{size-editor-Ibjf73lo.js → size-editor-Dr3sVcUl.js} +1 -1
  63. package/dist/src/adapter/adapter.d.ts +36 -0
  64. package/dist/src/adapter/setup.d.ts +18 -12
  65. package/dist/src/domain/field/auto-complete/material-container-manifest.d.ts +2 -0
  66. package/dist/src/domain/field/auto-complete/material-no-manifest.d.ts +2 -0
  67. package/dist/src/domain/field/auto-complete/related-lot-no-manifest.d.ts +2 -0
  68. package/dist/src/domain/field/auto-complete/scrap-material-no-manifest.d.ts +2 -0
  69. package/dist/src/domain/field/auto-complete/sterilization-container-manifest.d.ts +2 -0
  70. package/dist/src/domain/field/date/date-manifest.d.ts +2 -0
  71. package/dist/src/domain/field/date/date-time-manifest.d.ts +2 -0
  72. package/dist/src/domain/field/date/production-date-manifest.d.ts +2 -0
  73. package/dist/src/domain/field/date/re-inspection-date-manifest.d.ts +2 -0
  74. package/dist/src/domain/field/date/report-end-time-manifest.d.ts +2 -0
  75. package/dist/src/domain/field/date/report-start-time-manifest.d.ts +2 -0
  76. package/dist/src/domain/field/date/time-manifest.d.ts +2 -0
  77. package/dist/src/domain/field/date/trace-date-manifest.d.ts +2 -0
  78. package/dist/src/domain/field/date/validity-manifest.d.ts +2 -0
  79. package/dist/src/domain/field/date/warehouse-receipt-date-manifest.d.ts +2 -0
  80. package/dist/src/domain/field/index.d.ts +9 -0
  81. package/dist/src/domain/field/number/decimal-manifest.d.ts +2 -0
  82. package/dist/src/domain/field/number/destructive-test-qty-manifest.d.ts +2 -0
  83. package/dist/src/domain/field/number/double-manifest.d.ts +2 -0
  84. package/dist/src/domain/field/number/good-qty-manifest.d.ts +2 -0
  85. package/dist/src/domain/field/number/inspection-qty-manifest.d.ts +2 -0
  86. package/dist/src/domain/field/number/integer-manifest.d.ts +2 -0
  87. package/dist/src/domain/field/number/long-manifest.d.ts +2 -0
  88. package/dist/src/domain/field/number/material-check-qty-manifest.d.ts +2 -0
  89. package/dist/src/domain/field/number/not-good-qty-manifest.d.ts +2 -0
  90. package/dist/src/domain/field/number/of-inst-num-manifest.d.ts +2 -0
  91. package/dist/src/domain/field/number/operation-output-qty-manifest.d.ts +2 -0
  92. package/dist/src/domain/field/number/operation-receive-qty-manifest.d.ts +2 -0
  93. package/dist/src/domain/field/number/product-check-qty-manifest.d.ts +2 -0
  94. package/dist/src/domain/field/number/production-qty-manifest.d.ts +2 -0
  95. package/dist/src/domain/field/number/qty-consumed-manifest.d.ts +2 -0
  96. package/dist/src/domain/field/number/qty-manifest.d.ts +2 -0
  97. package/dist/src/domain/field/number/qty-required-manifest.d.ts +2 -0
  98. package/dist/src/domain/field/number/scrap-qty-manifest.d.ts +2 -0
  99. package/dist/src/domain/field/number/work-hours-manifest.d.ts +2 -0
  100. package/dist/src/domain/field/option/boolean-manifest.d.ts +2 -0
  101. package/dist/src/domain/field/option/enum-manifest.d.ts +2 -0
  102. package/dist/src/domain/field/option/enum-multi-manifest.d.ts +2 -0
  103. package/dist/src/domain/field/option/option-manifest.d.ts +2 -0
  104. package/dist/src/domain/field/option/option-multi-manifest.d.ts +2 -0
  105. package/dist/src/domain/field/rdo-select/e-sop-manifest.d.ts +2 -0
  106. package/dist/src/domain/field/rdo-select/product-manifest.d.ts +2 -0
  107. package/dist/src/domain/field/rdo-select/scrap-material-manifest.d.ts +2 -0
  108. package/dist/src/domain/field/select/device-manifest.d.ts +2 -0
  109. package/dist/src/domain/field/select/device-ref-manifest.d.ts +2 -0
  110. package/dist/src/domain/field/select/device-ref-multi-manifest.d.ts +2 -0
  111. package/dist/src/domain/field/select/location-manifest.d.ts +2 -0
  112. package/dist/src/domain/field/select/mfg-order-manifest.d.ts +2 -0
  113. package/dist/src/domain/field/select/model-relation-manifest.d.ts +2 -0
  114. package/dist/src/domain/field/select/not-good-group-manifest.d.ts +2 -0
  115. package/dist/src/domain/field/select/not-good-reason-manifest.d.ts +2 -0
  116. package/dist/src/domain/field/select/operation-manifest.d.ts +2 -0
  117. package/dist/src/domain/field/select/org-manifest.d.ts +2 -0
  118. package/dist/src/domain/field/select/org-multi-manifest.d.ts +2 -0
  119. package/dist/src/domain/field/select/production-container-manifest.d.ts +2 -0
  120. package/dist/src/domain/field/select/ref-manifest.d.ts +2 -0
  121. package/dist/src/domain/field/select/ref-multi-manifest.d.ts +2 -0
  122. package/dist/src/domain/field/select/routing-operation-manifest.d.ts +2 -0
  123. package/dist/src/domain/field/select/scrap-group-manifest.d.ts +2 -0
  124. package/dist/src/domain/field/select/scrap-reason-manifest.d.ts +2 -0
  125. package/dist/src/domain/field/select/shopfloor-manifest.d.ts +2 -0
  126. package/dist/src/domain/field/select/target-warehouse-manifest.d.ts +2 -0
  127. package/dist/src/domain/field/select/user-manifest.d.ts +2 -0
  128. package/dist/src/domain/field/select/user-multi-manifest.d.ts +2 -0
  129. package/dist/src/domain/field/select/warehouse-manifest.d.ts +2 -0
  130. package/dist/src/domain/field/text/e-sop-version-manifest.d.ts +2 -0
  131. package/dist/src/domain/field/text/external-reference-no-manifest.d.ts +2 -0
  132. package/dist/src/domain/field/text/long-text-manifest.d.ts +2 -0
  133. package/dist/src/domain/field/text/order-no-manifest.d.ts +2 -0
  134. package/dist/src/domain/field/text/record-no-manifest.d.ts +2 -0
  135. package/dist/src/domain/field/text/text-manifest.d.ts +2 -0
  136. package/dist/src/domain/field/text/warehouse-receipt-no-manifest.d.ts +2 -0
  137. package/dist/src/domain/field/types.d.ts +18 -0
  138. package/dist/src/domain/field/upload/attachment-manifest.d.ts +2 -0
  139. package/dist/src/domain/field/upload/image-manifest.d.ts +2 -0
  140. package/dist/src/domain/field/upload/reporter-manifest.d.ts +2 -0
  141. package/dist/src/domain/field/upload/signature-manifest.d.ts +2 -0
  142. package/dist/src/domain/field/upload/warehouse-manager-manifest.d.ts +2 -0
  143. package/dist/src/domain/index.d.ts +1 -0
  144. package/dist/src/domain/object/date-object/index.d.ts +5 -0
  145. package/dist/src/domain/object/date-object/profile/field-keys.d.ts +19 -0
  146. package/dist/src/domain/object/date-object/profile/fields.d.ts +2 -0
  147. package/dist/src/domain/object/date-object/profile/index.d.ts +3 -0
  148. package/dist/src/domain/object/date-object/runtime/date-object-context.d.ts +30 -0
  149. package/dist/src/domain/object/date-object/runtime/date-object-runtime.d.ts +43 -0
  150. package/dist/src/domain/object/date-object/runtime/fetch-records.d.ts +13 -0
  151. package/dist/src/domain/object/date-object/runtime/object-handlers.d.ts +4 -0
  152. package/dist/src/domain/object/date-object/runtime/re-inspection-date.d.ts +25 -0
  153. package/dist/src/domain/object/date-object/runtime/register-handlers.d.ts +1 -0
  154. package/dist/src/domain/object/date-object/runtime/row-change-handlers.d.ts +6 -0
  155. package/dist/src/domain/object/date-object/runtime/utils.d.ts +13 -0
  156. package/dist/src/domain/object/date-object/types.d.ts +53 -0
  157. package/dist/src/domain/object/index.d.ts +1 -0
  158. package/dist/src/domain/table/business/warehouse/device-part-consume/profile/field-keys.d.ts +14 -0
  159. package/dist/src/domain/table/business/warehouse/part-stocktake/profile/field-keys.d.ts +14 -0
  160. package/dist/src/domain/table/business/warehouse/shared/eqm-part-api.d.ts +13 -0
  161. package/dist/src/domain/table/business/warehouse/warehouse-in/profile/field-keys.d.ts +40 -3
  162. package/dist/src/domain/table/business/warehouse/warehouse-in/runtime/row-change-handlers.d.ts +9 -1
  163. package/dist/src/domain/table/business/warehouse/warehouse-inbound/profile/field-keys.d.ts +17 -0
  164. package/dist/src/domain/table/business/warehouse/warehouse-inventory/index.d.ts +3 -0
  165. package/dist/src/domain/table/business/warehouse/warehouse-inventory/profile/api.d.ts +14 -0
  166. package/dist/src/domain/table/business/warehouse/warehouse-inventory/profile/field-keys.d.ts +17 -34
  167. package/dist/src/domain/table/business/warehouse/warehouse-inventory/runtime/stocktake-dimension.d.ts +13 -0
  168. package/dist/src/domain/table/business/warehouse/warehouse-inventory/types.d.ts +20 -0
  169. package/dist/src/domain/table/business/warehouse/warehouse-outbound/profile/field-keys.d.ts +14 -0
  170. package/dist/src/domain/table/design/panel-features.d.ts +1 -0
  171. package/dist/src/index.d.ts +3 -0
  172. package/dist/src/nocode-base/src/components/document-quick-fill/fixed-quick-fill-modal.vue.d.ts +3 -1
  173. package/dist/src/nocode-base/src/components/document-sub-table-action/type.d.ts +2 -0
  174. package/dist/src/nocode-base/src/constant/index.d.ts +5 -1
  175. package/dist/src/nocode-base/src/core/sub-table/profile-driven-sub-table-core.d.ts +42 -2
  176. package/dist/src/nocode-base/src/core/sub-table/stocktake-table-core.d.ts +1 -1
  177. package/dist/src/nocode-base/src/core/sub-table/sub-table-core.d.ts +11 -0
  178. package/dist/src/nocode-base/src/core/sub-table/utils/scan/scan-helpers.d.ts +13 -0
  179. package/dist/src/nocode-base/src/core/sub-table/utils/stocktake/stocktake-calc.d.ts +3 -1
  180. package/dist/src/nocode-base/src/core/sub-table/warehouse-in-table-core.d.ts +15 -0
  181. package/dist/src/nocode-base/src/core/sub-table/warehouse-out-table-core.d.ts +1 -0
  182. package/dist/src/nocode-base/src/hooks/date-object/use-date-object.d.ts +2 -0
  183. package/dist/src/nocode-base/src/hooks/device-link/controller.d.ts +3 -4
  184. package/dist/src/nocode-base/src/hooks/device-link/types.d.ts +1 -1
  185. package/dist/src/nocode-base/src/hooks/index.d.ts +1 -0
  186. package/dist/src/nocode-base/src/hooks/material-consume/bom-validator.d.ts +20 -6
  187. package/dist/src/nocode-base/src/hooks/material-consume/material-consume-table-controller.d.ts +34 -19
  188. package/dist/src/nocode-base/src/hooks/material-consume/service.d.ts +12 -0
  189. package/dist/src/nocode-base/src/hooks/material-consume/tmpl-bom-controller.d.ts +1 -4
  190. package/dist/src/nocode-base/src/hooks/material-consume-object/bom-validator.d.ts +49 -8
  191. package/dist/src/nocode-base/src/hooks/material-consume-object/index.d.ts +1 -0
  192. package/dist/src/nocode-base/src/hooks/material-consume-object/product-lot-link.d.ts +35 -0
  193. package/dist/src/nocode-base/src/hooks/operation-receive-qty.d.ts +2 -0
  194. package/dist/src/nocode-base/src/hooks/useRenderPageFactory.d.ts +12 -0
  195. package/dist/src/nocode-base/src/hooks/useStyles.d.ts +2 -2
  196. package/dist/src/nocode-base/src/interface/device-query.d.ts +40 -0
  197. package/dist/src/nocode-base/src/interface/index.d.ts +2 -1
  198. package/dist/src/nocode-base/src/interface/render.d.ts +11 -0
  199. package/dist/src/nocode-base/src/interface/transform.d.ts +1 -1
  200. package/dist/src/nocode-base/src/types/business/index.d.ts +3 -1
  201. package/dist/src/nocode-base/src/types/business/pretreatment-list.d.ts +3 -1
  202. package/dist/src/nocode-base/src/types/business/sterilize-batch.d.ts +3 -1
  203. package/dist/src/nocode-base/src/types/business/stocktake.d.ts +5 -1
  204. package/dist/src/nocode-base/src/types/common/base.d.ts +8 -0
  205. package/dist/src/nocode-base/src/types/fields/i-select.d.ts +13 -1
  206. package/dist/src/nocode-base/src/types/fields/i-trace.d.ts +6 -6
  207. package/dist/src/nocode-base/src/types/widgets/i-paper.d.ts +4 -8
  208. package/dist/src/nocode-web-render/src/render/sub-table/stocktake/stocktake-web-render.d.ts +1 -1
  209. package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields-editor.vue.d.ts +3 -3
  210. package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields.util.d.ts +15 -0
  211. package/dist/src/online-form/src/views/__cell_widgets__/common/field-config-visibility.d.ts +2 -0
  212. package/dist/src/online-form/src/views/__cell_widgets__/common/quick-search-editor/quick-search-editor.vue.d.ts +1 -4
  213. package/dist/src/online-form/src/views/__cell_widgets__/common/quick-search-editor/quick-search.util.d.ts +12 -10
  214. package/dist/src/online-form/src/views/__cell_widgets__/common/ref-autofill-editor/autofill-field-utils.d.ts +10 -0
  215. package/dist/src/online-form/src/views/__cell_widgets__/fake-field/fake-input.vue.d.ts +13 -0
  216. package/dist/src/{nocode-web-render/src/render/sub-table/stocktake/scan-modal.vue.d.ts → online-form/src/views/__cell_widgets__/fake-field/fake-number-input.vue.d.ts} +7 -1
  217. package/dist/src/online-form/src/views/__cell_widgets__/fake-field/fake-option-select.vue.d.ts +11 -0
  218. package/dist/src/online-form/src/views/__cell_widgets__/fake-field/fake-select.vue.d.ts +11 -0
  219. package/dist/src/online-form/src/views/__cell_widgets__/fake-field/index.d.ts +4 -0
  220. package/dist/src/online-form/src/views/__cell_widgets__/field-design-components.d.ts +4 -0
  221. package/dist/src/online-form/src/views/__cell_widgets__/index.d.ts +0 -3
  222. package/dist/src/online-form/src/views/__cell_widgets__/widget-panel-map.d.ts +3 -0
  223. package/dist/src/online-form/src/views/designer/constants/index.d.ts +5 -6
  224. package/dist/src/online-form/src/views/designer/hooks/useAllSpreadSheets.d.ts +80 -0
  225. package/dist/src/online-form/src/views/designer/hooks/useSpreadSheet.d.ts +110 -3
  226. package/dist/src/online-form/src/views/designer/modules/base/drag-box.vue.d.ts +1 -1
  227. package/dist/src/online-form/src/views/designer/modules/panel/panel-data-init-config/object-init/hooks/useObjectInit.d.ts +1 -1
  228. package/dist/src/online-form/src/views/designer/modules/panel/panel-tmpl-config/ai-tmpl/ai-tmpl-editor-modal.vue.d.ts +30 -0
  229. package/dist/src/online-form/src/views/designer/modules/panel/panel-tmpl-config/ai-tmpl/ai-tmpl-editor.vue.d.ts +6 -17
  230. package/dist/src/online-form/src/views/designer/modules/panel/panel-tmpl-config/ai-tmpl/types.d.ts +20 -0
  231. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/comps/use-dynamic-sub-table-panel.d.ts +58 -0
  232. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/material-consumption/bom-entry-editor.vue.d.ts +2 -1
  233. package/dist/src/online-form/src/views/designer/modules/toolkit/model-field/add-field-btn.vue.d.ts +1 -3
  234. package/dist/src/online-form/src/views/designer/utils/cell-content-style.d.ts +30 -0
  235. package/dist/src/online-form/src/views/designer/utils/field-type-label.d.ts +1 -0
  236. package/dist/src/online-form/src/views/render/__components__/_common_/widget-component-visible.vue.d.ts +1 -0
  237. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-auto-complete.vue.d.ts +34 -0
  238. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-date-picker.vue.d.ts +23 -0
  239. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-media.d.ts +5 -0
  240. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-media.vue.d.ts +40 -0
  241. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-text-input.vue.d.ts +21 -0
  242. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-textarea.vue.d.ts +24 -0
  243. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/index.d.ts +9 -0
  244. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/use-select-list-height.d.ts +9 -0
  245. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/trace-like-wrapper.d.ts +26 -0
  246. package/dist/src/online-form/src/views/render/__components__/_field_/auto-complete/index.d.ts +14 -0
  247. package/dist/src/online-form/src/views/render/__components__/_field_/{trace → rdo-select}/index.d.ts +2 -2
  248. package/dist/src/online-form/src/views/render/__components__/_field_/trace/composables/usePopoverWrapperHeight.d.ts +11 -2
  249. package/dist/src/online-form/src/views/render/__components__/_field_/trace/utils/columns.d.ts +13 -0
  250. package/dist/src/online-form/src/views/render/__components__/_field_/trace/utils/use-rule-props.d.ts +3 -3
  251. package/dist/src/shared/components/FieldStateIcon/field-state-icon.vue.d.ts +17 -0
  252. package/dist/src/shared/components/FieldStateIcon/index.d.ts +3 -0
  253. package/dist/src/shared/components/Preview/src/Functional.vue.d.ts +1 -1
  254. package/dist/src/shared/components/Signature/index.d.ts +2 -1
  255. package/dist/src/shared/components/Signature/types/index.d.ts +4 -0
  256. package/dist/src/shared/components/Signature/ui/handwriting-signer.vue.d.ts +1 -0
  257. package/dist/src/shared/components/Signature/ui/password-signer.vue.d.ts +1 -0
  258. package/dist/src/shared/components/Signature/ui/sign-popover-content.vue.d.ts +122 -0
  259. package/dist/src/shared/components/Signature/ui/sign-switcher-modal.vue.d.ts +4 -0
  260. package/dist/src/shared/components/Signature/ui/sign-switcher.vue.d.ts +3 -0
  261. package/dist/src/shared/components/registerGlobComp.d.ts +5 -0
  262. package/dist/src/shared/enum/field-type.d.ts +39 -284
  263. package/dist/src/shared/enum/index.d.ts +1 -1
  264. package/dist/src/shared/utils/field-size.d.ts +3 -0
  265. package/dist/src/shared/utils/lot2sn.d.ts +22 -0
  266. package/dist/{text-design-B1eX7Rp1.js → text-design-B9BH6_VT.js} +2 -2
  267. package/dist/{throttle-Cpk1LoGk-kodOPzL5.js → throttle-Cpk1LoGk-Dkz6zJ8F.js} +1 -1
  268. package/dist/{timediff-design-CoDU15y8.js → timediff-design-INgy9LDa.js} +1 -1
  269. package/dist/trace-like-wrapper-B-PzUZAG.js +34 -0
  270. package/dist/{value-editor.vue_vue_type_style_index_0_lang-ey1VNCHV.js → value-editor.vue_vue_type_style_index_0_lang-BSGmjBMz.js} +2 -2
  271. package/dist/web-render/index.es.js +118 -17
  272. package/dist/{widget-barcode-DAxib6qS.js → widget-barcode-su16tQ64.js} +4 -4
  273. package/dist/{widget-diagonal-BLo6XT0t.js → widget-diagonal-Dl3D3MJK.js} +5 -7
  274. package/dist/{widget-image-D_1erLrE.js → widget-image-C3143nmQ.js} +6 -5
  275. package/dist/{widget-line-BwnSq4--.js → widget-line-B3FO96uu.js} +4 -4
  276. package/dist/{widget-pagination-DZMwe14i.js → widget-pagination-Su-wNAqe.js} +5 -5
  277. package/dist/{widget-power-DfV-8moi.js → widget-power-DLbxegjB.js} +3 -3
  278. package/dist/{widget-qrcode-C3yTAHOn.js → widget-qrcode-BC2Eyf9h.js} +3 -3
  279. package/dist/{widget-rangelimit-DK8hANd1.js → widget-rangelimit-iuZswyH3.js} +3 -3
  280. package/dist/{widget-serialnumber-B2pkh6KT.js → widget-serialnumber-BqZm6cQQ.js} +1 -1
  281. package/dist/{widget-text-98SaLOpt.js → widget-text-DSAv-liE.js} +5 -5
  282. package/dist/{widget-timediff-OD7HVoVr.js → widget-timediff-CD8Jrx8s.js} +2 -2
  283. package/package.json +16 -6
  284. package/dist/agg-design-BO3eBkol.js +0 -24
  285. package/dist/agg-props-DEXapyb8.js +0 -10
  286. package/dist/agg-style-CDLpFoBn.js +0 -33
  287. package/dist/attach-fields-editor-DXh9f5iy.js +0 -116
  288. package/dist/base-font-editor-Ccv90UWY.js +0 -179
  289. package/dist/boolean-design-D1BIjOGz.js +0 -124
  290. package/dist/boolean-props-Cqb1zZfy.js +0 -155
  291. package/dist/boolean-style-C2uaO_Ei.js +0 -108
  292. package/dist/cell-upload-xzz2ufK7.js +0 -35
  293. package/dist/date-range-editor-D0SCmmS0.js +0 -472
  294. package/dist/date-time-design-pv0mRSgV.js +0 -64
  295. package/dist/date-time-props-B0YQO-ig.js +0 -105
  296. package/dist/date-time-style-Dn4TErcH.js +0 -33
  297. package/dist/decimal-design-BMKikWwr.js +0 -29
  298. package/dist/decimal-display-mode-BLrn-r-H.js +0 -60
  299. package/dist/decimal-props-BXVnDByV.js +0 -313
  300. package/dist/decimal-style-C5hB5sv6.js +0 -33
  301. package/dist/default-value-editor.vue_vue_type_script_setup_true_name_default-value-editor_lang-LcZ8lvPF.js +0 -370
  302. package/dist/double-design-5yOxs5xB.js +0 -28
  303. package/dist/double-props-CQ9yBXNl.js +0 -91
  304. package/dist/double-style-C01aPXrT.js +0 -33
  305. package/dist/enum-design-DewhmfeF.js +0 -97
  306. package/dist/enum-props-0ECHvFUr.js +0 -734
  307. package/dist/enum-style-fm5Ap8eG.js +0 -76
  308. package/dist/expression-design-BY6oI5EW.js +0 -24
  309. package/dist/expression-props-3OvDgw-p.js +0 -10
  310. package/dist/expression-style-Hhv8wnAe.js +0 -33
  311. package/dist/file-design-QE5qUMix.js +0 -17
  312. package/dist/file-props-CEGee5yo.js +0 -201
  313. package/dist/file-style-65tfxL94.js +0 -9
  314. package/dist/image-design-BoQOLCEL.js +0 -23
  315. package/dist/image-props-GuHBNt9S.js +0 -16
  316. package/dist/image-style-BLQukPqV.js +0 -9
  317. package/dist/index-CBYXYocJ.js +0 -40
  318. package/dist/index-DI8vltuS.js +0 -68
  319. package/dist/integer-design-C8kRP1tV.js +0 -28
  320. package/dist/integer-props-XICS-8Qt.js +0 -162
  321. package/dist/integer-style-BstrlNJp.js +0 -33
  322. package/dist/number-input-ex-BjIp4mym.js +0 -69
  323. package/dist/org-design-DWZI8xev.js +0 -24
  324. package/dist/org-props-0CY6-hLS.js +0 -96
  325. package/dist/org-style-HDV7obSe.js +0 -33
  326. package/dist/paper-widget-design-CT80i7VR.js +0 -4
  327. package/dist/ref-autofill-editor-CObqr_xh.js +0 -2376
  328. package/dist/ref-design-BQ8o1gKm.js +0 -24
  329. package/dist/ref-props-xjVvnvGW.js +0 -348
  330. package/dist/ref-style-MZ52QRhu.js +0 -33
  331. package/dist/regex-editor-BctX8jdd.js +0 -823
  332. package/dist/select-render-type-editor.vue_vue_type_script_setup_true_lang-CONYLCmt.js +0 -159
  333. package/dist/signature-design-CFOFAaEu.js +0 -20
  334. package/dist/signature-props-N6ng9rqg.js +0 -346
  335. package/dist/signature-style-D2QQrgMT.js +0 -9
  336. package/dist/src/nocode-base/src/hooks/material-date/material-date.d.ts +0 -44
  337. package/dist/src/nocode-base/src/hooks/material-date/service.d.ts +0 -4
  338. package/dist/src/nocode-base/src/hooks/material-date/use-material-date.d.ts +0 -2
  339. package/dist/text-design-CCs-p8Y3.js +0 -39
  340. package/dist/text-props-C6-s7LBP.js +0 -447
  341. package/dist/text-style-OUxV8LDu.js +0 -33
  342. package/dist/trace-design-Bhg0EIyC.js +0 -77
  343. package/dist/trace-props-DVekq4wE.js +0 -624
  344. package/dist/trace-style-CfSu__TO.js +0 -33
  345. package/dist/user-design-fMF_h4IG.js +0 -24
  346. package/dist/user-props-BGjEpC4j.js +0 -103
  347. package/dist/user-style-RUHIGWFF.js +0 -33
@@ -1,2376 +0,0 @@
1
- import { watch, toRefs, reactive, toRaw, defineComponent, ref, computed, createVNode, createTextVNode, Fragment, resolveComponent, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, createElementBlock, toDisplayString, createCommentVNode, mergeProps, createApp, onMounted, withDirectives, vShow, h, normalizeProps, guardReactiveProps } from "vue";
2
- import { D as DownOutlined, r as registerDialogComp, u as useModelFields, b as FormItem, o as SEARCH_TYPE, n as applyDesignReadonlyModal, k as draggableComponent, t as transformMappingField4Auto } from "./index-CDLpl1vT.js";
3
- import { Cascader, Tooltip, Input, Empty, Tree, Transfer, Select, Tag } from "ant-design-vue";
4
- import { w as api, F as FIELD_TYPE, C as CreateType, a0 as FieldIconMap, _ as _export_sfc, k as FIELD_TYPE_TRACE, d as SubTableType } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-D8HQKSsX.js";
5
- import { cloneDeep, has, isEmpty, pick, isBoolean } from "lodash-es";
6
- import { useModal } from "@gct-paas/core";
7
- const DEFAULT_DISPLAY_FIELDS_MAP = {
8
- // 设备:设备编码、设备名称
9
- device: ["code_", "name_"],
10
- // 库存物料:预留
11
- materialNo: []
12
- };
13
- var SCOPEINFO = /* @__PURE__ */ ((SCOPEINFO2) => {
14
- SCOPEINFO2["FIELD_LIST"] = "fieldList";
15
- SCOPEINFO2["FIELD_FORM"] = "fieldForm";
16
- return SCOPEINFO2;
17
- })(SCOPEINFO || {});
18
- const objInfo = {
19
- modelKey: "",
20
- fieldCodeChain: "",
21
- bindFormId: "",
22
- isFieldModel: false,
23
- relateObjList: []
24
- };
25
- const modelInfoMap = {};
26
- const modelFieldMap = {};
27
- const selectObj = {
28
- modelName: "",
29
- fieldList: [],
30
- modelKey: "",
31
- currentFormId: "",
32
- fieldCodeChain: "",
33
- isFieldModel: false
34
- };
35
- const fieldCascaderSelectValue = [];
36
- const fieldPathChainList = [];
37
- const fieldMap = {
38
- objInfo,
39
- modelInfoMap,
40
- modelFieldMap,
41
- fieldCascaderSelectValue,
42
- fieldPathChainList
43
- };
44
- const fieldCacheMap = {
45
- [SCOPEINFO.FIELD_FORM]: {
46
- selectObj: reactive(cloneDeep(selectObj)),
47
- ...toRefs(reactive(cloneDeep(fieldMap)))
48
- },
49
- [SCOPEINFO.FIELD_LIST]: {
50
- selectObj: reactive(cloneDeep(selectObj)),
51
- ...toRefs(reactive(cloneDeep(fieldMap)))
52
- }
53
- };
54
- function useModelField(scope = SCOPEINFO.FIELD_FORM) {
55
- const {
56
- objInfo: objInfo2,
57
- modelInfoMap: modelInfoMap2,
58
- modelFieldMap: modelFieldMap2,
59
- selectObj: selectObj2,
60
- fieldCascaderSelectValue: fieldCascaderSelectValue2,
61
- fieldPathChainList: fieldPathChainList2
62
- } = fieldCacheMap[scope];
63
- async function getModelDetail2FieldList(modelKey) {
64
- const res = await api.apaas.modelMeta.getDetail({
65
- modelKey
66
- });
67
- return res;
68
- }
69
- function setModelFieldToMap(modelKey, fieldList = []) {
70
- if (!modelFieldMap2.value[modelKey]) {
71
- modelFieldMap2.value[modelKey] = fieldList?.reduce(
72
- (prev, curr) => ({
73
- ...prev,
74
- [curr.key ?? ""]: curr
75
- }),
76
- {}
77
- );
78
- }
79
- }
80
- function setModelInfoToMap(modelList = []) {
81
- modelList?.forEach((item) => {
82
- if (!modelInfoMap2.value[item.key]) {
83
- modelInfoMap2.value[item.key] = {
84
- modelId: item.id,
85
- modelKey: item.key,
86
- modelName: item.name,
87
- // NDO | RDO
88
- modelType: item.type
89
- };
90
- }
91
- });
92
- }
93
- function getModelFieldList(modelKey) {
94
- if (!modelKey || !modelFieldMap2.value[modelKey]) {
95
- return [];
96
- }
97
- return Object.values(toRaw(modelFieldMap2.value[modelKey]));
98
- }
99
- function getModelFieldInfo(modelKey, fieldKey) {
100
- if (!modelKey || !fieldKey || !modelFieldMap2.value[modelKey]) {
101
- return;
102
- }
103
- return modelFieldMap2.value[modelKey][fieldKey];
104
- }
105
- function getModelInfo(modelKey) {
106
- if (!modelKey || !modelInfoMap2.value[modelKey]) {
107
- return false;
108
- }
109
- return modelInfoMap2.value[modelKey];
110
- }
111
- function _checkRefModel(item, fieldTypes = []) {
112
- return item.bindInfo && [FIELD_TYPE.REF, FIELD_TYPE.RDO_REF, ...fieldTypes].includes(item.type) && [CreateType.USER_DEFINED, CreateType.BUILTIN].includes(item.createType);
113
- }
114
- function getRefConfig({ item, formId }, { links, fieldLinks, fieldType }) {
115
- const link = [...links, item.bindInfo];
116
- return {
117
- fieldKey: item.key,
118
- fieldType: item.type,
119
- belongModelKey: item.modelKey,
120
- bindModelKey: item.bindInfo,
121
- bindFormId: formId ?? "",
122
- isFieldModel: true,
123
- // ! 这边用对象的原因是模型 key 可能是特殊字符,所以如果直接用字符串拼接可能会有问题
124
- fieldCodeChain: JSON.stringify({
125
- // 关联模型的字段key
126
- bindFieldKey: item.key,
127
- // 字段所属模型的key
128
- bindModelKey: item.bindInfo,
129
- // 关联模型字段所属模型的key
130
- belongModelKey: item.modelKey,
131
- /**模型链路 */
132
- modelLink: link,
133
- /**字段链路 */
134
- fieldLink: fieldLinks,
135
- /**关联源模型的模型类型 */
136
- refOriginFieldType: fieldType
137
- }),
138
- modelLink: link,
139
- children: []
140
- };
141
- }
142
- async function getRefInfo({ item, formId }, { modelKey, fieldType }) {
143
- const oneLevelRefConfig = getRefConfig(
144
- { item, formId },
145
- { links: [modelKey], fieldLinks: [item.key], fieldType }
146
- );
147
- const twoLevelFieldData = await getModelDetail2FieldList(oneLevelRefConfig.bindModelKey);
148
- const twoLevelRefConfigs = twoLevelFieldData?.fieldMetaList?.filter((a) => _checkRefModel(a)).map(
149
- (i) => getRefConfig(
150
- { item: i, formId },
151
- { links: oneLevelRefConfig.modelLink, fieldLinks: [item.key, i.key], fieldType }
152
- )
153
- );
154
- return { ...oneLevelRefConfig, children: twoLevelRefConfigs };
155
- }
156
- async function loadObjInfo(modelKey, {
157
- formId,
158
- childParentModelKey,
159
- isShowCascader = true
160
- } = {}) {
161
- const info = await getModelDetail2FieldList(modelKey);
162
- if (info) {
163
- info.fieldMetaList?.forEach((item) => {
164
- if (item.type === FIELD_TYPE.ASSOCIATED_PRIMARY_KEY && childParentModelKey) {
165
- item.bindInfo = childParentModelKey;
166
- }
167
- });
168
- const refList = await Promise.all(
169
- info.fieldMetaList?.filter((a) => _checkRefModel(a, [FIELD_TYPE.ASSOCIATED_PRIMARY_KEY]))?.map((item) => getRefInfo({ item, formId }, { modelKey, fieldType: item.type })) ?? []
170
- );
171
- objInfo2.value = {
172
- modelKey: info.key,
173
- fieldCodeChain: JSON.stringify({ modelKey: info.key }),
174
- bindFormId: formId ?? "",
175
- isFieldModel: false,
176
- relateObjList: refList
177
- };
178
- setModelFieldToMap(info.key ?? "", info.fieldMetaList);
179
- let modelDetails = [info];
180
- const allRefList = [
181
- ...new Set(
182
- objInfo2.value.relateObjList?.map((item) => [item, ...item.children || []]).flat().map((item) => item.bindModelKey)
183
- )
184
- ];
185
- if (allRefList?.length !== 0) {
186
- const res = await api.apaas.modelMeta.getByKeys({ modelKeys: allRefList.join(",") ?? "" });
187
- modelDetails = modelDetails?.concat(res ?? []);
188
- }
189
- setModelInfoToMap(modelDetails);
190
- if (allRefList?.length !== 0 && isShowCascader) {
191
- await Promise.all(allRefList.map((k) => getModelDetail2FieldList(k))).then((res) => {
192
- (res ?? []).forEach((info2) => {
193
- if (info2) {
194
- setModelFieldToMap(info2.key ?? "", info2.fieldMetaList);
195
- }
196
- });
197
- });
198
- }
199
- }
200
- return true;
201
- }
202
- async function fetchDetailList(modelKey) {
203
- if (!modelFieldMap2.value[modelKey]) {
204
- const info = await getModelDetail2FieldList(modelKey);
205
- if (info) {
206
- setModelFieldToMap(info.key ?? "", info.fieldMetaList);
207
- }
208
- }
209
- }
210
- function setSelectObjData(modelKey, info) {
211
- const modelInfo = getModelInfo(modelKey);
212
- if (modelInfo) {
213
- selectObj2.modelKey = modelInfo.modelKey;
214
- selectObj2.modelName = modelInfo.modelName;
215
- selectObj2.currentFormId = info.bindFormId;
216
- selectObj2.fieldCodeChain = info.fieldCodeChain;
217
- selectObj2.isFieldModel = info.isFieldModel;
218
- selectObj2.fieldList = getModelFieldList(modelInfo.modelKey);
219
- }
220
- }
221
- watch(
222
- [() => objInfo2.value, () => modelInfoMap2.value],
223
- () => {
224
- if (!selectObj2.modelKey && objInfo2.value.modelKey) {
225
- setSelectObjData(objInfo2.value.modelKey, objInfo2.value);
226
- }
227
- },
228
- {
229
- immediate: true,
230
- deep: true
231
- }
232
- );
233
- function changeSelectInfo(modelKey, data) {
234
- setSelectObjData(modelKey, data);
235
- }
236
- function clearSelectInfo() {
237
- selectObj2.modelKey = "";
238
- selectObj2.modelName = "";
239
- selectObj2.currentFormId = "";
240
- selectObj2.fieldCodeChain = "";
241
- selectObj2.isFieldModel = false;
242
- selectObj2.fieldList = [];
243
- fieldCascaderSelectValue2.value = [];
244
- }
245
- function clearObjInfo() {
246
- objInfo2.value = {
247
- modelKey: "",
248
- fieldCodeChain: "",
249
- bindFormId: "",
250
- isFieldModel: false,
251
- relateObjList: []
252
- };
253
- }
254
- function getFieldCodeChainStr(fieldCodeChain, currentFieldName) {
255
- if (!fieldCodeChain) {
256
- return "";
257
- }
258
- const fieldCodeChainObj = JSON.parse(fieldCodeChain);
259
- if (has(fieldCodeChainObj, "bindFieldKey")) {
260
- const fieldInfo = getModelFieldInfo(
261
- fieldCodeChainObj.belongModelKey,
262
- fieldCodeChainObj.bindFieldKey
263
- );
264
- const bindModelInfo = getModelInfo(fieldCodeChainObj.bindModelKey);
265
- if (fieldInfo && bindModelInfo) {
266
- return `${fieldInfo.name}(${bindModelInfo.modelName})${currentFieldName ? ` > ${currentFieldName}` : ""}`;
267
- }
268
- } else {
269
- const modelInfo = getModelInfo(fieldCodeChainObj.modelKey);
270
- if (modelInfo) {
271
- return `${modelInfo.modelName}${currentFieldName ? ` > ${currentFieldName}` : ""}`;
272
- }
273
- }
274
- return "";
275
- }
276
- async function getFieldPathChainList(fieldCodeChain, fieldName) {
277
- if (!fieldCodeChain) {
278
- fieldPathChainList2.value = [];
279
- } else {
280
- const fieldCodeChainObj = JSON.parse(fieldCodeChain);
281
- const isFieldModel = has(fieldCodeChainObj, "bindFieldKey");
282
- const modelKeys = isFieldModel ? fieldCodeChainObj.modelLink || [
283
- fieldCodeChainObj.belongModelKey,
284
- fieldCodeChainObj.bindModelKey
285
- ] : [fieldCodeChainObj.modelKey];
286
- if (modelKeys.some((item) => !getModelInfo(item))) {
287
- const res = await api.apaas.modelMeta.getByKeys({
288
- modelKeys: modelKeys.join(",")
289
- });
290
- if (res) {
291
- setModelInfoToMap(res);
292
- }
293
- }
294
- if (isFieldModel) {
295
- fieldPathChainList2.value = modelKeys.map((i) => getModelInfo(i).modelName).concat(fieldName);
296
- } else {
297
- const modelInfo = getModelInfo(fieldCodeChainObj.modelKey);
298
- if (modelInfo) {
299
- fieldPathChainList2.value = [modelInfo.modelName, fieldName];
300
- }
301
- }
302
- }
303
- return fieldPathChainList2.value;
304
- }
305
- async function reloadFieldToolkit(modelKey, formId, childParentModelKey) {
306
- if (selectObj2.currentFormId === formId) {
307
- return;
308
- }
309
- clearSelectInfo();
310
- clearObjInfo();
311
- await loadObjInfo(modelKey, {
312
- formId,
313
- childParentModelKey
314
- });
315
- }
316
- return {
317
- objInfo: objInfo2,
318
- loadObjInfo,
319
- getModelInfo,
320
- getModelFieldList,
321
- getModelFieldInfo,
322
- selectObj: selectObj2,
323
- modelFieldMap: modelFieldMap2,
324
- fetchDetailList,
325
- changeSelectInfo,
326
- getFieldCodeChainStr,
327
- getFieldPathChainList,
328
- clearSelectInfo,
329
- clearObjInfo,
330
- fieldCascaderSelectValue: fieldCascaderSelectValue2,
331
- fieldPathChainList: fieldPathChainList2,
332
- reloadFieldToolkit
333
- };
334
- }
335
- const MESSAGES = {
336
- "sys.component.fieldTransfer.defaultModalTitle": "选择字段",
337
- "sys.component.fieldTransfer.move": "移动",
338
- "sys.component.fieldTransfer.noSelect": "待选",
339
- "sys.component.fieldTransfer.select": "已选",
340
- "sys.component.fieldTransfer.noSearchData": "无搜索结果",
341
- "sys.component.fieldTransfer.noData": "暂无数据",
342
- "sys.component.fieldTransfer.term": "项",
343
- "sys.component.fieldTransfer.pleaseSearch": "请搜索",
344
- "sys.component.fieldTransfer.selectAllData": "全选所有",
345
- "sys.component.fieldTransfer.invertCurrentPage": "反选当页",
346
- "sys.component.fieldTransfer.linkModel": "关联模型",
347
- "sys.component.fieldTransfer.subMainModel": "子主模型",
348
- "sys.component.fieldTransfer.currentModel": "当前模型",
349
- "sys.component.fieldTransfer.soModelTitle": "所属模型",
350
- "sys.model.modelKey": "模型标识"
351
- };
352
- function t(key) {
353
- if (MESSAGES[key]) return MESSAGES[key];
354
- const globalT = window.$t;
355
- if (typeof globalT === "function") {
356
- const v = globalT(key);
357
- if (v && v !== key) return v;
358
- }
359
- return key;
360
- }
361
- const FieldCascader = /* @__PURE__ */ defineComponent({
362
- name: "FieldCascader",
363
- props: {
364
- scope: {
365
- type: String,
366
- default: SCOPEINFO.FIELD_FORM
367
- },
368
- isShowCascader: {
369
- type: Boolean,
370
- default: true
371
- }
372
- },
373
- setup(props) {
374
- const {
375
- fieldCascaderSelectValue: fieldCascaderSelectValue2,
376
- objInfo: objInfo2,
377
- getModelInfo,
378
- getModelFieldInfo,
379
- fetchDetailList,
380
- changeSelectInfo
381
- } = useModelField(props.scope);
382
- const visible = ref(false);
383
- const isReadyonly = computed(() => {
384
- return !props.isShowCascader || objInfo2.value.relateObjList.length === 0;
385
- });
386
- const handleClickItem = async (e, item) => {
387
- visible.value = false;
388
- const key = has(item, "fieldKey") ? item.bindModelKey : item.modelKey;
389
- await fetchDetailList(key);
390
- changeSelectInfo(key, item);
391
- };
392
- const renderOptions = () => {
393
- const label = (item, showIcon = false) => {
394
- const modelInfo = getModelInfo(item.bindModelKey || item.modelKey);
395
- if (modelInfo) {
396
- let name = createVNode("span", {
397
- "class": "field-ops-name"
398
- }, [modelInfo.modelName]);
399
- if (item.belongModelKey && item.fieldKey !== "ref_master_id_") {
400
- const fieldInfo = getModelFieldInfo(item.belongModelKey, item.fieldKey);
401
- if (fieldInfo) {
402
- name = createVNode("span", {
403
- "class": "field-ops-name"
404
- }, [fieldInfo.name, createVNode("span", {
405
- "class": "field-ops-desc"
406
- }, [createTextVNode("("), modelInfo.modelName, createTextVNode(")")])]);
407
- }
408
- }
409
- return createVNode(Fragment, null, [createVNode("div", {
410
- "class": "field-ops",
411
- "onClick": (e) => handleClickItem(e, item)
412
- }, [name]), showIcon && createVNode("i", {
413
- "class": "iconfont icon-a-Rightarrow"
414
- }, null)]);
415
- }
416
- return null;
417
- };
418
- const tipOptInfo = (label2, value) => {
419
- return {
420
- label: createVNode("div", {
421
- "class": "field-ops"
422
- }, [createVNode("span", {
423
- "class": "field-ops-name"
424
- }, [label2])]),
425
- value,
426
- isLeaf: true,
427
- disabled: true
428
- };
429
- };
430
- const options = [];
431
- if (!isEmpty(objInfo2.value)) {
432
- const recursive = (fieldItem) => {
433
- if (!fieldItem.relateObjList) return [];
434
- return [tipOptInfo(t("sys.component.fieldTransfer.linkModel"), "link")].concat(fieldItem.relateObjList.filter((item) => FIELD_TYPE.ASSOCIATED_PRIMARY_KEY !== item.fieldType).map((item) => {
435
- const isShowIcon = item.children.length !== 0;
436
- return {
437
- label: label(item, isShowIcon),
438
- value: item.fieldCodeChain,
439
- isLeaf: false,
440
- // ! 解决没有下级内容的时候hover上去需要关闭下级菜单 所以设置成即使当前节点没有 children,也会显示展开图标
441
- children: isShowIcon ? [tipOptInfo(t("sys.component.fieldTransfer.linkModel"), "link")].concat(item.children.map((i) => {
442
- return {
443
- label: label(i),
444
- value: i.fieldCodeChain
445
- };
446
- })) : []
447
- };
448
- }));
449
- };
450
- const mainModelList = objInfo2.value.relateObjList?.filter((item) => FIELD_TYPE.ASSOCIATED_PRIMARY_KEY === item.fieldType);
451
- let subMainOpts = [];
452
- if (mainModelList.length) {
453
- subMainOpts = [tipOptInfo(t("sys.component.fieldTransfer.subMainModel"), "submain")].concat(mainModelList.map((item) => ({
454
- label: label(item),
455
- value: item.fieldCodeChain
456
- })));
457
- }
458
- const children = recursive(objInfo2.value);
459
- options.push(tipOptInfo(t("sys.component.fieldTransfer.currentModel"), "current"));
460
- options.push({
461
- label: label(objInfo2.value, children.length >= 2),
462
- // 一条信息是标题
463
- value: objInfo2.value.fieldCodeChain,
464
- children: children.length >= 2 ? children : [],
465
- isLeaf: false
466
- });
467
- options.push(...subMainOpts);
468
- }
469
- return options;
470
- };
471
- const renderSelectName = () => {
472
- let fieldName = createVNode("span", null, null);
473
- let name = "";
474
- let lastName = "";
475
- if (fieldCascaderSelectValue2.value && fieldCascaderSelectValue2.value.length > 0) {
476
- fieldCascaderSelectValue2.value.forEach((pos) => {
477
- const fieldCodeChainObj = JSON.parse(pos);
478
- if (has(fieldCodeChainObj, "bindFieldKey")) {
479
- const belongModelInfo = getModelInfo(fieldCodeChainObj.belongModelKey);
480
- const fieldInfo = getModelFieldInfo(fieldCodeChainObj.belongModelKey, fieldCodeChainObj.bindFieldKey);
481
- const bindModelInfo = getModelInfo(fieldCodeChainObj.bindModelKey);
482
- if (belongModelInfo && fieldInfo && bindModelInfo) {
483
- if (fieldInfo.key !== "ref_master_id_") {
484
- name += `${belongModelInfo.modelName} / `;
485
- }
486
- if (fieldInfo.type === FIELD_TYPE.ASSOCIATED_PRIMARY_KEY) {
487
- lastName = bindModelInfo.modelName;
488
- } else {
489
- lastName = `${fieldInfo.name}(${bindModelInfo.modelName})`;
490
- }
491
- }
492
- } else {
493
- const modelInfo = getModelInfo(fieldCodeChainObj.modelKey);
494
- if (modelInfo) {
495
- lastName = modelInfo.modelName;
496
- }
497
- }
498
- });
499
- } else if (objInfo2.value.modelKey) {
500
- const fieldCodeChainObj = JSON.parse(objInfo2.value.fieldCodeChain);
501
- const modelInfo = getModelInfo(fieldCodeChainObj.modelKey);
502
- if (modelInfo) {
503
- lastName = modelInfo.modelName;
504
- }
505
- }
506
- fieldName = createVNode("span", null, [createVNode("span", {
507
- "class": "bread"
508
- }, [createVNode("span", {
509
- "class": "field-cascader-title"
510
- }, [t("sys.component.fieldTransfer.soModelTitle")]), name]), createVNode(Tooltip, {
511
- "title": t("sys.model.modelKey") + ":" + objInfo2.value.modelKey
512
- }, {
513
- default: () => [createVNode("span", {
514
- "class": "last-name"
515
- }, [lastName])]
516
- }), !isReadyonly.value && createVNode(DownOutlined, {
517
- "class": "ml-4px down-icon"
518
- }, null)]);
519
- return fieldName;
520
- };
521
- return () => {
522
- return createVNode("div", {
523
- "class": "field-cascader",
524
- "style": {
525
- cursor: isReadyonly.value ? "default" : "pointer"
526
- }
527
- }, [createVNode(Cascader, {
528
- "dropdownClassName": "field-popup-cascader",
529
- "options": renderOptions(),
530
- "value": fieldCascaderSelectValue2.value,
531
- "onUpdate:value": ($event) => fieldCascaderSelectValue2.value = $event,
532
- "expandTrigger": "hover",
533
- "onDropdownVisibleChange": (v) => {
534
- visible.value = v;
535
- },
536
- "open": isReadyonly.value ? false : visible.value,
537
- "changeOnSelect": true
538
- }, {
539
- default: () => [createVNode("div", null, [renderSelectName(), createTextVNode(" ")])]
540
- })]);
541
- };
542
- }
543
- });
544
- function isGroupNode(node) {
545
- return node.type === "group";
546
- }
547
- function generateData(nodes) {
548
- return nodes.map((node) => {
549
- if (isGroupNode(node)) {
550
- return {
551
- width: node.width,
552
- id: node.key,
553
- title: node.title,
554
- type: node.type,
555
- children: generateData(node.children || [])
556
- };
557
- }
558
- return {
559
- width: node.width,
560
- id: node.key,
561
- title: node.title,
562
- type: node.type,
563
- modelKey: node.modelKey
564
- };
565
- });
566
- }
567
- function traverse(handler, items) {
568
- items.forEach((node) => {
569
- handler(node);
570
- if (isGroupNode(node)) {
571
- traverse(handler, node.children);
572
- }
573
- });
574
- }
575
- function findNode(key, root) {
576
- let result;
577
- const handler = (items) => {
578
- return items.some((node) => {
579
- if (node.key === key) {
580
- result = node;
581
- return true;
582
- }
583
- if (isGroupNode(node)) {
584
- return handler(node.children);
585
- }
586
- return false;
587
- });
588
- };
589
- if (root.key === key) {
590
- return root;
591
- }
592
- handler(root.children);
593
- return result;
594
- }
595
- function traverseFilter(handler, items) {
596
- const result = [];
597
- items.forEach((node) => {
598
- if (isGroupNode(node)) {
599
- const children = traverseFilter(handler, node.children);
600
- if (children.length === 0 && !handler(node)) {
601
- return;
602
- }
603
- result.push({
604
- ...node,
605
- children
606
- });
607
- return;
608
- }
609
- if (handler(node)) {
610
- result.push(node);
611
- }
612
- });
613
- return result;
614
- }
615
- const MAX_ENABLE_COUNT = 5e6;
616
- const useTreeData = (useMultiLevelTHead, isResetData, draggable, maxEnableCount, onColumnsChange) => {
617
- ref(0);
618
- const leafKeys = ref([]);
619
- const refOriginalLeafKeys = ref([]);
620
- const refTotalFields = ref(0);
621
- const multiple = computed(() => useMultiLevelTHead);
622
- const root = reactive({
623
- key: "0",
624
- title: "root",
625
- children: [],
626
- level: 0,
627
- type: "group",
628
- parent: null
629
- });
630
- const onChangeTree = (columnsData, fields) => {
631
- const keys = [];
632
- function handle(items, parent) {
633
- return items.map(({ id, ...restItem }) => {
634
- const node = {
635
- ...restItem,
636
- key: id,
637
- parent,
638
- level: parent.level + 1,
639
- isLeaf: restItem.type === "field"
640
- };
641
- if (!node.isLeaf) {
642
- node.children = handle(node.children, node);
643
- } else {
644
- const fieldItem = fields.find((item) => item.id === id);
645
- if (fieldItem) {
646
- node.disabled = fieldItem.disabled;
647
- if (fieldItem) {
648
- node.disableCheckbox = fieldItem.disabled;
649
- node.fieldType = fieldItem.type;
650
- keys.push(id);
651
- refTotalFields.value += 1;
652
- }
653
- }
654
- }
655
- return node;
656
- });
657
- }
658
- root.children = handle(columnsData, root);
659
- leafKeys.value = keys;
660
- if (!isResetData) {
661
- refOriginalLeafKeys.value = [...keys];
662
- }
663
- };
664
- watch(
665
- multiple,
666
- (val) => {
667
- if (!val) {
668
- const result = [];
669
- traverse((node) => {
670
- if (!isGroupNode(node)) {
671
- result.push({
672
- ...node,
673
- parent: root
674
- });
675
- }
676
- }, root.children);
677
- root.children = result;
678
- }
679
- },
680
- {
681
- immediate: true
682
- }
683
- );
684
- const data = computed(() => root.children);
685
- const refresh = () => {
686
- root.children = [...root.children];
687
- };
688
- const handleColumnsChange = () => {
689
- onColumnsChange?.(generateData(root.children));
690
- };
691
- const remainCount = computed(() => (maxEnableCount ?? MAX_ENABLE_COUNT) - leafKeys.value.length);
692
- function getContainerNode(node) {
693
- return root;
694
- }
695
- return {
696
- data,
697
- root,
698
- leafKeys,
699
- multiple,
700
- draggable,
701
- remainCount,
702
- addTreeNodes(nodes, parent) {
703
- const p = findNode(parent.key, root);
704
- const newNodes = nodes.map(
705
- (item) => ({
706
- ...item,
707
- level: p.level + 1,
708
- parent: p
709
- })
710
- );
711
- p.children.push(...newNodes);
712
- const newLeafKeys = [...leafKeys.value];
713
- nodes.forEach((item) => {
714
- if (item.isLeaf) {
715
- newLeafKeys.push(item.key);
716
- }
717
- });
718
- leafKeys.value = newLeafKeys;
719
- refresh();
720
- setTimeout(() => {
721
- newNodes.forEach((node) => {
722
- if (node.isNew) {
723
- node.isNew = false;
724
- }
725
- });
726
- }, 500);
727
- handleColumnsChange();
728
- },
729
- removeTreeNodesByKeys(keys) {
730
- root.children = traverseFilter((node) => !keys.includes(node.key), root.children);
731
- leafKeys.value = leafKeys.value.filter((key) => !keys.includes(key));
732
- handleColumnsChange();
733
- },
734
- moveTreeNode(source, target, direction, asChildren = false) {
735
- const sourceParent = findNode(source.parent.key, root);
736
- let j = 0;
737
- let targetParent = findNode(target.parent.key, root);
738
- if (asChildren) {
739
- if (isGroupNode(target)) {
740
- targetParent = findNode(target.key, root);
741
- } else {
742
- j = targetParent.children.findIndex((item) => item.key === target.key);
743
- j += 1;
744
- }
745
- } else {
746
- j = targetParent.children.findIndex((item) => item.key === target.key);
747
- j += direction === 1 ? 1 : -1;
748
- j = Math.max(j, 0);
749
- }
750
- if (targetParent.level >= 3 && isGroupNode(source)) {
751
- return;
752
- }
753
- const i = sourceParent.children.findIndex((item) => item.key === source.key);
754
- sourceParent.children.splice(i, 1);
755
- if (source.parent === targetParent) {
756
- targetParent.children.splice(i < j ? j - 1 : j, 0, source);
757
- } else {
758
- source.parent = targetParent;
759
- source.level = targetParent.level + 1;
760
- targetParent.children.splice(j, 0, source);
761
- }
762
- refresh();
763
- handleColumnsChange();
764
- },
765
- getContainerNode,
766
- onChangeTree
767
- };
768
- };
769
- const TreeItem = /* @__PURE__ */ defineComponent({
770
- name: "TreeItem",
771
- props: {
772
- node: {
773
- type: Object,
774
- required: true
775
- },
776
- draggable: Boolean
777
- },
778
- setup(props) {
779
- const editing = computed(() => {
780
- console.log("props.node", props.node);
781
- return props.node.isNew;
782
- });
783
- return () => {
784
- return createVNode("div", {
785
- "class": "tree-item-container"
786
- }, [createVNode("div", {
787
- "class": "tree-title"
788
- }, [createVNode(Tooltip, {
789
- "title": props.node.tooltip
790
- }, {
791
- default: () => [createVNode("span", null, [props.node.title || "-"])]
792
- })]), !editing.value && props.draggable && !props.node?.disabled && !props.node?._preset && createVNode("div", {
793
- "class": "operation-container"
794
- }, [createVNode(Tooltip, {
795
- "title": t("sys.component.fieldTransfer.move")
796
- }, {
797
- default: () => [createVNode("i", {
798
- "class": ["iconfont", "icon-drag"]
799
- }, null)]
800
- })])]);
801
- };
802
- }
803
- });
804
- const noData = "data:image/svg+xml,%3csvg%20width='90'%20height='66'%20viewBox='0%200%2090%2066'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='pic_nodata'%20clip-path='url(%23clip0_129_180)'%3e%3cg%20id='&%23233;&%23161;&%23181;&%23233;&%23157;&%23162;-1'%3e%3cg%20id='pic_nowenjuan'%3e%3cg%20id='&%23231;&%23188;&%23150;&%23231;&%23187;&%23132;-11'%3e%3cpath%20id='&%23232;&%23183;&%23175;&%23229;&%23190;&%23132;-9'%20d='M42.6733%2020.3538C43.4673%2015.8467%2045.3793%2013.4462%2048.4095%2013.1524C52.9548%2012.7117%2047.4628%2018.0616%2046.6434%2016.1503C45.824%2014.2391%2049.337%209.47943%2051.6375%208.51257'%20stroke='%23DFE2E5'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20id='&%23232;&%23183;&%23175;&%23229;&%23190;&%23132;-10'%20opacity='0.5'%20d='M47.9468%207.17116C49.4703%205.01916%2051.1966%203.70564%2053.1258%203.23058'%20stroke='%23DFE2E5'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/g%3e%3cg%20id='&%23231;&%23188;&%23150;&%23231;&%23187;&%23132;'%3e%3cpath%20id='&%23231;&%23159;&%23169;&%23229;&%23189;&%23162;'%20d='M32.94%2025.3089H13.9185V62.5073H32.94V25.3089Z'%20fill='url(%23paint0_linear_129_180)'/%3e%3cpath%20id='&%23231;&%23159;&%23169;&%23229;&%23189;&%23162;_2'%20d='M74.5127%2025.3089H32.9399V62.5073H74.5127V25.3089Z'%20fill='url(%23paint1_linear_129_180)'/%3e%3cpath%20id='&%23231;&%23159;&%23169;&%23229;&%23189;&%23162;_3'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M52.9773%2053.5956H58.083C58.9474%2053.5956%2059.6482%2054.2908%2059.6482%2055.1485V61.9251H51.4121V55.1485C51.4121%2054.2908%2052.1129%2053.5956%2052.9773%2053.5956Z'%20fill='white'/%3e%3cpath%20id='&%23232;&%23183;&%23175;&%23229;&%23190;&%23132;'%20d='M10%2063L78%2063'%20stroke='%23E9EBED'%20stroke-width='2'%20stroke-linecap='square'%20stroke-linejoin='round'/%3e%3cpath%20id='&%23232;&%23183;&%23175;&%23229;&%23190;&%23132;_2'%20opacity='0.6'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.5598%2016.8379L13.9186%2025.3089H32.9401L27.6453%2016.6929C26.7929%2015.3058%2025.2736%2014.4594%2023.6361%2014.4594H9.88553C9.02108%2014.4594%208.32031%2015.1547%208.32031%2016.0123C8.32031%2016.3044%208.40332%2016.5905%208.5598%2016.8379Z'%20fill='%23C1C5CA'/%3e%3cpath%20id='&%23232;&%23183;&%23175;&%23229;&%23190;&%23132;_3'%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M55.2952%2025.3089L60.7781%2016.6416C61.6371%2015.2837%2063.1395%2014.4594%2064.7553%2014.4594H78.3925C79.257%2014.4594%2079.9577%2015.1547%2079.9577%2016.0123C79.9577%2016.2975%2079.8786%2016.5772%2079.7289%2016.8207L74.5127%2025.3089H55.2952Z'%20fill='%23E3E6E9'/%3e%3cpath%20id='&%23230;&%23164;&%23173;&%23229;&%23156;&%23134;&%23229;&%23189;&%23162;'%20d='M66.6689%205.97765C67.5353%205.97765%2068.2377%205.28373%2068.2377%204.42772C68.2377%203.57172%2067.5353%202.87779%2066.6689%202.87779C65.8025%202.87779%2065.1001%203.57172%2065.1001%204.42772C65.1001%205.28373%2065.8025%205.97765%2066.6689%205.97765Z'%20fill='%23F5F6F7'/%3e%3cpath%20id='&%23230;&%23164;&%23173;&%23229;&%23156;&%23134;&%23229;&%23189;&%23162;_2'%20d='M17.3998%206.23917C18.0509%206.23917%2018.5787%205.71771%2018.5787%205.07447C18.5787%204.43122%2018.0509%203.90976%2017.3998%203.90976C16.7487%203.90976%2016.2209%204.43122%2016.2209%205.07447C16.2209%205.71771%2016.7487%206.23917%2017.3998%206.23917Z'%20fill='%23F5F6F7'/%3e%3cpath%20id='&%23230;&%23164;&%23173;&%23229;&%23156;&%23134;&%23229;&%23189;&%23162;_3'%20d='M34.0675%2012.5416C35.8037%2012.5416%2037.2111%2011.151%2037.2111%209.43569C37.2111%207.72035%2035.8037%206.3298%2034.0675%206.3298C32.3313%206.3298%2030.9238%207.72035%2030.9238%209.43569C30.9238%2011.151%2032.3313%2012.5416%2034.0675%2012.5416Z'%20fill='%23F3F5F6'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3crect%20id='Rectangle%204564'%20x='46'%20y='31'%20width='19'%20height='3'%20rx='1'%20fill='%23E3E6E9'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_129_180'%20x1='23.4292'%20y1='25.3089'%20x2='23.4292'%20y2='62.5073'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23E1E4E8'/%3e%3cstop%20offset='1'%20stop-color='%23E9EBED'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_129_180'%20x1='53.7263'%20y1='25.3089'%20x2='53.7263'%20y2='62.5073'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23EEF0F3'/%3e%3cstop%20offset='1'%20stop-color='%23F2F3F5'/%3e%3c/linearGradient%3e%3cclipPath%20id='clip0_129_180'%3e%3crect%20width='90'%20height='66'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
805
- const noSearchData = "data:image/svg+xml,%3csvg%20width='80'%20height='74'%20viewBox='0%200%2080%2074'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='pic_noresult'%3e%3cellipse%20id='Ellipse%201223'%20cx='40.6603'%20cy='64.1947'%20rx='39.3395'%20ry='9.80551'%20fill='url(%23paint0_linear_16_1173)'/%3e%3cellipse%20id='Ellipse%201242'%20cx='40.9678'%20cy='63.2886'%20rx='28.0644'%20ry='4.21971'%20fill='url(%23paint1_linear_16_1173)'/%3e%3cpath%20id='Rectangle%204936'%20d='M8.55176%2015.7417L43.8629%207.24713L57.9982%2063.0166L20.0439%2063.0166L8.55176%2015.7417Z'%20fill='url(%23paint2_linear_16_1173)'/%3e%3cpath%20id='&%23230;&%23164;&%23173;&%23229;&%23156;&%23134;&%23229;&%23189;&%23162;'%20d='M10.3431%2053.0817C11.7796%2053.0817%2012.9441%2051.911%2012.9441%2050.4669C12.9441%2049.0227%2011.7796%2047.8521%2010.3431%2047.8521C8.90668%2047.8521%207.74219%2049.0227%207.74219%2050.4669C7.74219%2051.911%208.90668%2053.0817%2010.3431%2053.0817Z'%20fill='%23F3F5F6'/%3e%3cpath%20id='&%23230;&%23164;&%23173;&%23229;&%23156;&%23134;&%23229;&%23189;&%23162;_2'%20d='M1.30048%2039.3538C2.01871%2039.3538%202.60096%2038.7685%202.60096%2038.0464C2.60096%2037.3244%202.01871%2036.739%201.30048%2036.739C0.582245%2036.739%200%2037.3244%200%2038.0464C0%2038.7685%200.582245%2039.3538%201.30048%2039.3538Z'%20fill='%23F5F6F7'/%3e%3cpath%20id='&%23230;&%23164;&%23173;&%23229;&%23156;&%23134;&%23229;&%23189;&%23162;_3'%20d='M75.1739%2044.1599C76.0717%2044.1599%2076.7995%2043.4282%2076.7995%2042.5256C76.7995%2041.623%2076.0717%2040.8914%2075.1739%2040.8914C74.2761%2040.8914%2073.5483%2041.623%2073.5483%2042.5256C73.5483%2043.4282%2074.2761%2044.1599%2075.1739%2044.1599Z'%20fill='%23F5F6F7'/%3e%3cpath%20id='Rectangle%204937'%20d='M39.3247%2014.2749L72.258%2020.431L62.7342%2062.9638H26.4517L39.3247%2014.2749Z'%20fill='url(%23paint3_linear_16_1173)'/%3e%3cg%20id='Group%20427319056'%3e%3crect%20id='Rectangle%204938'%20width='5.5933'%20height='5.04734'%20transform='matrix(0.864872%20-0.501992%200.498011%200.867171%2050.0679%2048.7026)'%20fill='%23D9DFE3'/%3e%3cpath%20id='Rectangle%204939'%20d='M52.6103%2055.3755C52.0602%2054.4176%2052.3887%2053.1916%2053.344%2052.6371L56.657%2050.7142C57.6123%2050.1597%2058.8327%2050.4867%2059.3828%2051.4445L64.3616%2060.1141C64.9117%2061.072%2064.5832%2062.2979%2063.6279%2062.8524L60.3149%2064.7754C59.3596%2065.3299%2058.1392%2065.0029%2057.5891%2064.045L52.6103%2055.3755Z'%20fill='url(%23paint4_linear_16_1173)'/%3e%3c/g%3e%3cg%20id='Group%20427319055'%3e%3cellipse%20id='Ellipse%201233'%20cx='42.7116'%20cy='31.5694'%20rx='20.1091'%20ry='20.2161'%20fill='%23BDC2C7'/%3e%3cg%20id='Ellipse%201236'%20filter='url(%23filter0_i_16_1173)'%3e%3cellipse%20cx='41.8737'%20cy='30.727'%20rx='19.2712'%20ry='19.3737'%20fill='%23D9DCDF'/%3e%3c/g%3e%3cellipse%20id='Ellipse%201235'%20cx='41.8738'%20cy='30.7268'%20rx='15.3611'%20ry='15.4428'%20fill='%23BDC2C7'/%3e%3cg%20id='Mask%20group'%3e%3cellipse%20id='Ellipse%201234'%20cx='42.4324'%20cy='31.2885'%20rx='14.8025'%20ry='14.8813'%20fill='url(%23paint5_linear_16_1173)'/%3e%3cmask%20id='mask0_16_1173'%20style='mask-type:alpha'%20maskUnits='userSpaceOnUse'%20x='27'%20y='16'%20width='31'%20height='31'%3e%3cellipse%20id='Ellipse%201235_2'%20cx='42.4324'%20cy='31.2885'%20rx='14.8025'%20ry='14.8813'%20fill='url(%23paint6_linear_16_1173)'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_16_1173)'%3e%3cpath%20id='Rectangle%204937_2'%20d='M39.3015%2014.1611L72.258%2020.3383L62.7274%2063.0167H26.4194L39.3015%2014.1611Z'%20fill='url(%23paint7_linear_16_1173)'/%3e%3c/g%3e%3c/g%3e%3cellipse%20id='Ellipse%201236_2'%20opacity='0.5'%20cx='42.4324'%20cy='31.2885'%20rx='14.8025'%20ry='14.8813'%20fill='white'/%3e%3cpath%20id='Subtract'%20d='M33.582%2025.7002C31.9708%2027.411%2030.9814%2029.7199%2030.9814%2032.2617C30.9815%2034.8806%2032.0309%2037.2528%2033.7295%2038.9775C30.7626%2037.3631%2028.7472%2034.2069%2028.7471%2030.5771C28.7471%2028.1592%2029.6431%2025.9527%2031.1172%2024.2705L33.582%2025.7002Z'%20fill='white'/%3e%3c/g%3e%3cellipse%20id='Ellipse%201239'%20cx='51.0895'%20cy='6.95969'%20rx='1.6256'%20ry='1.63425'%20fill='%23DFE2E5'/%3e%3cellipse%20id='Ellipse%201240'%20opacity='0.8'%20cx='56.2916'%20cy='6.95969'%20rx='1.6256'%20ry='1.63425'%20fill='%23DFE2E5'/%3e%3cellipse%20id='Ellipse%201241'%20opacity='0.5'%20cx='61.4938'%20cy='6.95969'%20rx='1.6256'%20ry='1.63425'%20fill='%23DFE2E5'/%3e%3c/g%3e%3cdefs%3e%3cfilter%20id='filter0_i_16_1173'%20x='22.6025'%20y='11.3533'%20width='38.5425'%20height='38.7476'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20type='matrix'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'%20result='hardAlpha'/%3e%3cfeOffset%20dx='1'%20dy='1'/%3e%3cfeComposite%20in2='hardAlpha'%20operator='arithmetic'%20k2='-1'%20k3='1'/%3e%3cfeColorMatrix%20type='matrix'%20values='0%200%200%200%201%200%200%200%200%201%200%200%200%200%201%200%200%200%200.7%200'/%3e%3cfeBlend%20mode='normal'%20in2='shape'%20result='effect1_innerShadow_16_1173'/%3e%3c/filter%3e%3clinearGradient%20id='paint0_linear_16_1173'%20x1='40.3989'%20y1='54.3892'%20x2='40.3989'%20y2='73.9398'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23EEF0F3'/%3e%3cstop%20offset='1'%20stop-color='%23F2F3F5'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_16_1173'%20x1='52.635'%20y1='61.0164'%20x2='48.8939'%20y2='75.2201'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23E7EAEE'/%3e%3cstop%20offset='1'%20stop-color='%23E5E7ED'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_16_1173'%20x1='27.055'%20y1='12.7441'%20x2='40.1799'%20y2='67.303'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23E1E4E8'/%3e%3cstop%20offset='1'%20stop-color='%23E9EBED'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint3_linear_16_1173'%20x1='49.3375'%20y1='18.1924'%20x2='49.3549'%20y2='62.9638'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23EEF0F3'/%3e%3cstop%20offset='1'%20stop-color='%23FBFBFB'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint4_linear_16_1173'%20x1='50.9973'%20y1='44.7663'%20x2='62.0589'%20y2='63.763'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23BDC2C7'/%3e%3cstop%20offset='1'%20stop-color='%23D9DCDF'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint5_linear_16_1173'%20x1='42.4324'%20y1='16.4072'%20x2='42.4324'%20y2='46.1698'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23E1E4E8'/%3e%3cstop%20offset='1'%20stop-color='%23E9EBED'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint6_linear_16_1173'%20x1='42.4324'%20y1='16.4072'%20x2='42.4324'%20y2='46.1698'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23E1E4E8'/%3e%3cstop%20offset='1'%20stop-color='%23E9EBED'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint7_linear_16_1173'%20x1='49.3387'%20y1='14.1611'%20x2='49.3387'%20y2='63.0167'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23EEF0F3'/%3e%3cstop%20offset='1'%20stop-color='%23F2F3F5'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";
806
- const TransferTree = /* @__PURE__ */ defineComponent({
807
- name: "TransferTree",
808
- props: {
809
- /** useTreeData */
810
- treeObj: {
811
- type: Object,
812
- required: true
813
- },
814
- checkedKeys: {
815
- type: Array,
816
- required: true
817
- },
818
- onCheckedKeysChange: {
819
- type: Function,
820
- required: true
821
- }
822
- },
823
- setup(props) {
824
- const {
825
- data,
826
- draggable
827
- } = toRefs(props.treeObj);
828
- const keyword = ref("");
829
- const filteredTreeData = computed(() => {
830
- if (!keyword.value) {
831
- return data.value;
832
- }
833
- const nodes = traverseFilter((node) => node.title.toLowerCase().includes(keyword.value.toLowerCase()), data.value);
834
- return nodes;
835
- });
836
- const handleCheckedKeys = (keys) => {
837
- if (!keyword.value) {
838
- props.onCheckedKeysChange(keys);
839
- return;
840
- }
841
- const nextKeys = keys.concat(props.checkedKeys.filter((key) => !keys.includes(key) && !filteredTreeData.value.some((item) => item.key === key)));
842
- props.onCheckedKeysChange(nextKeys);
843
- };
844
- const slots = {
845
- title: (node) => {
846
- return createVNode(TreeItem, {
847
- "node": node,
848
- "draggable": draggable.value
849
- }, null);
850
- }
851
- };
852
- return () => {
853
- return createVNode("div", {
854
- "class": "transfer-tree-container"
855
- }, [createVNode("div", {
856
- "class": "search-container"
857
- }, [createVNode(Input, {
858
- "placeholder": t("sys.component.fieldTransfer.pleaseSearch"),
859
- "value": keyword.value,
860
- "onChange": (e) => keyword.value = e.target.value,
861
- "allowClear": true,
862
- "prefix": createVNode("i", {
863
- "class": ["search-icon iconfont", " icon-sousuo"]
864
- }, null)
865
- }, null)]), createVNode("div", {
866
- "class": "tree-wrapper",
867
- "style": {
868
- overflow: "auto"
869
- }
870
- }, [filteredTreeData.value.length === 0 ? createVNode("div", {
871
- "class": "empty-container"
872
- }, [createVNode(Empty, {
873
- "image": keyword.value ? noSearchData : noData,
874
- "description": keyword.value ? t("sys.component.fieldTransfer.noSearchData") : t("sys.component.fieldTransfer.noData")
875
- }, null)]) : createVNode(Tree, {
876
- "showIcon": true,
877
- "showLine": {
878
- showLeafIcon: false
879
- },
880
- "blockNode": true,
881
- "draggable": draggable.value ? {
882
- icon: false
883
- } : false,
884
- "checkedKeys": props.checkedKeys,
885
- "onCheck": handleCheckedKeys,
886
- "multiple": true,
887
- "checkable": true,
888
- "icon": (node) => createVNode("i", {
889
- "class": ["iconfont", node.isLeaf ? FieldIconMap[node.fieldType] || "icon-zidingyi" : "icon-file"]
890
- }, null),
891
- "onSelect": (_, {
892
- selectedNodes
893
- }) => {
894
- handleCheckedKeys(selectedNodes.map((node) => node.key));
895
- },
896
- "treeData": filteredTreeData.value,
897
- "onDrop": ({
898
- node,
899
- dragNode,
900
- dropToGap,
901
- dropPosition
902
- }) => {
903
- const dropPos = node.pos.split("-");
904
- const dir = dropPosition - Number(dropPos[dropPos.length - 1]);
905
- if (dropToGap) {
906
- props.treeObj.moveTreeNode(dragNode.dataRef, node.dataRef, dir);
907
- }
908
- }
909
- }, slots)])]);
910
- };
911
- }
912
- });
913
- const AdvancedTransfer = /* @__PURE__ */ defineComponent({
914
- name: "AdvancedTransfer",
915
- props: {
916
- /** 数据源 */
917
- dataSource: {
918
- type: Array,
919
- required: true
920
- },
921
- /** useTreeData */
922
- treeObj: {
923
- type: Object,
924
- required: true
925
- },
926
- /** 穿梭框标题集合 */
927
- titles: {
928
- type: Array,
929
- default() {
930
- return [t("sys.component.fieldTransfer.noSelect"), t("sys.component.fieldTransfer.select")];
931
- }
932
- }
933
- },
934
- setup(props) {
935
- const {
936
- dataSource: propDataSource
937
- } = toRefs(props);
938
- const {
939
- remainCount: propRemainCount,
940
- leafKeys,
941
- multiple
942
- } = toRefs(props.treeObj);
943
- const checkedKeys = ref([]);
944
- const targetCheckedKeys = ref([]);
945
- const keyword = ref();
946
- const hasSearchData = ref(true);
947
- const remainCount = computed(() => {
948
- return propRemainCount.value - checkedKeys.value.length;
949
- });
950
- const dataSource = computed(() => {
951
- return propDataSource.value.map((item) => {
952
- return {
953
- ...item,
954
- disabled: item.disabled || remainCount.value === 0 && !checkedKeys.value.includes(item.id) && !leafKeys.value.includes(item.id)
955
- };
956
- });
957
- });
958
- watch(multiple, (val) => {
959
- if (val) {
960
- targetCheckedKeys.value = [];
961
- }
962
- }, {
963
- immediate: true
964
- });
965
- const onSelectChange = (sourceSelectedKeys, targetSelectedKeys) => {
966
- const actualSelectedKeys = sourceSelectedKeys.slice(0, propRemainCount.value);
967
- checkedKeys.value = actualSelectedKeys;
968
- targetCheckedKeys.value = targetSelectedKeys;
969
- };
970
- const onChange = (_, direction, moveKeys) => {
971
- if (direction === "right") {
972
- const nodes = moveKeys.map((key) => dataSource.value.find((item) => item.id === key)).map((item) => ({
973
- key: item.id,
974
- title: item.displayLabel,
975
- type: "field",
976
- fieldType: item.type,
977
- isLeaf: true
978
- }));
979
- props.treeObj.addTreeNodes(nodes, props.treeObj.getContainerNode());
980
- } else {
981
- props.treeObj.removeTreeNodesByKeys(moveKeys);
982
- }
983
- };
984
- const setTargetCheckedKeys = (keys) => {
985
- targetCheckedKeys.value = keys;
986
- };
987
- const leftOption = computed(() => {
988
- return dataSource.value.filter((item) => !leafKeys.value.includes(item.id));
989
- });
990
- const filteredLeftOption = computed(() => {
991
- if (!keyword.value) {
992
- return leftOption.value;
993
- }
994
- return leftOption.value.filter((item) => item.displayLabel.toLowerCase().includes(keyword.value.toLowerCase()));
995
- });
996
- const onSearch = (direction, value) => {
997
- if (direction === "left") {
998
- keyword.value = value;
999
- hasSearchData.value = filteredLeftOption.value.length > 0;
1000
- }
1001
- };
1002
- const renderItem = ({
1003
- type,
1004
- displayLabel
1005
- }) => {
1006
- return createVNode("div", {
1007
- "class": "field-title",
1008
- "title": displayLabel
1009
- }, [createVNode("i", {
1010
- "class": ["field-icon iconfont", FieldIconMap[type] || "icon-zidingyi"]
1011
- }, null), displayLabel]);
1012
- };
1013
- const slots = {
1014
- children: ({
1015
- direction
1016
- }) => {
1017
- if (direction === "right") {
1018
- return createVNode(TransferTree, {
1019
- "treeObj": props.treeObj,
1020
- "checkedKeys": targetCheckedKeys.value,
1021
- "onCheckedKeysChange": setTargetCheckedKeys
1022
- }, null);
1023
- }
1024
- if (direction === "left" && (!leftOption.value.length || !filteredLeftOption.value.length)) {
1025
- return createVNode("div", {
1026
- "class": "empty-container"
1027
- }, [createVNode(Empty, {
1028
- "image": leftOption.value.length ? noSearchData : noData,
1029
- "description": leftOption.value.length ? t("sys.component.fieldTransfer.noSearchData") : t("sys.component.fieldTransfer.noData")
1030
- }, null)]);
1031
- }
1032
- }
1033
- };
1034
- return () => {
1035
- return createVNode("div", {
1036
- "class": "advanced-transfer-container"
1037
- }, [createVNode(Transfer, {
1038
- "dataSource": dataSource.value,
1039
- "targetKeys": leafKeys.value,
1040
- "selectedKeys": checkedKeys.value.concat(targetCheckedKeys.value),
1041
- "showSearch": true,
1042
- "filterOption": (text, item) => item.displayLabel.includes(text),
1043
- "oneWay": multiple.value,
1044
- "titles": props.titles,
1045
- "locale": {
1046
- itemUnit: t("sys.component.fieldTransfer.term"),
1047
- itemsUnit: t("sys.component.fieldTransfer.term"),
1048
- searchPlaceholder: t("sys.component.fieldTransfer.pleaseSearch"),
1049
- selectAll: t("sys.component.fieldTransfer.selectAllData"),
1050
- selectInvert: t("sys.component.fieldTransfer.invertCurrentPage")
1051
- },
1052
- "rowKey": (item) => item.id,
1053
- "onChange": onChange,
1054
- "onSearch": onSearch,
1055
- "onSelectChange": onSelectChange,
1056
- "render": renderItem
1057
- }, slots)]);
1058
- };
1059
- }
1060
- });
1061
- const AdvancedColumnSetting = /* @__PURE__ */ defineComponent({
1062
- name: "AdvancedColumnSetting",
1063
- props: {
1064
- /** 所有字段 */
1065
- fields: {
1066
- type: Array,
1067
- required: true
1068
- },
1069
- /** 树形数据 */
1070
- columns: Array,
1071
- /** 是否启用多级表头 */
1072
- useMultiLevelTHead: Boolean,
1073
- /** 是否刷新数据 */
1074
- isResetData: Boolean,
1075
- /** 是否支持拖拽 */
1076
- draggable: Boolean,
1077
- /** 穿梭框标题集合 */
1078
- titles: Array,
1079
- maxEnableCount: Number,
1080
- /** 回调方法 */
1081
- onColumnsChange: Function
1082
- },
1083
- setup(props, {
1084
- expose
1085
- }) {
1086
- const treeObj = useTreeData(props.useMultiLevelTHead, props.isResetData, props.draggable, props.maxEnableCount, props.onColumnsChange);
1087
- watch([() => props.columns, () => props.fields], () => {
1088
- treeObj.onChangeTree(props.columns ?? [], props.fields);
1089
- }, {
1090
- deep: true,
1091
- immediate: true
1092
- });
1093
- const getResult = () => {
1094
- return {
1095
- useMultiLevelTHead: treeObj.multiple,
1096
- headerTree: treeObj.data
1097
- };
1098
- };
1099
- expose({
1100
- getResult
1101
- });
1102
- return () => {
1103
- return createVNode(AdvancedTransfer, {
1104
- "dataSource": props.fields,
1105
- "treeObj": treeObj,
1106
- "titles": props.titles
1107
- }, null);
1108
- };
1109
- }
1110
- });
1111
- const FieldTransfer = /* @__PURE__ */ defineComponent({
1112
- name: "FieldTransfer",
1113
- props: {
1114
- objFields: Object,
1115
- /** 选中的字段数组 */
1116
- value: Array,
1117
- /** 穿梭框标题集合 */
1118
- titles: Array,
1119
- maxEnableCount: Number,
1120
- disabledFieldKey: Array,
1121
- /** 包含的字段 */
1122
- containFieldType: Array,
1123
- /** 包含的字段Key */
1124
- containFieldKey: Array,
1125
- /**包含的字段创建类型 */
1126
- containCreateType: Array,
1127
- /** 排除的字段Key */
1128
- excludeFieldKey: Array,
1129
- /** 排除的字段 */
1130
- excludeFieldType: Array,
1131
- /**过滤函数 */
1132
- filterFieldByFunction: Function,
1133
- onChange: Function,
1134
- /** 是否支持拖拽 */
1135
- draggable: Boolean
1136
- },
1137
- setup(props) {
1138
- const {
1139
- getFieldCodeChainStr
1140
- } = useModelField(SCOPEINFO.FIELD_LIST);
1141
- const result = computed(() => {
1142
- const fields = [];
1143
- const _fieldMap = {};
1144
- const processColumns = [];
1145
- if (!props.objFields?.modelKey) {
1146
- return {
1147
- fields,
1148
- fieldMap: _fieldMap,
1149
- columns: processColumns,
1150
- otherFieldCount: 0
1151
- };
1152
- }
1153
- if (Array.isArray(props.value)) {
1154
- props.value.forEach((item) => {
1155
- const key = `${item.fieldCodeChain}!${item.key}`;
1156
- _fieldMap[key] = item;
1157
- if (item.fieldCodeChain !== (props.objFields?.fieldCodeChain ?? props.objFields?.modelKey)) {
1158
- fields.push({
1159
- id: key,
1160
- modelKey: item.modelKey,
1161
- displayLabel: item.name,
1162
- type: item.type,
1163
- disabled: item.disabled
1164
- });
1165
- }
1166
- processColumns.push({
1167
- id: key,
1168
- title: item.name,
1169
- tooltip: getFieldCodeChainStr(item.fieldCodeChain, item.name),
1170
- fieldType: item.type,
1171
- type: "field"
1172
- // disableEditable: false,
1173
- // 非当前对象的字段,需要把checkbox禁用掉,不能选择
1174
- // disableCheckbox: false
1175
- });
1176
- });
1177
- }
1178
- props.objFields.fieldList.filter((flist) => {
1179
- if (typeof props.filterFieldByFunction === "function" && !props.filterFieldByFunction(flist)) {
1180
- return false;
1181
- }
1182
- if (props.containCreateType && flist.createType && !props.containCreateType.includes(flist.createType)) {
1183
- return false;
1184
- }
1185
- if (props.containFieldType || props.containFieldKey) {
1186
- const isContainFieldType = (props.containFieldType ?? []).includes(flist.type);
1187
- const isContainFieldKey = (props.containFieldKey ?? []).includes(flist.key);
1188
- return isContainFieldType || isContainFieldKey;
1189
- }
1190
- if (props.excludeFieldType || props.excludeFieldKey) {
1191
- const isExcludeFieldType = (props.excludeFieldType ?? []).includes(flist.type);
1192
- const isExcludeFieldKey = (props.excludeFieldKey ?? []).includes(flist.key);
1193
- return !(isExcludeFieldType || isExcludeFieldKey);
1194
- }
1195
- return true;
1196
- }).forEach((fl) => {
1197
- const key = `${props.objFields?.fieldCodeChain}!${fl.key}`;
1198
- if (isEmpty(_fieldMap[key])) {
1199
- _fieldMap[key] = {
1200
- ...toRaw(fl),
1201
- isFieldModel: props.objFields?.isFieldModel,
1202
- fieldCodeChain: props.objFields?.fieldCodeChain
1203
- };
1204
- }
1205
- const isMainModel = props?.objFields?.fieldCodeChain && JSON.parse(props.objFields?.fieldCodeChain).modelKey && JSON.parse(props.objFields?.fieldCodeChain).modelKey === props.objFields?.modelKey;
1206
- fields.push({
1207
- id: key,
1208
- modelKey: fl.modelKey,
1209
- displayLabel: fl.name,
1210
- type: fl.type,
1211
- disabled: !!(isMainModel && props.disabledFieldKey?.includes(fl.key))
1212
- });
1213
- });
1214
- const otherFieldCount = processColumns.reduce((pre, cur) => {
1215
- return pre + (cur.disableCheckbox ? 1 : 0);
1216
- }, 0);
1217
- return {
1218
- fields,
1219
- fieldMap: _fieldMap,
1220
- columns: processColumns,
1221
- otherFieldCount
1222
- };
1223
- });
1224
- const handleColumnsChange = (columns) => {
1225
- if (typeof props?.onChange === "function") {
1226
- props?.onChange(columns.map((column) => result.value.fieldMap[column.id]));
1227
- }
1228
- };
1229
- return () => {
1230
- return createVNode(AdvancedColumnSetting, {
1231
- "key": props.objFields?.fieldCodeChain ?? props.objFields?.modelKey,
1232
- "fields": result.value.fields,
1233
- "columns": result.value.columns,
1234
- "useMultiLevelTHead": false,
1235
- "titles": props.titles,
1236
- "maxEnableCount": props.maxEnableCount,
1237
- "draggable": props.draggable,
1238
- "onColumnsChange": handleColumnsChange
1239
- }, null);
1240
- };
1241
- }
1242
- });
1243
- const _hoisted_1$4 = {
1244
- key: 0,
1245
- class: "h26px leading-26px bg-[#3168EC]/[0.1] pl-10px mb-10px"
1246
- };
1247
- const _hoisted_2$3 = { class: "text-[#666] ml-6px" };
1248
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1249
- __name: "field-transfer-modal",
1250
- props: {
1251
- modelKey: {},
1252
- isShowCascader: { type: Boolean },
1253
- modalTitle: {},
1254
- data: { default: () => [] },
1255
- titles: {},
1256
- containFieldType: {},
1257
- containFieldKey: {},
1258
- disabledFieldKey: {},
1259
- excludeFieldKey: {},
1260
- excludeFieldType: {},
1261
- containCreateType: {},
1262
- filterFieldByFunction: {},
1263
- maxEnableCount: {},
1264
- modalKey: {},
1265
- width: {},
1266
- draggable: { type: Boolean, default: true },
1267
- childParentModelKey: {},
1268
- destroyCallback: {},
1269
- saveCallback: {},
1270
- promptMessage: {},
1271
- readonly: { type: Boolean }
1272
- },
1273
- setup(__props, { expose: __expose }) {
1274
- const props = __props;
1275
- const visible = ref(false);
1276
- const cancelText = computed(
1277
- () => props.readonly ? window.$t?.("sys.closeText") ?? "关闭" : t("sys.cancelText")
1278
- );
1279
- const getContainer = () => props.modalKey && document.querySelector(`#${props.modalKey}`) || document.body;
1280
- const {
1281
- loadObjInfo,
1282
- modelFieldMap: modelFieldMap2,
1283
- getModelFieldInfo,
1284
- clearSelectInfo,
1285
- clearObjInfo,
1286
- selectObj: selectObj2
1287
- } = useModelField(SCOPEINFO.FIELD_LIST);
1288
- const objFieldList = ref([]);
1289
- const isLoad = ref(false);
1290
- const init = async () => {
1291
- objFieldList.value = [];
1292
- clearSelectInfo();
1293
- clearObjInfo();
1294
- isLoad.value = false;
1295
- if (props.modelKey) {
1296
- isLoad.value = !!await loadObjInfo(props.modelKey, {
1297
- isShowCascader: props.isShowCascader,
1298
- childParentModelKey: props.childParentModelKey
1299
- });
1300
- }
1301
- };
1302
- watch(
1303
- [() => props.data, () => modelFieldMap2.value, isLoad],
1304
- () => {
1305
- if (isEmpty(modelFieldMap2.value)) return;
1306
- objFieldList.value = props.data?.map((item) => {
1307
- const obj = pick(item, [
1308
- "bindFieldKey",
1309
- "isFieldModel",
1310
- "modelKey",
1311
- "fieldCodeChain",
1312
- "key",
1313
- "field",
1314
- "disabled",
1315
- "_dfValue",
1316
- "id"
1317
- ]);
1318
- const fieldKey = obj.field || obj.key || obj._dfValue || obj.id;
1319
- const fieldInfo = getModelFieldInfo(obj.modelKey || props.modelKey, fieldKey);
1320
- if (!fieldInfo) return null;
1321
- return {
1322
- ...fieldInfo,
1323
- bindFieldKey: obj.bindFieldKey,
1324
- isFieldModel: obj.isFieldModel || false,
1325
- disabled: obj.disabled || false,
1326
- fieldCodeChain: obj.fieldCodeChain ?? JSON.stringify({ modelKey: fieldInfo.modelKey || props.modelKey })
1327
- };
1328
- }).filter(Boolean) ?? [];
1329
- },
1330
- { immediate: true, deep: true }
1331
- );
1332
- const setObjFieldList = (list) => {
1333
- if (props.readonly) return;
1334
- objFieldList.value = list;
1335
- };
1336
- const handleClose = () => {
1337
- visible.value = false;
1338
- objFieldList.value = [];
1339
- clearSelectInfo();
1340
- clearObjInfo();
1341
- isLoad.value = false;
1342
- props.destroyCallback?.();
1343
- };
1344
- const handleOk = () => {
1345
- if (props.readonly) {
1346
- handleClose();
1347
- return;
1348
- }
1349
- props.saveCallback?.({
1350
- objFieldList: toRaw(objFieldList.value)
1351
- });
1352
- handleClose();
1353
- };
1354
- const open = async () => {
1355
- visible.value = true;
1356
- await init();
1357
- };
1358
- __expose({ open });
1359
- return (_ctx, _cache) => {
1360
- const _component_a_spin = resolveComponent("a-spin");
1361
- const _component_a_modal = resolveComponent("a-modal");
1362
- return openBlock(), createBlock(_component_a_modal, {
1363
- visible: visible.value,
1364
- "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
1365
- title: __props.modalTitle || unref(t)("sys.component.fieldTransfer.defaultModalTitle"),
1366
- width: __props.width || 740,
1367
- maskClosable: false,
1368
- destroyOnClose: true,
1369
- centered: "",
1370
- getContainer,
1371
- wrapClassName: "excel-field-transfer-modal",
1372
- "ok-button-props": __props.readonly ? { style: { display: "none" } } : void 0,
1373
- "ok-text": unref(t)("sys.confirm"),
1374
- "cancel-text": cancelText.value,
1375
- onOk: handleOk,
1376
- onCancel: handleClose
1377
- }, {
1378
- default: withCtx(() => [
1379
- createElementVNode("div", {
1380
- class: normalizeClass(["field-transfer-container", { "is-readonly": __props.readonly }])
1381
- }, [
1382
- createVNode(_component_a_spin, {
1383
- spinning: !isLoad.value
1384
- }, {
1385
- default: withCtx(() => [
1386
- __props.promptMessage ? (openBlock(), createElementBlock("div", _hoisted_1$4, [
1387
- _cache[1] || (_cache[1] = createElementVNode("i", { class: "iconfont icon-guanyu text-[#3168EC]" }, null, -1)),
1388
- createElementVNode("span", _hoisted_2$3, toDisplayString(__props.promptMessage), 1)
1389
- ])) : createCommentVNode("", true),
1390
- createVNode(unref(FieldCascader), {
1391
- class: "mb-8px",
1392
- isShowCascader: __props.isShowCascader,
1393
- scope: unref(SCOPEINFO).FIELD_LIST
1394
- }, null, 8, ["isShowCascader", "scope"]),
1395
- createVNode(unref(FieldTransfer), {
1396
- titles: __props.titles,
1397
- maxEnableCount: __props.maxEnableCount,
1398
- draggable: !__props.readonly && __props.draggable,
1399
- disabledFieldKey: __props.disabledFieldKey,
1400
- containFieldKey: __props.containFieldKey,
1401
- containFieldType: __props.containFieldType,
1402
- excludeFieldKey: __props.excludeFieldKey,
1403
- containCreateType: __props.containCreateType,
1404
- excludeFieldType: __props.excludeFieldType,
1405
- filterFieldByFunction: __props.filterFieldByFunction,
1406
- objFields: isLoad.value ? unref(selectObj2) : {},
1407
- value: objFieldList.value,
1408
- onChange: setObjFieldList
1409
- }, null, 8, ["titles", "maxEnableCount", "draggable", "disabledFieldKey", "containFieldKey", "containFieldType", "excludeFieldKey", "containCreateType", "excludeFieldType", "filterFieldByFunction", "objFields", "value"])
1410
- ]),
1411
- _: 1
1412
- }, 8, ["spinning"])
1413
- ], 2)
1414
- ]),
1415
- _: 1
1416
- }, 8, ["visible", "title", "width", "ok-button-props", "ok-text", "cancel-text"]);
1417
- };
1418
- }
1419
- });
1420
- const FieldTransferModal = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-32730a6e"]]);
1421
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1422
- ...{ inheritAttrs: false },
1423
- __name: "modal-wrapper",
1424
- setup(__props, { expose: __expose }) {
1425
- const modalRef = ref();
1426
- const open = () => {
1427
- modalRef.value?.open();
1428
- };
1429
- __expose({ open });
1430
- return (_ctx, _cache) => {
1431
- return openBlock(), createBlock(FieldTransferModal, mergeProps({
1432
- ref_key: "modalRef",
1433
- ref: modalRef
1434
- }, _ctx.$attrs), null, 16);
1435
- };
1436
- }
1437
- });
1438
- function useFieldTransfer() {
1439
- let app = null;
1440
- let instance = null;
1441
- const modalKey = ref("");
1442
- function open(params) {
1443
- let props;
1444
- let target = document.body;
1445
- if (has(params, "target") || has(params, "props")) {
1446
- const options = params;
1447
- props = options.props || {};
1448
- target = options.target || document.body;
1449
- } else {
1450
- props = params;
1451
- }
1452
- modalKey.value = `field-transfer-modal-${Math.random().toString(16).substring(8)}`;
1453
- const propsData = {
1454
- width: 740,
1455
- modalKey: unref(modalKey),
1456
- destroyCallback: close,
1457
- ...props
1458
- };
1459
- if (!app) {
1460
- const container = document.createElement("div");
1461
- container.id = unref(modalKey);
1462
- const t2 = unref(target);
1463
- t2?.appendChild(container);
1464
- app = createApp(_sfc_main$4, propsData);
1465
- registerDialogComp(app);
1466
- app.config.globalProperties.$t = window.$t ?? ((key) => key);
1467
- instance = app.mount(container);
1468
- }
1469
- instance.open();
1470
- }
1471
- function close() {
1472
- document.querySelector(`#${unref(modalKey)}`).remove();
1473
- if (app) {
1474
- app.unmount();
1475
- app = null;
1476
- instance = null;
1477
- }
1478
- }
1479
- return {
1480
- open,
1481
- close
1482
- };
1483
- }
1484
- const _hoisted_1$3 = { class: "display-fields-editor" };
1485
- const _hoisted_2$2 = { class: "editor-tip" };
1486
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1487
- __name: "display-fields-editor",
1488
- props: {
1489
- displayFields: { default: () => [] },
1490
- fieldMeta: {},
1491
- disabled: { type: Boolean }
1492
- },
1493
- emits: ["update:displayFields"],
1494
- setup(__props, { emit: __emit }) {
1495
- const props = __props;
1496
- const emit = __emit;
1497
- const { open } = useFieldTransfer();
1498
- const { modelMetaMap } = useModelFields();
1499
- const selectorInfo = computed(() => {
1500
- const options = [];
1501
- const values = [];
1502
- props.displayFields.forEach(({ _dfLabel: label, _dfValue: value }) => {
1503
- options.push({ label, value });
1504
- values.push(value);
1505
- });
1506
- return { options, values };
1507
- });
1508
- const unremovableKeys = computed(() => {
1509
- return props.displayFields.filter((o) => o._dfUnremovable).map((o) => o._dfValue);
1510
- });
1511
- const handleOpenModal = () => {
1512
- open({
1513
- modelKey: props.fieldMeta.refModelKey,
1514
- modalTitle: $t("sys.selectDisplayFields"),
1515
- isShowCascader: true,
1516
- draggable: !props.disabled,
1517
- readonly: props.disabled,
1518
- data: props.displayFields,
1519
- maxEnableCount: 99999,
1520
- excludeFieldType: [],
1521
- excludeFieldKey: [],
1522
- filterFieldByFunction: () => true,
1523
- saveCallback: ({ objFieldList }) => {
1524
- if (props.disabled) return;
1525
- const fields = (objFieldList || []).map((f) => ({
1526
- ...f,
1527
- _dfLabel: f.name,
1528
- _dfValue: f.id
1529
- }));
1530
- emit("update:displayFields", fields);
1531
- }
1532
- });
1533
- };
1534
- const handleSelectChange = (remainingKeys) => {
1535
- if (props.disabled) return;
1536
- const options = props.displayFields.filter((o) => {
1537
- return o._dfUnremovable ? true : remainingKeys.includes(o._dfValue);
1538
- });
1539
- emit("update:displayFields", options);
1540
- };
1541
- const handleTagClose = (val) => {
1542
- if (props.disabled) return;
1543
- const options = props.displayFields.filter((o) => o._dfValue !== val);
1544
- emit("update:displayFields", options);
1545
- };
1546
- onMounted(() => {
1547
- if (props.disabled) return;
1548
- const { displayFields, fieldMeta } = props;
1549
- if (displayFields?.length) return;
1550
- const { fieldType, refModelKey } = fieldMeta;
1551
- if (!refModelKey) return;
1552
- const fields = modelMetaMap.value[refModelKey]?.fields || [];
1553
- const mapKey = {
1554
- [FIELD_TYPE.DEVICE]: "device",
1555
- [FIELD_TYPE.MATERIAL_NO]: "materialNo"
1556
- }[fieldType];
1557
- const defaultKeys = mapKey ? DEFAULT_DISPLAY_FIELDS_MAP[mapKey] : void 0;
1558
- if (!defaultKeys?.length) return;
1559
- const options = fields.filter((f) => defaultKeys.includes(f.key)).map((f) => ({
1560
- ...f,
1561
- _dfLabel: f.name,
1562
- _dfValue: f.id
1563
- }));
1564
- emit("update:displayFields", options);
1565
- });
1566
- return (_ctx, _cache) => {
1567
- return openBlock(), createElementBlock("div", _hoisted_1$3, [
1568
- createVNode(FormItem, {
1569
- label: `${_ctx.$t("sys.displayFields")}`,
1570
- inline: false
1571
- }, {
1572
- default: withCtx(() => [
1573
- createVNode(unref(Select), {
1574
- size: "small",
1575
- mode: "multiple",
1576
- "max-tag-count": "responsive",
1577
- allowClear: !__props.disabled,
1578
- open: false,
1579
- showSearch: false,
1580
- options: selectorInfo.value.options,
1581
- value: selectorInfo.value.values,
1582
- placeholder: _ctx.$t("sys.chooseText"),
1583
- onFocus: handleOpenModal,
1584
- onChange: handleSelectChange
1585
- }, {
1586
- tagRender: withCtx(({ label, value }) => [
1587
- createVNode(unref(Tag), {
1588
- disabled: __props.disabled,
1589
- closable: !__props.disabled && !unremovableKeys.value.includes(value),
1590
- onClose: ($event) => handleTagClose(value)
1591
- }, {
1592
- default: withCtx(() => [
1593
- createTextVNode(toDisplayString(label), 1)
1594
- ]),
1595
- _: 2
1596
- }, 1032, ["disabled", "closable", "onClose"])
1597
- ]),
1598
- _: 1
1599
- }, 8, ["allowClear", "options", "value", "placeholder"])
1600
- ]),
1601
- _: 1
1602
- }, 8, ["label"]),
1603
- createElementVNode("div", _hoisted_2$2, toDisplayString(_ctx.$t("sys.displayFieldsTip")), 1)
1604
- ]);
1605
- };
1606
- }
1607
- });
1608
- const DisplayFieldsEditor = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-cfa98beb"]]);
1609
- const DEFAULT_SEARCHABLE_FIELDS = [
1610
- FIELD_TYPE.PRODUCT,
1611
- FIELD_TYPE.SCRAP_MATERIAL,
1612
- FIELD_TYPE.DEVICE,
1613
- FIELD_TYPE.MATERIAL_NO,
1614
- FIELD_TYPE.RELATED_LOT_NO,
1615
- FIELD_TYPE.SCRAP_MATERIAL_NO,
1616
- FIELD_TYPE.MATERIAL_CONTAINER
1617
- ];
1618
- const SEARCHABLE_FIELDS = [
1619
- ...DEFAULT_SEARCHABLE_FIELDS,
1620
- FIELD_TYPE.REF,
1621
- FIELD_TYPE.MFG_ORDER,
1622
- FIELD_TYPE.ROUTING_OPERATION,
1623
- FIELD_TYPE.NOT_GOOD_GROUP,
1624
- FIELD_TYPE.NOT_GOOD_REASON,
1625
- FIELD_TYPE.SCRAP_GROUP,
1626
- FIELD_TYPE.SCRAP_REASON,
1627
- FIELD_TYPE.SHOPFLOOR,
1628
- FIELD_TYPE.MODEL_RELATION,
1629
- FIELD_TYPE.WAREHOUSE,
1630
- FIELD_TYPE.PRODUCTION_CONTAINER,
1631
- FIELD_TYPE.STERILIZATION_CONTAINER,
1632
- FIELD_TYPE.STERILIZE_BATCH
1633
- ];
1634
- const getRealFieldType = (fieldMeta) => {
1635
- const { fieldType, bizType } = fieldMeta;
1636
- if (bizType === FIELD_TYPE_TRACE.STERILIZATION_CONTAINER) {
1637
- return FIELD_TYPE.STERILIZATION_CONTAINER;
1638
- }
1639
- return fieldType;
1640
- };
1641
- const getIsSearchableField = (fieldMeta) => {
1642
- const type = getRealFieldType(fieldMeta);
1643
- return SEARCHABLE_FIELDS.includes(type);
1644
- };
1645
- const getSearchableFieldIsDefaultOpen = (fieldMeta) => {
1646
- const type = getRealFieldType(fieldMeta);
1647
- return DEFAULT_SEARCHABLE_FIELDS.includes(type);
1648
- };
1649
- const _hoisted_1$2 = { class: "quick-search-editor" };
1650
- const _hoisted_2$1 = { class: "flex justify-end" };
1651
- const _hoisted_3$1 = {
1652
- key: 1,
1653
- class: "editor-tip"
1654
- };
1655
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1656
- __name: "quick-search-editor",
1657
- props: {
1658
- fieldMeta: {},
1659
- searchable: { type: Boolean },
1660
- searchField: {},
1661
- disabled: { type: Boolean }
1662
- },
1663
- emits: ["update:searchable", "update:searchField"],
1664
- setup(__props, { emit: __emit }) {
1665
- const { modelMetaMap, loadModelFieldsByKey } = useModelFields();
1666
- const filterFields = [
1667
- FIELD_TYPE.LONG_TEXT,
1668
- FIELD_TYPE.TEXT,
1669
- FIELD_TYPE.DECIMAL,
1670
- FIELD_TYPE.DOUBLE,
1671
- FIELD_TYPE.LONG,
1672
- FIELD_TYPE.INTEGER
1673
- ];
1674
- const filterTypes = [CreateType.USER_DEFINED, CreateType.BUILTIN];
1675
- const props = __props;
1676
- const emit = __emit;
1677
- const currentModelMeta = computed(() => {
1678
- return modelMetaMap.value[props.fieldMeta.refModelKey];
1679
- });
1680
- watch(
1681
- () => props.fieldMeta.refModelKey,
1682
- (modelKey) => {
1683
- if (modelKey && !modelMetaMap.value[modelKey]) {
1684
- void loadModelFieldsByKey(modelKey);
1685
- }
1686
- },
1687
- { immediate: true }
1688
- );
1689
- const fieldOptions = computed(() => {
1690
- return currentModelMeta.value?.fields?.filter((i) => {
1691
- return checkKeyByList(i.type, filterFields) && checkKeyByList(i.createType, filterTypes);
1692
- }).map((i) => {
1693
- const exp = SEARCH_TYPE[i.type]?.noRangDefaultExp;
1694
- return {
1695
- name: i.name,
1696
- key: exp ? i.key + "." + exp : i.key
1697
- };
1698
- });
1699
- });
1700
- const checkKeyByList = (key, filters) => {
1701
- return !filters || filters.indexOf(key) > -1;
1702
- };
1703
- const _searchable = computed({
1704
- get() {
1705
- return isBoolean(props.searchable) ? props.searchable : getSearchableFieldIsDefaultOpen(props.fieldMeta);
1706
- },
1707
- set(v) {
1708
- emit("update:searchable", v);
1709
- }
1710
- });
1711
- const _searchField = computed({
1712
- get() {
1713
- return props.searchField || [];
1714
- },
1715
- set(v) {
1716
- emit("update:searchField", v);
1717
- }
1718
- });
1719
- return (_ctx, _cache) => {
1720
- const _component_a_switch = resolveComponent("a-switch");
1721
- const _component_a_select = resolveComponent("a-select");
1722
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
1723
- createVNode(FormItem, {
1724
- label: _ctx.$t("sys.search")
1725
- }, {
1726
- default: withCtx(() => [
1727
- createElementVNode("div", _hoisted_2$1, [
1728
- createVNode(_component_a_switch, {
1729
- size: "small",
1730
- disabled: __props.disabled,
1731
- checked: _searchable.value,
1732
- "onUpdate:checked": _cache[0] || (_cache[0] = ($event) => _searchable.value = $event)
1733
- }, null, 8, ["disabled", "checked"])
1734
- ])
1735
- ]),
1736
- _: 1
1737
- }, 8, ["label"]),
1738
- _searchable.value ? (openBlock(), createBlock(FormItem, {
1739
- key: 0,
1740
- inline: false,
1741
- label: _ctx.$t("sys.pageDesigner.quickSearchFields")
1742
- }, {
1743
- default: withCtx(() => [
1744
- createVNode(_component_a_select, {
1745
- value: _searchField.value,
1746
- "onUpdate:value": _cache[1] || (_cache[1] = ($event) => _searchField.value = $event),
1747
- allowClear: "",
1748
- mode: "multiple",
1749
- maxTagCount: 5,
1750
- maxTagTextLength: 6,
1751
- fieldNames: { label: "name", value: "key" },
1752
- optionFilterProp: "name",
1753
- options: fieldOptions.value,
1754
- size: "small",
1755
- disabled: __props.disabled,
1756
- placeholder: _ctx.$t("sys.inputText")
1757
- }, null, 8, ["value", "options", "disabled", "placeholder"])
1758
- ]),
1759
- _: 1
1760
- }, 8, ["label"])) : createCommentVNode("", true),
1761
- _searchable.value ? (openBlock(), createElementBlock("div", _hoisted_3$1, toDisplayString(_ctx.$t("sys.quickSearchFieldsTip")), 1)) : createCommentVNode("", true)
1762
- ]);
1763
- };
1764
- }
1765
- });
1766
- const QuickSearchEditor = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-11c27596"]]);
1767
- const _hoisted_1$1 = { class: "px24px mt20px" };
1768
- const _hoisted_2 = { class: "text-[#8B8B8B]" };
1769
- const _hoisted_3 = { class: "atuofill-field-icon" };
1770
- const _hoisted_4 = { class: "form-table-label" };
1771
- const _hoisted_5 = ["onClick"];
1772
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1773
- __name: "autofill-rules-modal",
1774
- props: {
1775
- fieldMeta: {},
1776
- rules: {},
1777
- readonly: { type: Boolean }
1778
- },
1779
- emits: ["ok", "register"],
1780
- setup(__props, { emit: __emit }) {
1781
- const $t2 = window.$t;
1782
- const { modelMetaMap, subTableFieldModel, getFieldMeta } = useModelFields();
1783
- const props = __props;
1784
- const {
1785
- refModelKey,
1786
- model: modelKey,
1787
- fieldType,
1788
- field: currentFieldKey
1789
- } = toRefs(props.fieldMeta);
1790
- const isSubTableTrigger = computed(
1791
- () => !!(props.fieldMeta.subFieldKey || props.fieldMeta.subModelKey)
1792
- );
1793
- const refFieldName = computed(() => {
1794
- return getFieldMeta(props.fieldMeta).name;
1795
- });
1796
- const autofillForm = ref();
1797
- const formState = reactive({
1798
- rules: [
1799
- {
1800
- fromField: void 0,
1801
- toField: void 0
1802
- }
1803
- ]
1804
- });
1805
- const bindFiledList = ref([]);
1806
- const allFieldInFormWithout = ref([]);
1807
- const formModelName = ref("");
1808
- ref($t2("sys.pageDesigner.addRule"));
1809
- const excludeFieldType = [
1810
- FIELD_TYPE.IMAGE,
1811
- FIELD_TYPE.ATTACHMENT,
1812
- FIELD_TYPE.SERIAL,
1813
- FIELD_TYPE.MASTERSLAVE,
1814
- FIELD_TYPE.ENUM,
1815
- FIELD_TYPE.ENUM_MULTI,
1816
- FIELD_TYPE.REF,
1817
- FIELD_TYPE.REF_MULTI,
1818
- FIELD_TYPE.RDO_REF,
1819
- FIELD_TYPE.EXPRESSION,
1820
- FIELD_TYPE.EXPRESSION_CONDITION,
1821
- FIELD_TYPE.AGG,
1822
- FIELD_TYPE.ESOP,
1823
- FIELD_TYPE.TRANSACTION,
1824
- FIELD_TYPE.LABEL_TEMPLATE,
1825
- FIELD_TYPE.LABEL_TEMPLATE_REF,
1826
- FIELD_TYPE.DOCUMENT_TEMPLATE,
1827
- FIELD_TYPE.SERIALRULE,
1828
- FIELD_TYPE.PRINTER,
1829
- FIELD_TYPE.MESSAGE_TMPL,
1830
- FIELD_TYPE.RANGE_USER,
1831
- FIELD_TYPE.SIGNATURE,
1832
- FIELD_TYPE.ONLINE_FORM_TEMPLATE,
1833
- FIELD_TYPE.E_DHR_TEMPLATE,
1834
- FIELD_TYPE.DATA_TABLE_FORMULA,
1835
- FIELD_TYPE.READONLYCMP,
1836
- FIELD_TYPE.BOOLEAN
1837
- ];
1838
- onMounted(async () => {
1839
- const modelDetail = await api.apaas.modelMeta.getDetail({
1840
- modelKey: modelKey.value
1841
- });
1842
- allFieldInFormWithout.value = modelDetail?.fieldMetaList?.filter((d) => d.createType !== "SYSTEM") || [];
1843
- formModelName.value = modelDetail?.name || "";
1844
- props.rules && onDataReceive({ rules: props.rules });
1845
- });
1846
- const fromFieldTreeData = computed(() => {
1847
- const children = bindFiledList.value.filter((f) => f.key !== "id_").map((f) => ({
1848
- ...f,
1849
- value: f.key,
1850
- label: f.name,
1851
- type: f.type
1852
- }));
1853
- return [
1854
- {
1855
- value: "id_",
1856
- label: refFieldName.value,
1857
- type: fieldType.value,
1858
- selectable: true,
1859
- children
1860
- }
1861
- ];
1862
- });
1863
- const currentModelName = computed(() => {
1864
- return modelMetaMap.value[modelKey.value]?.meta?.name || formModelName.value || "";
1865
- });
1866
- const filterCompatibleFields = (fromField, fieldList) => {
1867
- if (!fromField) return [];
1868
- if (fromField === "id_") {
1869
- const sourceType = fieldType.value;
1870
- const fieldConfig2 = transformMappingField4Auto(sourceType) ?? transformMappingField4Auto(FIELD_TYPE.REF);
1871
- let list2 = fieldList.filter((v) => fieldConfig2?.filterArr?.includes(v.type));
1872
- if (fieldConfig2?.equal !== void 0 && fieldConfig2?.equal) {
1873
- list2 = list2.filter((i) => i.bindInfo === refModelKey.value);
1874
- }
1875
- return list2;
1876
- }
1877
- const record = bindFiledList.value.find((i) => i.key === fromField);
1878
- if (record?.modelKey === "em_product" && record?.key === "uom_id_") {
1879
- return fieldList.filter(
1880
- (e) => [FIELD_TYPE.TEXT, FIELD_TYPE.LONG_TEXT, FIELD_TYPE.REF].includes(e.type)
1881
- );
1882
- }
1883
- const fieldConfig = transformMappingField4Auto(record?.type);
1884
- let list = fieldList.filter((v) => fieldConfig?.filterArr?.includes(v.type));
1885
- if (fieldConfig?.equal !== void 0 && fieldConfig?.equal) {
1886
- list = list.filter((i) => i.bindInfo === record?.bindInfo);
1887
- }
1888
- if ([FIELD_TYPE.TEXT, FIELD_TYPE.LONG_TEXT].includes(record?.type)) {
1889
- list = list.filter((i) => !["ref_model_key_", "ref_field_key_"].includes(i.key));
1890
- }
1891
- return list;
1892
- };
1893
- const buildSubTableFieldValue = (fromSubTableField, fieldKey) => {
1894
- return `${fromSubTableField}::${fieldKey}`;
1895
- };
1896
- const parseSubTableFieldValue = (value) => {
1897
- const [fromSubTableField, fieldKey] = value.split("::");
1898
- return { fromSubTableField, fieldKey };
1899
- };
1900
- const stripSubTableRuleFields = (rules) => {
1901
- if (!isSubTableTrigger.value) return rules;
1902
- return rules.map(({ fromSubTableField: _omit, ...rest }) => rest);
1903
- };
1904
- const selrender = (item) => {
1905
- return () => h("span", { class: "atuofill-field-icon" }, [
1906
- h("i", { class: ["iconfont", FieldIconMap[item.type] || "text"] }),
1907
- item.name
1908
- ]);
1909
- };
1910
- const filterOption = (input, option) => {
1911
- return option.name?.includes(input?.trim());
1912
- };
1913
- const getTargetFieldOptions = (fromField) => {
1914
- if (!fromField) return [];
1915
- let fields = filterCompatibleFields(fromField, allFieldInFormWithout.value);
1916
- if (fromField === "id_" && currentFieldKey.value) {
1917
- fields = fields.filter((f) => f.key !== currentFieldKey.value);
1918
- }
1919
- return fields.map((f) => ({
1920
- ...f,
1921
- value: f.key,
1922
- label: selrender(f)
1923
- }));
1924
- };
1925
- const getTargetFieldValue = (element) => {
1926
- if (!element.toField) return void 0;
1927
- if (element.fromSubTableField) {
1928
- return buildSubTableFieldValue(element.fromSubTableField, element.toField);
1929
- }
1930
- return element.toField;
1931
- };
1932
- const getTargetFieldTreeData = (fromField) => {
1933
- if (!fromField) return [];
1934
- let mainFields = filterCompatibleFields(fromField, allFieldInFormWithout.value);
1935
- if (fromField === "id_" && currentFieldKey.value) {
1936
- mainFields = mainFields.filter((f) => f.key !== currentFieldKey.value);
1937
- }
1938
- const treeData = [];
1939
- if (mainFields.length) {
1940
- treeData.push({
1941
- value: `__main__${modelKey.value}`,
1942
- label: currentModelName.value,
1943
- selectable: false,
1944
- children: mainFields.map((f) => ({
1945
- ...f,
1946
- value: f.key,
1947
- label: f.name,
1948
- type: f.type
1949
- }))
1950
- });
1951
- }
1952
- subTableFieldModel.value.forEach(({ field, model }) => {
1953
- if (model.subModelType === SubTableType.STOCKTAKE || model.subModelType === SubTableType.ALLOCATE) {
1954
- return;
1955
- }
1956
- const subModelFields = modelMetaMap.value[field.bindInfo]?.fields?.filter((d) => d.createType !== "SYSTEM") || [];
1957
- const compatibleFields = filterCompatibleFields(fromField, subModelFields);
1958
- if (!compatibleFields.length) return;
1959
- treeData.push({
1960
- value: `__sub__${field.key}`,
1961
- label: `${model.name}(${getSubTableTypeLabel(model.subModelType)})`,
1962
- selectable: false,
1963
- children: compatibleFields.map((f) => ({
1964
- ...f,
1965
- value: buildSubTableFieldValue(field.key, f.key),
1966
- label: f.name,
1967
- type: f.type,
1968
- fromSubTableField: field.key
1969
- }))
1970
- });
1971
- });
1972
- return treeData;
1973
- };
1974
- const getSubTableTypeLabel = (subModelType) => {
1975
- const subTypeMap = {
1976
- INSPECTION: "CHECK",
1977
- MATERIAL_CONSUME: "MATERIAL_CONSUMPTION",
1978
- PRODUCTION_CONTAINER_LIST_4_STERILIZATION: "STERILIZE_BATCH"
1979
- };
1980
- const subTableType = subTypeMap[subModelType || ""] || subModelType || "DEFAULT";
1981
- return $t2(`sys.onlineForm.subTableType.${subTableType}`);
1982
- };
1983
- const onDataReceive = async ({ rules }) => {
1984
- formState.rules = stripSubTableRuleFields(cloneDeep(rules));
1985
- if (formState.rules?.length == 0) {
1986
- formState.rules.push({
1987
- fromField: void 0,
1988
- toField: void 0
1989
- });
1990
- }
1991
- const res = await api.apaas.modelMeta.getDetail({
1992
- modelKey: refModelKey.value
1993
- });
1994
- bindFiledList.value = res?.fieldMetaList?.filter((d) => d.createType !== "SYSTEM")?.filter(
1995
- (i) => i.modelKey === "em_product" && i.key === "uom_id_" || !excludeFieldType.includes(i.type)
1996
- ) || [];
1997
- };
1998
- const removeRule = (index) => {
1999
- if (props.readonly) return;
2000
- formState.rules.splice(index, 1);
2001
- };
2002
- const addRule = () => {
2003
- if (props.readonly) return;
2004
- formState.rules.push({
2005
- fromField: void 0,
2006
- toField: void 0
2007
- });
2008
- };
2009
- const modal = useModal(async () => {
2010
- if (props.readonly) return null;
2011
- if (formState.rules.length > 1 || formState.rules[0].fromField || formState.rules[0].toField) {
2012
- await autofillForm.value.validate();
2013
- return {
2014
- ok: true,
2015
- data: stripSubTableRuleFields(formState.rules)
2016
- };
2017
- }
2018
- });
2019
- onMounted(() => {
2020
- if (props.readonly) {
2021
- applyDesignReadonlyModal(modal);
2022
- }
2023
- });
2024
- const handleFromChange = (element) => {
2025
- element.toField = null;
2026
- element.toFieldType = void 0;
2027
- element.fromSubTableField = void 0;
2028
- };
2029
- const handleFlatTargetChange = (val, element) => {
2030
- if (!val) {
2031
- element.toField = void 0;
2032
- element.toFieldType = void 0;
2033
- element.fromSubTableField = void 0;
2034
- return;
2035
- }
2036
- const record = allFieldInFormWithout.value.find((f) => f.key === val);
2037
- element.toField = val;
2038
- element.toFieldType = record?.type;
2039
- element.fromSubTableField = void 0;
2040
- };
2041
- const handleTargetChange = (val, extra, element) => {
2042
- if (!val) {
2043
- element.toField = void 0;
2044
- element.toFieldType = void 0;
2045
- element.fromSubTableField = void 0;
2046
- return;
2047
- }
2048
- if (String(val).includes("::")) {
2049
- const { fromSubTableField, fieldKey } = parseSubTableFieldValue(String(val));
2050
- const node2 = extra?.triggerNode?.props || extra?.triggerNode;
2051
- const nodeProps2 = node2?.dataRef || node2;
2052
- element.toField = fieldKey;
2053
- element.fromSubTableField = fromSubTableField;
2054
- element.toFieldType = nodeProps2?.type;
2055
- return;
2056
- }
2057
- const node = extra?.triggerNode?.props || extra?.triggerNode;
2058
- const nodeProps = node?.dataRef || node;
2059
- element.toField = val;
2060
- element.fromSubTableField = void 0;
2061
- element.toFieldType = nodeProps?.type;
2062
- };
2063
- return (_ctx, _cache) => {
2064
- const _component_a_button = resolveComponent("a-button");
2065
- const _component_a_col = resolveComponent("a-col");
2066
- const _component_a_row = resolveComponent("a-row");
2067
- const _component_a_tree_select = resolveComponent("a-tree-select");
2068
- const _component_a_form_item = resolveComponent("a-form-item");
2069
- const _component_a_select = resolveComponent("a-select");
2070
- const _component_a_form = resolveComponent("a-form");
2071
- return openBlock(), createElementBlock("div", {
2072
- class: normalizeClass(["px-16px py-16px", { "is-readonly": __props.readonly }])
2073
- }, [
2074
- !__props.readonly ? (openBlock(), createBlock(_component_a_button, {
2075
- key: 0,
2076
- type: "link",
2077
- onClick: addRule,
2078
- class: "mv10px pl24px mt4px"
2079
- }, {
2080
- default: withCtx(() => [
2081
- _cache[0] || (_cache[0] = createElementVNode("i", {
2082
- class: "iconfont icon-chuangjian mr8px",
2083
- style: { "vertical-align": "-1px" }
2084
- }, null, -1)),
2085
- createTextVNode(" " + toDisplayString(unref($t2)("sys.pageDesigner.fillRules")), 1)
2086
- ]),
2087
- _: 1
2088
- })) : createCommentVNode("", true),
2089
- createElementVNode("div", _hoisted_1$1, [
2090
- createVNode(_component_a_row, {
2091
- gutter: 4,
2092
- style: { "margin-bottom": "4px", "padding": "0 10px" },
2093
- class: "text-[#1A1D23]"
2094
- }, {
2095
- default: withCtx(() => [
2096
- createVNode(_component_a_col, { span: 9 }, {
2097
- default: withCtx(() => [
2098
- createTextVNode(toDisplayString(unref($t2)("sys.pageDesigner.valueSource")), 1)
2099
- ]),
2100
- _: 1
2101
- }),
2102
- createVNode(_component_a_col, { span: 4 }),
2103
- createVNode(_component_a_col, { span: 11 }, {
2104
- default: withCtx(() => [
2105
- createTextVNode(toDisplayString(unref($t2)("sys.pageDesigner.targetField")) + " ", 1),
2106
- createElementVNode("span", _hoisted_2, " ( " + toDisplayString(unref($t2)("sys.pageDesigner.onlineFormFieldInForm")) + ") ", 1)
2107
- ]),
2108
- _: 1
2109
- })
2110
- ]),
2111
- _: 1
2112
- }),
2113
- createVNode(_component_a_form, {
2114
- ref_key: "autofillForm",
2115
- ref: autofillForm,
2116
- model: formState,
2117
- "wrapper-col": { span: 24 },
2118
- autocomplete: "off",
2119
- "hide-required-mark": "",
2120
- colon: false
2121
- }, {
2122
- default: withCtx(() => [
2123
- createVNode(unref(draggableComponent), {
2124
- list: formState.rules,
2125
- handle: ".cursor-move",
2126
- "drag-class": "drawing-drag",
2127
- "item-key": "id"
2128
- }, {
2129
- item: withCtx(({ element, index }) => [
2130
- (openBlock(), createBlock(_component_a_row, {
2131
- gutter: 4,
2132
- key: index,
2133
- class: "rule-item"
2134
- }, {
2135
- default: withCtx(() => [
2136
- createVNode(_component_a_col, { span: 9 }, {
2137
- default: withCtx(() => [
2138
- createVNode(_component_a_form_item, {
2139
- label: "",
2140
- name: ["rules", index, "fromField"],
2141
- rules: [
2142
- {
2143
- required: true,
2144
- message: unref($t2)("sys.chooseTextTip", {
2145
- name: unref($t2)("sys.field")
2146
- })
2147
- }
2148
- ]
2149
- }, {
2150
- default: withCtx(() => [
2151
- createVNode(_component_a_tree_select, {
2152
- value: element.fromField,
2153
- "onUpdate:value": ($event) => element.fromField = $event,
2154
- placeholder: unref($t2)("sys.chooseText") + unref($t2)("sys.field"),
2155
- "show-search": "",
2156
- "tree-default-expand-all": "",
2157
- "allow-clear": "",
2158
- disabled: __props.readonly,
2159
- "tree-node-filter-prop": "label",
2160
- "dropdown-class-name": "gct-custom-select-dropdown autofill-from-field-tree",
2161
- "tree-data": fromFieldTreeData.value,
2162
- onChange: ($event) => handleFromChange(element)
2163
- }, {
2164
- title: withCtx((data) => [
2165
- createElementVNode("span", _hoisted_3, [
2166
- data.type ? (openBlock(), createElementBlock("i", {
2167
- key: 0,
2168
- class: normalizeClass(["iconfont", unref(FieldIconMap)[data.type] || "text"])
2169
- }, null, 2)) : createCommentVNode("", true),
2170
- createTextVNode(" " + toDisplayString(data.label), 1)
2171
- ])
2172
- ]),
2173
- _: 1
2174
- }, 8, ["value", "onUpdate:value", "placeholder", "disabled", "tree-data", "onChange"])
2175
- ]),
2176
- _: 2
2177
- }, 1032, ["name", "rules"])
2178
- ]),
2179
- _: 2
2180
- }, 1024),
2181
- createVNode(_component_a_col, { span: 4 }, {
2182
- default: withCtx(() => [
2183
- createElementVNode("span", _hoisted_4, toDisplayString(unref($t2)("sys.pageDesigner.valueFillTip")), 1)
2184
- ]),
2185
- _: 1
2186
- }),
2187
- createVNode(_component_a_col, { span: 10 }, {
2188
- default: withCtx(() => [
2189
- createVNode(_component_a_form_item, {
2190
- label: "",
2191
- name: ["rules", index, "toField"],
2192
- rules: [
2193
- {
2194
- required: true,
2195
- message: unref($t2)("sys.chooseTextTip", {
2196
- name: unref($t2)("sys.field")
2197
- })
2198
- }
2199
- ]
2200
- }, {
2201
- default: withCtx(() => [
2202
- isSubTableTrigger.value ? (openBlock(), createBlock(_component_a_select, {
2203
- key: 0,
2204
- value: element.toField,
2205
- "onUpdate:value": ($event) => element.toField = $event,
2206
- placeholder: unref($t2)("sys.chooseText") + unref($t2)("sys.field"),
2207
- "show-search": "",
2208
- "allow-clear": "",
2209
- disabled: __props.readonly,
2210
- "filter-option": filterOption,
2211
- "option-label-prop": "label",
2212
- "dropdown-class-name": "gct-custom-select-dropdown",
2213
- options: getTargetFieldOptions(element.fromField),
2214
- onChange: (val) => handleFlatTargetChange(val, element)
2215
- }, null, 8, ["value", "onUpdate:value", "placeholder", "disabled", "options", "onChange"])) : (openBlock(), createBlock(_component_a_tree_select, {
2216
- key: 1,
2217
- value: getTargetFieldValue(element),
2218
- placeholder: unref($t2)("sys.chooseText") + unref($t2)("sys.field"),
2219
- "show-search": "",
2220
- "tree-default-expand-all": "",
2221
- "allow-clear": "",
2222
- disabled: __props.readonly,
2223
- "tree-node-filter-prop": "label",
2224
- "dropdown-class-name": "gct-custom-select-dropdown autofill-to-field-tree",
2225
- "tree-data": getTargetFieldTreeData(element.fromField),
2226
- onChange: (val, _label, extra) => handleTargetChange(val, extra, element)
2227
- }, {
2228
- title: withCtx((data) => [
2229
- createElementVNode("span", {
2230
- class: normalizeClass([
2231
- "atuofill-field-icon",
2232
- { "text-[#8B8B8B]": data.selectable === false }
2233
- ])
2234
- }, [
2235
- data.type ? (openBlock(), createElementBlock("i", {
2236
- key: 0,
2237
- class: normalizeClass(["iconfont", unref(FieldIconMap)[data.type] || "text"])
2238
- }, null, 2)) : createCommentVNode("", true),
2239
- createTextVNode(" " + toDisplayString(data.label), 1)
2240
- ], 2)
2241
- ]),
2242
- _: 1
2243
- }, 8, ["value", "placeholder", "disabled", "tree-data", "onChange"]))
2244
- ]),
2245
- _: 2
2246
- }, 1032, ["name", "rules"])
2247
- ]),
2248
- _: 2
2249
- }, 1024),
2250
- createVNode(_component_a_col, {
2251
- span: 1,
2252
- class: "rule-flex-col"
2253
- }, {
2254
- default: withCtx(() => [
2255
- withDirectives(createElementVNode("i", {
2256
- class: "iconfont icon-shanchu2 text-[#797A7D] error-gct-hover cursor-pointer",
2257
- onClick: ($event) => removeRule(index)
2258
- }, null, 8, _hoisted_5), [
2259
- [vShow, !__props.readonly && formState.rules.length > 1]
2260
- ])
2261
- ]),
2262
- _: 2
2263
- }, 1024)
2264
- ]),
2265
- _: 2
2266
- }, 1024))
2267
- ]),
2268
- _: 1
2269
- }, 8, ["list"])
2270
- ]),
2271
- _: 1
2272
- }, 8, ["model"])
2273
- ])
2274
- ], 2);
2275
- };
2276
- }
2277
- });
2278
- const AutofillRulesModal = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-6b45c1c0"]]);
2279
- const _hoisted_1 = { class: "inpt-box" };
2280
- const _sfc_main = /* @__PURE__ */ defineComponent({
2281
- __name: "ref-autofill-editor",
2282
- props: {
2283
- fieldMeta: {},
2284
- autofillRules: {},
2285
- enableAutofill: { type: Boolean },
2286
- disabled: { type: Boolean }
2287
- },
2288
- emits: ["update:autofillRules", "update:enableAutofill"],
2289
- setup(__props, { emit: __emit }) {
2290
- const props = __props;
2291
- const emit = __emit;
2292
- const detail = computed({
2293
- get() {
2294
- return props.autofillRules;
2295
- },
2296
- set(v) {
2297
- emit("update:autofillRules", v);
2298
- }
2299
- });
2300
- const enabled = computed({
2301
- get() {
2302
- return props.enableAutofill ?? !!props.autofillRules?.length;
2303
- },
2304
- set(v) {
2305
- emit("update:enableAutofill", v);
2306
- }
2307
- });
2308
- const btnAttrs = computed(() => {
2309
- return detail.value?.length ? { type: "primary", block: true } : { type: "primary", ghost: true, block: true };
2310
- });
2311
- const handleFilterClick = async () => {
2312
- if (props.disabled && !detail.value?.length) return;
2313
- const result = await window.NocodeAdapter.utils.overlay.modal(
2314
- AutofillRulesModal,
2315
- {
2316
- fieldMeta: props.fieldMeta,
2317
- rules: detail.value,
2318
- readonly: !!props.disabled
2319
- },
2320
- {
2321
- title: !detail.value?.length ? $t("sys.pageDesigner.addRule") : $t("sys.pageDesigner.editRule"),
2322
- centered: true,
2323
- width: 640
2324
- }
2325
- );
2326
- if (result.ok && result.data && !props.disabled) {
2327
- emit("update:autofillRules", cloneDeep(result.data));
2328
- }
2329
- };
2330
- return (_ctx, _cache) => {
2331
- const _component_a_switch = resolveComponent("a-switch");
2332
- const _component_a_button = resolveComponent("a-button");
2333
- return openBlock(), createElementBlock("div", {
2334
- class: normalizeClass(["ref-autofill-editor", { "is-off": !enabled.value }])
2335
- }, [
2336
- createVNode(FormItem, {
2337
- inline: false,
2338
- label: _ctx.$t("sys.pageDesigner.dataFill")
2339
- }, {
2340
- extra: withCtx(() => [
2341
- createVNode(_component_a_switch, {
2342
- size: "small",
2343
- checked: enabled.value,
2344
- "onUpdate:checked": _cache[0] || (_cache[0] = ($event) => enabled.value = $event),
2345
- disabled: __props.disabled
2346
- }, null, 8, ["checked", "disabled"])
2347
- ]),
2348
- default: withCtx(() => [
2349
- enabled.value ? (openBlock(), createElementBlock("div", {
2350
- key: 0,
2351
- class: "data-filter-box allow-readonly-view",
2352
- onClick: handleFilterClick
2353
- }, [
2354
- createElementVNode("div", _hoisted_1, [
2355
- createVNode(_component_a_button, normalizeProps(guardReactiveProps(btnAttrs.value)), {
2356
- default: withCtx(() => [
2357
- createTextVNode(toDisplayString(detail.value?.length ? _ctx.$t("sys.pageDesigner.editRule") : _ctx.$t("sys.pageDesigner.addRule")), 1)
2358
- ]),
2359
- _: 1
2360
- }, 16)
2361
- ])
2362
- ])) : createCommentVNode("", true)
2363
- ]),
2364
- _: 1
2365
- }, 8, ["label"])
2366
- ], 2);
2367
- };
2368
- }
2369
- });
2370
- const RefAutofillEditor = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-da999a9d"]]);
2371
- export {
2372
- DisplayFieldsEditor as D,
2373
- QuickSearchEditor as Q,
2374
- RefAutofillEditor as R,
2375
- getIsSearchableField as g
2376
- };