@gct-paas/excel 0.1.17 → 0.1.19
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.
- package/dist/{BaseComponent-DJNL1tGs.js → BaseComponent-xTm5lvAr.js} +1 -0
- package/dist/{VueVideoPlayer-Db7qcsRE.js → VueVideoPlayer-Bt1Le9qP.js} +2 -2
- package/dist/{agg-design-BjqRVeg1.js → agg-design-B_5evAJ0.js} +1 -1
- package/dist/{agg-props-CrdosdGr.js → agg-props-C62Ecenu.js} +1 -1
- package/dist/{agg-style-CfZoOE-b.js → agg-style-Q0xSL8Ye.js} +1 -1
- package/dist/{align-editor-BaNT0jhx.js → align-editor-D_LtYlh3.js} +1 -1
- package/dist/{attach-fields-editor-CThobu8X.js → attach-fields-editor-3v3VNOfe.js} +2 -2
- package/dist/{barcode-design-CHjIeaiJ.js → barcode-design-lusKmMnv.js} +3 -2
- package/dist/base/index.es.js +370 -151
- package/dist/base-font-editor-DmasOst9.js +119 -0
- package/dist/{boolean-design-BYAdX-h5.js → boolean-design-BqGJVhKn.js} +3 -2
- package/dist/{boolean-props-jKvjhdlG.js → boolean-props-DS7J4GHS.js} +3 -3
- package/dist/{boolean-style-RsMRzVBL.js → boolean-style-C9FslVV7.js} +5 -4
- package/dist/cell-upload-BFw5Yg_j.js +33 -0
- package/dist/date-range-editor-PmJBHc8i.js +471 -0
- package/dist/{date-time-design-Du8pmDo-.js → date-time-design-DQ_Z-xUx.js} +1 -1
- package/dist/date-time-props-DfZoJukN.js +105 -0
- package/dist/{date-time-style-DSEnmxAE.js → date-time-style-Doye-MHk.js} +1 -1
- package/dist/{decimal-design-C2GbzP9k.js → decimal-design-Bg-tdrtL.js} +7 -3
- package/dist/{decimal-display-mode-CagizhJW.js → decimal-display-mode-D_K6_XX1.js} +3 -2
- package/dist/{decimal-props-CGLqWy8I.js → decimal-props-4QveEdf3.js} +5 -4
- package/dist/{decimal-style-6j22QKYO.js → decimal-style-B-n8SfAy.js} +1 -1
- package/dist/{default-value-editor.vue_vue_type_script_setup_true_name_default-value-editor_lang-C5K6qhB-.js → default-value-editor.vue_vue_type_script_setup_true_name_default-value-editor_lang-B3GvGAje.js} +110 -39
- package/dist/{diagonal-design-Cq3oxdHe.js → diagonal-design-B_l3lV5s.js} +2 -2
- package/dist/{double-design-CyXEqcV7.js → double-design-BaWZXLjK.js} +6 -3
- package/dist/{double-props-DaJoio1W.js → double-props-sDsBpAER.js} +4 -4
- package/dist/{double-style-B4lIth-J.js → double-style--oSjQw07.js} +1 -1
- package/dist/{document-sub-table-action-rz6gyez5.js → dynamic-table-action-zLjamAaN.js} +1124 -654
- package/dist/{document-quick-fillin.vue_vue_type_style_index_0_scoped_a18386ab_lang-Bbu6cwRC.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_94e9d614_lang-UooIxEeL.js} +2312 -1402
- package/dist/{edit.utils-CXmmCnxE-DW8ClKe9.js → edit.utils-CXmmCnxE-BrwRVXLT.js} +1 -1
- package/dist/{enum-design-DSx09tOO.js → enum-design-BgVuHvvu.js} +13 -7
- package/dist/{enum-props-CJNuQLJ_.js → enum-props-DYN6LsLg.js} +4 -4
- package/dist/{enum-style-5N5xmgRJ.js → enum-style-D56_-gMw.js} +37 -9
- package/dist/excel.css +1480 -664
- package/dist/{exceljs.min-D9gV8q6H.js → exceljs.min-DQkwXbni.js} +2 -2
- package/dist/{expression-design-BJDbafot.js → expression-design-CIMwIArR.js} +1 -1
- package/dist/{expression-props-BpHbrsle.js → expression-props--l3LwKAM.js} +1 -1
- package/dist/{expression-style-qPh81w7Q.js → expression-style-CjM5oro9.js} +1 -1
- package/dist/{file-design-B7si04Bi.js → file-design-BYcXA55B.js} +1 -1
- package/dist/{file-props-DTtOnHQy.js → file-props-DvsQZUcL.js} +2 -2
- package/dist/{file-style-C6KW_szu.js → file-style-BiWmCsMZ.js} +1 -1
- package/dist/{font-editor-DgGgvmB2.js → font-editor-BaRVmXey.js} +3 -3
- package/dist/{form-annotation-controller-CoABDD4X.js → form-annotation-controller-Zw6OoPLe.js} +80 -23
- package/dist/{image-design-B92Xkcf-.js → image-design-Bad-BXel.js} +3 -2
- package/dist/{image-design-CCfpT4Rp.js → image-design-Dr_w89Hq.js} +2 -2
- package/dist/{image-props-DZgfzMta.js → image-props-4lKEAwDq.js} +1 -1
- package/dist/{image-style-DX6Q_gF4.js → image-style-LoHD1zvr.js} +1 -1
- package/dist/{index-Bnbl3VER.js → index--Bxx_VqV.js} +3 -2
- package/dist/{index-DsASTvC2.js → index-3qfB5NN-.js} +2 -1
- package/dist/{index-CtTSTTkq.js → index-B-2N8GeG.js} +3 -2
- package/dist/{index-Bg-x1hF6.js → index-B3YoA1vo.js} +3 -2
- package/dist/{index-BzhFcvnJ.js → index-B9IMST50.js} +3 -2
- package/dist/{index-Doxcf2Zs.js → index-BSfbsA-W.js} +3 -2
- package/dist/{index-DJISlRXi.js → index-BZYuG4zS.js} +5 -2
- package/dist/{index-DzIKEtWw.js → index-B_VejD7m.js} +4 -1
- package/dist/{index-BXMOCfWv.js → index-Bki98NXv.js} +3 -2
- package/dist/{index-DFgGQBCZ.js → index-Bm6Hdoud.js} +53 -110
- package/dist/{index-CmaPtyCh.js → index-BsUkUBZV.js} +5 -2
- package/dist/{index-BB5uSbo3.js → index-Bsjegt_0.js} +2 -1
- package/dist/{index-rn6aiccW.js → index-ByXwQO9g.js} +6 -3
- package/dist/{index-DOFSbVSN.js → index-C6mtZJIQ.js} +2 -1
- package/dist/{index-DRKvAxuA.js → index-C7KdVTwU.js} +2 -1
- package/dist/{index-tbaOl7Nd.js → index-CEufXc_2.js} +2 -1
- package/dist/{index-D6diRqWG.js → index-CH--dgZ4.js} +3 -2
- package/dist/{index-BEBKoAOg.js → index-COiTpNXf.js} +3 -2
- package/dist/{index-BYl8cK0A.js → index-CP099vf_.js} +2 -1
- package/dist/{index-BhzF0Rp3.js → index-CQ7Hcly4.js} +5 -3
- package/dist/{index-Be7TFwwX.js → index-CcLTIQGc.js} +5 -2
- package/dist/{index-C8qPy1oW.js → index-Ce0SltjH.js} +3 -2
- package/dist/{index-bvhV6lsn.js → index-CqjhgxKH.js} +15 -7
- package/dist/{index-B2iip4UC.js → index-D-mFMP7t.js} +3 -2
- package/dist/{index-IUYnmIJe.js → index-D4Yb4Urx.js} +2 -1
- package/dist/{index-Da7W9uBC.js → index-D9CHdykS.js} +3 -2
- package/dist/{index-DRd2oRK1.js → index-DDnUeBCP.js} +3 -2
- package/dist/{index-XbgrTOMF.js → index-DRYxbbtG.js} +2 -1
- package/dist/{index-Cw_YFCZT.js → index-Dk-CUvB9.js} +3876 -3389
- package/dist/{index-Dsj3FuVs.js → index-DpPrrfLV.js} +3 -2
- package/dist/{index-DgHRTRH5.js → index-Dq72GFzs.js} +3 -2
- package/dist/{index-p-Q3DQmv.js → index-Vx5npC-J.js} +4 -3
- package/dist/{index-CIoB2iny.js → index-pPTh0-mL.js} +2 -1
- package/dist/index.es.js +6 -5
- package/dist/{integer-design-CPzJPZon.js → integer-design-C2EkL0hc.js} +6 -3
- package/dist/{integer-props-deCDvNET.js → integer-props-Cs-CvjQS.js} +5 -4
- package/dist/{integer-style-DwZIRXEW.js → integer-style-BtAfQCAn.js} +1 -1
- package/dist/{mb-render-Bejyn-ep.js → mb-render-CsWNoQnS.js} +1 -1
- package/dist/{number-input-ex-CgwOH18n.js → number-input-ex-eza87s5O.js} +12 -4
- package/dist/{org-props-BeFVQ-QY.js → org-props-BJ6FKaVj.js} +3 -2
- package/dist/{org-style-CLVWLtyd.js → org-style-LRy5QsV5.js} +1 -1
- package/dist/{pagination-design-CT0EQmxW.js → pagination-design-sA-kbILI.js} +3 -2
- package/dist/paper-widget-design-BGY5qu-K.js +4 -0
- package/dist/{qrcode-design-CjOkp2xa.js → qrcode-design-BsWJrsvD.js} +1 -1
- package/dist/{ref-autofill-editor-B2KcQvyt.js → ref-autofill-editor-BbozAOcm.js} +2 -2
- package/dist/{ref-props-DPnt_pys.js → ref-props-BInJu7PN.js} +3 -3
- package/dist/{ref-style-D0XKTtP1.js → ref-style-Dgc_9tko.js} +1 -1
- package/dist/regex-editor-C09XpMhm.js +796 -0
- package/dist/{revo-grid.entry-ztDhASK3.js → revo-grid.entry-BIm5A5wM.js} +1 -1
- package/dist/{revogr-attribution_7.entry-BtXV91vv.js → revogr-attribution_7.entry-B06XF5B_.js} +3 -3
- package/dist/{revogr-clipboard_3.entry-DXpq4oNb.js → revogr-clipboard_3.entry-C8dVJYtR.js} +2 -2
- package/dist/{revogr-data_4.entry-WA1PNcGb.js → revogr-data_4.entry-Dgp6vYqe.js} +2 -2
- package/dist/{revogr-filter-panel.entry-unpVAD7l.js → revogr-filter-panel.entry-xo_juIUc.js} +1 -1
- package/dist/{select-render-type-editor.vue_vue_type_script_setup_true_lang-CqaEwsvS.js → select-render-type-editor.vue_vue_type_script_setup_true_lang-vIUGBOWr.js} +3 -2
- package/dist/{serialnumber-design-ClArHZWU.js → serialnumber-design-mWcys6hI.js} +1 -1
- package/dist/shared/index.es.js +18 -18
- package/dist/{signature-design-Cg2Ejj3g.js → signature-design-Dl-Lv5Z5.js} +5 -2
- package/dist/{signature-props-CNuLBWtc.js → signature-props-DSzpO-_r.js} +3 -3
- package/dist/{signature-style-DtlZdeFB.js → signature-style-Bk34vOsk.js} +1 -1
- package/dist/{single-field-drop-COLR9RIu.js → single-field-drop-CiPUMT9B.js} +2 -2
- package/dist/{size-editor-DyGGEX3s.js → size-editor-B5aunbUM.js} +1 -1
- package/dist/src/adapter/index.d.ts +1 -0
- package/dist/src/adapter/setup.d.ts +1 -1
- package/dist/src/nocode-base/src/_utils_/uuid.d.ts +6 -1
- package/dist/src/nocode-base/src/components/border-td.vue.d.ts +1 -0
- package/dist/src/nocode-base/src/components/{document-quick-fill-modal.vue.d.ts → document-quick-fill/dynamic-quick-fill-modal.vue.d.ts} +1 -1
- package/dist/src/nocode-base/src/components/{document-quick-fillin.vue.d.ts → document-quick-fill/fixed-quick-fill-modal.vue.d.ts} +6 -4
- package/dist/src/nocode-base/src/components/document-quick-fill/quick-fill.util.d.ts +17 -0
- package/dist/src/nocode-base/src/components/document-sub-table-action/fixed-table-action.vue.d.ts +13 -0
- package/dist/src/nocode-base/src/components/index.d.ts +4 -3
- package/dist/src/nocode-base/src/constant/index.d.ts +11 -0
- package/dist/src/nocode-base/src/hooks/annotation/collect-annotation-items.d.ts +15 -0
- package/dist/src/nocode-base/src/hooks/annotation/form-annotation-controller.d.ts +5 -2
- package/dist/src/nocode-base/src/hooks/annotation/form-change-row.d.ts +60 -0
- package/dist/src/nocode-base/src/hooks/annotation/index.d.ts +2 -0
- package/dist/src/nocode-base/src/hooks/app-info/index.d.ts +2 -2
- package/dist/src/nocode-base/src/hooks/index.d.ts +2 -1
- package/dist/src/nocode-base/src/hooks/material-consume/mc-render.d.ts +3 -1
- package/dist/src/nocode-base/src/hooks/model-relation/index.d.ts +1 -1
- package/dist/src/nocode-base/src/hooks/service-util/sn-rule.d.ts +1 -1
- package/dist/src/nocode-base/src/hooks/useFormHook.d.ts +1 -1
- package/dist/src/nocode-base/src/hooks/useRenderData.d.ts +4 -2
- package/dist/src/nocode-base/src/hooks/useRenderPageFactory.d.ts +39 -4
- package/dist/src/nocode-base/src/hooks/useValidator.d.ts +6 -6
- package/dist/src/nocode-base/src/hooks/validation/admission.d.ts +19 -0
- package/dist/src/nocode-base/src/hooks/validation/attach.d.ts +24 -0
- package/dist/src/nocode-base/src/hooks/validation/createValidateFactory.d.ts +35 -0
- package/dist/src/nocode-base/src/hooks/validation/formRulesStore.d.ts +15 -0
- package/dist/src/nocode-base/src/hooks/validation/merge.d.ts +24 -0
- package/dist/src/nocode-base/src/hooks/validation/runValidation.d.ts +17 -0
- package/dist/src/nocode-base/src/hooks/validation/scheduler.d.ts +12 -0
- package/dist/src/nocode-base/src/hooks/validation/types.d.ts +44 -0
- package/dist/src/nocode-base/src/hooks/validation/useFormValidator.d.ts +39 -0
- package/dist/src/nocode-base/src/hooks/validation/utils.d.ts +24 -0
- package/dist/src/nocode-base/src/hooks/validation/waitForSettle.d.ts +17 -0
- package/dist/src/nocode-base/src/interface/render.d.ts +1 -1
- package/dist/src/nocode-base/src/types/common/base.d.ts +16 -2
- package/dist/src/nocode-base/src/types/fields/i-datepicker.d.ts +5 -1
- package/dist/src/nocode-base/src/types/fields/i-datetimepicker.d.ts +5 -1
- package/dist/src/nocode-base/src/types/fields/i-enum-select.d.ts +2 -0
- package/dist/src/nocode-base/src/types/fields/i-inputdouble.d.ts +5 -1
- package/dist/src/nocode-base/src/types/fields/i-inputnumber.d.ts +5 -1
- package/dist/src/nocode-base/src/types/fields/i-trace.d.ts +27 -1
- package/dist/src/nocode-base/src/types/render/mc-render.d.ts +3 -1
- package/dist/src/nocode-base/src/types/render/sub-table-render.d.ts +3 -1
- package/dist/src/nocode-base/src/types/widgets/i-paper.d.ts +2 -0
- package/dist/src/nocode-base/src/types/widgets/i-sub-table.d.ts +4 -0
- package/dist/src/nocode-web-render/src/hooks/userFormPrint.d.ts +2 -0
- package/dist/src/nocode-web-render/src/render/index.d.ts +2 -2
- package/dist/src/nocode-web-render/src/render/sub-table/common/scan-modal.vue.d.ts +3 -1
- package/dist/src/nocode-web-render/src/render/sub-table/common/sub-table-render.d.ts +3 -1
- package/dist/src/nocode-web-render/src/render/sub-table/material-consume/index.d.ts +1 -2
- package/dist/src/nocode-web-render/src/render/sub-table/material-consume/mc-web-render.d.ts +3 -1
- package/dist/src/online-form/src/components/version-diff/index/types.d.ts +2 -0
- package/dist/src/online-form/src/utils/field.enum.d.ts +3 -2
- package/dist/src/online-form/src/views/__cell_widgets__/common/keep-exception-highlight-editor/keep-exception-highlight-editor.vue.d.ts +10 -0
- package/dist/src/online-form/src/views/__cell_widgets__/common/regex-editor/common-regex-api.d.ts +11 -0
- package/dist/src/online-form/src/views/__cell_widgets__/common/regex-editor/editor.d.ts +8 -0
- package/dist/src/online-form/src/views/designer/hooks/useAllSpreadSheets.d.ts +28 -0
- package/dist/src/online-form/src/views/designer/hooks/useModelFields.d.ts +1 -1
- package/dist/src/online-form/src/views/designer/hooks/useSpreadSheet.d.ts +43 -2
- package/dist/src/{nocode-web-render/src/render/sub-table/material-consume/scan-modal.vue.d.ts → online-form/src/views/designer/modules/panel/comps/confirm-before-delete-config.vue.d.ts} +2 -4
- package/dist/src/online-form/src/views/designer/modules/panel/comps/quick-fill-config.vue.d.ts +8 -0
- package/dist/src/online-form/src/views/designer/modules/panel/comps/signature-config/field-tree-select.vue.d.ts +2 -2
- package/dist/src/online-form/src/views/designer/modules/panel/panel-data-init-config/common/add-builtin-param/add-builtin-param-select.vue.d.ts +2 -2
- package/dist/src/online-form/src/views/designer/modules/panel/panel-rule-config/form-field-tree-select.vue.d.ts +2 -2
- package/dist/src/online-form/src/views/designer/modules/panel/panel-rule-config/material-rdo-select.vue.d.ts +2 -2
- package/dist/src/online-form/src/views/designer/modules/sheet/sheet-cell.vue.d.ts +1 -0
- package/dist/src/online-form/src/views/designer/types/index.d.ts +4 -0
- package/dist/src/online-form/src/views/designer/utils/xlsx-parser.d.ts +3 -0
- package/dist/src/online-form/src/views/render/__components__/_common_/widget-component.vue.d.ts +3 -1
- package/dist/src/shared/components/DoubleInput/double-input.vue.d.ts +5 -0
- package/dist/src/shared/components/rdo-tree-select/rdo-tree-select.vue.d.ts +2 -2
- package/dist/src/shared/utils/host-api.d.ts +3 -11
- package/dist/{text-design-DjJS6aM4.js → text-design-BIFz5gw1.js} +3 -2
- package/dist/{text-design-490okDpw.js → text-design-C0dORvkP.js} +10 -6
- package/dist/{text-props-Dh4S3iN0.js → text-props-ClHI-4aM.js} +21 -252
- package/dist/{text-style-BGeNrOMv.js → text-style-DANM5fvy.js} +1 -1
- package/dist/{throttle-Cpk1LoGk-BWXeZXFZ.js → throttle-Cpk1LoGk-Da5HSLWc.js} +1 -1
- package/dist/{timediff-design-DEh9xNVa.js → timediff-design-BDCsQIal.js} +2 -1
- package/dist/{trace-design-Dk0irY70.js → trace-design-CKqq1WH_.js} +2 -2
- package/dist/{trace-props-DRBrPqIq.js → trace-props-BI24XFMc.js} +53 -16
- package/dist/{trace-style-6lXlaJ2o.js → trace-style-CX1f7oZH.js} +1 -1
- package/dist/{user-props-yasRJPzM.js → user-props-gF7KPnP8.js} +3 -2
- package/dist/{user-style-dkDUDf63.js → user-style-DIouAMWa.js} +1 -1
- package/dist/{value-editor.vue_vue_type_style_index_0_lang-8rhhfLv7.js → value-editor.vue_vue_type_style_index_0_lang-DHj-zNxm.js} +3 -2
- package/dist/{version-select-dvsx-Ifv.js → version-select-CL3QQGND.js} +2 -2
- package/dist/web-render/index.es.js +9 -9
- package/dist/{widget-barcode-BfzXe5MQ.js → widget-barcode-DZiCyrQW.js} +5 -4
- package/dist/{widget-diagonal-R5qdvCvE.js → widget-diagonal-D_Oz8te1.js} +3 -3
- package/dist/{widget-image-C0zAtiuf.js → widget-image-TL_SLOap.js} +5 -5
- package/dist/{widget-line-z4TTPDkL.js → widget-line-BQ-qcBUA.js} +3 -2
- package/dist/{widget-pagination-CeO9pmmu.js → widget-pagination-DciJE9qC.js} +6 -5
- package/dist/{widget-power-CP1DLxkZ.js → widget-power-B9KTIpwA.js} +3 -3
- package/dist/{widget-qrcode-Boz_t9l9.js → widget-qrcode-DRoj5rSy.js} +4 -3
- package/dist/{widget-rangelimit-B9kRG_Fa.js → widget-rangelimit-Ckgx3i4r.js} +3 -3
- package/dist/{widget-serialnumber-BBUxx4nB.js → widget-serialnumber-aUkR-0yC.js} +1 -1
- package/dist/{widget-text-qvLZssGe.js → widget-text-CJIT-hY3.js} +5 -5
- package/dist/{widget-timediff-BBmssjfJ.js → widget-timediff-x-RQMdNg.js} +3 -2
- package/package.json +1 -1
- package/dist/base-font-editor-BiSPxwVH.js +0 -83
- package/dist/cell-upload-JxFLM1bV.js +0 -25
- package/dist/date-format-editor-BZ89hVjL.js +0 -240
- package/dist/date-time-props-BWvuzNXX.js +0 -265
- package/dist/paper-widget-design-DKBVqvH3.js +0 -4
- package/dist/src/nocode-base/src/hooks/form-model/fetcher.d.ts +0 -40
- package/dist/src/nocode-base/src/interface/data.d.ts +0 -47
- package/dist/src/nocode-base/src/interface/util.d.ts +0 -108
- /package/dist/src/nocode-base/src/components/document-sub-table-action/{document-sub-table-action.vue.d.ts → dynamic-table-action.vue.d.ts} +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { computed,
|
|
2
|
-
import { cloneDeep, has, merge, defaults, pickBy,
|
|
3
|
-
import { e as ComponentTypeEnum, F as FIELD_TYPE, i as api,
|
|
4
|
-
import { u as useFormModel, w as watchDebounced } from "./mb-render-
|
|
1
|
+
import { computed, watch, toRaw, onUnmounted, markRaw, ref, toRef, reactive, inject, provide, defineComponent, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, renderSlot, createCommentVNode, createVNode, toDisplayString, isVNode, h, onBeforeMount, resolveComponent, createBlock, withCtx, Fragment, renderList, createTextVNode, onMounted } from "vue";
|
|
2
|
+
import { cloneDeep, has, isNil, merge, defaults, pickBy, mergeWith, omit, last, pick } from "lodash-es";
|
|
3
|
+
import { e as ComponentTypeEnum, F as FIELD_TYPE, i as api, aT as ButtonTypeEnum, v as FormTypeEnum, aO as safeParseArray, aq as RenderModeEnum, aQ as mergeByMultiKey, aS as BpmnSignatureTypeEnum, aP as BpmnNodeTypeEnum, ab as useWidgetStaticAttrs, by as assembleRules, bz as deleteFormRule, bA as setFormRule, aF as requestDisplayValidation, bB as isReferenceOptionActive, bC as validateAllFields, bD as runValidation, bE as stockCheck, am as getParseRuleInfo, an as getParseRuleValue, bF as materialCheck, ax as calcFillData, as as FormulaRuleFieldKeyEnum, bG as judgeUnique, g as SubTableType, ao as useCurrentPageFormState, R as Dependency_ENUM, Q as ASSIGNMENTSTRATEGY_ENUM, aM as uuid2, a3 as DeviceLink, G as useNamespace, _ as _export_sfc, aj as NCB_PROVIDE, b5 as buildFormChangeDisplayRows, aR as getRowId, bw as resolveRowFormChangeMark, bv as resolveFormChangeRowUi, bk as isAnnLocationSelected, bx as setSelectMobileTdId, bl as isFormChangeGhostRow, h as CellType, ad as setSelectAnnotationId, br as recordSubtableRowDelete, b8 as deleteSubtableRow, bs as relocateDeletedRowsToEnd, bH as FRONT_ROW_KEY, az as transformUtils, bj as insertSubtableRows, bq as recordSubtableRowAdd, u as useModal, bI as q, bh as getSubTableQuickFillInfo } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_94e9d614_lang-UooIxEeL.js";
|
|
4
|
+
import { u as useFormModel, w as watchDebounced } from "./mb-render-CsWNoQnS.js";
|
|
5
5
|
import dayjs from "dayjs";
|
|
6
|
+
import { Modal } from "ant-design-vue";
|
|
6
7
|
var MaterialConsumptionPatternEnum = /* @__PURE__ */ ((MaterialConsumptionPatternEnum2) => {
|
|
7
8
|
MaterialConsumptionPatternEnum2["RECORD"] = "record";
|
|
8
9
|
MaterialConsumptionPatternEnum2["BOM"] = "bom";
|
|
@@ -625,6 +626,254 @@ const useOnlineFormTransformField2Component = (fieldType) => {
|
|
|
625
626
|
}
|
|
626
627
|
}[fieldType];
|
|
627
628
|
};
|
|
629
|
+
const constantRequiredStyles = {
|
|
630
|
+
"--required-border-color": "rgb(255, 31, 31, 0.36)",
|
|
631
|
+
"--required-border-hover-color": "rgb(255, 31, 31, 0.86)",
|
|
632
|
+
"--required-background-color": "rgb(255, 31, 31, 0.04)"
|
|
633
|
+
};
|
|
634
|
+
const resetRequiredStyles = {
|
|
635
|
+
"--required-border-color": "#e9e9e9",
|
|
636
|
+
"--required-border-hover-color": "var(--ant-primary-color)",
|
|
637
|
+
"--required-background-color": "transparent"
|
|
638
|
+
};
|
|
639
|
+
const reliableVerticalTextStyles = {
|
|
640
|
+
"writing-mode": "horizontal-tb",
|
|
641
|
+
display: "inline-block",
|
|
642
|
+
width: "1em",
|
|
643
|
+
"line-height": "1.2",
|
|
644
|
+
"white-space": "normal",
|
|
645
|
+
"word-break": "break-all",
|
|
646
|
+
"letter-spacing": "0",
|
|
647
|
+
"text-align": "center"
|
|
648
|
+
};
|
|
649
|
+
const isVerticalLrText = (style) => {
|
|
650
|
+
const mode = style?.writingMode ?? style?.["writing-mode"];
|
|
651
|
+
return mode === "vertical-lr";
|
|
652
|
+
};
|
|
653
|
+
function useValidator(props) {
|
|
654
|
+
const widget = props.widget;
|
|
655
|
+
const {
|
|
656
|
+
showModelName,
|
|
657
|
+
showFieldName,
|
|
658
|
+
modelKey,
|
|
659
|
+
fieldType,
|
|
660
|
+
targetFieldId,
|
|
661
|
+
isFieldModel,
|
|
662
|
+
showRequired,
|
|
663
|
+
showDisabled,
|
|
664
|
+
showDisplayStatus,
|
|
665
|
+
dataRelationShip
|
|
666
|
+
} = useWidgetStaticAttrs(widget);
|
|
667
|
+
const sizeStyles = {
|
|
668
|
+
"--size": `${widget.props.size ?? 12}px`,
|
|
669
|
+
"--cmp-width": `${widget.props.cmpWidth ?? 0}px`,
|
|
670
|
+
"--cmp-height": `${widget.props.cmpHeight ?? 0}px`
|
|
671
|
+
};
|
|
672
|
+
const skipFormItem = computed(() => {
|
|
673
|
+
if (widget.component === ComponentTypeEnum.DynValue) {
|
|
674
|
+
return true;
|
|
675
|
+
}
|
|
676
|
+
return !widget.formItem;
|
|
677
|
+
});
|
|
678
|
+
const blocked = computed(() => {
|
|
679
|
+
return !!showDisabled.value || ["readonly-text", "readonly-component"].includes(showDisplayStatus.value);
|
|
680
|
+
});
|
|
681
|
+
const rules = computed(() => {
|
|
682
|
+
if (skipFormItem.value || !targetFieldId) {
|
|
683
|
+
return [];
|
|
684
|
+
}
|
|
685
|
+
return assembleRules({
|
|
686
|
+
showRequired: !!showRequired.value,
|
|
687
|
+
fieldType,
|
|
688
|
+
validatorInfo: {
|
|
689
|
+
showModelName,
|
|
690
|
+
showModelKey: modelKey,
|
|
691
|
+
showFieldName,
|
|
692
|
+
subFieldKey: widget.props.subFieldKey,
|
|
693
|
+
targetFieldId
|
|
694
|
+
},
|
|
695
|
+
props: widget.props
|
|
696
|
+
});
|
|
697
|
+
});
|
|
698
|
+
const getRules = (ruleList, options) => ruleList.map((item) => ({
|
|
699
|
+
...item,
|
|
700
|
+
...options
|
|
701
|
+
}));
|
|
702
|
+
const resolveSubtableColIndex = () => {
|
|
703
|
+
if (!isNil(props.childSubTableDataIndex)) {
|
|
704
|
+
return props.childSubTableDataIndex;
|
|
705
|
+
}
|
|
706
|
+
if (targetFieldId === "value_") {
|
|
707
|
+
if (!isNil(props.realColIndex)) return props.realColIndex;
|
|
708
|
+
if (!isNil(props.realRowIndex)) return 0;
|
|
709
|
+
}
|
|
710
|
+
return void 0;
|
|
711
|
+
};
|
|
712
|
+
const resolveAttachMeta = () => {
|
|
713
|
+
const belongFieldId = props.referenceInfo?.belongFieldId;
|
|
714
|
+
const optionValue = props.referenceInfo?.optionValue;
|
|
715
|
+
if (!belongFieldId || isNil(optionValue)) return null;
|
|
716
|
+
return {
|
|
717
|
+
belongFieldId,
|
|
718
|
+
optionValue,
|
|
719
|
+
multiple: props.referenceInfo?.multiple,
|
|
720
|
+
subtableFieldId: props.subtableFieldId,
|
|
721
|
+
realRowIndex: props.realRowIndex,
|
|
722
|
+
childSubTableDataIndex: resolveSubtableColIndex()
|
|
723
|
+
};
|
|
724
|
+
};
|
|
725
|
+
const resolveRuleEntry = () => {
|
|
726
|
+
const attach = resolveAttachMeta();
|
|
727
|
+
const attachOpts = attach ? {
|
|
728
|
+
_belongFieldId: attach.belongFieldId,
|
|
729
|
+
_optionValue: attach.optionValue,
|
|
730
|
+
_multiple: attach.multiple
|
|
731
|
+
} : {};
|
|
732
|
+
if (props.subtableFieldId) {
|
|
733
|
+
if (!isNil(props.realRowIndex)) {
|
|
734
|
+
const colIdx = resolveSubtableColIndex();
|
|
735
|
+
if (colIdx !== void 0) {
|
|
736
|
+
return {
|
|
737
|
+
key: `${props.subtableFieldId}_${props.realRowIndex}_${targetFieldId}_${colIdx}`,
|
|
738
|
+
options: {
|
|
739
|
+
_subtableFieldId: props.subtableFieldId,
|
|
740
|
+
_realRowIndex: props.realRowIndex,
|
|
741
|
+
_targetFieldId: targetFieldId,
|
|
742
|
+
_childSubTableDataIndex: colIdx,
|
|
743
|
+
...attachOpts
|
|
744
|
+
},
|
|
745
|
+
attach
|
|
746
|
+
};
|
|
747
|
+
}
|
|
748
|
+
return {
|
|
749
|
+
key: `${props.subtableFieldId}_${props.realRowIndex}_${targetFieldId}`,
|
|
750
|
+
options: {
|
|
751
|
+
_subtableFieldId: props.subtableFieldId,
|
|
752
|
+
_realRowIndex: props.realRowIndex,
|
|
753
|
+
_targetFieldId: targetFieldId,
|
|
754
|
+
...attachOpts
|
|
755
|
+
},
|
|
756
|
+
attach
|
|
757
|
+
};
|
|
758
|
+
}
|
|
759
|
+
return null;
|
|
760
|
+
}
|
|
761
|
+
return {
|
|
762
|
+
key: targetFieldId,
|
|
763
|
+
options: {
|
|
764
|
+
_targetFieldId: targetFieldId,
|
|
765
|
+
...attachOpts
|
|
766
|
+
},
|
|
767
|
+
attach
|
|
768
|
+
};
|
|
769
|
+
};
|
|
770
|
+
const instanceId = /* @__PURE__ */ Symbol("validatorInstance");
|
|
771
|
+
let prevRuleKey;
|
|
772
|
+
let prevRuleSignature;
|
|
773
|
+
watch(
|
|
774
|
+
() => [
|
|
775
|
+
rules.value,
|
|
776
|
+
blocked.value,
|
|
777
|
+
widget.props?.keepExceptionHighlight,
|
|
778
|
+
props.realRowIndex,
|
|
779
|
+
props.childSubTableDataIndex,
|
|
780
|
+
props.referenceInfo?.belongFieldId,
|
|
781
|
+
props.referenceInfo?.optionValue,
|
|
782
|
+
props.referenceInfo?.multiple
|
|
783
|
+
],
|
|
784
|
+
() => {
|
|
785
|
+
if (!targetFieldId || !rules.value) return;
|
|
786
|
+
const entry = resolveRuleEntry();
|
|
787
|
+
if (prevRuleKey && (!entry || entry.key !== prevRuleKey)) {
|
|
788
|
+
deleteFormRule(prevRuleKey, instanceId);
|
|
789
|
+
prevRuleSignature = void 0;
|
|
790
|
+
}
|
|
791
|
+
if (!entry) {
|
|
792
|
+
prevRuleKey = void 0;
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
if (rules.value.length === 0) {
|
|
796
|
+
deleteFormRule(entry.key, instanceId);
|
|
797
|
+
prevRuleKey = void 0;
|
|
798
|
+
prevRuleSignature = void 0;
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
const signature = JSON.stringify({
|
|
802
|
+
key: entry.key,
|
|
803
|
+
blocked: blocked.value,
|
|
804
|
+
keep: widget.props?.keepExceptionHighlight,
|
|
805
|
+
attach: entry.attach,
|
|
806
|
+
// 规则条数 / trigger 变化才重写,避免 deep 无关抖动
|
|
807
|
+
ruleFingerprints: rules.value.map((r) => [r.trigger, r.message])
|
|
808
|
+
});
|
|
809
|
+
if (signature === prevRuleSignature) {
|
|
810
|
+
return;
|
|
811
|
+
}
|
|
812
|
+
setFormRule(
|
|
813
|
+
entry.key,
|
|
814
|
+
getRules(toRaw(rules.value), entry.options),
|
|
815
|
+
{
|
|
816
|
+
blocked: blocked.value,
|
|
817
|
+
keepExceptionHighlight: typeof widget.props?.keepExceptionHighlight === "boolean" ? widget.props.keepExceptionHighlight : void 0,
|
|
818
|
+
attach: entry.attach ?? null
|
|
819
|
+
},
|
|
820
|
+
instanceId
|
|
821
|
+
);
|
|
822
|
+
prevRuleKey = entry.key;
|
|
823
|
+
prevRuleSignature = signature;
|
|
824
|
+
const uniqueId = dataRelationShip?.uniqueId;
|
|
825
|
+
if (uniqueId) {
|
|
826
|
+
requestDisplayValidation(uniqueId);
|
|
827
|
+
}
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
immediate: true
|
|
831
|
+
}
|
|
832
|
+
);
|
|
833
|
+
onUnmounted(() => {
|
|
834
|
+
if (prevRuleKey) {
|
|
835
|
+
deleteFormRule(prevRuleKey, instanceId);
|
|
836
|
+
prevRuleKey = void 0;
|
|
837
|
+
}
|
|
838
|
+
});
|
|
839
|
+
const referenceActive = computed(
|
|
840
|
+
() => isReferenceOptionActive(props.referenceInfo, props.formData)
|
|
841
|
+
);
|
|
842
|
+
const widgetStyles = computed(() => {
|
|
843
|
+
if (widget.component === ComponentTypeEnum.DynValue) return {};
|
|
844
|
+
const requiredActive = showRequired.value && !blocked.value && referenceActive.value;
|
|
845
|
+
const isAttachField = !!props.referenceInfo?.belongFieldId;
|
|
846
|
+
return {
|
|
847
|
+
...sizeStyles,
|
|
848
|
+
...requiredActive ? constantRequiredStyles : isAttachField ? resetRequiredStyles : {},
|
|
849
|
+
...isVerticalLrText(widget.style) ? reliableVerticalTextStyles : {}
|
|
850
|
+
};
|
|
851
|
+
});
|
|
852
|
+
return {
|
|
853
|
+
widgetStyles,
|
|
854
|
+
targetFieldId,
|
|
855
|
+
isFieldModel
|
|
856
|
+
};
|
|
857
|
+
}
|
|
858
|
+
const validate = async (formData, paper, uniqueId) => {
|
|
859
|
+
if (uniqueId) {
|
|
860
|
+
const res2 = await validateAllFields(uniqueId);
|
|
861
|
+
if (res2) {
|
|
862
|
+
return {
|
|
863
|
+
isValid: res2.isValid,
|
|
864
|
+
fields: res2.fields,
|
|
865
|
+
uiApplied: true
|
|
866
|
+
};
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
const res = await runValidation(formData, paper, { mode: "all" });
|
|
870
|
+
if (!res) return;
|
|
871
|
+
return {
|
|
872
|
+
isValid: res.isValid,
|
|
873
|
+
fields: res.fields,
|
|
874
|
+
uiApplied: false
|
|
875
|
+
};
|
|
876
|
+
};
|
|
628
877
|
class BomEntryValidator {
|
|
629
878
|
constructor(bomEntry, enableSequenceLoading, materialNoNum, historyData, mainMaterialNo, mcPattern) {
|
|
630
879
|
this.bomEntry = bomEntry;
|
|
@@ -1422,8 +1671,11 @@ class MaterialConsumeTableController {
|
|
|
1422
1671
|
this.isScanOpen = true;
|
|
1423
1672
|
await MaterialConsumeTableController.render.openScanModal({
|
|
1424
1673
|
title,
|
|
1425
|
-
onScan: async (str) => {
|
|
1674
|
+
onScan: async ({ str }) => {
|
|
1426
1675
|
console.log("onScan", str);
|
|
1676
|
+
if (!str) {
|
|
1677
|
+
return;
|
|
1678
|
+
}
|
|
1427
1679
|
await this.parseScanStr(str);
|
|
1428
1680
|
}
|
|
1429
1681
|
});
|
|
@@ -2240,142 +2492,6 @@ class SubTableCore {
|
|
|
2240
2492
|
console.log(this.ctx.widget.props.tableTitle, "处理表单按钮点击事件", params);
|
|
2241
2493
|
}
|
|
2242
2494
|
}
|
|
2243
|
-
function useFormulaExpWatcher(options) {
|
|
2244
|
-
const {
|
|
2245
|
-
props,
|
|
2246
|
-
currentPageFormState,
|
|
2247
|
-
needMinValidateCalc,
|
|
2248
|
-
needMaxValidateCalc,
|
|
2249
|
-
onCalculateFormula,
|
|
2250
|
-
onMinComputed,
|
|
2251
|
-
onMaxComputed,
|
|
2252
|
-
debounceMs = 200,
|
|
2253
|
-
returnType = "string"
|
|
2254
|
-
} = options;
|
|
2255
|
-
let calcReqId = 0;
|
|
2256
|
-
async function computeMinMaxOnce() {
|
|
2257
|
-
const myId = ++calcReqId;
|
|
2258
|
-
const getValue = (v) => {
|
|
2259
|
-
if (returnType === "number") {
|
|
2260
|
-
const parsed = v == null ? null : parseFloat(String(v));
|
|
2261
|
-
return Number.isFinite(parsed) ? parsed : null;
|
|
2262
|
-
}
|
|
2263
|
-
return v;
|
|
2264
|
-
};
|
|
2265
|
-
if (needMinValidateCalc) {
|
|
2266
|
-
try {
|
|
2267
|
-
const v = await onCalculateFormula("min");
|
|
2268
|
-
if (myId !== calcReqId) return;
|
|
2269
|
-
onMinComputed?.(getValue(v));
|
|
2270
|
-
} catch (e) {
|
|
2271
|
-
}
|
|
2272
|
-
}
|
|
2273
|
-
if (needMaxValidateCalc) {
|
|
2274
|
-
try {
|
|
2275
|
-
const v = await onCalculateFormula("max");
|
|
2276
|
-
if (myId !== calcReqId) return;
|
|
2277
|
-
onMaxComputed?.(getValue(v));
|
|
2278
|
-
} catch (e) {
|
|
2279
|
-
}
|
|
2280
|
-
}
|
|
2281
|
-
}
|
|
2282
|
-
const debouncedCompute = debounce(computeMinMaxOnce, debounceMs);
|
|
2283
|
-
const topStops = [];
|
|
2284
|
-
const hashRowStops = /* @__PURE__ */ new Map();
|
|
2285
|
-
const clearAllStops = () => {
|
|
2286
|
-
while (topStops.length) {
|
|
2287
|
-
const s = topStops.shift();
|
|
2288
|
-
try {
|
|
2289
|
-
s && s();
|
|
2290
|
-
} catch (e) {
|
|
2291
|
-
}
|
|
2292
|
-
}
|
|
2293
|
-
for (const [, rowMap] of hashRowStops) {
|
|
2294
|
-
for (const stop2 of rowMap.values()) {
|
|
2295
|
-
try {
|
|
2296
|
-
stop2 && stop2();
|
|
2297
|
-
} catch (e) {
|
|
2298
|
-
}
|
|
2299
|
-
}
|
|
2300
|
-
}
|
|
2301
|
-
hashRowStops.clear();
|
|
2302
|
-
debouncedCompute.cancel?.();
|
|
2303
|
-
calcReqId++;
|
|
2304
|
-
};
|
|
2305
|
-
const setupWatchesFromMerged = (parseInfos = []) => {
|
|
2306
|
-
if (!needMinValidateCalc && !needMaxValidateCalc) return;
|
|
2307
|
-
if (!Array.isArray(parseInfos) || parseInfos.length === 0) {
|
|
2308
|
-
debouncedCompute();
|
|
2309
|
-
return;
|
|
2310
|
-
}
|
|
2311
|
-
for (const p of parseInfos) {
|
|
2312
|
-
const { type, processed, hashValue } = p;
|
|
2313
|
-
if (type === "plain") {
|
|
2314
|
-
const stop2 = watch(
|
|
2315
|
-
() => currentPageFormState.value?.[processed],
|
|
2316
|
-
() => {
|
|
2317
|
-
console.log("plain");
|
|
2318
|
-
debouncedCompute();
|
|
2319
|
-
},
|
|
2320
|
-
{ immediate: true }
|
|
2321
|
-
);
|
|
2322
|
-
topStops.push(stop2);
|
|
2323
|
-
} else if (type === "underscore") {
|
|
2324
|
-
const stop2 = watch(
|
|
2325
|
-
() => props.formData?.[processed],
|
|
2326
|
-
() => {
|
|
2327
|
-
console.log("underscore");
|
|
2328
|
-
debouncedCompute();
|
|
2329
|
-
},
|
|
2330
|
-
{ immediate: true }
|
|
2331
|
-
);
|
|
2332
|
-
topStops.push(stop2);
|
|
2333
|
-
} else if (type === "hash") {
|
|
2334
|
-
if (!hashRowStops.has(hashValue)) hashRowStops.set(hashValue, /* @__PURE__ */ new Map());
|
|
2335
|
-
const rowMap = hashRowStops.get(hashValue);
|
|
2336
|
-
const stopLen = watch(
|
|
2337
|
-
() => currentPageFormState.value?.[hashValue]?.length ?? 0,
|
|
2338
|
-
() => {
|
|
2339
|
-
const arr = currentPageFormState.value?.[hashValue];
|
|
2340
|
-
for (const row of arr) {
|
|
2341
|
-
const rid = `${getRowId(row)}_${processed}`;
|
|
2342
|
-
if (!rowMap.has(rid)) {
|
|
2343
|
-
const stopPerRow = watch(
|
|
2344
|
-
() => [row?.[processed], row?.deleted_],
|
|
2345
|
-
() => {
|
|
2346
|
-
debouncedCompute();
|
|
2347
|
-
},
|
|
2348
|
-
{ immediate: true }
|
|
2349
|
-
);
|
|
2350
|
-
rowMap.set(rid, stopPerRow);
|
|
2351
|
-
}
|
|
2352
|
-
}
|
|
2353
|
-
const existingIds = new Set(arr.map(getRowId));
|
|
2354
|
-
for (const r of Array.from(rowMap.keys())) {
|
|
2355
|
-
if (!existingIds.has(r)) {
|
|
2356
|
-
const rid = `${r}_${processed}`;
|
|
2357
|
-
const s = rowMap.get(rid);
|
|
2358
|
-
s && s();
|
|
2359
|
-
rowMap.delete(rid);
|
|
2360
|
-
}
|
|
2361
|
-
}
|
|
2362
|
-
debouncedCompute();
|
|
2363
|
-
},
|
|
2364
|
-
{ immediate: true }
|
|
2365
|
-
);
|
|
2366
|
-
topStops.push(stopLen);
|
|
2367
|
-
}
|
|
2368
|
-
}
|
|
2369
|
-
debouncedCompute();
|
|
2370
|
-
};
|
|
2371
|
-
const stop = () => {
|
|
2372
|
-
clearAllStops();
|
|
2373
|
-
};
|
|
2374
|
-
return {
|
|
2375
|
-
setupWatchesFromMerged,
|
|
2376
|
-
stop
|
|
2377
|
-
};
|
|
2378
|
-
}
|
|
2379
2495
|
const identify = (...args) => window.NocodeAdapter.utils?.formulaIdentify?.(...args) ?? [];
|
|
2380
2496
|
const calculate = (...args) => window.NocodeAdapter.utils?.formulaCalculate?.(...args);
|
|
2381
2497
|
function useDependency(widget, props) {
|
|
@@ -2851,8 +2967,12 @@ function useFormTmplConfig() {
|
|
|
2851
2967
|
injectController
|
|
2852
2968
|
};
|
|
2853
2969
|
}
|
|
2854
|
-
const _hoisted_1$
|
|
2855
|
-
const
|
|
2970
|
+
const _hoisted_1$6 = ["data-merge", "data-fill-direction"];
|
|
2971
|
+
const _hoisted_2$1 = {
|
|
2972
|
+
key: 0,
|
|
2973
|
+
class: "absolute z-9 top-0 right-0 w-0 h-0"
|
|
2974
|
+
};
|
|
2975
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
2856
2976
|
__name: "border-td",
|
|
2857
2977
|
props: {
|
|
2858
2978
|
border: {},
|
|
@@ -2914,25 +3034,28 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
2914
3034
|
class: normalizeClass([unref(ns).b("content")])
|
|
2915
3035
|
}, [
|
|
2916
3036
|
renderSlot(_ctx.$slots, "default", {}, void 0, true)
|
|
2917
|
-
], 2)
|
|
2918
|
-
|
|
3037
|
+
], 2),
|
|
3038
|
+
_ctx.$slots.tableAction ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
|
|
3039
|
+
renderSlot(_ctx.$slots, "tableAction", {}, void 0, true)
|
|
3040
|
+
])) : createCommentVNode("", true)
|
|
3041
|
+
], 16, _hoisted_1$6);
|
|
2919
3042
|
};
|
|
2920
3043
|
}
|
|
2921
3044
|
});
|
|
2922
|
-
const BorderTD = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
2923
|
-
const _sfc_main$
|
|
2924
|
-
const _hoisted_1$
|
|
3045
|
+
const BorderTD = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-913cb126"]]);
|
|
3046
|
+
const _sfc_main$7 = {};
|
|
3047
|
+
const _hoisted_1$5 = { class: "nocode-loading" };
|
|
2925
3048
|
function _sfc_render(_ctx, _cache) {
|
|
2926
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
3049
|
+
return openBlock(), createElementBlock("div", _hoisted_1$5, [..._cache[0] || (_cache[0] = [
|
|
2927
3050
|
createElementVNode("div", { class: "nocode-shape shape-1" }, null, -1),
|
|
2928
3051
|
createElementVNode("div", { class: "nocode-shape shape-2" }, null, -1),
|
|
2929
3052
|
createElementVNode("div", { class: "nocode-shape shape-3" }, null, -1),
|
|
2930
3053
|
createElementVNode("div", { class: "nocode-shape shape-4" }, null, -1)
|
|
2931
3054
|
])]);
|
|
2932
3055
|
}
|
|
2933
|
-
const DocumentLoading = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3056
|
+
const DocumentLoading = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render], ["__scopeId", "data-v-d8b64b7b"]]);
|
|
2934
3057
|
const _imports_0 = "data:image/png;base64,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";
|
|
2935
|
-
const _hoisted_1$
|
|
3058
|
+
const _hoisted_1$4 = { class: "nocode-document-layout-wrapper" };
|
|
2936
3059
|
const _hoisted_2 = {
|
|
2937
3060
|
key: 0,
|
|
2938
3061
|
class: "nocode-common-loading-warp"
|
|
@@ -2946,7 +3069,7 @@ const _hoisted_4 = {
|
|
|
2946
3069
|
class: "nocode-common-loading-warp"
|
|
2947
3070
|
};
|
|
2948
3071
|
const _hoisted_5 = { class: "w200px text-center color-[#666]" };
|
|
2949
|
-
const _sfc_main$
|
|
3072
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
2950
3073
|
__name: "document-layout",
|
|
2951
3074
|
props: {
|
|
2952
3075
|
loading: { type: Boolean },
|
|
@@ -2954,7 +3077,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
2954
3077
|
},
|
|
2955
3078
|
setup(__props) {
|
|
2956
3079
|
return (_ctx, _cache) => {
|
|
2957
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
3080
|
+
return openBlock(), createElementBlock("div", _hoisted_1$4, [
|
|
2958
3081
|
__props.loading ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
2959
3082
|
createVNode(DocumentLoading)
|
|
2960
3083
|
])) : __props.hasData ? (openBlock(), createElementBlock("div", _hoisted_3, [
|
|
@@ -2973,6 +3096,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
2973
3096
|
};
|
|
2974
3097
|
}
|
|
2975
3098
|
});
|
|
3099
|
+
function _isSlot(s) {
|
|
3100
|
+
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
|
|
3101
|
+
}
|
|
2976
3102
|
const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
2977
3103
|
name: "NocodeDocumentSubTable",
|
|
2978
3104
|
props: {
|
|
@@ -3014,8 +3140,6 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3014
3140
|
}
|
|
3015
3141
|
},
|
|
3016
3142
|
setup(props, {
|
|
3017
|
-
emit,
|
|
3018
|
-
expose,
|
|
3019
3143
|
slots
|
|
3020
3144
|
}) {
|
|
3021
3145
|
const defaultDataMap = inject(NCB_PROVIDE.DEFAULT_FIELD_DATA);
|
|
@@ -3034,6 +3158,8 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3034
3158
|
isRowSubTable2d,
|
|
3035
3159
|
childInitRowLen,
|
|
3036
3160
|
quickFill,
|
|
3161
|
+
confirmBeforeDelete,
|
|
3162
|
+
confirmBeforeDeleteTip,
|
|
3037
3163
|
subModelType
|
|
3038
3164
|
} = reactive(props.widget.props);
|
|
3039
3165
|
const {
|
|
@@ -3059,19 +3185,32 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3059
3185
|
});
|
|
3060
3186
|
const dataInfo = computed(() => {
|
|
3061
3187
|
const visibleToRealIndexMap = {};
|
|
3188
|
+
const displayToLiveRowIndexMap = {};
|
|
3062
3189
|
const filterValue = [];
|
|
3063
|
-
|
|
3190
|
+
const annRowDetails = dataRelationShip?.annRowDetails;
|
|
3191
|
+
const showRowAnn = !!annRowDetails?.length;
|
|
3192
|
+
const sourceRows = showRowAnn ? buildFormChangeDisplayRows(field, modelValue.value, annRowDetails) : modelValue.value;
|
|
3193
|
+
let liveRowCounter = -1;
|
|
3194
|
+
sourceRows.forEach((item, realIndex) => {
|
|
3195
|
+
if (!showRowAnn && item.deleted_) return;
|
|
3196
|
+
const visibleIndex = filterValue.length;
|
|
3197
|
+
visibleToRealIndexMap[visibleIndex] = realIndex;
|
|
3064
3198
|
if (!item.deleted_) {
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3199
|
+
liveRowCounter += 1;
|
|
3200
|
+
displayToLiveRowIndexMap[visibleIndex] = liveRowCounter;
|
|
3201
|
+
} else {
|
|
3202
|
+
displayToLiveRowIndexMap[visibleIndex] = -1;
|
|
3068
3203
|
}
|
|
3204
|
+
filterValue.push(item);
|
|
3069
3205
|
});
|
|
3206
|
+
const tableData = showRowAnn && !(props.start > 0) ? filterValue : filterValue.slice(props.start, props.end);
|
|
3070
3207
|
return {
|
|
3071
|
-
tableData
|
|
3072
|
-
hasSubData: filterValue.length > 1,
|
|
3073
|
-
isEndRow: props.end === filterValue.length,
|
|
3074
|
-
visibleToRealIndexMap
|
|
3208
|
+
tableData,
|
|
3209
|
+
hasSubData: filterValue.filter((d) => !d.deleted_).length > 1,
|
|
3210
|
+
isEndRow: showRowAnn ? true : props.end === filterValue.length,
|
|
3211
|
+
visibleToRealIndexMap,
|
|
3212
|
+
displayToLiveRowIndexMap,
|
|
3213
|
+
showRowAnn
|
|
3075
3214
|
};
|
|
3076
3215
|
});
|
|
3077
3216
|
const currentFieldDefaultData = computed(() => {
|
|
@@ -3081,16 +3220,14 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3081
3220
|
if (props.isMobile) {
|
|
3082
3221
|
return false;
|
|
3083
3222
|
}
|
|
3084
|
-
if (dataRelationShip?.formChangeStatus) {
|
|
3085
|
-
return false;
|
|
3086
|
-
}
|
|
3087
3223
|
return showDisplayStatus.value === "edit-component";
|
|
3088
3224
|
});
|
|
3089
|
-
computed(() => showAction.value && quickFill);
|
|
3090
3225
|
const handleDeleteRow = (rowData, dataIdx) => {
|
|
3226
|
+
recordSubtableRowDelete(dataRelationShip, field, rowData);
|
|
3091
3227
|
deleteSubtableRow(field, props.start + dataIdx);
|
|
3092
|
-
if (rowData.id_ || rowData.group_ && rowData._2DTABLE_
|
|
3228
|
+
if (rowData.id_ || rowData.group_ && rowData._2DTABLE_?.some((item) => item.id_)) {
|
|
3093
3229
|
rowData.deleted_ = true;
|
|
3230
|
+
modelValue.value = relocateDeletedRowsToEnd(modelValue.value);
|
|
3094
3231
|
} else {
|
|
3095
3232
|
rowData.tempDeleted = true;
|
|
3096
3233
|
modelValue.value = modelValue.value.filter((d) => !d.tempDeleted);
|
|
@@ -3106,7 +3243,7 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3106
3243
|
rowData,
|
|
3107
3244
|
quickFillDatas
|
|
3108
3245
|
}) => {
|
|
3109
|
-
const newRowsData = actionType === "copyRow" ? [cloneDeep(omit(rowData, "id_"))] : Array.from({
|
|
3246
|
+
const newRowsData = actionType === "copyRow" ? [cloneDeep(omit(rowData, ["id_", FRONT_ROW_KEY]))] : Array.from({
|
|
3110
3247
|
length: rowNum
|
|
3111
3248
|
}, (_, index2) => transformUtils.addSubTableRowItem({
|
|
3112
3249
|
defaultData: currentFieldDefaultData.value,
|
|
@@ -3127,17 +3264,22 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3127
3264
|
insertIndex = realIndex + 1;
|
|
3128
3265
|
break;
|
|
3129
3266
|
case "last":
|
|
3130
|
-
insertIndex = modelValue.value.
|
|
3267
|
+
insertIndex = modelValue.value.reduce((last2, row, i) => !row?.deleted_ ? i : last2, -1) + 1;
|
|
3131
3268
|
break;
|
|
3132
3269
|
}
|
|
3133
3270
|
if (actionType === "currentRow") {
|
|
3134
3271
|
const firstData = newRowsData.shift();
|
|
3135
|
-
merge(rowData, firstData);
|
|
3272
|
+
merge(rowData, omit(firstData, ["id_", FRONT_ROW_KEY]));
|
|
3273
|
+
}
|
|
3274
|
+
if (newRowsData.length > 0) {
|
|
3275
|
+
insertSubtableRows(field, insertIndex, newRowsData.length);
|
|
3276
|
+
modelValue.value.splice(insertIndex, 0, ...newRowsData);
|
|
3277
|
+
modelValue.value = relocateDeletedRowsToEnd(modelValue.value);
|
|
3278
|
+
recordSubtableRowAdd(dataRelationShip, field, newRowsData);
|
|
3136
3279
|
}
|
|
3137
|
-
modelValue.value.splice(insertIndex, 0, ...newRowsData);
|
|
3138
3280
|
updateCalcCallback?.(dataRelationShip?.uniqueId);
|
|
3139
3281
|
};
|
|
3140
|
-
const handleDefaultClick = (
|
|
3282
|
+
const handleDefaultClick = () => {
|
|
3141
3283
|
const {
|
|
3142
3284
|
fieldId
|
|
3143
3285
|
} = props.subInfo;
|
|
@@ -3203,7 +3345,23 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3203
3345
|
});
|
|
3204
3346
|
break;
|
|
3205
3347
|
case "deleteRowCurrent":
|
|
3206
|
-
|
|
3348
|
+
if (confirmBeforeDelete) {
|
|
3349
|
+
const content = confirmBeforeDeleteTip || $t("sys.confirmExecution");
|
|
3350
|
+
Modal.confirm({
|
|
3351
|
+
width: 316,
|
|
3352
|
+
centered: true,
|
|
3353
|
+
class: "confirm-before-delete-modal",
|
|
3354
|
+
icon: h("i", {
|
|
3355
|
+
class: "iconfont icon-jinggao"
|
|
3356
|
+
}),
|
|
3357
|
+
content,
|
|
3358
|
+
onOk() {
|
|
3359
|
+
handleDeleteRow(rowData, dataIdx);
|
|
3360
|
+
}
|
|
3361
|
+
});
|
|
3362
|
+
} else {
|
|
3363
|
+
handleDeleteRow(rowData, dataIdx);
|
|
3364
|
+
}
|
|
3207
3365
|
break;
|
|
3208
3366
|
case "default":
|
|
3209
3367
|
handleDefaultClick();
|
|
@@ -3220,16 +3378,68 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3220
3378
|
showDelBtn,
|
|
3221
3379
|
showActionMenu,
|
|
3222
3380
|
dataIdx,
|
|
3223
|
-
dynHeight
|
|
3381
|
+
dynHeight,
|
|
3382
|
+
showRowWatermark,
|
|
3383
|
+
rowGroupKey
|
|
3224
3384
|
}) => {
|
|
3225
3385
|
const menus = subTableCore?.calcSubTableActionMenu({
|
|
3226
3386
|
rowData,
|
|
3227
3387
|
showDelBtn
|
|
3228
3388
|
});
|
|
3389
|
+
const annRowDetails = dataRelationShip?.annRowDetails;
|
|
3390
|
+
const rowMark = dataIdx !== -1 && annRowDetails?.length ? resolveRowFormChangeMark(field, rowData, annRowDetails) : null;
|
|
3391
|
+
const rowUi = resolveFormChangeRowUi(rowData, rowMark);
|
|
3392
|
+
const isRowSelected = isAnnLocationSelected(dataRelationShip?.annSelectId, rowMark?.cellLocation);
|
|
3393
|
+
const trClass = [rowUi.trClass, isRowSelected ? "form-change-row-selected" : ""].filter(Boolean).join(" ");
|
|
3394
|
+
const handleRowAnnClick = (e) => {
|
|
3395
|
+
if (!rowMark) return;
|
|
3396
|
+
if (e.target?.closest?.(".sub-table-action-bar")) return;
|
|
3397
|
+
setSelectAnnotationId(rowMark.cellLocation, dataRelationShip);
|
|
3398
|
+
};
|
|
3399
|
+
const wmHostTdId = rowMark && showRowWatermark ? trData.nextIds.find((tdId) => {
|
|
3400
|
+
let tdInfo = props.widgetCenter[tdId];
|
|
3401
|
+
if (subTableCore) {
|
|
3402
|
+
tdInfo = subTableCore.calcNewTdInfo({
|
|
3403
|
+
oldTdInfo: tdInfo,
|
|
3404
|
+
rowData
|
|
3405
|
+
});
|
|
3406
|
+
}
|
|
3407
|
+
const mergeInfo = props.subInfo.mergeBlock?.[tdId];
|
|
3408
|
+
if (mergeInfo) return true;
|
|
3409
|
+
if (tdInfo.cellHidden) return false;
|
|
3410
|
+
return !!tdInfo.cellValueType;
|
|
3411
|
+
}) : null;
|
|
3412
|
+
const layoutRowWatermark = (el) => {
|
|
3413
|
+
if (!(el instanceof HTMLElement) || !rowGroupKey) return;
|
|
3414
|
+
requestAnimationFrame(() => {
|
|
3415
|
+
const table = el.closest("table");
|
|
3416
|
+
const host = el.offsetParent;
|
|
3417
|
+
if (!table || !host) return;
|
|
3418
|
+
const group = Array.from(table.querySelectorAll("tr[data-fc-row-key]")).filter((tr) => tr.getAttribute("data-fc-row-key") === rowGroupKey);
|
|
3419
|
+
if (!group.length) return;
|
|
3420
|
+
const firstRect = group[0].getBoundingClientRect();
|
|
3421
|
+
const lastRect = group[group.length - 1].getBoundingClientRect();
|
|
3422
|
+
const hostRect = host.getBoundingClientRect();
|
|
3423
|
+
el.style.left = `${firstRect.left - hostRect.left}px`;
|
|
3424
|
+
el.style.top = `${firstRect.top - hostRect.top}px`;
|
|
3425
|
+
el.style.width = `${firstRect.width}px`;
|
|
3426
|
+
el.style.height = `${Math.max(lastRect.bottom - firstRect.top, firstRect.height)}px`;
|
|
3427
|
+
});
|
|
3428
|
+
};
|
|
3429
|
+
const rowWatermark = rowMark && wmHostTdId && rowUi.wmKind ? createVNode("span", {
|
|
3430
|
+
"class": ["form-change-row-wm", rowUi.wmClass],
|
|
3431
|
+
"data-row-key": rowGroupKey,
|
|
3432
|
+
"ref": layoutRowWatermark
|
|
3433
|
+
}, [rowUi.wmText]) : null;
|
|
3229
3434
|
return createVNode("tr", {
|
|
3230
3435
|
"key": trKey,
|
|
3231
|
-
"height": dynHeight || trData.props.height
|
|
3232
|
-
|
|
3436
|
+
"height": dynHeight || trData.props.height,
|
|
3437
|
+
"class": trClass || void 0,
|
|
3438
|
+
"data-fc-row-op": rowMark?.op || void 0,
|
|
3439
|
+
"data-fc-row-key": rowMark && rowGroupKey ? rowGroupKey : void 0,
|
|
3440
|
+
"data-fc-wm": rowMark && showRowWatermark ? rowUi.wmKind || void 0 : void 0,
|
|
3441
|
+
"onClick": rowMark ? handleRowAnnClick : void 0
|
|
3442
|
+
}, [trData.nextIds.map((tdId) => {
|
|
3233
3443
|
let tdInfo = props.widgetCenter[tdId];
|
|
3234
3444
|
if (subTableCore) {
|
|
3235
3445
|
tdInfo = subTableCore.calcNewTdInfo({
|
|
@@ -3253,6 +3463,7 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3253
3463
|
hidden: false
|
|
3254
3464
|
});
|
|
3255
3465
|
}
|
|
3466
|
+
const cellWm = tdId === wmHostTdId ? rowWatermark : null;
|
|
3256
3467
|
if (tdInfo.cellValueType) {
|
|
3257
3468
|
if (props.isMobile) {
|
|
3258
3469
|
Object.assign(tdAttrs, {
|
|
@@ -3263,10 +3474,13 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3263
3474
|
formData: rowData
|
|
3264
3475
|
};
|
|
3265
3476
|
if (dataIdx !== -1) {
|
|
3477
|
+
const displayIndex = Number(props.start ?? 0) + dataIdx;
|
|
3478
|
+
const ghost = dataInfo.value.showRowAnn && isFormChangeGhostRow(rowData);
|
|
3266
3479
|
Object.assign(subWidgetAttrs, {
|
|
3267
3480
|
subtableFieldId: field,
|
|
3268
|
-
realRowIndex:
|
|
3269
|
-
pageRowIndex: dataIdx
|
|
3481
|
+
realRowIndex: ghost ? void 0 : dataInfo.value.showRowAnn ? dataInfo.value.displayToLiveRowIndexMap?.[displayIndex] : displayIndex,
|
|
3482
|
+
pageRowIndex: dataIdx,
|
|
3483
|
+
rowKey: getRowId(rowData)
|
|
3270
3484
|
});
|
|
3271
3485
|
}
|
|
3272
3486
|
if (tdInfo.props.isNewFixedTableInDyn) {
|
|
@@ -3281,7 +3495,7 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3281
3495
|
}, tdAttrs, {
|
|
3282
3496
|
"isEmpty": true
|
|
3283
3497
|
}), {
|
|
3284
|
-
default: () => [tdInfo.cellValueType !== CellType.Default || tdInfo.cellWidget.props.value ? slots.widget?.({
|
|
3498
|
+
default: () => [cellWm, tdInfo.cellValueType !== CellType.Default || tdInfo.cellWidget.props.value ? slots.widget?.({
|
|
3285
3499
|
tdInfo,
|
|
3286
3500
|
...subWidgetAttrs
|
|
3287
3501
|
}) : null]
|
|
@@ -3292,7 +3506,9 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3292
3506
|
"style": tdInfo.style
|
|
3293
3507
|
}, tdAttrs, {
|
|
3294
3508
|
"isEmpty": true
|
|
3295
|
-
}),
|
|
3509
|
+
}), _isSlot(cellWm) ? cellWm : {
|
|
3510
|
+
default: () => [cellWm]
|
|
3511
|
+
});
|
|
3296
3512
|
}
|
|
3297
3513
|
}), showAction.value && showActionMenu ? createVNode("div", {
|
|
3298
3514
|
"class": "sub-table-action-bar"
|
|
@@ -3319,7 +3535,7 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3319
3535
|
}, [createVNode("colgroup", null, [colsWidth.map((cw, cwIdx) => createVNode("col", {
|
|
3320
3536
|
"key": cwIdx,
|
|
3321
3537
|
"width": cw
|
|
3322
|
-
}, null))]), createVNode("tbody", null, [props.subInfo.containerIds.map((trId
|
|
3538
|
+
}, null))]), createVNode("tbody", null, [props.subInfo.containerIds.map((trId) => {
|
|
3323
3539
|
const trInfo = props.widgetCenter[trId];
|
|
3324
3540
|
if (trInfo.props.identifier !== "dynamicTr") {
|
|
3325
3541
|
const dynHeight = props.subInfo.dynamicRowHeights?.[trId];
|
|
@@ -3331,20 +3547,20 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
3331
3547
|
});
|
|
3332
3548
|
}
|
|
3333
3549
|
if (trId === lastDynamicId) {
|
|
3334
|
-
const lastDataIdx = dataInfo.value.tableData.length - 1;
|
|
3335
3550
|
return dataInfo.value.tableData.map((data, dataIdx) => {
|
|
3551
|
+
const stableRowKey = getRowId(data);
|
|
3336
3552
|
return dynamicIds.map((rowId, rowIdx) => {
|
|
3337
|
-
const isLast = dataIdx === lastDataIdx && rowIdx === lastDynRowIdx;
|
|
3338
3553
|
const showDelBtn = dataInfo.value.hasSubData && rowIdx === lastDynRowIdx;
|
|
3339
|
-
dataInfo.value.isEndRow && isLast;
|
|
3340
3554
|
const showActionMenu = rowIdx === lastDynRowIdx;
|
|
3341
3555
|
const row = props.widgetCenter[rowId];
|
|
3342
3556
|
const dynHeight = props.subInfo.dynamicRowHeights?.[rowId]?.[dataIdx];
|
|
3343
|
-
return renderTr2Td(`${
|
|
3557
|
+
return renderTr2Td(`${stableRowKey}_${rowIdx}`, row, data, {
|
|
3344
3558
|
showDelBtn,
|
|
3345
3559
|
showActionMenu,
|
|
3346
3560
|
dataIdx,
|
|
3347
|
-
dynHeight
|
|
3561
|
+
dynHeight,
|
|
3562
|
+
showRowWatermark: rowIdx === 0,
|
|
3563
|
+
rowGroupKey: stableRowKey
|
|
3348
3564
|
});
|
|
3349
3565
|
});
|
|
3350
3566
|
});
|
|
@@ -3452,11 +3668,11 @@ var MaterialConsumeActionType = /* @__PURE__ */ ((MaterialConsumeActionType2) =>
|
|
|
3452
3668
|
MaterialConsumeActionType2["CHANGE_PARSE_RULE"] = "CHANGE_PARSE_RULE";
|
|
3453
3669
|
return MaterialConsumeActionType2;
|
|
3454
3670
|
})(MaterialConsumeActionType || {});
|
|
3455
|
-
const _hoisted_1$
|
|
3671
|
+
const _hoisted_1$3 = {
|
|
3456
3672
|
key: 0,
|
|
3457
3673
|
class: "material-consume-action-bar"
|
|
3458
3674
|
};
|
|
3459
|
-
const _sfc_main$
|
|
3675
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
3460
3676
|
__name: "material-consume-action",
|
|
3461
3677
|
props: {
|
|
3462
3678
|
showBom: { type: Boolean, default: false },
|
|
@@ -3487,7 +3703,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
3487
3703
|
emit("doAction", MaterialConsumeActionType.CONFIRM, props.rowData);
|
|
3488
3704
|
};
|
|
3489
3705
|
return (_ctx, _cache) => {
|
|
3490
|
-
return __props.showConfirmBtn && isEditing.value ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
3706
|
+
return __props.showConfirmBtn && isEditing.value ? (openBlock(), createElementBlock("div", _hoisted_1$3, [
|
|
3491
3707
|
createElementVNode("div", {
|
|
3492
3708
|
class: "sub-table-btn btn-confirm",
|
|
3493
3709
|
onClick: handleConfirm
|
|
@@ -3498,7 +3714,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
3498
3714
|
};
|
|
3499
3715
|
}
|
|
3500
3716
|
});
|
|
3501
|
-
const MaterialConsumeAction = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3717
|
+
const MaterialConsumeAction = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-18b5f02d"]]);
|
|
3502
3718
|
const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
3503
3719
|
name: "NocodeMaterialConsumeTable",
|
|
3504
3720
|
props: {
|
|
@@ -3536,8 +3752,6 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3536
3752
|
}
|
|
3537
3753
|
},
|
|
3538
3754
|
setup(props, {
|
|
3539
|
-
emit,
|
|
3540
|
-
expose,
|
|
3541
3755
|
slots
|
|
3542
3756
|
}) {
|
|
3543
3757
|
const defaultDataMap = inject(NCB_PROVIDE.DEFAULT_FIELD_DATA);
|
|
@@ -3560,8 +3774,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3560
3774
|
colsWidth,
|
|
3561
3775
|
dynamicIds,
|
|
3562
3776
|
isRowSubTable2d,
|
|
3563
|
-
childInitRowLen
|
|
3564
|
-
quickFill
|
|
3777
|
+
childInitRowLen
|
|
3565
3778
|
} = reactive(props.widget.props);
|
|
3566
3779
|
const lastDynRowIdx = dynamicIds.length - 1;
|
|
3567
3780
|
const lastDynamicId = last(dynamicIds);
|
|
@@ -3611,11 +3824,12 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3611
3824
|
}
|
|
3612
3825
|
return showDisplayStatus.value === "edit-component";
|
|
3613
3826
|
});
|
|
3614
|
-
computed(() => showAction.value && quickFill);
|
|
3615
3827
|
const handleDeleteRow = (rowData, dataIdx) => {
|
|
3828
|
+
recordSubtableRowDelete(dataRelationShip, field, rowData);
|
|
3616
3829
|
deleteSubtableRow(field, props.start + dataIdx);
|
|
3617
|
-
if (rowData.id_ || rowData.group_ && rowData._2DTABLE_
|
|
3830
|
+
if (rowData.id_ || rowData.group_ && rowData._2DTABLE_?.some((item) => item.id_)) {
|
|
3618
3831
|
rowData.deleted_ = true;
|
|
3832
|
+
modelValue.value = relocateDeletedRowsToEnd(modelValue.value);
|
|
3619
3833
|
} else {
|
|
3620
3834
|
rowData.tempDeleted = true;
|
|
3621
3835
|
modelValue.value = modelValue.value.filter((d) => !d.tempDeleted);
|
|
@@ -3633,7 +3847,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3633
3847
|
if (!isFormChange.value && tableController.hasEditingRow()) {
|
|
3634
3848
|
return;
|
|
3635
3849
|
}
|
|
3636
|
-
const newRowsData = actionType === "copyRow" ? [cloneDeep(omit(rowData, "id_"))] : Array.from({
|
|
3850
|
+
const newRowsData = actionType === "copyRow" ? [cloneDeep(omit(rowData, ["id_", FRONT_ROW_KEY]))] : Array.from({
|
|
3637
3851
|
length: rowNum
|
|
3638
3852
|
}, (_, index2) => transformUtils.addSubTableRowItem({
|
|
3639
3853
|
defaultData: currentFieldDefaultData.value,
|
|
@@ -3661,13 +3875,17 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3661
3875
|
}
|
|
3662
3876
|
if (actionType === "currentRow") {
|
|
3663
3877
|
const firstData = newRowsData.shift();
|
|
3664
|
-
merge(rowData, firstData);
|
|
3878
|
+
merge(rowData, omit(firstData, ["id_", FRONT_ROW_KEY]));
|
|
3879
|
+
}
|
|
3880
|
+
if (newRowsData.length > 0) {
|
|
3881
|
+
insertSubtableRows(field, insertIndex, newRowsData.length);
|
|
3882
|
+
modelValue.value.splice(insertIndex, 0, ...newRowsData);
|
|
3883
|
+
modelValue.value = relocateDeletedRowsToEnd(modelValue.value);
|
|
3884
|
+
recordSubtableRowAdd(dataRelationShip, field, newRowsData);
|
|
3665
3885
|
}
|
|
3666
|
-
modelValue.value.splice(insertIndex, 0, ...newRowsData);
|
|
3667
3886
|
updateCalcCallback?.(dataRelationShip?.uniqueId);
|
|
3668
3887
|
};
|
|
3669
3888
|
const handleAction = (action, rowData) => {
|
|
3670
|
-
console.log("action", action);
|
|
3671
3889
|
switch (action) {
|
|
3672
3890
|
case MaterialConsumeActionType.CONFIRM:
|
|
3673
3891
|
tableController.confirm(rowData);
|
|
@@ -3812,7 +4030,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3812
4030
|
return createVNode("tr", {
|
|
3813
4031
|
"key": trKey,
|
|
3814
4032
|
"height": dynHeight || trData.props.height
|
|
3815
|
-
}, [trData.nextIds.map((tdId
|
|
4033
|
+
}, [trData.nextIds.map((tdId) => {
|
|
3816
4034
|
const tdInfo = getNewTdInfo(props.widgetCenter[tdId], rowData);
|
|
3817
4035
|
const tdAttrs = {
|
|
3818
4036
|
key: tdId,
|
|
@@ -3843,7 +4061,8 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3843
4061
|
Object.assign(subWidgetAttrs, {
|
|
3844
4062
|
subtableFieldId: field,
|
|
3845
4063
|
realRowIndex: Number(props.start ?? 0) + dataIdx,
|
|
3846
|
-
pageRowIndex: dataIdx
|
|
4064
|
+
pageRowIndex: dataIdx,
|
|
4065
|
+
rowKey: getRowId(rowData)
|
|
3847
4066
|
});
|
|
3848
4067
|
}
|
|
3849
4068
|
if (tdInfo.props.isNewFixedTableInDyn) {
|
|
@@ -3893,7 +4112,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3893
4112
|
}, [createVNode("colgroup", null, [colsWidth.map((cw, cwIdx) => createVNode("col", {
|
|
3894
4113
|
"key": cwIdx,
|
|
3895
4114
|
"width": cw
|
|
3896
|
-
}, null))]), createVNode("tbody", null, [props.subInfo.containerIds.map((trId
|
|
4115
|
+
}, null))]), createVNode("tbody", null, [props.subInfo.containerIds.map((trId) => {
|
|
3897
4116
|
const trInfo = props.widgetCenter[trId];
|
|
3898
4117
|
console.log("trInfo", trInfo);
|
|
3899
4118
|
if (trInfo.props.identifier !== "dynamicTr") {
|
|
@@ -3908,18 +4127,18 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3908
4127
|
if (trId === lastDynamicId) {
|
|
3909
4128
|
const lastDataIdx = dataInfo.value.tableData.length - 1;
|
|
3910
4129
|
return dataInfo.value.tableData.map((data, dataIdx) => {
|
|
4130
|
+
const stableRowKey = getRowId(data);
|
|
3911
4131
|
return dynamicIds.map((rowId, rowIdx) => {
|
|
3912
4132
|
const isLastDynRow = rowIdx === lastDynRowIdx;
|
|
3913
4133
|
const isLast = dataIdx === lastDataIdx && isLastDynRow;
|
|
3914
4134
|
const showDelBtn = dataInfo.value.hasSubData && isLastDynRow && // 开启了顺序投料时,只有最后一行可以删除
|
|
3915
4135
|
(tableController.enableSequenceLoading ? isLast : true);
|
|
3916
4136
|
const showScanBtn = isLast;
|
|
3917
|
-
dataInfo.value.isEndRow && isLast;
|
|
3918
4137
|
const showActionMenu = isLastDynRow;
|
|
3919
4138
|
const showEditBtn = !isFormChange.value && (tableController.enableSequenceLoading ? isLast : true) && data.is_confirmed_;
|
|
3920
4139
|
const row = props.widgetCenter[rowId];
|
|
3921
4140
|
const dynHeight = props.subInfo.dynamicRowHeights?.[rowId]?.[dataIdx];
|
|
3922
|
-
return renderTr2Td(`${
|
|
4141
|
+
return renderTr2Td(`${stableRowKey}_${rowIdx}`, row, data, {
|
|
3923
4142
|
showDelBtn,
|
|
3924
4143
|
showActionMenu,
|
|
3925
4144
|
showScanBtn,
|
|
@@ -3933,448 +4152,243 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
3933
4152
|
})])])]);
|
|
3934
4153
|
}
|
|
3935
4154
|
});
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
|
|
3948
|
-
|
|
3949
|
-
|
|
3950
|
-
formState: {
|
|
3951
|
-
type: Object,
|
|
3952
|
-
required: true
|
|
3953
|
-
},
|
|
3954
|
-
/** 模板数据中心 */
|
|
3955
|
-
widgetCenter: {
|
|
3956
|
-
type: Object,
|
|
3957
|
-
required: true
|
|
3958
|
-
},
|
|
3959
|
-
/** 是否是移动端渲染 */
|
|
3960
|
-
isMobile: {
|
|
3961
|
-
type: Boolean
|
|
3962
|
-
},
|
|
3963
|
-
selfInfoList: {
|
|
3964
|
-
type: Array
|
|
4155
|
+
function processRows(rows = [], columns = []) {
|
|
4156
|
+
const isBlank = (v) => v === null || v === void 0 || typeof v === "string" && v.trim() === "" || Array.isArray(v) && v.length === 0;
|
|
4157
|
+
const roundToScale = (num, scale) => {
|
|
4158
|
+
if (scale == null) return num;
|
|
4159
|
+
const factor = Math.pow(10, scale);
|
|
4160
|
+
return Math.round(num * factor) / factor;
|
|
4161
|
+
};
|
|
4162
|
+
const parseNumber = (v, { integer = false, scale = null } = {}) => {
|
|
4163
|
+
if (v === null || v === void 0) return null;
|
|
4164
|
+
if (typeof v === "number") {
|
|
4165
|
+
if (!Number.isFinite(v)) return null;
|
|
4166
|
+
if (integer && !Number.isInteger(v)) return null;
|
|
4167
|
+
const n2 = scale != null ? roundToScale(v, scale) : v;
|
|
4168
|
+
return Number.isFinite(n2) ? n2 : null;
|
|
3965
4169
|
}
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
|
|
3972
|
-
|
|
3973
|
-
|
|
3974
|
-
|
|
3975
|
-
|
|
3976
|
-
|
|
3977
|
-
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
|
|
3983
|
-
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
|
|
3989
|
-
|
|
3990
|
-
|
|
3991
|
-
const sortSize = size.slice().sort();
|
|
3992
|
-
const isLandscape = JSON.stringify(size) !== JSON.stringify(sortSize);
|
|
3993
|
-
const orientation = isLandscape ? "landscape" : "portrait";
|
|
3994
|
-
const resultSize = isLandscape && isPdfMode ? sortSize : size;
|
|
3995
|
-
const paddings = pageMargins?.split(" ");
|
|
3996
|
-
const config = {
|
|
3997
|
-
cls: orientation,
|
|
3998
|
-
style: {
|
|
3999
|
-
width: `${resultSize[0]}mm`,
|
|
4000
|
-
height: `${resultSize[1]}mm`
|
|
4170
|
+
let s = String(v).trim();
|
|
4171
|
+
if (s === "") return null;
|
|
4172
|
+
s = s.replace(/,/g, "");
|
|
4173
|
+
if (/^[\(\(].+[\)\)]$/.test(s)) {
|
|
4174
|
+
s = "-" + s.replace(/^[\(\(]|[\)\)]$/g, "");
|
|
4175
|
+
}
|
|
4176
|
+
const n = Number(s);
|
|
4177
|
+
if (!Number.isFinite(n)) return null;
|
|
4178
|
+
if (integer) {
|
|
4179
|
+
if (!Number.isInteger(n)) return null;
|
|
4180
|
+
return n;
|
|
4181
|
+
} else {
|
|
4182
|
+
return scale != null ? roundToScale(n, scale) : n;
|
|
4183
|
+
}
|
|
4184
|
+
};
|
|
4185
|
+
const parseToDate = (v) => {
|
|
4186
|
+
if (v === null || v === void 0 || v === "") return null;
|
|
4187
|
+
if (typeof v === "string") {
|
|
4188
|
+
let s = v.trim();
|
|
4189
|
+
if (s === "") return null;
|
|
4190
|
+
s = s.replace(/-/g, "/");
|
|
4191
|
+
if (/^\d{1,2}:\d{2}(:\d{2})?$/.test(s)) {
|
|
4192
|
+
const today = /* @__PURE__ */ new Date();
|
|
4193
|
+
const datePart = `${today.getFullYear()}/${today.getMonth() + 1}/${today.getDate()}`;
|
|
4194
|
+
s = `${datePart} ${s}`;
|
|
4001
4195
|
}
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4196
|
+
const d = new Date(s);
|
|
4197
|
+
return isNaN(d) ? null : d;
|
|
4198
|
+
}
|
|
4199
|
+
return null;
|
|
4200
|
+
};
|
|
4201
|
+
const buildOptionLookup = (opts = []) => {
|
|
4202
|
+
const map = /* @__PURE__ */ new Map();
|
|
4203
|
+
for (const o of opts) {
|
|
4204
|
+
const val = o.value != null ? String(o.value) : void 0;
|
|
4205
|
+
const text = o.text != null ? String(o.text) : void 0;
|
|
4206
|
+
const label = o.label != null ? String(o.label) : void 0;
|
|
4207
|
+
if (val !== void 0) map.set(val, val);
|
|
4208
|
+
if (text !== void 0) map.set(text, val || text);
|
|
4209
|
+
if (label !== void 0) map.set(label, val || label);
|
|
4210
|
+
}
|
|
4211
|
+
return map;
|
|
4212
|
+
};
|
|
4213
|
+
const pad2 = (n) => String(n).padStart(2, "0");
|
|
4214
|
+
const formatDate = (d) => `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
|
|
4215
|
+
const formatTime = (d) => `${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}`;
|
|
4216
|
+
const formatDateTime = (d) => `${formatDate(d)} ${formatTime(d)}`;
|
|
4217
|
+
const out = rows.map((row) => {
|
|
4218
|
+
const newRow = { ...row };
|
|
4219
|
+
for (const f of columns) {
|
|
4220
|
+
const val = row[f.prop];
|
|
4221
|
+
switch (f.fieldType) {
|
|
4222
|
+
case FIELD_TYPE.INTEGER:
|
|
4223
|
+
case FIELD_TYPE.LONG:
|
|
4224
|
+
{
|
|
4225
|
+
const n = parseNumber(val, { integer: true });
|
|
4226
|
+
newRow[f.prop] = isBlank(n) ? void 0 : n;
|
|
4227
|
+
}
|
|
4228
|
+
break;
|
|
4229
|
+
case FIELD_TYPE.DOUBLE:
|
|
4230
|
+
case FIELD_TYPE.DECIMAL:
|
|
4231
|
+
{
|
|
4232
|
+
const n = parseNumber(val, { integer: false, scale: null });
|
|
4233
|
+
newRow[f.prop] = isBlank(n) ? void 0 : n;
|
|
4234
|
+
}
|
|
4235
|
+
break;
|
|
4236
|
+
case FIELD_TYPE.DATE:
|
|
4237
|
+
{
|
|
4238
|
+
const d = parseToDate(val);
|
|
4239
|
+
newRow[f.prop] = d ? formatDate(d) : isBlank(val) ? void 0 : val;
|
|
4240
|
+
}
|
|
4241
|
+
break;
|
|
4242
|
+
case FIELD_TYPE.TIME:
|
|
4243
|
+
{
|
|
4244
|
+
const d = parseToDate(val);
|
|
4245
|
+
newRow[f.prop] = d ? formatTime(d) : isBlank(val) ? void 0 : val;
|
|
4246
|
+
}
|
|
4247
|
+
break;
|
|
4248
|
+
case FIELD_TYPE.DATE_TIME:
|
|
4249
|
+
{
|
|
4250
|
+
const d = parseToDate(val);
|
|
4251
|
+
newRow[f.prop] = d ? formatDateTime(d) : isBlank(val) ? void 0 : val;
|
|
4252
|
+
}
|
|
4253
|
+
break;
|
|
4254
|
+
case FIELD_TYPE.OPTION_MULTI:
|
|
4255
|
+
{
|
|
4256
|
+
const lookup = buildOptionLookup(f.newOptions);
|
|
4257
|
+
if (typeof val === "string") {
|
|
4258
|
+
const tokens = val.split(/[;,]/).map((s) => s.trim()).filter((s) => s !== "");
|
|
4259
|
+
const arr = tokens.map((t) => lookup.get(t)).filter((v) => v !== void 0);
|
|
4260
|
+
newRow[f.prop] = arr.length ? arr.join(",") : void 0;
|
|
4261
|
+
} else {
|
|
4262
|
+
newRow[f.prop] = isBlank(val) ? void 0 : val;
|
|
4263
|
+
}
|
|
4264
|
+
}
|
|
4265
|
+
break;
|
|
4266
|
+
case FIELD_TYPE.OPTION:
|
|
4267
|
+
{
|
|
4268
|
+
const lookup = buildOptionLookup(f.newOptions);
|
|
4269
|
+
if (isBlank(val)) {
|
|
4270
|
+
newRow[f.prop] = void 0;
|
|
4271
|
+
} else {
|
|
4272
|
+
const tokens = val.split(/[;,]/).map((s) => s.trim()).filter((s) => s !== "");
|
|
4273
|
+
const normalized = lookup.get(tokens?.[0]);
|
|
4274
|
+
newRow[f.prop] = normalized !== void 0 ? normalized : void 0;
|
|
4275
|
+
}
|
|
4276
|
+
}
|
|
4277
|
+
break;
|
|
4278
|
+
default:
|
|
4279
|
+
newRow[f.prop] = isBlank(val) ? void 0 : val;
|
|
4064
4280
|
}
|
|
4281
|
+
}
|
|
4282
|
+
return newRow;
|
|
4283
|
+
}).filter((row) => {
|
|
4284
|
+
return columns.some((f) => {
|
|
4285
|
+
const v = row[f.prop];
|
|
4286
|
+
if (v === 0 || v === false) return true;
|
|
4287
|
+
return !isBlank(v);
|
|
4065
4288
|
});
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
}, [slots.overlay?.({
|
|
4085
|
-
widgets: widget.headerWidgets
|
|
4086
|
-
})]), widget.footerWidgets && createVNode("div", {
|
|
4087
|
-
"class": "paper-footer"
|
|
4088
|
-
}, [slots.overlay?.({
|
|
4089
|
-
widgets: widget.footerWidgets
|
|
4090
|
-
})]), widget.watermarks && createVNode("div", {
|
|
4091
|
-
"class": "paper-watermark"
|
|
4092
|
-
}, [slots.overlay?.({
|
|
4093
|
-
widgets: widget.watermarks
|
|
4094
|
-
})])]), createVNode("div", {
|
|
4095
|
-
"class": "cmp-paper-container"
|
|
4096
|
-
}, [createVNode("table", {
|
|
4097
|
-
"ref": mainTableRef,
|
|
4098
|
-
"class": "main-table-wrapper",
|
|
4099
|
-
"cellpadding": "0",
|
|
4100
|
-
"cellspacing": "0"
|
|
4101
|
-
}, [createVNode("colgroup", null, [colsWidth.map((cw, cwIdx) => createVNode("col", {
|
|
4102
|
-
"key": cwIdx,
|
|
4103
|
-
"width": cw
|
|
4104
|
-
}, null))]), createVNode("tbody", null, [props.page.containerIds.map((trId, trIdx) => {
|
|
4105
|
-
const trInfo = props.widgetCenter[trId];
|
|
4106
|
-
const tdIds = trInfo.nextIds;
|
|
4107
|
-
const height = props.page.dynamicRowHeights?.[trId] || trInfo.props.height;
|
|
4108
|
-
return createVNode("tr", {
|
|
4109
|
-
"key": `${trId}_${trIdx}`,
|
|
4110
|
-
"height": height
|
|
4111
|
-
}, [tdIds.map((tdId, tdIdx) => {
|
|
4112
|
-
const tdInfo = props.widgetCenter[tdId];
|
|
4113
|
-
const tdAttrs = {
|
|
4114
|
-
key: tdId,
|
|
4115
|
-
id: tdId,
|
|
4116
|
-
hidden: tdInfo.cellHidden,
|
|
4117
|
-
borderAttrs: tdInfo.props.sourceBorderAttrs,
|
|
4118
|
-
autoMerge: tdInfo.fillDirection === "x" ? tdInfo.xAutoMerge : tdInfo.autoMerge,
|
|
4119
|
-
fillDirection: tdInfo.fillDirection,
|
|
4120
|
-
...pick(tdInfo.props, ["rowspan", "colspan", "class"])
|
|
4121
|
-
};
|
|
4122
|
-
const realTdAttrInfo = props.page.mergeBlock?.[tdId];
|
|
4123
|
-
const dynamicConfig = {};
|
|
4124
|
-
if (realTdAttrInfo) {
|
|
4125
|
-
Object.assign(tdAttrs, {
|
|
4126
|
-
...pick(realTdAttrInfo, ["rowspan", "colspan", "borderAttrs"]),
|
|
4127
|
-
hidden: false
|
|
4128
|
-
});
|
|
4129
|
-
Object.assign(dynamicConfig, {
|
|
4130
|
-
...pick(realTdAttrInfo, ["visibleText", "sourceTdId", "isDynRo"])
|
|
4131
|
-
});
|
|
4289
|
+
});
|
|
4290
|
+
return out;
|
|
4291
|
+
}
|
|
4292
|
+
function groupFixedTableRows(rows, options) {
|
|
4293
|
+
const { rowCount, colCount, direction, z = "row" } = options;
|
|
4294
|
+
const n = rows.length;
|
|
4295
|
+
if (!n) return [];
|
|
4296
|
+
const keys = Object.keys(rows[0]);
|
|
4297
|
+
const m = keys.length;
|
|
4298
|
+
const matrix = rows.map((row) => keys.map((k) => row[k]));
|
|
4299
|
+
const result = [];
|
|
4300
|
+
function createBlock2(startRow, startCol, height, width) {
|
|
4301
|
+
const values = [];
|
|
4302
|
+
if (z === "row") {
|
|
4303
|
+
for (let r = 0; r < height; r++) {
|
|
4304
|
+
const rowValues = [];
|
|
4305
|
+
for (let c = 0; c < width; c++) {
|
|
4306
|
+
rowValues.push(matrix[startRow + r][startCol + c]);
|
|
4132
4307
|
}
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
const subWidget = props.widgetCenter[subInfo.widgetId];
|
|
4136
|
-
const field = subWidget.props.field ?? "";
|
|
4137
|
-
const relationObj = props.page.relation[field] ?? {};
|
|
4138
|
-
const subTable2dItem = subTable2DList.find((item) => item.subTable2d && item.rowSubFieldKey === field);
|
|
4139
|
-
if (subWidget.props.isMaterialConsumeTable) {
|
|
4140
|
-
const tableController = tmplBomController.value?.tableControllers[subWidget.props.materialConsumeTableId];
|
|
4141
|
-
if (tableController) {
|
|
4142
|
-
return createVNode("td", mergeProps({
|
|
4143
|
-
"style": tdInfo.style
|
|
4144
|
-
}, tdAttrs), [createVNode(MaterialConsumeTable, {
|
|
4145
|
-
"subInfo": subInfo,
|
|
4146
|
-
"widget": subWidget,
|
|
4147
|
-
"formData": props.formState,
|
|
4148
|
-
"widgetCenter": props.widgetCenter,
|
|
4149
|
-
"start": relationObj?.start,
|
|
4150
|
-
"end": relationObj.end,
|
|
4151
|
-
"isMobile": props.isMobile,
|
|
4152
|
-
"tableController": tableController
|
|
4153
|
-
}, {
|
|
4154
|
-
widget: (subProps) => slots.widget?.(subProps),
|
|
4155
|
-
subAction: (subProps) => slots.subAction?.(subProps)
|
|
4156
|
-
})]);
|
|
4157
|
-
}
|
|
4158
|
-
}
|
|
4159
|
-
const subTableCore = subTableCoreFactory.value?.getSubCoreByTid(subInfo.widgetId);
|
|
4160
|
-
return createVNode("td", mergeProps({
|
|
4161
|
-
"style": tdInfo.style
|
|
4162
|
-
}, tdAttrs), [createVNode(DocumentSubTable, {
|
|
4163
|
-
"subInfo": subInfo,
|
|
4164
|
-
"widget": subWidget,
|
|
4165
|
-
"subTable2dItem": subTable2dItem,
|
|
4166
|
-
"formData": props.formState,
|
|
4167
|
-
"widgetCenter": props.widgetCenter,
|
|
4168
|
-
"start": relationObj?.start,
|
|
4169
|
-
"end": relationObj.end,
|
|
4170
|
-
"isMobile": props.isMobile,
|
|
4171
|
-
"subTableCore": subTableCore
|
|
4172
|
-
}, {
|
|
4173
|
-
widget: (subProps) => slots.widget?.(subProps),
|
|
4174
|
-
subAction: (subProps) => slots.subAction?.(subProps)
|
|
4175
|
-
})]);
|
|
4308
|
+
if (r % 2 === 1) {
|
|
4309
|
+
rowValues.reverse();
|
|
4176
4310
|
}
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
return createVNode(BorderTD, mergeProps({
|
|
4185
|
-
"style": tdInfo.style
|
|
4186
|
-
}, tdAttrs, {
|
|
4187
|
-
"isEmpty": true
|
|
4188
|
-
}), {
|
|
4189
|
-
default: () => [tdInfo.cellValueType !== CellType.Default || tdInfo.cellWidget.props.value ? slots.widget?.({
|
|
4190
|
-
tdInfo,
|
|
4191
|
-
...widgetAttrs,
|
|
4192
|
-
dynamicConfig
|
|
4193
|
-
}) : null]
|
|
4194
|
-
});
|
|
4311
|
+
values.push(...rowValues);
|
|
4312
|
+
}
|
|
4313
|
+
} else {
|
|
4314
|
+
for (let c = 0; c < width; c++) {
|
|
4315
|
+
const colValues = [];
|
|
4316
|
+
for (let r = 0; r < height; r++) {
|
|
4317
|
+
colValues.push(matrix[startRow + r][startCol + c]);
|
|
4195
4318
|
}
|
|
4196
|
-
if (
|
|
4197
|
-
|
|
4198
|
-
const widgetAttrs = getWidgetAttrs(tdInfo);
|
|
4199
|
-
return createVNode(BorderTD, mergeProps({
|
|
4200
|
-
"style": tdInfo.style
|
|
4201
|
-
}, tdAttrs, {
|
|
4202
|
-
"isEmpty": true
|
|
4203
|
-
}), {
|
|
4204
|
-
default: () => [dynamicConfig?.isDynRo ? slots.widget?.({
|
|
4205
|
-
tdInfo: sourceTdInfo,
|
|
4206
|
-
...widgetAttrs,
|
|
4207
|
-
dynamicConfig
|
|
4208
|
-
}) : null]
|
|
4209
|
-
});
|
|
4319
|
+
if (c % 2 === 1) {
|
|
4320
|
+
colValues.reverse();
|
|
4210
4321
|
}
|
|
4211
|
-
|
|
4212
|
-
|
|
4322
|
+
values.push(...colValues);
|
|
4323
|
+
}
|
|
4324
|
+
}
|
|
4325
|
+
const row = {};
|
|
4326
|
+
values.forEach((v, i) => {
|
|
4327
|
+
row[`K${i}`] = v;
|
|
4328
|
+
});
|
|
4329
|
+
result.push(row);
|
|
4213
4330
|
}
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4331
|
+
if (direction === "x") {
|
|
4332
|
+
for (let r = 0; r < n; r += rowCount) {
|
|
4333
|
+
for (let c = 0; c < m; c += colCount) {
|
|
4334
|
+
createBlock2(r, c, Math.min(rowCount, n - r), Math.min(colCount, m - c));
|
|
4335
|
+
}
|
|
4336
|
+
}
|
|
4337
|
+
} else {
|
|
4338
|
+
for (let c = 0; c < m; c += colCount) {
|
|
4339
|
+
for (let r = 0; r < n; r += rowCount) {
|
|
4340
|
+
createBlock2(r, c, Math.min(rowCount, n - r), Math.min(colCount, m - c));
|
|
4341
|
+
}
|
|
4342
|
+
}
|
|
4343
|
+
}
|
|
4344
|
+
return result;
|
|
4345
|
+
}
|
|
4346
|
+
const _hoisted_1$2 = { class: "document-quick-fill-container" };
|
|
4347
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
4348
|
+
__name: "fixed-quick-fill-modal",
|
|
4218
4349
|
props: {
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4350
|
+
rowCount: {},
|
|
4351
|
+
colCount: {},
|
|
4352
|
+
dgRowCount: {},
|
|
4353
|
+
dgColCount: {},
|
|
4354
|
+
dgDirection: {},
|
|
4355
|
+
columns: {}
|
|
4222
4356
|
},
|
|
4223
4357
|
setup(__props) {
|
|
4224
4358
|
const props = __props;
|
|
4225
4359
|
const rows = ref([]);
|
|
4226
|
-
|
|
4227
|
-
return Object.fromEntries(props.columns.map((c) => [c.prop, ""]));
|
|
4228
|
-
}
|
|
4229
|
-
function initRows(count = 10) {
|
|
4230
|
-
rows.value = Array.from({ length: count }, () => makeEmptyRow());
|
|
4231
|
-
}
|
|
4360
|
+
const cols = ref([]);
|
|
4232
4361
|
onBeforeMount(() => {
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
const isBlank = (v) => v === null || v === void 0 || typeof v === "string" && v.trim() === "" || Array.isArray(v) && v.length === 0;
|
|
4237
|
-
const roundToScale = (num, scale) => {
|
|
4238
|
-
if (scale == null) return num;
|
|
4239
|
-
const factor = Math.pow(10, scale);
|
|
4240
|
-
return Math.round(num * factor) / factor;
|
|
4241
|
-
};
|
|
4242
|
-
const parseNumber = (v, { integer = false, scale = null } = {}) => {
|
|
4243
|
-
if (v === null || v === void 0) return null;
|
|
4244
|
-
if (typeof v === "number") {
|
|
4245
|
-
if (!Number.isFinite(v)) return null;
|
|
4246
|
-
if (integer && !Number.isInteger(v)) return null;
|
|
4247
|
-
const n2 = scale != null ? roundToScale(v, scale) : v;
|
|
4248
|
-
return Number.isFinite(n2) ? n2 : null;
|
|
4249
|
-
}
|
|
4250
|
-
let s = String(v).trim();
|
|
4251
|
-
if (s === "") return null;
|
|
4252
|
-
s = s.replace(/,/g, "");
|
|
4253
|
-
if (/^[\(\(].+[\)\)]$/.test(s)) {
|
|
4254
|
-
s = "-" + s.replace(/^[\(\(]|[\)\)]$/g, "");
|
|
4255
|
-
}
|
|
4256
|
-
const n = Number(s);
|
|
4257
|
-
if (!Number.isFinite(n)) return null;
|
|
4258
|
-
if (integer) {
|
|
4259
|
-
if (!Number.isInteger(n)) return null;
|
|
4260
|
-
return n;
|
|
4261
|
-
} else {
|
|
4262
|
-
return scale != null ? roundToScale(n, scale) : n;
|
|
4263
|
-
}
|
|
4264
|
-
};
|
|
4265
|
-
const parseToDate = (v) => {
|
|
4266
|
-
if (v === null || v === void 0 || v === "") return null;
|
|
4267
|
-
if (typeof v === "string") {
|
|
4268
|
-
let s = v.trim();
|
|
4269
|
-
if (s === "") return null;
|
|
4270
|
-
s = s.replace(/-/g, "/");
|
|
4271
|
-
if (/^\d{1,2}:\d{2}(:\d{2})?$/.test(s)) {
|
|
4272
|
-
const today = /* @__PURE__ */ new Date();
|
|
4273
|
-
const datePart = `${today.getFullYear()}/${today.getMonth() + 1}/${today.getDate()}`;
|
|
4274
|
-
s = `${datePart} ${s}`;
|
|
4275
|
-
}
|
|
4276
|
-
const d = new Date(s);
|
|
4277
|
-
return isNaN(d) ? null : d;
|
|
4278
|
-
}
|
|
4279
|
-
return null;
|
|
4280
|
-
};
|
|
4281
|
-
const buildOptionLookup = (opts = []) => {
|
|
4282
|
-
const map = /* @__PURE__ */ new Map();
|
|
4283
|
-
for (const o of opts) {
|
|
4284
|
-
const val = o.value != null ? String(o.value) : void 0;
|
|
4285
|
-
const text = o.text != null ? String(o.text) : void 0;
|
|
4286
|
-
const label = o.label != null ? String(o.label) : void 0;
|
|
4287
|
-
if (val !== void 0) map.set(val, val);
|
|
4288
|
-
if (text !== void 0) map.set(text, val || text);
|
|
4289
|
-
if (label !== void 0) map.set(label, val || label);
|
|
4290
|
-
}
|
|
4362
|
+
const { rowCount, colCount } = props;
|
|
4363
|
+
const newRow = () => Array.from({ length: colCount }).reduce((map, v, i) => {
|
|
4364
|
+
map[`KEY${i}`] = "";
|
|
4291
4365
|
return map;
|
|
4292
|
-
};
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
const
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
newRow[f.prop] = isBlank(n) ? void 0 : n;
|
|
4307
|
-
}
|
|
4308
|
-
break;
|
|
4309
|
-
case FIELD_TYPE.DOUBLE:
|
|
4310
|
-
case FIELD_TYPE.DECIMAL:
|
|
4311
|
-
{
|
|
4312
|
-
const n = parseNumber(val, { integer: false, scale: null });
|
|
4313
|
-
newRow[f.prop] = isBlank(n) ? void 0 : n;
|
|
4314
|
-
}
|
|
4315
|
-
break;
|
|
4316
|
-
case FIELD_TYPE.DATE:
|
|
4317
|
-
{
|
|
4318
|
-
const d = parseToDate(val);
|
|
4319
|
-
newRow[f.prop] = d ? formatDate(d) : isBlank(val) ? void 0 : val;
|
|
4320
|
-
}
|
|
4321
|
-
break;
|
|
4322
|
-
case FIELD_TYPE.TIME:
|
|
4323
|
-
{
|
|
4324
|
-
const d = parseToDate(val);
|
|
4325
|
-
newRow[f.prop] = d ? formatTime(d) : isBlank(val) ? void 0 : val;
|
|
4326
|
-
}
|
|
4327
|
-
break;
|
|
4328
|
-
case FIELD_TYPE.DATE_TIME:
|
|
4329
|
-
{
|
|
4330
|
-
const d = parseToDate(val);
|
|
4331
|
-
newRow[f.prop] = d ? formatDateTime(d) : isBlank(val) ? void 0 : val;
|
|
4332
|
-
}
|
|
4333
|
-
break;
|
|
4334
|
-
case FIELD_TYPE.OPTION_MULTI:
|
|
4335
|
-
{
|
|
4336
|
-
const lookup = buildOptionLookup(f.newOptions);
|
|
4337
|
-
if (typeof val === "string") {
|
|
4338
|
-
const tokens = val.split(/[;,]/).map((s) => s.trim()).filter((s) => s !== "");
|
|
4339
|
-
const arr = tokens.map((t) => lookup.get(t)).filter((v) => v !== void 0);
|
|
4340
|
-
newRow[f.prop] = arr.length ? arr.join(",") : void 0;
|
|
4341
|
-
} else {
|
|
4342
|
-
newRow[f.prop] = isBlank(val) ? void 0 : val;
|
|
4343
|
-
}
|
|
4344
|
-
}
|
|
4345
|
-
break;
|
|
4346
|
-
case FIELD_TYPE.OPTION:
|
|
4347
|
-
{
|
|
4348
|
-
const lookup = buildOptionLookup(f.newOptions);
|
|
4349
|
-
if (isBlank(val)) {
|
|
4350
|
-
newRow[f.prop] = void 0;
|
|
4351
|
-
} else {
|
|
4352
|
-
const tokens = val.split(/[;,]/).map((s) => s.trim()).filter((s) => s !== "");
|
|
4353
|
-
const normalized = lookup.get(tokens?.[0]);
|
|
4354
|
-
newRow[f.prop] = normalized !== void 0 ? normalized : void 0;
|
|
4355
|
-
}
|
|
4356
|
-
}
|
|
4357
|
-
break;
|
|
4358
|
-
default:
|
|
4359
|
-
newRow[f.prop] = isBlank(val) ? void 0 : val;
|
|
4360
|
-
}
|
|
4366
|
+
}, {});
|
|
4367
|
+
rows.value = Array.from({ length: rowCount }, newRow);
|
|
4368
|
+
cols.value = Object.keys(rows.value?.[0] || {}).map((k) => ({ prop: k, name: k }));
|
|
4369
|
+
});
|
|
4370
|
+
async function onSave() {
|
|
4371
|
+
const { dgRowCount, dgColCount, dgDirection, columns } = props;
|
|
4372
|
+
const groupedRows = groupFixedTableRows(unref(rows), {
|
|
4373
|
+
rowCount: dgRowCount,
|
|
4374
|
+
colCount: dgColCount,
|
|
4375
|
+
direction: dgDirection
|
|
4376
|
+
}).map((row) => {
|
|
4377
|
+
const values = Object.values(row);
|
|
4378
|
+
if (values.every((v) => v === "")) {
|
|
4379
|
+
return null;
|
|
4361
4380
|
}
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
const v = row[f.prop];
|
|
4366
|
-
if (v === 0 || v === false) return true;
|
|
4367
|
-
return !isBlank(v);
|
|
4381
|
+
const _row = {};
|
|
4382
|
+
columns.forEach((col, i) => {
|
|
4383
|
+
_row[col.prop] = values[i];
|
|
4368
4384
|
});
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
}
|
|
4372
|
-
async function onSave() {
|
|
4385
|
+
return _row;
|
|
4386
|
+
}).filter(Boolean);
|
|
4373
4387
|
try {
|
|
4374
4388
|
return {
|
|
4375
4389
|
ok: true,
|
|
4376
4390
|
params: {
|
|
4377
|
-
data: processRows(
|
|
4391
|
+
data: processRows(groupedRows, columns)
|
|
4378
4392
|
}
|
|
4379
4393
|
};
|
|
4380
4394
|
} catch (err) {
|
|
@@ -4386,13 +4400,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
4386
4400
|
}
|
|
4387
4401
|
useModal(onSave);
|
|
4388
4402
|
return (_ctx, _cache) => {
|
|
4389
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
4403
|
+
return openBlock(), createElementBlock("div", _hoisted_1$2, [
|
|
4390
4404
|
_cache[0] || (_cache[0] = createElementVNode("div", { class: "quick-fill-tips" }, [
|
|
4391
4405
|
createElementVNode("i", { class: "iconfont icon-zhuyi" }),
|
|
4392
4406
|
createElementVNode("ul", { class: "tips-list" }, [
|
|
4393
4407
|
createElementVNode("li", null, "可将Excel内容粘贴到表格中,支持使用复制、粘贴、删除快捷键"),
|
|
4394
|
-
createElementVNode("li", null, "表单中支持快速填报的字段类型:文本、长文本、整数、长整数、小数、精度小数、日期、时间、日期时间、LOT/SN、报废物料批次、枚举单选、枚举多选(选项间以“,”分割)")
|
|
4395
|
-
createElementVNode("li", null, "当前快速填报最多支持200行")
|
|
4408
|
+
createElementVNode("li", null, " 表单中支持快速填报的字段类型:文本、长文本、整数、长整数、小数、精度小数、日期、时间、日期时间、LOT/SN、报废物料批次、枚举单选、枚举多选(选项间以“,”分割) ")
|
|
4396
4409
|
])
|
|
4397
4410
|
], -1)),
|
|
4398
4411
|
createVNode(unref(q), {
|
|
@@ -4401,22 +4414,21 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
4401
4414
|
resize: "",
|
|
4402
4415
|
colSize: 200,
|
|
4403
4416
|
source: rows.value,
|
|
4404
|
-
columns:
|
|
4417
|
+
columns: cols.value,
|
|
4405
4418
|
theme: "material",
|
|
4406
4419
|
"hide-attribution": "",
|
|
4407
|
-
"apply-on-close": true
|
|
4408
|
-
"row-headers": { prop: "rowIndex", name: "序号", size: 60 }
|
|
4420
|
+
"apply-on-close": true
|
|
4409
4421
|
}, null, 8, ["source", "columns"])
|
|
4410
4422
|
]);
|
|
4411
4423
|
};
|
|
4412
4424
|
}
|
|
4413
4425
|
});
|
|
4414
|
-
const
|
|
4415
|
-
const _hoisted_1 = {
|
|
4426
|
+
const FixedQuickFillModal = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-9770bafc"]]);
|
|
4427
|
+
const _hoisted_1$1 = {
|
|
4416
4428
|
key: 1,
|
|
4417
4429
|
class: "sub-table-action__subtitle"
|
|
4418
4430
|
};
|
|
4419
|
-
const _sfc_main$
|
|
4431
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
4420
4432
|
__name: "sub-table-action",
|
|
4421
4433
|
props: {
|
|
4422
4434
|
showDelBtn: { type: Boolean, default: false },
|
|
@@ -4434,7 +4446,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
4434
4446
|
setup(__props, { emit: __emit }) {
|
|
4435
4447
|
const props = __props;
|
|
4436
4448
|
const emit = __emit;
|
|
4437
|
-
computed(() => {
|
|
4449
|
+
const showMenus = computed(() => {
|
|
4438
4450
|
const menus = [
|
|
4439
4451
|
...props.isMaterialConsume ? [
|
|
4440
4452
|
{
|
|
@@ -4544,6 +4556,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
4544
4556
|
];
|
|
4545
4557
|
return menus.filter((i) => i.show !== false);
|
|
4546
4558
|
});
|
|
4559
|
+
const displayMenus = computed(
|
|
4560
|
+
() => props.menus?.length ? props.menus : showMenus.value
|
|
4561
|
+
);
|
|
4547
4562
|
const stopRefPropagation = (vm) => {
|
|
4548
4563
|
if (!vm?.$el) {
|
|
4549
4564
|
return;
|
|
@@ -4594,11 +4609,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
4594
4609
|
selectedKeys: []
|
|
4595
4610
|
}, {
|
|
4596
4611
|
default: withCtx(() => [
|
|
4597
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(
|
|
4612
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(displayMenus.value, (menu) => {
|
|
4598
4613
|
return openBlock(), createElementBlock(Fragment, {
|
|
4599
4614
|
key: menu.key
|
|
4600
4615
|
}, [
|
|
4601
|
-
menu.type === "divider" ? (openBlock(), createBlock(_component_a_menu_divider, { key: 0 })) : menu.type === "subtitle" ? (openBlock(), createElementBlock("div", _hoisted_1, toDisplayString(menu.label), 1)) : menu.type === "submenu" ? (openBlock(), createBlock(_component_a_sub_menu, {
|
|
4616
|
+
menu.type === "divider" ? (openBlock(), createBlock(_component_a_menu_divider, { key: 0 })) : menu.type === "subtitle" ? (openBlock(), createElementBlock("div", _hoisted_1$1, toDisplayString(menu.label), 1)) : menu.type === "submenu" ? (openBlock(), createBlock(_component_a_sub_menu, {
|
|
4602
4617
|
popupClassName: "sub-table-action__submenu-popup",
|
|
4603
4618
|
key: menu.key
|
|
4604
4619
|
}, {
|
|
@@ -4682,9 +4697,462 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
4682
4697
|
};
|
|
4683
4698
|
}
|
|
4684
4699
|
});
|
|
4685
|
-
const SubTableAction = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
4700
|
+
const SubTableAction = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-8a4cea28"]]);
|
|
4701
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
4702
|
+
__name: "fixed-table-action",
|
|
4703
|
+
props: {
|
|
4704
|
+
formState: {},
|
|
4705
|
+
widgetCenter: {},
|
|
4706
|
+
fixedTableInfo: {}
|
|
4707
|
+
},
|
|
4708
|
+
setup(__props) {
|
|
4709
|
+
const menus = [
|
|
4710
|
+
{
|
|
4711
|
+
type: SubTableActionMenuTypeEnum.ACTION,
|
|
4712
|
+
key: SubTableActionEnum.QuickFillRowCurrent,
|
|
4713
|
+
label: "快速填报",
|
|
4714
|
+
icon: "icon-zhongxinbianjidangqianhang"
|
|
4715
|
+
}
|
|
4716
|
+
];
|
|
4717
|
+
const props = __props;
|
|
4718
|
+
const onMenuClick = async ({ key }) => {
|
|
4719
|
+
if (key === "quickFillRowCurrent") {
|
|
4720
|
+
const { widgetCenter, fixedTableInfo } = props;
|
|
4721
|
+
const { range, dgRange, subFieldKey, fillDirection: dgDirection } = fixedTableInfo;
|
|
4722
|
+
const rowCount = range.b - range.t + 1;
|
|
4723
|
+
const colCount = range.r - range.l + 1;
|
|
4724
|
+
const dgRowCount = dgRange.b - dgRange.t + 1;
|
|
4725
|
+
const dgColCount = dgRange.r - dgRange.l + 1;
|
|
4726
|
+
const columns = Object.values(widgetCenter[ComponentTypeEnum.PAPER].props.fixedTableFieldMap).map((o) => o.fieldMeta).filter((m) => m?.subFieldKey === subFieldKey).map((m) => ({
|
|
4727
|
+
prop: m.field,
|
|
4728
|
+
fieldType: m.fieldType,
|
|
4729
|
+
newOptions: []
|
|
4730
|
+
// JSW TODO: 传递枚举单选、多选 选项
|
|
4731
|
+
}));
|
|
4732
|
+
const res = await window.NocodeAdapter.utils.overlay.modal(
|
|
4733
|
+
FixedQuickFillModal,
|
|
4734
|
+
{
|
|
4735
|
+
rowCount,
|
|
4736
|
+
colCount,
|
|
4737
|
+
dgRowCount,
|
|
4738
|
+
dgColCount,
|
|
4739
|
+
dgDirection,
|
|
4740
|
+
columns
|
|
4741
|
+
},
|
|
4742
|
+
{ title: "快速填报", width: "1060px" }
|
|
4743
|
+
);
|
|
4744
|
+
if (res.ok && res.params?.data.length) {
|
|
4745
|
+
const validKeys = columns.map((c) => c.prop);
|
|
4746
|
+
const newGroupList = [...res.params.data];
|
|
4747
|
+
let activeIndex = 0;
|
|
4748
|
+
props.formState[subFieldKey].forEach((oldGroup) => {
|
|
4749
|
+
const isEmptyGroup = Object.values(pick(oldGroup, validKeys)).every(
|
|
4750
|
+
(v) => ["", null, void 0].includes(v)
|
|
4751
|
+
);
|
|
4752
|
+
if (isEmptyGroup) {
|
|
4753
|
+
const newGroup = newGroupList[activeIndex];
|
|
4754
|
+
if (newGroup) {
|
|
4755
|
+
Object.assign(oldGroup, newGroup);
|
|
4756
|
+
activeIndex++;
|
|
4757
|
+
}
|
|
4758
|
+
}
|
|
4759
|
+
});
|
|
4760
|
+
}
|
|
4761
|
+
}
|
|
4762
|
+
};
|
|
4763
|
+
return (_ctx, _cache) => {
|
|
4764
|
+
return openBlock(), createBlock(SubTableAction, {
|
|
4765
|
+
showQuickFillBtn: "",
|
|
4766
|
+
menus,
|
|
4767
|
+
onMenuClick
|
|
4768
|
+
});
|
|
4769
|
+
};
|
|
4770
|
+
}
|
|
4771
|
+
});
|
|
4772
|
+
const DocumentPaper = /* @__PURE__ */ defineComponent({
|
|
4773
|
+
name: "NocodeDocumentPaper",
|
|
4774
|
+
props: {
|
|
4775
|
+
/** 页面内容信息 */
|
|
4776
|
+
page: {
|
|
4777
|
+
type: Object,
|
|
4778
|
+
required: true
|
|
4779
|
+
},
|
|
4780
|
+
/** 映射信息 */
|
|
4781
|
+
basicInfo: {
|
|
4782
|
+
type: Object,
|
|
4783
|
+
required: true
|
|
4784
|
+
},
|
|
4785
|
+
/** 表单数据 */
|
|
4786
|
+
formState: {
|
|
4787
|
+
type: Object,
|
|
4788
|
+
required: true
|
|
4789
|
+
},
|
|
4790
|
+
/** 模板数据中心 */
|
|
4791
|
+
widgetCenter: {
|
|
4792
|
+
type: Object,
|
|
4793
|
+
required: true
|
|
4794
|
+
},
|
|
4795
|
+
/** 是否是移动端渲染 */
|
|
4796
|
+
isMobile: {
|
|
4797
|
+
type: Boolean
|
|
4798
|
+
},
|
|
4799
|
+
selfInfoList: {
|
|
4800
|
+
type: Array
|
|
4801
|
+
}
|
|
4802
|
+
},
|
|
4803
|
+
setup(props, {
|
|
4804
|
+
slots
|
|
4805
|
+
}) {
|
|
4806
|
+
provide(NCB_PROVIDE.DATA_RELATION_SHIP, props.basicInfo);
|
|
4807
|
+
provide(NCB_PROVIDE.FORM_INST_LIST, props.selfInfoList);
|
|
4808
|
+
const tmplBomCMap = inject(NCB_PROVIDE.TMPL_BOM_CONTROLLER_MAP);
|
|
4809
|
+
const tmplBomController = computed(() => tmplBomCMap.value?.[props.basicInfo?.uniqueId]);
|
|
4810
|
+
const subTableCoreFactoryMap = inject(NCB_PROVIDE.SUB_TABLE_CORE_FACTORY_MAP);
|
|
4811
|
+
const subTableCoreFactory = computed(() => subTableCoreFactoryMap.value?.[props.basicInfo?.uniqueId]);
|
|
4812
|
+
const fixedTableInfoMap = computed(() => {
|
|
4813
|
+
const info = props.selfInfoList?.[0];
|
|
4814
|
+
const map = {};
|
|
4815
|
+
if (!info) {
|
|
4816
|
+
return map;
|
|
4817
|
+
}
|
|
4818
|
+
const designer = JSON.parse(info.designerJson || "{}");
|
|
4819
|
+
const fixedTables = designer.sheets?.[0]?.paper?.fixedTables || designer.fixedTables || [];
|
|
4820
|
+
fixedTables.forEach((table) => {
|
|
4821
|
+
const {
|
|
4822
|
+
field,
|
|
4823
|
+
model,
|
|
4824
|
+
range,
|
|
4825
|
+
dgRange,
|
|
4826
|
+
fillDirection
|
|
4827
|
+
} = table;
|
|
4828
|
+
const {
|
|
4829
|
+
r: x,
|
|
4830
|
+
t: y
|
|
4831
|
+
} = range;
|
|
4832
|
+
map[[x, y].join()] = {
|
|
4833
|
+
subFieldKey: field,
|
|
4834
|
+
subModelKey: model,
|
|
4835
|
+
range,
|
|
4836
|
+
dgRange,
|
|
4837
|
+
fillDirection,
|
|
4838
|
+
quickFill: table.quickFill
|
|
4839
|
+
};
|
|
4840
|
+
});
|
|
4841
|
+
return map;
|
|
4842
|
+
});
|
|
4843
|
+
const mainTableRef = ref();
|
|
4844
|
+
const isPdfMode = inject(NCB_PROVIDE.IS_PDF, false);
|
|
4845
|
+
const openFillFieldsModal = inject(NCB_PROVIDE.MOBILE_FILL_FIELDS_POPUP);
|
|
4846
|
+
const widget = props.widgetCenter?.[ComponentTypeEnum.PAPER];
|
|
4847
|
+
const {
|
|
4848
|
+
pageMargins,
|
|
4849
|
+
pageSize,
|
|
4850
|
+
pageWidth,
|
|
4851
|
+
pageHeight,
|
|
4852
|
+
colsWidth,
|
|
4853
|
+
subTable2DList
|
|
4854
|
+
} = widget.props;
|
|
4855
|
+
provide(NCB_PROVIDE.PAGER, widget);
|
|
4856
|
+
const size = [pageWidth, pageHeight];
|
|
4857
|
+
const sortSize = size.slice().sort();
|
|
4858
|
+
const isLandscape = JSON.stringify(size) !== JSON.stringify(sortSize);
|
|
4859
|
+
const orientation = isLandscape ? "landscape" : "portrait";
|
|
4860
|
+
const resultSize = isLandscape && isPdfMode ? sortSize : size;
|
|
4861
|
+
const paddings = pageMargins?.split(" ");
|
|
4862
|
+
const config = {
|
|
4863
|
+
cls: orientation,
|
|
4864
|
+
style: {
|
|
4865
|
+
width: `${resultSize[0]}mm`,
|
|
4866
|
+
height: `${resultSize[1]}mm`
|
|
4867
|
+
}
|
|
4868
|
+
};
|
|
4869
|
+
const paperStyles = {
|
|
4870
|
+
width: `${pageWidth}mm`,
|
|
4871
|
+
minWidth: `${pageWidth}mm`,
|
|
4872
|
+
height: `${pageHeight}mm`,
|
|
4873
|
+
padding: pageMargins,
|
|
4874
|
+
"--pageWidth": `-${pageWidth}mm`
|
|
4875
|
+
};
|
|
4876
|
+
const overlayStyle = {
|
|
4877
|
+
["--offset-top"]: paddings?.[0] || "0px",
|
|
4878
|
+
["--offset-right"]: paddings?.[1] || "0px",
|
|
4879
|
+
["--offset-bottom"]: paddings?.[2] || "0px",
|
|
4880
|
+
["--offset-left"]: paddings?.[3] || "0px"
|
|
4881
|
+
};
|
|
4882
|
+
const getWidgetAttrs = (tdInfo) => {
|
|
4883
|
+
const attrInfo = {
|
|
4884
|
+
formData: props.formState
|
|
4885
|
+
};
|
|
4886
|
+
const field = tdInfo.props.fixedTableFieldId ?? "";
|
|
4887
|
+
if (tdInfo.props.isNewFixedTableTd) {
|
|
4888
|
+
const cellFixedTableDataIdx = tdInfo.cellFixedTableDataIdx ?? 0;
|
|
4889
|
+
Object.assign(attrInfo, {
|
|
4890
|
+
formData: props.formState?.[field]?.[cellFixedTableDataIdx] ?? {},
|
|
4891
|
+
subtableFieldId: field,
|
|
4892
|
+
realRowIndex: cellFixedTableDataIdx,
|
|
4893
|
+
pageRowIndex: cellFixedTableDataIdx
|
|
4894
|
+
});
|
|
4895
|
+
} else if (tdInfo.props.isNewCheckTable2D) {
|
|
4896
|
+
const {
|
|
4897
|
+
checkTableType
|
|
4898
|
+
} = tdInfo.props;
|
|
4899
|
+
const rowIdx = tdInfo.cellCheckTableDataRowIdx ?? 0;
|
|
4900
|
+
const colIdx = tdInfo.cellCheckTableDataColIdx ?? 0;
|
|
4901
|
+
const baseInfo = {
|
|
4902
|
+
subtableFieldId: field,
|
|
4903
|
+
realRowIndex: rowIdx,
|
|
4904
|
+
pageRowIndex: rowIdx,
|
|
4905
|
+
/** 检验表列坐标,与 realRowIndex 解耦,不改变原有 formData 绑定逻辑 */
|
|
4906
|
+
realColIndex: colIdx
|
|
4907
|
+
};
|
|
4908
|
+
switch (checkTableType) {
|
|
4909
|
+
case "col":
|
|
4910
|
+
baseInfo.formData = props.formState?.[field]?.[colIdx] ?? {};
|
|
4911
|
+
baseInfo.realRowIndex = colIdx;
|
|
4912
|
+
baseInfo.pageRowIndex = colIdx;
|
|
4913
|
+
break;
|
|
4914
|
+
case "row":
|
|
4915
|
+
baseInfo.formData = props.formState?.[field]?.[rowIdx] ?? {};
|
|
4916
|
+
break;
|
|
4917
|
+
case "child":
|
|
4918
|
+
baseInfo.formData = props.formState?.[field]?.[rowIdx]?.["_2DTABLE_"]?.[colIdx] ?? {};
|
|
4919
|
+
baseInfo.childSubTableDataIndex = colIdx;
|
|
4920
|
+
break;
|
|
4921
|
+
}
|
|
4922
|
+
Object.assign(attrInfo, baseInfo);
|
|
4923
|
+
}
|
|
4924
|
+
return attrInfo;
|
|
4925
|
+
};
|
|
4926
|
+
onMounted(async () => {
|
|
4927
|
+
if (props.basicInfo.renderModeType === RenderModeEnum.ViewMode) {
|
|
4928
|
+
await waitDomStable(mainTableRef.value, void 0, void 0, props.basicInfo.__isPrintRender);
|
|
4929
|
+
mergeMarkedTd();
|
|
4930
|
+
}
|
|
4931
|
+
});
|
|
4932
|
+
return () => createVNode("div", {
|
|
4933
|
+
"class": ["cmp-paper-wrapper", pageSize, config.cls, {
|
|
4934
|
+
"print-view": isPdfMode,
|
|
4935
|
+
// 单份打印可选隐藏字段控件底色;未显式传 false 时保持查看态底色。
|
|
4936
|
+
"hide-print-field-bg": props.basicInfo.showPrintFieldBg === false
|
|
4937
|
+
}],
|
|
4938
|
+
"style": {
|
|
4939
|
+
...config.style,
|
|
4940
|
+
...overlayStyle
|
|
4941
|
+
},
|
|
4942
|
+
"data-nocode-orientation": config.cls,
|
|
4943
|
+
"data-nocode-width": pageWidth,
|
|
4944
|
+
"data-nocode-height": pageHeight
|
|
4945
|
+
}, [createVNode("div", {
|
|
4946
|
+
"class": "cmp-paper",
|
|
4947
|
+
"style": paperStyles
|
|
4948
|
+
}, [createVNode("div", {
|
|
4949
|
+
"class": "cmp-paper-overlay"
|
|
4950
|
+
}, [slots.annotation?.(), widget.headerWidgets && createVNode("div", {
|
|
4951
|
+
"class": "paper-header"
|
|
4952
|
+
}, [slots.overlay?.({
|
|
4953
|
+
widgets: widget.headerWidgets
|
|
4954
|
+
})]), widget.footerWidgets && createVNode("div", {
|
|
4955
|
+
"class": "paper-footer"
|
|
4956
|
+
}, [slots.overlay?.({
|
|
4957
|
+
widgets: widget.footerWidgets
|
|
4958
|
+
})]), widget.watermarks && createVNode("div", {
|
|
4959
|
+
"class": "paper-watermark"
|
|
4960
|
+
}, [slots.overlay?.({
|
|
4961
|
+
widgets: widget.watermarks
|
|
4962
|
+
})])]), createVNode("div", {
|
|
4963
|
+
"class": "cmp-paper-container"
|
|
4964
|
+
}, [createVNode("table", {
|
|
4965
|
+
"ref": mainTableRef,
|
|
4966
|
+
"class": "main-table-wrapper",
|
|
4967
|
+
"cellpadding": "0",
|
|
4968
|
+
"cellspacing": "0"
|
|
4969
|
+
}, [createVNode("colgroup", null, [colsWidth.map((cw, cwIdx) => createVNode("col", {
|
|
4970
|
+
"key": cwIdx,
|
|
4971
|
+
"width": cw
|
|
4972
|
+
}, null))]), createVNode("tbody", null, [props.page.containerIds.map((trId, trIndex) => {
|
|
4973
|
+
const trInfo = props.widgetCenter[trId];
|
|
4974
|
+
const tdIds = trInfo.nextIds;
|
|
4975
|
+
const height = props.page.dynamicRowHeights?.[trId] || trInfo.props.height;
|
|
4976
|
+
return createVNode("tr", {
|
|
4977
|
+
"key": `${trId}_${trIndex}`,
|
|
4978
|
+
"height": height
|
|
4979
|
+
}, [tdIds.map((tdId, tdIndex) => {
|
|
4980
|
+
const tdInfo = props.widgetCenter[tdId];
|
|
4981
|
+
const tdAttrs = {
|
|
4982
|
+
key: tdId,
|
|
4983
|
+
id: tdId,
|
|
4984
|
+
hidden: tdInfo.cellHidden,
|
|
4985
|
+
borderAttrs: tdInfo.props.sourceBorderAttrs,
|
|
4986
|
+
autoMerge: tdInfo.fillDirection === "x" ? tdInfo.xAutoMerge : tdInfo.autoMerge,
|
|
4987
|
+
fillDirection: tdInfo.fillDirection,
|
|
4988
|
+
...pick(tdInfo.props, ["rowspan", "colspan", "class"])
|
|
4989
|
+
};
|
|
4990
|
+
const realTdAttrInfo = props.page.mergeBlock?.[tdId];
|
|
4991
|
+
const dynamicConfig = {};
|
|
4992
|
+
if (realTdAttrInfo) {
|
|
4993
|
+
Object.assign(tdAttrs, {
|
|
4994
|
+
...pick(realTdAttrInfo, ["rowspan", "colspan", "borderAttrs"]),
|
|
4995
|
+
hidden: false
|
|
4996
|
+
});
|
|
4997
|
+
Object.assign(dynamicConfig, {
|
|
4998
|
+
...pick(realTdAttrInfo, ["visibleText", "sourceTdId", "isDynRo"])
|
|
4999
|
+
});
|
|
5000
|
+
}
|
|
5001
|
+
const subInfo = props.page.subTableMap?.[tdId];
|
|
5002
|
+
if (subInfo && subInfo.wrapperTdId === tdId) {
|
|
5003
|
+
const subWidget = props.widgetCenter[subInfo.widgetId];
|
|
5004
|
+
const field = subWidget.props.field ?? "";
|
|
5005
|
+
const relationObj = props.page.relation[field] ?? {};
|
|
5006
|
+
const subTable2dItem = subTable2DList.find((item) => item.subTable2d && item.rowSubFieldKey === field);
|
|
5007
|
+
if (subWidget.props.isMaterialConsumeTable) {
|
|
5008
|
+
const tableController = tmplBomController.value?.tableControllers[subWidget.props.materialConsumeTableId];
|
|
5009
|
+
if (tableController) {
|
|
5010
|
+
return createVNode("td", mergeProps({
|
|
5011
|
+
"style": tdInfo.style
|
|
5012
|
+
}, tdAttrs), [createVNode(MaterialConsumeTable, {
|
|
5013
|
+
"subInfo": subInfo,
|
|
5014
|
+
"widget": subWidget,
|
|
5015
|
+
"formData": props.formState,
|
|
5016
|
+
"widgetCenter": props.widgetCenter,
|
|
5017
|
+
"start": relationObj?.start,
|
|
5018
|
+
"end": relationObj.end,
|
|
5019
|
+
"isMobile": props.isMobile,
|
|
5020
|
+
"tableController": tableController
|
|
5021
|
+
}, {
|
|
5022
|
+
widget: (subProps) => slots.widget?.(subProps),
|
|
5023
|
+
subAction: (subProps) => slots.subAction?.(subProps)
|
|
5024
|
+
})]);
|
|
5025
|
+
}
|
|
5026
|
+
}
|
|
5027
|
+
const subTableCore = subTableCoreFactory.value?.getSubCoreByTid(subInfo.widgetId);
|
|
5028
|
+
return createVNode("td", mergeProps({
|
|
5029
|
+
"style": tdInfo.style
|
|
5030
|
+
}, tdAttrs), [createVNode(DocumentSubTable, {
|
|
5031
|
+
"subInfo": subInfo,
|
|
5032
|
+
"widget": subWidget,
|
|
5033
|
+
"subTable2dItem": subTable2dItem,
|
|
5034
|
+
"formData": props.formState,
|
|
5035
|
+
"widgetCenter": props.widgetCenter,
|
|
5036
|
+
"start": relationObj?.start,
|
|
5037
|
+
"end": relationObj.end,
|
|
5038
|
+
"isMobile": props.isMobile,
|
|
5039
|
+
"subTableCore": subTableCore
|
|
5040
|
+
}, {
|
|
5041
|
+
widget: (subProps) => slots.widget?.(subProps),
|
|
5042
|
+
subAction: (subProps) => slots.subAction?.(subProps)
|
|
5043
|
+
})]);
|
|
5044
|
+
}
|
|
5045
|
+
if (tdInfo.cellValueType) {
|
|
5046
|
+
const widgetAttrs = getWidgetAttrs(tdInfo);
|
|
5047
|
+
if (props.isMobile) {
|
|
5048
|
+
Object.assign(tdAttrs, {
|
|
5049
|
+
onClick: setSelectMobileTdId.bind(null, tdInfo, props.basicInfo, props.widgetCenter, openFillFieldsModal, -1)
|
|
5050
|
+
});
|
|
5051
|
+
}
|
|
5052
|
+
const coord = [tdIndex + 1, trIndex + 1].join();
|
|
5053
|
+
const fixedTableInfo = fixedTableInfoMap.value[coord];
|
|
5054
|
+
return createVNode(BorderTD, mergeProps({
|
|
5055
|
+
"style": tdInfo.style
|
|
5056
|
+
}, tdAttrs, {
|
|
5057
|
+
"isEmpty": true
|
|
5058
|
+
}), {
|
|
5059
|
+
default: () => tdInfo.cellValueType !== CellType.Default || tdInfo.cellWidget.props.value ? slots.widget?.({
|
|
5060
|
+
tdInfo,
|
|
5061
|
+
...widgetAttrs,
|
|
5062
|
+
dynamicConfig
|
|
5063
|
+
}) : null,
|
|
5064
|
+
// [固定表]右上角 加装 操作按钮
|
|
5065
|
+
tableAction: fixedTableInfo?.quickFill ? () => createVNode(_sfc_main$2, {
|
|
5066
|
+
"formState": props.formState,
|
|
5067
|
+
"widgetCenter": props.widgetCenter,
|
|
5068
|
+
"fixedTableInfo": fixedTableInfo
|
|
5069
|
+
}, null) : null
|
|
5070
|
+
});
|
|
5071
|
+
}
|
|
5072
|
+
if (realTdAttrInfo && tdInfo.cellHidden) {
|
|
5073
|
+
const sourceTdInfo = props.widgetCenter[dynamicConfig?.sourceTdId];
|
|
5074
|
+
const widgetAttrs = getWidgetAttrs(tdInfo);
|
|
5075
|
+
return createVNode(BorderTD, mergeProps({
|
|
5076
|
+
"style": tdInfo.style
|
|
5077
|
+
}, tdAttrs, {
|
|
5078
|
+
"isEmpty": true
|
|
5079
|
+
}), {
|
|
5080
|
+
default: () => [dynamicConfig?.isDynRo ? slots.widget?.({
|
|
5081
|
+
tdInfo: sourceTdInfo,
|
|
5082
|
+
...widgetAttrs,
|
|
5083
|
+
dynamicConfig
|
|
5084
|
+
}) : null]
|
|
5085
|
+
});
|
|
5086
|
+
}
|
|
5087
|
+
})]);
|
|
5088
|
+
})])])])])]);
|
|
5089
|
+
}
|
|
5090
|
+
});
|
|
5091
|
+
const _hoisted_1 = { class: "document-quick-fill-container" };
|
|
5092
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
5093
|
+
__name: "dynamic-quick-fill-modal",
|
|
5094
|
+
props: {
|
|
5095
|
+
columns: {},
|
|
5096
|
+
modal: {},
|
|
5097
|
+
callback: {}
|
|
5098
|
+
},
|
|
5099
|
+
setup(__props) {
|
|
5100
|
+
const props = __props;
|
|
5101
|
+
const rows = ref([]);
|
|
5102
|
+
function makeEmptyRow() {
|
|
5103
|
+
return Object.fromEntries(props.columns.map((c) => [c.prop, ""]));
|
|
5104
|
+
}
|
|
5105
|
+
function initRows(count = 10) {
|
|
5106
|
+
rows.value = Array.from({ length: count }, () => makeEmptyRow());
|
|
5107
|
+
}
|
|
5108
|
+
onBeforeMount(() => {
|
|
5109
|
+
initRows(200);
|
|
5110
|
+
});
|
|
5111
|
+
async function onSave() {
|
|
5112
|
+
try {
|
|
5113
|
+
return {
|
|
5114
|
+
ok: true,
|
|
5115
|
+
params: {
|
|
5116
|
+
data: processRows(unref(rows), props.columns)
|
|
5117
|
+
}
|
|
5118
|
+
};
|
|
5119
|
+
} catch (err) {
|
|
5120
|
+
console.warn(err);
|
|
5121
|
+
}
|
|
5122
|
+
return {
|
|
5123
|
+
ok: false
|
|
5124
|
+
};
|
|
5125
|
+
}
|
|
5126
|
+
useModal(onSave);
|
|
5127
|
+
return (_ctx, _cache) => {
|
|
5128
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
5129
|
+
_cache[0] || (_cache[0] = createElementVNode("div", { class: "quick-fill-tips" }, [
|
|
5130
|
+
createElementVNode("i", { class: "iconfont icon-zhuyi" }),
|
|
5131
|
+
createElementVNode("ul", { class: "tips-list" }, [
|
|
5132
|
+
createElementVNode("li", null, "可将Excel内容粘贴到表格中,支持使用复制、粘贴、删除快捷键"),
|
|
5133
|
+
createElementVNode("li", null, "表单中支持快速填报的字段类型:文本、长文本、整数、长整数、小数、精度小数、日期、时间、日期时间、LOT/SN、报废物料批次、枚举单选、枚举多选(选项间以“,”分割)"),
|
|
5134
|
+
createElementVNode("li", null, "当前快速填报最多支持200行")
|
|
5135
|
+
])
|
|
5136
|
+
], -1)),
|
|
5137
|
+
createVNode(unref(q), {
|
|
5138
|
+
class: "cell-border",
|
|
5139
|
+
range: "",
|
|
5140
|
+
resize: "",
|
|
5141
|
+
colSize: 200,
|
|
5142
|
+
source: rows.value,
|
|
5143
|
+
columns: __props.columns,
|
|
5144
|
+
theme: "material",
|
|
5145
|
+
"hide-attribution": "",
|
|
5146
|
+
"apply-on-close": true,
|
|
5147
|
+
"row-headers": { prop: "rowIndex", name: "序号", size: 60 }
|
|
5148
|
+
}, null, 8, ["source", "columns"])
|
|
5149
|
+
]);
|
|
5150
|
+
};
|
|
5151
|
+
}
|
|
5152
|
+
});
|
|
5153
|
+
const DynamicQuickFillModal = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-861cfdba"]]);
|
|
4686
5154
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4687
|
-
__name: "
|
|
5155
|
+
__name: "dynamic-table-action",
|
|
4688
5156
|
props: {
|
|
4689
5157
|
subTableFieldId: {},
|
|
4690
5158
|
mobileTdIdGroups: {},
|
|
@@ -4746,7 +5214,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
4746
5214
|
const onMenuClick = async ({ key, actionValue }) => {
|
|
4747
5215
|
if (key === "quickFillRowCurrent") {
|
|
4748
5216
|
const res = await window.NocodeAdapter.utils.overlay.modal(
|
|
4749
|
-
|
|
5217
|
+
DynamicQuickFillModal,
|
|
4750
5218
|
{ columns: fieldColumn.value },
|
|
4751
5219
|
{ title: "快速填报", width: "1060px" }
|
|
4752
5220
|
);
|
|
@@ -4782,20 +5250,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
4782
5250
|
};
|
|
4783
5251
|
}
|
|
4784
5252
|
});
|
|
4785
|
-
const
|
|
5253
|
+
const DynamicTableAction = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-94e9d614"]]);
|
|
4786
5254
|
export {
|
|
4787
5255
|
BorderTD as B,
|
|
4788
5256
|
DeviceLinkTmplUtil as D,
|
|
4789
|
-
|
|
5257
|
+
FixedQuickFillModal as F,
|
|
4790
5258
|
MaterialConsumptionPatternEnum as M,
|
|
4791
5259
|
SubTableCore as S,
|
|
4792
|
-
_sfc_main$
|
|
5260
|
+
_sfc_main$6 as _,
|
|
4793
5261
|
useFormTmplConfig as a,
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
5262
|
+
useStyles as b,
|
|
5263
|
+
useDependency as c,
|
|
5264
|
+
useValidator as d,
|
|
4797
5265
|
DocumentPaper as e,
|
|
4798
|
-
|
|
5266
|
+
DynamicTableAction as f,
|
|
4799
5267
|
MaterialConsumeTableController as g,
|
|
4800
5268
|
SubTableActionMenuTypeEnum as h,
|
|
4801
5269
|
getMenuByAction as i,
|
|
@@ -4804,10 +5272,12 @@ export {
|
|
|
4804
5272
|
getInsertSubMenu as l,
|
|
4805
5273
|
useMaterialBalance as m,
|
|
4806
5274
|
commonUtils as n,
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
|
|
5275
|
+
DeviceConnector as o,
|
|
5276
|
+
DocumentLoading as p,
|
|
5277
|
+
DynamicQuickFillModal as q,
|
|
5278
|
+
FormTmplConfigController as r,
|
|
5279
|
+
MCDataUtil as s,
|
|
5280
|
+
useOnlineFormActionButton as t,
|
|
5281
|
+
useOnlineFormTransformField2Component as u,
|
|
5282
|
+
validate as v
|
|
4813
5283
|
};
|