cnhis-design-vue 3.1.14-beta.7.1 → 3.1.14
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/README.md +1 -1
- package/es/_virtual/plugin-vue_export-helper.js +9 -0
- package/es/node_modules/@formily/path/esm/contexts.js +22 -0
- package/es/node_modules/@formily/path/esm/destructor.js +124 -0
- package/es/node_modules/@formily/path/esm/index.js +579 -0
- package/es/node_modules/@formily/path/esm/matcher.js +199 -0
- package/es/node_modules/@formily/path/esm/parser.js +402 -0
- package/es/node_modules/@formily/path/esm/shared.js +73 -0
- package/es/node_modules/@formily/path/esm/tokenizer.js +287 -0
- package/es/node_modules/@formily/path/esm/tokens.js +240 -0
- package/es/node_modules/@formily/path/esm/types.js +17 -0
- package/es/packages/big-table/index.d.ts +14 -0
- package/es/packages/big-table/index.js +1 -2
- package/es/packages/big-table/src/BigTable.js +5 -3
- package/es/packages/big-table/src/BigTable.vue.d.ts +35 -19
- package/es/packages/big-table/src/BigTable.vue_vue_type_script_setup_true_lang.js +50 -31
- package/es/packages/big-table/src/bigTableProps.d.ts +4 -0
- package/es/packages/big-table/src/bigTableProps.js +1 -0
- package/es/packages/big-table/src/components/NoData.js +73 -3
- package/es/packages/big-table/src/components/edit-form/edit-input.js +15 -4
- package/es/packages/big-table/src/components/edit-form/edit-separate.js +89 -3
- package/es/packages/big-table/src/components/edit-form/edit-separate.vue.d.ts +25 -8
- package/es/packages/big-table/src/components/edit-form/edit-time.d.ts +43 -0
- package/es/packages/big-table/src/components/edit-form/edit-time.js +52 -0
- package/es/packages/big-table/src/components/input-button.js +34 -3
- package/es/packages/big-table/src/components/separate.js +29 -3
- package/es/packages/big-table/src/components/separate.vue.d.ts +3 -4
- package/es/packages/big-table/src/hooks/useColumnConfigAdaptor.js +34 -5
- package/es/packages/big-table/src/hooks/useEdit.d.ts +67 -7
- package/es/packages/big-table/src/hooks/useEdit.js +4 -3
- package/es/packages/big-table/src/hooks/useSeparateRow.d.ts +1 -1
- package/es/packages/big-table/src/hooks/useSeparateRow.js +14 -10
- package/es/packages/big-table/src/utils.js +2 -1
- package/es/packages/big-table/style/index.css +145 -2
- package/es/packages/bpmn-workflow/index.js +1 -2
- package/es/packages/bpmn-workflow/src/BpmnWorkflow.js +253 -3
- package/es/packages/button-print/index.js +1 -2
- package/es/packages/button-print/src/ButtonPrint.js +5 -3
- package/es/packages/button-print/src/ButtonPrint.vue_vue_type_script_setup_true_lang.js +6 -7
- package/es/packages/button-print/src/components/IdentityVerification.js +129 -3
- package/es/packages/button-print/src/utils/print.d.ts +1 -1
- package/es/packages/button-print/src/utils/print.js +4 -4
- package/es/packages/chunk-upload/index.js +1 -1
- package/es/packages/chunk-upload/src/chunk-upload-new.js +474 -3
- package/es/packages/chunk-upload/src/vod-chunk-upload/index.js +2 -3
- package/es/packages/chunk-upload/src/vod-chunk-upload/vod-chunk-upload.js +328 -3
- package/es/packages/chunk-upload/src/vod-upload-modal.js +3 -4
- package/es/packages/drag-layout/index.js +1 -2
- package/es/packages/drag-layout/src/DragFormLeftItem.js +123 -3
- package/es/packages/drag-layout/src/DragFormRightItem.js +268 -3
- package/es/packages/drag-layout/src/DragLayout.js +658 -3
- package/es/packages/fabric-chart/index.d.ts +2 -0
- package/es/packages/fabric-chart/index.js +1 -2
- package/es/packages/fabric-chart/src/FabricChart.js +315 -3
- package/es/packages/fabric-chart/src/FabricChart.vue.d.ts +2 -0
- package/es/packages/fabric-chart/src/components/PopupTip.js +33 -3
- package/es/packages/fabric-chart/src/hooks/useCenter.js +41 -25
- package/es/packages/fabric-chart/src/hooks/useDraw.js +1 -0
- package/es/packages/fabric-chart/src/hooks/useEvent.js +9 -7
- package/es/packages/fabric-chart/src/hooks/useLeft.js +28 -17
- package/es/packages/fabric-chart/src/hooks/useRight.js +2 -13
- package/es/packages/fabric-chart/src/hooks/useTop.js +9 -10
- package/es/packages/fabric-chart/src/interface.d.ts +4 -0
- package/es/packages/field-set/index.d.ts +2509 -5172
- package/es/packages/field-set/index.js +1 -2
- package/es/packages/field-set/src/FieldSet.js +346 -3
- package/es/packages/field-set/src/FieldSet.vue.d.ts +2494 -5176
- package/es/packages/form-render/index.d.ts +0 -2
- package/es/packages/form-render/index.js +2 -3
- package/es/packages/form-render/src/FormRender.js +188 -3
- package/es/packages/form-render/src/FormRender.vue.d.ts +0 -2
- package/es/packages/form-render/src/components/renderer/cascader.d.ts +6 -6
- package/es/packages/form-render/src/components/renderer/cascader.js +73 -85
- package/es/packages/form-render/src/components/renderer/combination.d.ts +6 -0
- package/es/packages/form-render/src/components/renderer/combination.js +55 -19
- package/es/packages/form-render/src/components/renderer/formItem.js +1 -1
- package/es/packages/form-render/src/components/renderer/input.js +5 -16
- package/es/packages/form-render/src/components/renderer/inputNumber.d.ts +12 -0
- package/es/packages/form-render/src/components/renderer/inputNumber.js +11 -4
- package/es/packages/form-render/src/components/renderer/radio.d.ts +12 -4
- package/es/packages/form-render/src/components/renderer/radio.js +23 -5
- package/es/packages/form-render/src/components/renderer/select.js +56 -56
- package/es/packages/form-render/src/components/renderer/simpleComponent.d.ts +17 -2
- package/es/packages/form-render/src/components/renderer/simpleComponent.js +16 -14
- package/es/packages/form-render/src/hooks/useAsyncQueue.d.ts +1 -1
- package/es/packages/form-render/src/hooks/useAsyncQueue.js +1 -1
- package/es/packages/form-render/src/hooks/useChangeContext.d.ts +1 -1
- package/es/packages/form-render/src/hooks/useChangeContext.js +1 -1
- package/es/packages/form-render/src/hooks/useFieldListAdaptor.js +11 -8
- package/es/packages/form-render/src/hooks/useFormItemDeps.d.ts +3 -2
- package/es/packages/form-render/src/hooks/useFormItemDeps.js +5 -6
- package/es/packages/form-render/src/hooks/useFormRequest.d.ts +2 -2
- package/es/packages/form-render/src/types/fieldItem.d.ts +123 -35
- package/es/packages/form-render/src/types/index.d.ts +4 -2
- package/es/packages/form-render/src/utils/index.d.ts +7 -4
- package/es/packages/form-render/src/utils/index.js +40 -14
- package/es/packages/form-table/index.js +1 -2
- package/es/packages/form-table/src/FormTable.js +475 -3
- package/es/packages/form-table/src/components/index.js +28 -42
- package/es/packages/form-table/src/components/table-age.js +232 -3
- package/es/packages/form-table/src/components/table-date-picker.js +176 -3
- package/es/packages/form-table/src/components/table-digital.js +138 -3
- package/es/packages/form-table/src/components/table-input-password.js +138 -3
- package/es/packages/form-table/src/components/table-input.js +124 -3
- package/es/packages/form-table/src/components/table-month-picker.js +100 -3
- package/es/packages/form-table/src/components/table-search-more.js +5 -3
- package/es/packages/form-table/src/components/table-search-more.vue_vue_type_script_setup_true_lang.js +2 -2
- package/es/packages/form-table/src/components/table-search.js +5 -3
- package/es/packages/form-table/src/components/table-search.vue_vue_type_script_setup_true_lang.js +2 -2
- package/es/packages/form-table/src/components/table-select-multiple.js +161 -3
- package/es/packages/form-table/src/components/table-select.js +156 -3
- package/es/packages/form-table/src/components/table-textarea.js +154 -3
- package/es/packages/form-table/src/components/table-time-picker.js +146 -3
- package/es/packages/form-table/src/components/table-tree-select.js +282 -3
- package/es/packages/form-table/src/components/text-over-tooltip.js +63 -3
- package/es/packages/index.css +148 -2
- package/es/packages/info-header/index.d.ts +1375 -356
- package/es/packages/info-header/index.js +1 -2
- package/es/packages/info-header/src/HiddenContent.js +65 -3
- package/es/packages/info-header/src/HiddenContent.vue.d.ts +689 -178
- package/es/packages/info-header/src/InfoEllipsis.js +43 -0
- package/es/packages/info-header/src/InfoEllipsis.vue.d.ts +833 -0
- package/es/packages/info-header/src/InfoHeader.js +229 -3
- package/es/packages/info-header/src/InfoHeader.vue.d.ts +1375 -356
- package/es/packages/info-header/style/index.css +3 -0
- package/es/packages/map/index.js +1 -2
- package/es/packages/map/src/Map.js +337 -3
- package/es/packages/scale-view/index.js +1 -2
- package/es/packages/scale-view/src/ScaleView.js +418 -3
- package/es/packages/scale-view/src/components/AnswerParse.js +79 -3
- package/es/packages/scale-view/src/components/EvaluateCountdown.js +108 -3
- package/es/packages/scale-view/src/components/EvaluatePage.js +140 -3
- package/es/packages/scale-view/src/components/LoadingCom.js +17 -5
- package/es/packages/scale-view/src/components/NoData.js +73 -3
- package/es/packages/scale-view/src/components/formitem/r-cascader.js +3 -3
- package/es/packages/scale-view/src/components/formitem/r-select.js +3 -3
- package/es/packages/scale-view/src/components/formitem/text-over-tooltip/TextOverTooltip.js +78 -3
- package/es/packages/select-label/index.js +3 -5
- package/es/packages/select-label/src/LabelFormContent.js +441 -3
- package/es/packages/select-label/src/SelectLabel.js +5 -3
- package/es/packages/select-label/src/SelectLabel.vue_vue_type_script_setup_true_lang.js +5 -21
- package/es/packages/select-label/src/components/label-classify.js +128 -3
- package/es/packages/select-person/index.js +1 -2
- package/es/packages/select-person/src/SearchTree.js +5 -3
- package/es/packages/select-person/src/SearchTree.vue_vue_type_script_setup_true_lang.js +2 -2
- package/es/packages/select-person/src/SelectPerson.js +5 -3
- package/es/packages/select-person/src/SelectPerson.vue_vue_type_script_setup_true_lang.js +4 -5
- package/es/packages/shortcut-provider/index.js +1 -2
- package/es/packages/shortcut-provider/src/ShortcutProvider.js +33 -3
- package/es/packages/shortcut-provider/src/types/index.d.ts +11 -9
- package/es/packages/shortcut-provider/src/utils/index.js +5 -5
- package/es/packages/shortcut-setter/index.d.ts +3247 -1486
- package/es/packages/shortcut-setter/index.js +1 -2
- package/es/packages/shortcut-setter/src/ShortcutSetter.js +42 -3
- package/es/packages/shortcut-setter/src/ShortcutSetter.vue.d.ts +3247 -1486
- package/es/packages/shortcut-setter/src/ShortcutSetterItem.js +139 -3
- package/es/packages/shortcut-setter/src/ShortcutSetterItem.vue.d.ts +1700 -1661
- package/es/packages/steps-wheel/index.js +1 -2
- package/es/packages/steps-wheel/src/StepsWheel.js +264 -3
- package/es/packages/time-line/index.js +1 -2
- package/es/packages/time-line/src/TimeLine.js +69 -3
- package/es/src/components/SelectPage/SelectPage.js +62 -3
- package/es/src/components/SelectPage/index.js +2 -3
- package/es/src/components/SlotRender/SlotRender.d.ts +3 -3
- package/es/src/components/SlotRender/SlotRender.js +4 -4
- package/es/src/components/SvgIcon/SvgIcon.js +35 -3
- package/es/src/components/SvgIcon/index.js +2 -3
- package/es/src/components/TextOverTooltip/TextOverTooltip.js +75 -3
- package/es/src/components/TextOverTooltip/index.js +2 -3
- package/es/src/components/player-vod/index.js +13 -3
- package/es/src/utils/anime.d.ts +1 -1
- package/package.json +153 -153
- package/es/packages/big-table/src/components/NoData.vue_vue_type_script_setup_true_lang.js +0 -72
- package/es/packages/big-table/src/components/edit-form/edit-separate.vue_vue_type_script_setup_true_lang.js +0 -69
- package/es/packages/big-table/src/components/input-button.vue_vue_type_script_setup_true_lang.js +0 -33
- package/es/packages/big-table/src/components/separate.vue_vue_type_script_setup_true_lang.js +0 -24
- package/es/packages/bpmn-workflow/src/BpmnWorkflow.vue_vue_type_script_setup_true_lang.js +0 -252
- package/es/packages/button-print/src/components/IdentityVerification.vue_vue_type_script_setup_true_lang.js +0 -128
- package/es/packages/chunk-upload/src/chunk-upload-new.vue_vue_type_script_setup_true_lang.js +0 -473
- package/es/packages/chunk-upload/src/vod-chunk-upload/vod-chunk-upload.vue_vue_type_script_setup_true_lang.js +0 -327
- package/es/packages/drag-layout/src/DragFormLeftItem.vue_vue_type_script_setup_true_lang.js +0 -122
- package/es/packages/drag-layout/src/DragFormRightItem.vue_vue_type_script_setup_true_lang.js +0 -267
- package/es/packages/drag-layout/src/DragLayout.vue_vue_type_script_setup_true_lang.js +0 -659
- package/es/packages/fabric-chart/src/FabricChart.vue_vue_type_script_setup_true_lang.js +0 -305
- package/es/packages/fabric-chart/src/components/PopupTip.vue_vue_type_script_setup_true_lang.js +0 -32
- package/es/packages/field-set/src/FieldSet.vue_vue_type_script_setup_true_lang.js +0 -33
- package/es/packages/field-set/src/NewFieldSet.js +0 -4
- package/es/packages/field-set/src/NewFieldSet.vue.d.ts +0 -2608
- package/es/packages/field-set/src/NewFieldSet.vue_vue_type_script_setup_true_lang.js +0 -303
- package/es/packages/field-set/src/OldFieldSet.js +0 -4
- package/es/packages/field-set/src/OldFieldSet.vue.d.ts +0 -2620
- package/es/packages/field-set/src/OldFieldSet.vue_vue_type_script_setup_true_lang.js +0 -335
- package/es/packages/form-render/src/FormRender.vue_vue_type_script_setup_true_lang.js +0 -187
- package/es/packages/form-table/src/FormTable.vue_vue_type_script_setup_true_lang.js +0 -474
- package/es/packages/form-table/src/components/table-age.vue_vue_type_script_setup_true_lang.js +0 -232
- package/es/packages/form-table/src/components/table-date-picker.vue_vue_type_script_setup_true_lang.js +0 -175
- package/es/packages/form-table/src/components/table-digital.vue_vue_type_script_setup_true_lang.js +0 -138
- package/es/packages/form-table/src/components/table-input-password.vue_vue_type_script_setup_true_lang.js +0 -138
- package/es/packages/form-table/src/components/table-input.vue_vue_type_script_setup_true_lang.js +0 -124
- package/es/packages/form-table/src/components/table-month-picker.vue_vue_type_script_setup_true_lang.js +0 -99
- package/es/packages/form-table/src/components/table-select-multiple.vue_vue_type_script_setup_true_lang.js +0 -160
- package/es/packages/form-table/src/components/table-select.vue_vue_type_script_setup_true_lang.js +0 -155
- package/es/packages/form-table/src/components/table-textarea.vue_vue_type_script_setup_true_lang.js +0 -153
- package/es/packages/form-table/src/components/table-time-picker.vue_vue_type_script_setup_true_lang.js +0 -145
- package/es/packages/form-table/src/components/table-tree-select.vue_vue_type_script_setup_true_lang.js +0 -281
- package/es/packages/form-table/src/components/text-over-tooltip.vue_vue_type_script_setup_true_lang.js +0 -62
- package/es/packages/info-header/src/HiddenContent.vue_vue_type_script_setup_true_lang.js +0 -66
- package/es/packages/info-header/src/InfoHeader.vue_vue_type_script_setup_true_lang.js +0 -233
- package/es/packages/map/src/Map.vue_vue_type_script_setup_true_lang.js +0 -336
- package/es/packages/scale-view/src/ScaleView.vue_vue_type_script_setup_true_lang.js +0 -422
- package/es/packages/scale-view/src/components/AnswerParse.vue_vue_type_script_setup_true_lang.js +0 -78
- package/es/packages/scale-view/src/components/EvaluateCountdown.vue_vue_type_script_setup_true_lang.js +0 -107
- package/es/packages/scale-view/src/components/EvaluatePage.vue_vue_type_script_setup_true_lang.js +0 -139
- package/es/packages/scale-view/src/components/LoadingCom.vue_vue_type_template_id_413329b0_lang.js +0 -16
- package/es/packages/scale-view/src/components/NoData.vue_vue_type_script_setup_true_lang.js +0 -72
- package/es/packages/scale-view/src/components/formitem/text-over-tooltip/TextOverTooltip.vue_vue_type_script_setup_true_lang.js +0 -77
- package/es/packages/select-label/src/LabelFormContent.vue_vue_type_script_setup_true_lang.js +0 -441
- package/es/packages/select-label/src/components/label-classify.vue_vue_type_script_setup_true_lang.js +0 -127
- package/es/packages/shortcut-provider/src/ShortcutProvider.vue_vue_type_script_setup_true_lang.js +0 -32
- package/es/packages/shortcut-setter/src/ShortcutSetter.vue_vue_type_script_setup_true_lang.js +0 -38
- package/es/packages/shortcut-setter/src/ShortcutSetterItem.vue_vue_type_script_setup_true_lang.js +0 -125
- package/es/packages/steps-wheel/src/StepsWheel.vue_vue_type_script_setup_true_lang.js +0 -263
- package/es/packages/time-line/src/TimeLine.vue_vue_type_script_setup_true_lang.js +0 -68
- package/es/src/components/SelectPage/SelectPage.vue_vue_type_script_setup_true_lang.js +0 -61
- package/es/src/components/SvgIcon/SvgIcon.vue_vue_type_script_setup_true_lang.js +0 -34
- package/es/src/components/TextOverTooltip/TextOverTooltip.vue_vue_type_script_setup_true_lang.js +0 -74
- package/es/src/components/player-vod/index.vue_vue_type_script_setup_true_lang.js +0 -12
|
@@ -408,9 +408,7 @@ declare const FormRender: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
408
408
|
title: string;
|
|
409
409
|
}[]>;
|
|
410
410
|
formHeight: import("vue").ComputedRef<any>;
|
|
411
|
-
scrollTo: (id: string) => Promise<void>;
|
|
412
411
|
onScroll: () => void;
|
|
413
|
-
bindInfo: (info: import("../../../es/src/types").AnyObject) => import("../../../es/src/types").AnyObject;
|
|
414
412
|
queryWidget: (key: string, wrapperElement: HTMLElement, fieldList: import("./src/types").FieldItem[]) => Promise<{
|
|
415
413
|
widgetElement: HTMLInputElement | null | undefined;
|
|
416
414
|
widgetElementList: HTMLInputElement[];
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { COMPONENT_NAMESPACE } from '../../src/global/variable';
|
|
2
2
|
import { safeComponentRegister } from '../../src/utils';
|
|
3
|
-
import './src/FormRender.js';
|
|
4
|
-
import script from './src/FormRender.vue_vue_type_script_setup_true_lang.js';
|
|
3
|
+
import FormRender$1 from './src/FormRender.js';
|
|
5
4
|
export { useFieldListAdaptor } from './src/hooks/useFieldListAdaptor.js';
|
|
6
5
|
export { useFormRequest } from './src/hooks/useFormRequest.js';
|
|
7
6
|
export { useCommonLog } from './src/hooks/useCommonLog.js';
|
|
@@ -17,7 +16,7 @@ export { useInitialData } from './src/hooks/useInitialData.js';
|
|
|
17
16
|
export { useAnchor } from './src/hooks/useAnchor.js';
|
|
18
17
|
export { useFormContext } from './src/hooks/useFormContext.js';
|
|
19
18
|
|
|
20
|
-
const FormRender =
|
|
19
|
+
const FormRender = FormRender$1;
|
|
21
20
|
FormRender.install = function(app) {
|
|
22
21
|
safeComponentRegister(app, FormRender, COMPONENT_NAMESPACE + "FormRender");
|
|
23
22
|
};
|
|
@@ -1,4 +1,189 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { defineComponent, computed, watch, openBlock, createBlock, unref, withCtx, createElementBlock, createVNode, isRef, Fragment, renderList, createCommentVNode, createElementVNode, normalizeStyle, renderSlot, toDisplayString, nextTick } from 'vue';
|
|
2
|
+
import { createForm, onFieldValueChange, isField } from '@formily/core';
|
|
3
|
+
import { FormProvider, FormConsumer } from '@formily/vue';
|
|
4
|
+
import { cloneDeep } from 'lodash-es';
|
|
5
|
+
import { NForm, NTabs, NTabPane, NConfigProvider } from 'naive-ui';
|
|
6
|
+
import { FormItemLineBarDepKeyPrepend } from '../../../packages/form-render/src/constants';
|
|
7
|
+
import { queryDecorator, queryInput, getParentLinebar } from '../../../packages/form-render/src/utils';
|
|
8
|
+
import { useNuiThemeOverrides } from '../../../packages/form-table/src/hooks/useNuiThemeOverrides';
|
|
9
|
+
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.js';
|
|
10
|
+
import { useFormContext } from './hooks/useFormContext.js';
|
|
11
|
+
import { useInitialData } from './hooks/useInitialData.js';
|
|
12
|
+
import { useFieldListAdaptor } from './hooks/useFieldListAdaptor.js';
|
|
13
|
+
import { useFieldVisitor } from './hooks/useFieldVisitor.js';
|
|
14
|
+
import { useAnchor } from './hooks/useAnchor.js';
|
|
3
15
|
|
|
4
|
-
|
|
16
|
+
const _hoisted_1 = {
|
|
17
|
+
key: 0,
|
|
18
|
+
style: { "height": "50px" }
|
|
19
|
+
};
|
|
20
|
+
const _hoisted_2 = { style: { "white-space": "pre" } };
|
|
21
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
22
|
+
__name: "FormRender",
|
|
23
|
+
props: {
|
|
24
|
+
fieldList: { type: Array },
|
|
25
|
+
initialData: { type: Object, default: () => ({}) },
|
|
26
|
+
fieldVisitor: { type: Object },
|
|
27
|
+
column: { type: Number, default: 12 },
|
|
28
|
+
maxHeight: { type: [Number, String], default: "" },
|
|
29
|
+
anchor: { type: Boolean, default: false },
|
|
30
|
+
parallelism: { type: Number, default: 3 },
|
|
31
|
+
schema: { type: Object },
|
|
32
|
+
components: {
|
|
33
|
+
type: Object,
|
|
34
|
+
default: () => ({})
|
|
35
|
+
},
|
|
36
|
+
businessFilter: { type: Function },
|
|
37
|
+
scope: { type: Object, default: () => ({}) },
|
|
38
|
+
annotation: { type: Object },
|
|
39
|
+
consumer: { type: Boolean, default: false },
|
|
40
|
+
uuid: { type: String }
|
|
41
|
+
},
|
|
42
|
+
emits: [
|
|
43
|
+
"formChange"
|
|
44
|
+
],
|
|
45
|
+
setup(__props, { expose, emit }) {
|
|
46
|
+
const props = __props;
|
|
47
|
+
const { nuiThemeOverrides } = useNuiThemeOverrides();
|
|
48
|
+
const { SchemaField, businessCollector, formItemDepsCollector, changeContextCollector, formUUID } = useFormContext(props);
|
|
49
|
+
const formModel = createForm({
|
|
50
|
+
initialValues: useInitialData().assignInitialData(props.initialData, props.fieldList),
|
|
51
|
+
effects() {
|
|
52
|
+
onFieldValueChange("*", (field) => {
|
|
53
|
+
const fieldKey = field.props.name.toString();
|
|
54
|
+
emit("formChange", {
|
|
55
|
+
fieldInstance: field,
|
|
56
|
+
fieldKey,
|
|
57
|
+
fieldName: field.title,
|
|
58
|
+
value: field.value,
|
|
59
|
+
context: changeContextCollector.getContext(fieldKey)
|
|
60
|
+
});
|
|
61
|
+
businessCollector.trigger(formModel, fieldKey, field.value);
|
|
62
|
+
formItemDepsCollector.trigger(fieldKey);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const { schemaAdaptor } = useFieldListAdaptor(businessCollector, formUUID);
|
|
67
|
+
const parsedSchema = computed(() => {
|
|
68
|
+
if (props.schema) {
|
|
69
|
+
return props.schema;
|
|
70
|
+
}
|
|
71
|
+
if (props.fieldList) {
|
|
72
|
+
const _fieldList = useFieldVisitor().traverse(cloneDeep(props.fieldList), props.fieldVisitor);
|
|
73
|
+
return { type: "object", properties: schemaAdaptor(_fieldList) };
|
|
74
|
+
}
|
|
75
|
+
return { type: "object", properties: {} };
|
|
76
|
+
});
|
|
77
|
+
const { currentAnchor, scrollbarRef, generateAnchorList, anchorIdList, formHeight, onScroll } = useAnchor(props, formItemDepsCollector);
|
|
78
|
+
watch(parsedSchema, generateAnchorList, { immediate: true });
|
|
79
|
+
async function queryWidget(key, wrapperElement, fieldList) {
|
|
80
|
+
if (!scrollbarRef.value)
|
|
81
|
+
return createResult();
|
|
82
|
+
const decoratorElement = queryDecorator(key, wrapperElement, formUUID);
|
|
83
|
+
if (decoratorElement)
|
|
84
|
+
return createResult(decoratorElement);
|
|
85
|
+
const parentLinebarKey = getParentLinebar(key, fieldList);
|
|
86
|
+
if (!parentLinebarKey)
|
|
87
|
+
return createResult();
|
|
88
|
+
formItemDepsCollector.trigger(FormItemLineBarDepKeyPrepend + parentLinebarKey, true);
|
|
89
|
+
await nextTick();
|
|
90
|
+
return createResult(queryDecorator(key, wrapperElement, formUUID));
|
|
91
|
+
function createResult(decoratorElement2) {
|
|
92
|
+
return { decoratorElement: decoratorElement2, ...queryInput(decoratorElement2) };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
expose({
|
|
96
|
+
validate(path = "*") {
|
|
97
|
+
return formModel.validate(path).catch((err) => {
|
|
98
|
+
return Promise.reject(Array.isArray(err) ? err.map(bindInfo) : err);
|
|
99
|
+
});
|
|
100
|
+
function bindInfo(info) {
|
|
101
|
+
info.title = formModel.query(info.path).get("title");
|
|
102
|
+
info.decoratorElement = queryDecorator(info.path, scrollbarRef.value, formUUID);
|
|
103
|
+
Object.assign(info, queryInput(info.decoratorElement));
|
|
104
|
+
return info;
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
getFormValues() {
|
|
108
|
+
return formModel.getFormState().values;
|
|
109
|
+
},
|
|
110
|
+
setFieldState(path, handler) {
|
|
111
|
+
formModel.setFieldState(path, handler);
|
|
112
|
+
},
|
|
113
|
+
resetFields(path = "*") {
|
|
114
|
+
formModel.setFieldState(path, (field) => {
|
|
115
|
+
var _a;
|
|
116
|
+
if (isField(field)) {
|
|
117
|
+
field.modified = false;
|
|
118
|
+
field.visited = false;
|
|
119
|
+
field.feedbacks = [];
|
|
120
|
+
field.selfModified = false;
|
|
121
|
+
field.caches = {};
|
|
122
|
+
field.value = (_a = field.initialValue) != null ? _a : null;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
async queryWidget(key) {
|
|
127
|
+
return scrollbarRef.value ? await queryWidget(key, scrollbarRef.value, props.fieldList || []) : null;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
return (_ctx, _cache) => {
|
|
131
|
+
return openBlock(), createBlock(unref(NForm), {
|
|
132
|
+
class: "form-render",
|
|
133
|
+
"require-mark-placement": "left"
|
|
134
|
+
}, {
|
|
135
|
+
default: withCtx(() => [
|
|
136
|
+
__props.anchor ? (openBlock(), createElementBlock("section", _hoisted_1, [
|
|
137
|
+
createVNode(unref(NTabs), {
|
|
138
|
+
value: unref(currentAnchor),
|
|
139
|
+
"onUpdate:value": _cache[0] || (_cache[0] = ($event) => isRef(currentAnchor) ? currentAnchor.value = $event : null),
|
|
140
|
+
type: "line"
|
|
141
|
+
}, {
|
|
142
|
+
default: withCtx(() => [
|
|
143
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(anchorIdList), (anchor) => {
|
|
144
|
+
return openBlock(), createBlock(unref(NTabPane), {
|
|
145
|
+
name: anchor.name,
|
|
146
|
+
tab: anchor.title,
|
|
147
|
+
key: anchor.name
|
|
148
|
+
}, null, 8, ["name", "tab"]);
|
|
149
|
+
}), 128))
|
|
150
|
+
]),
|
|
151
|
+
_: 1
|
|
152
|
+
}, 8, ["value"])
|
|
153
|
+
])) : createCommentVNode("v-if", true),
|
|
154
|
+
createVNode(unref(NConfigProvider), { "theme-overrides": unref(nuiThemeOverrides) }, {
|
|
155
|
+
default: withCtx(() => [
|
|
156
|
+
createElementVNode("section", {
|
|
157
|
+
class: "form-render__wrapper",
|
|
158
|
+
style: normalizeStyle({ "--column": __props.column, "--form-height": unref(formHeight) }),
|
|
159
|
+
ref_key: "scrollbarRef",
|
|
160
|
+
ref: scrollbarRef,
|
|
161
|
+
onScroll: _cache[1] || (_cache[1] = (...args) => unref(onScroll) && unref(onScroll)(...args))
|
|
162
|
+
}, [
|
|
163
|
+
createVNode(unref(FormProvider), { form: unref(formModel) }, {
|
|
164
|
+
default: withCtx(() => [
|
|
165
|
+
renderSlot(_ctx.$slots, "default", { schemaFiled: unref(SchemaField) }, () => [
|
|
166
|
+
createVNode(unref(SchemaField), { schema: unref(parsedSchema) }, null, 8, ["schema"])
|
|
167
|
+
]),
|
|
168
|
+
__props.consumer ? (openBlock(), createBlock(unref(FormConsumer), { key: 0 }, {
|
|
169
|
+
default: withCtx(({ form }) => [
|
|
170
|
+
createElementVNode("div", _hoisted_2, toDisplayString(JSON.stringify(form.values, null, 2)), 1)
|
|
171
|
+
]),
|
|
172
|
+
_: 1
|
|
173
|
+
})) : createCommentVNode("v-if", true)
|
|
174
|
+
]),
|
|
175
|
+
_: 3
|
|
176
|
+
}, 8, ["form"])
|
|
177
|
+
], 36)
|
|
178
|
+
]),
|
|
179
|
+
_: 3
|
|
180
|
+
}, 8, ["theme-overrides"])
|
|
181
|
+
]),
|
|
182
|
+
_: 3
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
var FormRender = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "FormRender.vue"]]);
|
|
188
|
+
|
|
189
|
+
export { FormRender as default };
|
|
@@ -408,9 +408,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
408
408
|
title: string;
|
|
409
409
|
}[]>;
|
|
410
410
|
formHeight: import("vue").ComputedRef<any>;
|
|
411
|
-
scrollTo: (id: string) => Promise<void>;
|
|
412
411
|
onScroll: () => void;
|
|
413
|
-
bindInfo: (info: AnyObject) => AnyObject;
|
|
414
412
|
queryWidget: (key: string, wrapperElement: HTMLElement, fieldList: FieldItem[]) => Promise<{
|
|
415
413
|
widgetElement: HTMLInputElement | null | undefined;
|
|
416
414
|
widgetElementList: HTMLInputElement[];
|
|
@@ -6,18 +6,18 @@ declare type DependKeyObj = {
|
|
|
6
6
|
paramValue: string;
|
|
7
7
|
};
|
|
8
8
|
declare type UrlConfig = {
|
|
9
|
-
method
|
|
10
|
-
nameKey
|
|
11
|
-
|
|
9
|
+
method?: FormRequestType;
|
|
10
|
+
nameKey?: string;
|
|
11
|
+
valueKey?: string;
|
|
12
|
+
dependKey?: ArrayAble<string> | Record<string, string> | ArrayAble<DependKeyObj>;
|
|
12
13
|
url: string;
|
|
13
|
-
valueKey: string;
|
|
14
14
|
};
|
|
15
15
|
export declare const SEARCH_CASCADE: import("vue").DefineComponent<{
|
|
16
16
|
options: {
|
|
17
17
|
type: PropType<AnyObject[]>;
|
|
18
18
|
default: () => never[];
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
depth: {
|
|
21
21
|
type: (NumberConstructor | StringConstructor)[];
|
|
22
22
|
required: true;
|
|
23
23
|
};
|
|
@@ -34,7 +34,7 @@ export declare const SEARCH_CASCADE: import("vue").DefineComponent<{
|
|
|
34
34
|
type: PropType<AnyObject[]>;
|
|
35
35
|
default: () => never[];
|
|
36
36
|
};
|
|
37
|
-
|
|
37
|
+
depth: {
|
|
38
38
|
type: (NumberConstructor | StringConstructor)[];
|
|
39
39
|
required: true;
|
|
40
40
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { defineComponent, ref,
|
|
1
|
+
import { defineComponent, ref, computed, inject, watch, createVNode } from 'vue';
|
|
2
2
|
import { isField } from '@formily/core';
|
|
3
|
-
import {
|
|
3
|
+
import { isEqual } from 'lodash-es';
|
|
4
4
|
import { InjectAsyncQueue } from '../../constants/index.js';
|
|
5
|
-
import { assignUpdateValue,
|
|
5
|
+
import { assignUpdateValue, traverseDependKey } from '../../utils/index.js';
|
|
6
6
|
import { connect, mapProps } from '@formily/vue';
|
|
7
7
|
import { NCascader } from 'naive-ui';
|
|
8
8
|
import { useFormField } from '../../hooks/useFormField.js';
|
|
@@ -14,7 +14,7 @@ const script = defineComponent({
|
|
|
14
14
|
type: Array,
|
|
15
15
|
default: () => []
|
|
16
16
|
},
|
|
17
|
-
|
|
17
|
+
depth: {
|
|
18
18
|
type: [Number, String],
|
|
19
19
|
required: true
|
|
20
20
|
},
|
|
@@ -32,59 +32,69 @@ const script = defineComponent({
|
|
|
32
32
|
slots,
|
|
33
33
|
emit
|
|
34
34
|
}) {
|
|
35
|
-
const
|
|
36
|
-
const asyncQueue = inject(InjectAsyncQueue);
|
|
35
|
+
const remoteOptions = ref();
|
|
37
36
|
const {
|
|
38
37
|
field,
|
|
39
38
|
title
|
|
40
39
|
} = useFormField();
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
const labelKey = computed(() => {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
return (_b = (_a = props.urlConfig) == null ? void 0 : _a.nameKey) != null ? _b : "text";
|
|
43
|
+
});
|
|
44
|
+
const valueKey = computed(() => {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
return (_b = (_a = props.urlConfig) == null ? void 0 : _a.valueKey) != null ? _b : "value";
|
|
47
|
+
});
|
|
48
|
+
const _value = computed(() => {
|
|
49
|
+
try {
|
|
50
|
+
const parsed = Array.isArray(props.value) ? props.value : JSON.parse(props.value || "");
|
|
51
|
+
if (!Array.isArray(parsed) || !parsed.length)
|
|
52
|
+
return null;
|
|
53
|
+
return parsed.map((option) => option[labelKey.value]).join(" / ");
|
|
54
|
+
} catch (e) {
|
|
55
|
+
return null;
|
|
50
56
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
});
|
|
58
|
+
function updateValue(_, __, options) {
|
|
59
|
+
emit("update:value", options.map(optionSimplify));
|
|
60
|
+
function optionSimplify(option) {
|
|
61
|
+
return {
|
|
62
|
+
...option,
|
|
63
|
+
label: option[labelKey.value],
|
|
64
|
+
children: void 0,
|
|
65
|
+
parent: void 0
|
|
66
|
+
};
|
|
59
67
|
}
|
|
60
|
-
|
|
68
|
+
}
|
|
69
|
+
const asyncQueue = inject(InjectAsyncQueue);
|
|
70
|
+
async function fetchData(option) {
|
|
71
|
+
if (notNeedToFetchData(props, option))
|
|
72
|
+
return;
|
|
73
|
+
const data = await asyncQueue.addAsync(createRequestParams(deepFor(option), configFor(props), title.value, option));
|
|
74
|
+
if (!data.length && option) {
|
|
61
75
|
option.isLeaf = true;
|
|
62
76
|
updateValue(null, null, getOptionChain(option));
|
|
63
77
|
show.value = false;
|
|
64
78
|
return;
|
|
65
79
|
}
|
|
66
80
|
const result = data.map((item) => optionNormalize(item, deepFor(option)));
|
|
67
|
-
option ? option.children = result :
|
|
68
|
-
function
|
|
69
|
-
|
|
70
|
-
return (_a = option2 == null ? void 0 : option2.depth) != null ? _a : -1;
|
|
81
|
+
option ? option.children = result : remoteOptions.value = result;
|
|
82
|
+
function notNeedToFetchData(props2, option2) {
|
|
83
|
+
return !configFor(props2) || !option2 && remoteOptions.value || deepFor(option2) >= deepFor(props2) - 1;
|
|
71
84
|
}
|
|
72
|
-
function createRequestParams(deep,
|
|
85
|
+
function createRequestParams(deep, config, key, option2) {
|
|
73
86
|
const params = {
|
|
74
87
|
lvlnr: deep + 1 + ""
|
|
75
88
|
};
|
|
76
|
-
if (option2 &&
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
params[key] = option2[valueKey.value];
|
|
80
|
-
} else if (isObject(key)) {
|
|
81
|
-
params[key.paramName] = option2[key.paramValue];
|
|
82
|
-
}
|
|
89
|
+
if (option2 && config.dependKey) {
|
|
90
|
+
traverseDependKey(config.dependKey, (dependKey, valueKey2) => {
|
|
91
|
+
params[valueKey2] = option2[dependKey];
|
|
83
92
|
});
|
|
84
93
|
}
|
|
85
94
|
return {
|
|
86
95
|
params,
|
|
87
|
-
...
|
|
96
|
+
...config,
|
|
97
|
+
key
|
|
88
98
|
};
|
|
89
99
|
}
|
|
90
100
|
function getOptionChain(option2) {
|
|
@@ -96,66 +106,44 @@ const script = defineComponent({
|
|
|
96
106
|
}
|
|
97
107
|
return result2;
|
|
98
108
|
}
|
|
99
|
-
function optionNormalize(data2,
|
|
109
|
+
function optionNormalize(data2, depth) {
|
|
100
110
|
return {
|
|
101
111
|
[labelKey.value]: data2[labelKey.value],
|
|
102
112
|
[valueKey.value]: data2[valueKey.value],
|
|
103
|
-
depth:
|
|
113
|
+
depth: depth + 1,
|
|
104
114
|
parent: option,
|
|
105
|
-
isLeaf:
|
|
115
|
+
isLeaf: depth + 2 >= deepFor(props)
|
|
106
116
|
};
|
|
107
117
|
}
|
|
118
|
+
function configFor(target) {
|
|
119
|
+
return target.urlConfig;
|
|
120
|
+
}
|
|
121
|
+
function deepFor(target) {
|
|
122
|
+
var _a;
|
|
123
|
+
return (_a = target == null ? void 0 : target.depth) != null ? _a : -1;
|
|
124
|
+
}
|
|
108
125
|
}
|
|
109
|
-
const renderOptions = computed(() => {
|
|
110
|
-
return _options.value || props.options || [];
|
|
111
|
-
});
|
|
112
126
|
watch(() => props.value, (n, o) => {
|
|
113
127
|
var _a, _b;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
if (isField(field.value) && field.value.visited) {
|
|
118
|
-
(_b = (_a = field.value).validate) == null ? void 0 : _b.call(_a);
|
|
119
|
-
}
|
|
128
|
+
n != null && o == null && fetchData();
|
|
129
|
+
isField(field.value) && field.value.visited && ((_b = (_a = field.value).validate) == null ? void 0 : _b.call(_a));
|
|
120
130
|
}, {
|
|
121
131
|
immediate: true
|
|
122
132
|
});
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
var _a, _b;
|
|
129
|
-
return (_b = (_a = props.urlConfig) == null ? void 0 : _a.valueKey) != null ? _b : "value";
|
|
130
|
-
});
|
|
131
|
-
const _value = computed(() => {
|
|
132
|
-
try {
|
|
133
|
-
const parsed = Array.isArray(props.value) ? props.value : JSON.parse(props.value || "");
|
|
134
|
-
if (Array.isArray(parsed)) {
|
|
135
|
-
return parsed.map((option) => option[labelKey.value]).join(" / ");
|
|
136
|
-
} else {
|
|
137
|
-
return [];
|
|
138
|
-
}
|
|
139
|
-
} catch (e) {
|
|
140
|
-
return "";
|
|
141
|
-
}
|
|
133
|
+
watch(() => props.urlConfig, async (config, oldConfig) => {
|
|
134
|
+
if (isEqual(config, oldConfig))
|
|
135
|
+
return;
|
|
136
|
+
remoteOptions.value = null;
|
|
137
|
+
await fetchData();
|
|
142
138
|
});
|
|
143
|
-
function updateValue(_, __, options) {
|
|
144
|
-
emit("update:value", options.map(optionSimplify));
|
|
145
|
-
function optionSimplify(option) {
|
|
146
|
-
return {
|
|
147
|
-
...option,
|
|
148
|
-
label: option[labelKey.value],
|
|
149
|
-
children: void 0,
|
|
150
|
-
parent: void 0
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
139
|
const show = ref(false);
|
|
155
140
|
function updateShow(v) {
|
|
156
141
|
show.value = !!v;
|
|
157
142
|
v && fetchData();
|
|
158
143
|
}
|
|
144
|
+
const parsedOptions = computed(() => {
|
|
145
|
+
return remoteOptions.value || props.options || [];
|
|
146
|
+
});
|
|
159
147
|
function focusDecorator(onFocus) {
|
|
160
148
|
return (...args) => {
|
|
161
149
|
if (isField(field.value)) {
|
|
@@ -166,17 +154,17 @@ const script = defineComponent({
|
|
|
166
154
|
}
|
|
167
155
|
return () => {
|
|
168
156
|
return createVNode(NCascader, {
|
|
169
|
-
"
|
|
157
|
+
"remote": true,
|
|
158
|
+
"checkStrategy": "child",
|
|
170
159
|
"show": !!show.value,
|
|
160
|
+
"onUpdate:show": updateShow,
|
|
161
|
+
"value": _value.value,
|
|
171
162
|
"onUpdate:value": updateValue,
|
|
172
|
-
"remote": true,
|
|
173
163
|
"labelField": labelKey.value,
|
|
174
164
|
"valueField": valueKey.value,
|
|
175
|
-
"options":
|
|
176
|
-
"checkStrategy": "child",
|
|
165
|
+
"options": parsedOptions.value,
|
|
177
166
|
"onLoad": fetchData,
|
|
178
|
-
"onFocus": focusDecorator(props.onFocus)
|
|
179
|
-
"onUpdate:show": updateShow
|
|
167
|
+
"onFocus": focusDecorator(props.onFocus)
|
|
180
168
|
}, slots);
|
|
181
169
|
};
|
|
182
170
|
}
|
|
@@ -8,6 +8,9 @@ export declare const COMBINATION: import("vue").DefineComponent<{
|
|
|
8
8
|
value: {
|
|
9
9
|
type: StringConstructor;
|
|
10
10
|
};
|
|
11
|
+
maxGroupNum: {
|
|
12
|
+
type: NumberConstructor;
|
|
13
|
+
};
|
|
11
14
|
getProperties: {
|
|
12
15
|
type: PropType<() => FieldItem[]>;
|
|
13
16
|
default: () => never[];
|
|
@@ -20,6 +23,9 @@ export declare const COMBINATION: import("vue").DefineComponent<{
|
|
|
20
23
|
value: {
|
|
21
24
|
type: StringConstructor;
|
|
22
25
|
};
|
|
26
|
+
maxGroupNum: {
|
|
27
|
+
type: NumberConstructor;
|
|
28
|
+
};
|
|
23
29
|
getProperties: {
|
|
24
30
|
type: PropType<() => FieldItem[]>;
|
|
25
31
|
default: () => never[];
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { defineComponent, ref, createVNode, createTextVNode
|
|
1
|
+
import { defineComponent, ref, computed, watch, onMounted, createVNode, createTextVNode } from 'vue';
|
|
2
|
+
import { isField } from '@formily/core';
|
|
3
|
+
import { Path } from '../../../../../node_modules/@formily/path/esm/index.js';
|
|
4
|
+
import { isNumber } from 'lodash-es';
|
|
2
5
|
import { assignUpdateValue, formRenderLog } from '../../utils/index.js';
|
|
3
6
|
import { connect, mapProps } from '@formily/vue';
|
|
4
7
|
import { useDebounceFn, isObject } from '@vueuse/core';
|
|
5
8
|
import { NButton } from 'naive-ui';
|
|
6
|
-
import '../../FormRender.js';
|
|
7
|
-
import script$1 from '../../FormRender.vue_vue_type_script_setup_true_lang.js';
|
|
9
|
+
import FormRender from '../../FormRender.js';
|
|
8
10
|
|
|
9
11
|
const script = defineComponent({
|
|
10
12
|
name: "FormCombination",
|
|
@@ -16,6 +18,9 @@ const script = defineComponent({
|
|
|
16
18
|
value: {
|
|
17
19
|
type: String
|
|
18
20
|
},
|
|
21
|
+
maxGroupNum: {
|
|
22
|
+
type: Number
|
|
23
|
+
},
|
|
19
24
|
getProperties: {
|
|
20
25
|
type: Function,
|
|
21
26
|
default: () => []
|
|
@@ -28,17 +33,34 @@ const script = defineComponent({
|
|
|
28
33
|
const emitChange = useDebounceFn(function emitChange2() {
|
|
29
34
|
emit("update:value", JSON.stringify(_values.value));
|
|
30
35
|
}, 300);
|
|
31
|
-
const
|
|
36
|
+
const formRenderRefs = ref([]);
|
|
37
|
+
const groupNum = ref(1);
|
|
38
|
+
const maxGroupNum = computed(() => {
|
|
39
|
+
if (!isNumber(props.maxGroupNum))
|
|
40
|
+
return Infinity;
|
|
41
|
+
if (props.maxGroupNum < 1)
|
|
42
|
+
return 0;
|
|
43
|
+
return ~~props.maxGroupNum;
|
|
44
|
+
});
|
|
32
45
|
function add() {
|
|
33
|
-
|
|
46
|
+
groupNum.value++;
|
|
34
47
|
_values.value.push({});
|
|
35
48
|
emitChange();
|
|
36
49
|
}
|
|
37
50
|
function remove(idx) {
|
|
38
|
-
|
|
51
|
+
groupNum.value--;
|
|
39
52
|
_values.value.splice(idx, 1);
|
|
40
53
|
emitChange();
|
|
41
54
|
}
|
|
55
|
+
watch(maxGroupNum, (value) => {
|
|
56
|
+
if (groupNum.value <= value)
|
|
57
|
+
return;
|
|
58
|
+
groupNum.value = value;
|
|
59
|
+
_values.value.splice(groupNum.value);
|
|
60
|
+
emitChange();
|
|
61
|
+
}, {
|
|
62
|
+
immediate: true
|
|
63
|
+
});
|
|
42
64
|
const _values = ref([{}]);
|
|
43
65
|
function initValues(data) {
|
|
44
66
|
if (!data)
|
|
@@ -48,19 +70,32 @@ const script = defineComponent({
|
|
|
48
70
|
if (!Array.isArray(parsed))
|
|
49
71
|
throw new Error();
|
|
50
72
|
parsed.forEach((v, idx) => {
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
_values.value[idx] =
|
|
55
|
-
|
|
56
|
-
}
|
|
73
|
+
if (idx > maxGroupNum.value - 1)
|
|
74
|
+
return;
|
|
75
|
+
if (isObject(v))
|
|
76
|
+
return _values.value[idx] = v;
|
|
77
|
+
_values.value[idx] = {};
|
|
78
|
+
formRenderLog(`invalid Object value ${v} in COMBINATION => ${props.title}[${idx}]`, "warn");
|
|
57
79
|
});
|
|
58
|
-
|
|
80
|
+
groupNum.value = Math.min(_values.value.length, maxGroupNum.value);
|
|
59
81
|
} catch (e) {
|
|
60
82
|
formRenderLog(`invalid JSON value ${data} in COMBINATION => ${props.title}`, "warn");
|
|
83
|
+
} finally {
|
|
84
|
+
setFormValueByInitValue();
|
|
85
|
+
}
|
|
86
|
+
function setFormValueByInitValue() {
|
|
87
|
+
_values.value.forEach((item, idx) => {
|
|
88
|
+
var _a;
|
|
89
|
+
(_a = formRenderRefs.value[idx]) == null ? void 0 : _a.setFieldState("*", (state) => {
|
|
90
|
+
if (!isField(state))
|
|
91
|
+
return;
|
|
92
|
+
state.value = Path.getIn(item, state.path);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
61
95
|
}
|
|
62
96
|
}
|
|
63
|
-
|
|
97
|
+
watch(() => props.value, (value) => initValues(value));
|
|
98
|
+
onMounted(() => initValues(props.value));
|
|
64
99
|
function stop(event) {
|
|
65
100
|
event.stopPropagation();
|
|
66
101
|
}
|
|
@@ -69,10 +104,10 @@ const script = defineComponent({
|
|
|
69
104
|
value
|
|
70
105
|
}) {
|
|
71
106
|
!_values.value[idx] && (_values.value[idx] = {});
|
|
72
|
-
_values.value[idx]
|
|
107
|
+
Path.setIn(_values.value[idx], fieldKey, value);
|
|
73
108
|
emitChange();
|
|
74
109
|
}
|
|
75
|
-
const FormRenderComponent =
|
|
110
|
+
const FormRenderComponent = FormRender;
|
|
76
111
|
return () => {
|
|
77
112
|
return createVNode("section", {
|
|
78
113
|
"class": "form-render__combination"
|
|
@@ -83,16 +118,17 @@ const script = defineComponent({
|
|
|
83
118
|
}, [props.title]), createVNode(NButton, {
|
|
84
119
|
"onClick": add,
|
|
85
120
|
"type": "info",
|
|
86
|
-
"text": true
|
|
121
|
+
"text": true,
|
|
122
|
+
"disabled": groupNum.value >= maxGroupNum.value
|
|
87
123
|
}, {
|
|
88
124
|
default: () => [createTextVNode("\u65B0\u589E")]
|
|
89
125
|
})]), Array.from({
|
|
90
|
-
length:
|
|
126
|
+
length: groupNum.value
|
|
91
127
|
}).map((_, idx) => {
|
|
92
128
|
return createVNode("section", {
|
|
93
129
|
"class": "form-render__combinationContent"
|
|
94
130
|
}, [createVNode(FormRenderComponent, {
|
|
95
|
-
"
|
|
131
|
+
"ref": (_ref) => formRenderRefs.value[idx] = _ref,
|
|
96
132
|
"fieldList": props.getProperties(),
|
|
97
133
|
"onUpdateValue": () => false,
|
|
98
134
|
"onInput": stop,
|
|
@@ -60,7 +60,7 @@ const FORM_ITEM = connect(script, mapProps({
|
|
|
60
60
|
const feedback = !isVoidField(field) ? field.selfErrors.length ? field.selfErrors.join(",") : void 0 : void 0;
|
|
61
61
|
return {
|
|
62
62
|
...props,
|
|
63
|
-
required: field.required,
|
|
63
|
+
required: isVoidField(field) ? void 0 : field.required,
|
|
64
64
|
class: "form-render__formItem",
|
|
65
65
|
style: {
|
|
66
66
|
"--form-item-column": (_a = props.span) != null ? _a : 3
|