@kp-ui/lowcode 2.16.0-alpha.9 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/install.js +19 -21
  2. package/install.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/components/FormRender/FormContainer.vue.js +25 -27
  5. package/src/components/FormRender/FormContainer.vue.js.map +1 -1
  6. package/src/components/FormRender/useFormContext.js +56 -56
  7. package/src/components/FormRender/useFormContext.js.map +1 -1
  8. package/src/components/form-designer/form-widget/field-widget/useField.js +111 -115
  9. package/src/components/form-designer/form-widget/field-widget/useField.js.map +1 -1
  10. package/src/components/form-designer/setting-panel/form-setting.vue.js +1 -1
  11. package/src/components/form-designer/setting-panel/form-setting.vue2.js.map +1 -1
  12. package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/height-editor.vue2.js +16 -18
  13. package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/height-editor.vue2.js.map +1 -1
  14. package/src/components/form-render/container-items/data-table-widget.vue.js +3 -3
  15. package/src/components/form-render/container-items/data-table-widget.vue2.js +5 -7
  16. package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
  17. package/src/components/form-render/dynamic-dialog.vue.js +63 -62
  18. package/src/components/form-render/dynamic-dialog.vue.js.map +1 -1
  19. package/src/components/public/ConfigView/CustomPageRender.vue.js +35 -27
  20. package/src/components/public/ConfigView/CustomPageRender.vue.js.map +1 -1
  21. package/src/components/public/CustomerModal/CustomerModal.vue2.js +63 -56
  22. package/src/components/public/CustomerModal/CustomerModal.vue2.js.map +1 -1
  23. package/src/utils/format.js +18 -11
  24. package/src/utils/format.js.map +1 -1
  25. package/src/utils/util.js +12 -22
  26. package/src/utils/util.js.map +1 -1
  27. package/stats.html +1 -1
  28. package/styles/style.css +1 -1
  29. package/src/components/form-render/SubmitButtonRender.vue.js +0 -92
  30. package/src/components/form-render/SubmitButtonRender.vue.js.map +0 -1
  31. package/src/components/form-render/SubmitButtonRender.vue2.js +0 -5
  32. package/src/components/form-render/SubmitButtonRender.vue2.js.map +0 -1
package/install.js CHANGED
@@ -1,29 +1,27 @@
1
1
  /* empty css */
2
2
  import "./_virtual/virtual_svg-icons-register.js";
3
- import a from "dayjs";
4
- import { getLocat as s } from "@kp-ui/tool";
5
- import { VxeTooltip as f } from "vxe-pc-ui";
6
- import { basicFieldsEnums as $ } from "./src/components/form-designer/widget-panel/basicFieldsEnums.js";
7
- import { default as y } from "./src/components/form-designer/index.vue.js";
3
+ import p from "dayjs";
4
+ import { getLocat as i, getUserInfo as s } from "@kp-ui/tool";
5
+ import { VxeTooltip as a } from "vxe-pc-ui";
6
+ import { basicFieldsEnums as L } from "./src/components/form-designer/widget-panel/basicFieldsEnums.js";
7
+ import { default as $ } from "./src/components/form-designer/index.vue.js";
8
8
  /* empty css */
9
9
  import { openCustomerModal as m } from "./src/components/public/CustomerModal/useCustomerModal.js";
10
- import { default as V } from "./src/components/form-render/SubmitButtonRender.vue.js";
11
- import { default as h } from "./src/components/public/ActionButtonListRender.vue.js";
12
- import { default as w } from "./src/components/public/ConfigView/CustomPageRender.vue.js";
13
- import { useLowcode as I } from "./src/hooks/useLowcode.js";
14
- import { default as T } from "./src/components/FormRender/index.vue.js";
15
- const b = (e) => {
16
- const { app: o, http: r, factoryRender: t, getUserInfo: p } = e;
17
- o.config.globalProperties.$getLocat = s, o.config.globalProperties.$dayjs = a, o.config.globalProperties.$http = r, o.config.globalProperties.$getUserInfo = p, o.config.globalProperties.$factoryRender = t, o.config.globalProperties.$openCustomerModal = (i) => m(i, o), o.component("VxeTooltip", f);
10
+ import { default as C } from "./src/components/public/ActionButtonListRender.vue.js";
11
+ import { default as F } from "./src/components/public/ConfigView/CustomPageRender.vue.js";
12
+ import { useLowcode as w } from "./src/hooks/useLowcode.js";
13
+ import { default as M } from "./src/components/FormRender/index.vue.js";
14
+ const x = (e) => {
15
+ const { app: o, factoryRender: r } = e;
16
+ o.config.globalProperties.$getLocat = i, o.config.globalProperties.$dayjs = p, o.config.globalProperties.$getUserInfo = s, o.config.globalProperties.$factoryRender = r, o.config.globalProperties.$openCustomerModal = (t) => m(t, o), o.component("VxeTooltip", a);
18
17
  };
19
18
  export {
20
- h as ActionButtonListRender,
21
- w as CustomPageRender,
22
- V as SubmitButtonRender,
23
- y as VFormDesigner,
24
- T as VFormRender,
25
- $ as basicFieldsEnums,
26
- b as registerLowcodeCore,
27
- I as useLowcode
19
+ C as ActionButtonListRender,
20
+ F as CustomPageRender,
21
+ $ as VFormDesigner,
22
+ M as VFormRender,
23
+ L as basicFieldsEnums,
24
+ x as registerLowcodeCore,
25
+ w as useLowcode
28
26
  };
29
27
  //# sourceMappingURL=install.js.map
package/install.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sources":["../install.ts"],"sourcesContent":["// 导出基础组件\nimport '@/styles/global.less';\nimport 'virtual:svg-icons-register';\nimport dayjs from 'dayjs';\nimport { getLocat } from '@kp-ui/tool';\nimport { VxeTooltip } from 'vxe-pc-ui';\n\nexport { basicFieldsEnums } from '@/components/form-designer/widget-panel/basicFieldsEnums';\n\nexport { default as VFormDesigner } from '@/components/form-designer/index.vue';\n\nimport { openCustomerModal } from '@/components/public/CustomerModal/useCustomerModal';\nimport type { App } from 'vue';\nexport { default as SubmitButtonRender } from '@/components/form-render/SubmitButtonRender.vue';\n\nexport { default as ActionButtonListRender } from '@/components/public/ActionButtonListRender.vue';\n\nexport { default as CustomPageRender } from '@/components/public/ConfigView/CustomPageRender.vue';\n\nexport { useLowcode, VFormRender } from '@/hooks/useLowcode';\nexport type { ActionButton } from '@/types/button';\n\ninterface RegisterLowcodeCoreParams {\n app: App;\n http: any;\n factoryRender: (name: any, props: any, ...args: any[]) => any;\n getUserInfo?: () => any;\n}\n\n// 注册 HTTP\nexport const registerLowcodeCore = (params: RegisterLowcodeCoreParams) => {\n const { app, http, factoryRender, getUserInfo } = params;\n app.config.globalProperties.$getLocat = getLocat;\n app.config.globalProperties.$dayjs = dayjs;\n app.config.globalProperties.$http = http;\n app.config.globalProperties.$getUserInfo = getUserInfo;\n app.config.globalProperties.$factoryRender = factoryRender;\n app.config.globalProperties.$openCustomerModal = ops => openCustomerModal(ops, app);\n app.component('VxeTooltip', VxeTooltip);\n};\n"],"names":["registerLowcodeCore","params","app","http","factoryRender","getUserInfo","getLocat","dayjs","ops","openCustomerModal","VxeTooltip"],"mappings":";;;;;;;;;;;;;;AA8BO,MAAMA,IAAsB,CAACC,MAAsC;AACtE,QAAM,EAAE,KAAAC,GAAK,MAAAC,GAAM,eAAAC,GAAe,aAAAC,MAAgBJ;AAClD,EAAAC,EAAI,OAAO,iBAAiB,YAAYI,GACxCJ,EAAI,OAAO,iBAAiB,SAASK,GACrCL,EAAI,OAAO,iBAAiB,QAAQC,GACpCD,EAAI,OAAO,iBAAiB,eAAeG,GAC3CH,EAAI,OAAO,iBAAiB,iBAAiBE,GAC7CF,EAAI,OAAO,iBAAiB,qBAAqB,CAAAM,MAAOC,EAAkBD,GAAKN,CAAG,GAClFA,EAAI,UAAU,cAAcQ,CAAU;AAC1C;"}
1
+ {"version":3,"file":"install.js","sources":["../install.ts"],"sourcesContent":["// 导出基础组件\nimport '@/styles/global.less';\nimport 'virtual:svg-icons-register';\nimport dayjs from 'dayjs';\nimport { getLocat } from '@kp-ui/tool';\nimport { VxeTooltip } from 'vxe-pc-ui';\nimport { getUserInfo } from '@kp-ui/tool';\nexport { basicFieldsEnums } from '@/components/form-designer/widget-panel/basicFieldsEnums';\n\nexport { default as VFormDesigner } from '@/components/form-designer/index.vue';\n\nimport { openCustomerModal } from '@/components/public/CustomerModal/useCustomerModal';\nimport type { App } from 'vue';\n\nexport { default as ActionButtonListRender } from '@/components/public/ActionButtonListRender.vue';\n\nexport { default as CustomPageRender } from '@/components/public/ConfigView/CustomPageRender.vue';\n\nexport { useLowcode, VFormRender } from '@/hooks/useLowcode';\nexport type { ActionButton } from '@/types/button';\n\ninterface RegisterLowcodeCoreParams {\n app: App;\n factoryRender: (name: any, props: any, ...args: any[]) => any;\n}\n\n// 注册 HTTP\nexport const registerLowcodeCore = (params: RegisterLowcodeCoreParams) => {\n const { app, factoryRender } = params;\n app.config.globalProperties.$getLocat = getLocat;\n app.config.globalProperties.$dayjs = dayjs;\n app.config.globalProperties.$getUserInfo = getUserInfo;\n app.config.globalProperties.$factoryRender = factoryRender;\n app.config.globalProperties.$openCustomerModal = ops => openCustomerModal(ops, app);\n app.component('VxeTooltip', VxeTooltip);\n};\n"],"names":["registerLowcodeCore","params","app","factoryRender","getLocat","dayjs","getUserInfo","ops","openCustomerModal","VxeTooltip"],"mappings":";;;;;;;;;;;;;AA2BO,MAAMA,IAAsB,CAACC,MAAsC;AACtE,QAAM,EAAE,KAAAC,GAAK,eAAAC,EAAA,IAAkBF;AAC/B,EAAAC,EAAI,OAAO,iBAAiB,YAAYE,GACxCF,EAAI,OAAO,iBAAiB,SAASG,GACrCH,EAAI,OAAO,iBAAiB,eAAeI,GAC3CJ,EAAI,OAAO,iBAAiB,iBAAiBC,GAC7CD,EAAI,OAAO,iBAAiB,qBAAqB,CAAAK,MAAOC,EAAkBD,GAAKL,CAAG,GAClFA,EAAI,UAAU,cAAcO,CAAU;AAC1C;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kp-ui/lowcode",
3
- "version": "2.16.0-alpha.9",
3
+ "version": "2.16.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -1,8 +1,8 @@
1
- import { defineComponent as _, ref as C, computed as t, onMounted as M, createBlock as y, openBlock as F, unref as w, withKeys as D, normalizeClass as b, withCtx as E, createVNode as L } from "vue";
2
- import { Form as $ } from "ant-design-vue";
3
- import h from "../form-render/RenderWigetList.vue.js";
4
- import { useEmitter as k } from "../../utils/useEmitter.js";
5
- const j = /* @__PURE__ */ _({
1
+ import { defineComponent as x, ref as _, computed as t, onMounted as g, createBlock as C, openBlock as y, unref as F, withKeys as w, normalizeClass as M, withCtx as b, createVNode as h } from "vue";
2
+ import { Form as E } from "ant-design-vue";
3
+ import L from "../form-render/RenderWigetList.vue.js";
4
+ import { useEmitter as $ } from "../../utils/useEmitter.js";
5
+ const j = /* @__PURE__ */ x({
6
6
  __name: "FormContainer",
7
7
  props: {
8
8
  context: {
@@ -11,39 +11,37 @@ const j = /* @__PURE__ */ _({
11
11
  }
12
12
  },
13
13
  emits: ["form-submit", "form-cancel"],
14
- setup(l, { expose: s, emit: K }) {
15
- const e = l, a = C(), { emit$: m, on$: i, off$: u } = k(), r = t({
14
+ setup(n, { expose: a, emit: k }) {
15
+ const e = n, r = _(), { emit$: l, on$: s, off$: m } = $(), c = t({
16
16
  get: () => e.context.formDataModel.value,
17
17
  set: (o) => {
18
18
  e.context.formDataModel.value = o;
19
19
  }
20
- }), c = t(() => e.context.readModeFlag.value), d = t(() => e.context.formConfig.value), f = t(() => e.context.widgetList.value), p = t(() => e.context.labelPosition.value), v = t(() => e.context.customClass.value), x = () => {
20
+ }), i = t(() => e.context.readModeFlag.value), u = t(() => e.context.formConfig.value), d = t(() => e.context.widgetList.value), f = t(() => e.context.labelPosition.value), p = t(() => e.context.customClass.value), v = () => {
21
21
  var o;
22
- ((o = d.value) == null ? void 0 : o.isEnterSubmit) === 1 && e.context.onFormUpdate();
22
+ ((o = u.value) == null ? void 0 : o.isEnterSubmit) === 1 && e.context.onFormUpdate();
23
23
  };
24
- return M(() => {
25
- }), s({
26
- renderForm: a,
27
- off$: u,
28
- on$: i,
29
- emit$: m
30
- }), (o, n) => (F(), y(w($), {
24
+ return g(() => {
25
+ }), a({
26
+ renderForm: r,
27
+ off$: m,
28
+ on$: s,
29
+ emit$: l
30
+ }), (o, D) => (y(), C(F(E), {
31
31
  ref_key: "renderForm",
32
- ref: a,
33
- layout: p.value,
34
- class: b(["render-form", "tpf-form", v.value, c.value ? "readonly-mode-form" : ""]),
32
+ ref: r,
33
+ layout: f.value,
34
+ class: M(["render-form", "tpf-form", p.value, i.value ? "readonly-mode-form" : ""]),
35
35
  scrollToFirstError: !0,
36
36
  validateOnRuleChange: !1,
37
- model: r.value,
38
- onKeydown: D(x, ["enter"])
37
+ model: c.value,
38
+ onKeydown: w(v, ["enter"])
39
39
  }, {
40
- default: E(() => [
41
- L(h, {
40
+ default: b(() => [
41
+ h(L, {
42
42
  parentWidget: null,
43
- widgetList: f.value,
44
- formDataModel: r.value,
45
- "onUpdate:formDataModel": n[0] || (n[0] = (g) => r.value = g)
46
- }, null, 8, ["widgetList", "formDataModel"])
43
+ widgetList: d.value
44
+ }, null, 8, ["widgetList"])
47
45
  ]),
48
46
  _: 1
49
47
  }, 8, ["layout", "class", "model"]));
@@ -1 +1 @@
1
- {"version":3,"file":"FormContainer.vue.js","sources":["../../../../src/components/FormRender/FormContainer.vue"],"sourcesContent":["<template>\n <Form\n ref=\"renderForm\"\n :layout=\"labelPosition\"\n :class=\"['render-form', 'tpf-form', customClass, readModeFlag ? 'readonly-mode-form' : '']\"\n :scrollToFirstError=\"true\"\n :validateOnRuleChange=\"false\"\n :model=\"formDataModel\"\n @keydown.enter=\"handleEnterKey\"\n >\n <RenderWigetList\n :parentWidget=\"null\"\n :widgetList=\"widgetList\"\n v-model:formDataModel=\"formDataModel\"\n />\n </Form>\n</template>\n\n<script lang=\"ts\" setup>\n import { computed, ref, onMounted, type PropType } from 'vue';\n import { Form } from 'ant-design-vue';\n import RenderWigetList from '@/components/form-render/RenderWigetList.vue';\n import { useEmitter } from '@/utils/useEmitter';\n\n /**\n * 表单容器组件\n * 负责渲染表单及其子组件\n */\n\n const props = defineProps({\n context: {\n type: Object as PropType<any>,\n required: true\n }\n });\n\n const emit = defineEmits(['form-submit', 'form-cancel']);\n\n // 组件引用\n const renderForm = ref();\n const { emit$, on$, off$ } = useEmitter();\n\n // 从上下文中获取数据\n const formDataModel = computed({\n get: () => props.context.formDataModel.value,\n set: val => {\n props.context.formDataModel.value = val;\n }\n });\n const readModeFlag = computed(() => props.context.readModeFlag.value);\n const formConfig = computed(() => props.context.formConfig.value);\n const widgetList = computed(() => props.context.widgetList.value);\n const labelPosition = computed(() => props.context.labelPosition.value);\n const customClass = computed(() => props.context.customClass.value);\n\n /**\n * 处理回车键事件\n */\n const handleEnterKey = () => {\n if (formConfig.value?.isEnterSubmit === 1) {\n props.context.onFormUpdate();\n }\n };\n\n onMounted(() => {});\n\n // 暴露方法\n defineExpose({\n renderForm,\n off$,\n on$,\n emit$\n });\n</script>\n"],"names":["props","__props","renderForm","ref","emit$","on$","off$","useEmitter","formDataModel","computed","val","readModeFlag","formConfig","widgetList","labelPosition","customClass","handleEnterKey","_a","onMounted","__expose","_createBlock","_unref","Form","_normalizeClass","_createVNode","RenderWigetList","$event"],"mappings":";;;;;;;;;;;;;;AA6BI,UAAMA,IAAQC,GAURC,IAAaC,EAAA,GACb,EAAE,OAAAC,GAAO,KAAAC,GAAK,MAAAC,EAAA,IAASC,EAAA,GAGvBC,IAAgBC,EAAS;AAAA,MAC3B,KAAK,MAAMT,EAAM,QAAQ,cAAc;AAAA,MACvC,KAAK,CAAAU,MAAO;AACR,QAAAV,EAAM,QAAQ,cAAc,QAAQU;AAAA,MACxC;AAAA,IAAA,CACH,GACKC,IAAeF,EAAS,MAAMT,EAAM,QAAQ,aAAa,KAAK,GAC9DY,IAAaH,EAAS,MAAMT,EAAM,QAAQ,WAAW,KAAK,GAC1Da,IAAaJ,EAAS,MAAMT,EAAM,QAAQ,WAAW,KAAK,GAC1Dc,IAAgBL,EAAS,MAAMT,EAAM,QAAQ,cAAc,KAAK,GAChEe,IAAcN,EAAS,MAAMT,EAAM,QAAQ,YAAY,KAAK,GAK5DgB,IAAiB,MAAM;;AACzB,QAAIC,IAAAL,EAAW,UAAX,gBAAAK,EAAkB,mBAAkB,KACpCjB,EAAM,QAAQ,aAAA;AAAA,IAEtB;AAEA,WAAAkB,EAAU,MAAM;AAAA,IAAC,CAAC,GAGlBC,EAAa;AAAA,MACT,YAAAjB;AAAA,MACA,MAAAI;AAAA,MACA,KAAAD;AAAA,MACA,OAAAD;AAAA,IAAA,CACH,mBAvEDgB,EAcOC,EAAAC,CAAA,GAAA;AAAA,eAbC;AAAA,MAAJ,KAAIpB;AAAA,MACH,QAAQY,EAAA;AAAA,MACR,OAAKS,EAAA,CAAA,eAAA,YAA8BR,EAAA,OAAaJ,EAAA,QAAY,uBAAA,EAAA,CAAA;AAAA,MAC5D,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,OAAOH,EAAA;AAAA,MACP,aAAeQ,GAAc,CAAA,OAAA,CAAA;AAAA,IAAA;iBAE9B,MAIE;AAAA,QAJFQ,EAIEC,GAAA;AAAA,UAHG,cAAc;AAAA,UACd,YAAYZ,EAAA;AAAA,UACL,eAAeL,EAAA;AAAA,2DAAAA,EAAa,QAAAkB;AAAA,QAAA;;;;;;"}
1
+ {"version":3,"file":"FormContainer.vue.js","sources":["../../../../src/components/FormRender/FormContainer.vue"],"sourcesContent":["<template>\n <Form\n ref=\"renderForm\"\n :layout=\"labelPosition\"\n :class=\"['render-form', 'tpf-form', customClass, readModeFlag ? 'readonly-mode-form' : '']\"\n :scrollToFirstError=\"true\"\n :validateOnRuleChange=\"false\"\n :model=\"formDataModel\"\n @keydown.enter=\"handleEnterKey\"\n >\n <RenderWigetList :parentWidget=\"null\" :widgetList=\"widgetList\" />\n </Form>\n</template>\n\n<script lang=\"ts\" setup>\n import { computed, ref, onMounted, type PropType } from 'vue';\n import { Form } from 'ant-design-vue';\n import RenderWigetList from '@/components/form-render/RenderWigetList.vue';\n import { useEmitter } from '@/utils/useEmitter';\n\n /**\n * 表单容器组件\n * 负责渲染表单及其子组件\n */\n\n const props = defineProps({\n context: {\n type: Object as PropType<any>,\n required: true\n }\n });\n\n const emit = defineEmits(['form-submit', 'form-cancel']);\n\n // 组件引用\n const renderForm = ref();\n const { emit$, on$, off$ } = useEmitter();\n\n // 从上下文中获取数据\n const formDataModel = computed({\n get: () => props.context.formDataModel.value,\n set: val => {\n props.context.formDataModel.value = val;\n }\n });\n const readModeFlag = computed(() => props.context.readModeFlag.value);\n const formConfig = computed(() => props.context.formConfig.value);\n const widgetList = computed(() => props.context.widgetList.value);\n const labelPosition = computed(() => props.context.labelPosition.value);\n const customClass = computed(() => props.context.customClass.value);\n\n /**\n * 处理回车键事件\n */\n const handleEnterKey = () => {\n if (formConfig.value?.isEnterSubmit === 1) {\n props.context.onFormUpdate();\n }\n };\n\n onMounted(() => {});\n\n // 暴露方法\n defineExpose({\n renderForm,\n off$,\n on$,\n emit$\n });\n</script>\n"],"names":["props","__props","renderForm","ref","emit$","on$","off$","useEmitter","formDataModel","computed","val","readModeFlag","formConfig","widgetList","labelPosition","customClass","handleEnterKey","_a","onMounted","__expose","_createBlock","_unref","Form","_normalizeClass","_createVNode","RenderWigetList"],"mappings":";;;;;;;;;;;;;;AAyBI,UAAMA,IAAQC,GAURC,IAAaC,EAAA,GACb,EAAE,OAAAC,GAAO,KAAAC,GAAK,MAAAC,EAAA,IAASC,EAAA,GAGvBC,IAAgBC,EAAS;AAAA,MAC3B,KAAK,MAAMT,EAAM,QAAQ,cAAc;AAAA,MACvC,KAAK,CAAAU,MAAO;AACR,QAAAV,EAAM,QAAQ,cAAc,QAAQU;AAAA,MACxC;AAAA,IAAA,CACH,GACKC,IAAeF,EAAS,MAAMT,EAAM,QAAQ,aAAa,KAAK,GAC9DY,IAAaH,EAAS,MAAMT,EAAM,QAAQ,WAAW,KAAK,GAC1Da,IAAaJ,EAAS,MAAMT,EAAM,QAAQ,WAAW,KAAK,GAC1Dc,IAAgBL,EAAS,MAAMT,EAAM,QAAQ,cAAc,KAAK,GAChEe,IAAcN,EAAS,MAAMT,EAAM,QAAQ,YAAY,KAAK,GAK5DgB,IAAiB,MAAM;;AACzB,QAAIC,IAAAL,EAAW,UAAX,gBAAAK,EAAkB,mBAAkB,KACpCjB,EAAM,QAAQ,aAAA;AAAA,IAEtB;AAEA,WAAAkB,EAAU,MAAM;AAAA,IAAC,CAAC,GAGlBC,EAAa;AAAA,MACT,YAAAjB;AAAA,MACA,MAAAI;AAAA,MACA,KAAAD;AAAA,MACA,OAAAD;AAAA,IAAA,CACH,mBAnEDgB,EAUOC,EAAAC,CAAA,GAAA;AAAA,eATC;AAAA,MAAJ,KAAIpB;AAAA,MACH,QAAQY,EAAA;AAAA,MACR,OAAKS,EAAA,CAAA,eAAA,YAA8BR,EAAA,OAAaJ,EAAA,QAAY,uBAAA,EAAA,CAAA;AAAA,MAC5D,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,OAAOH,EAAA;AAAA,MACP,aAAeQ,GAAc,CAAA,OAAA,CAAA;AAAA,IAAA;iBAE9B,MAAiE;AAAA,QAAjEQ,EAAiEC,GAAA;AAAA,UAA/C,cAAc;AAAA,UAAO,YAAYZ,EAAA;AAAA,QAAA;;;;;;"}
@@ -1,90 +1,90 @@
1
- import { ref as l, provide as c, computed as m, watchEffect as ue, onMounted as me, nextTick as de } from "vue";
1
+ import { ref as l, provide as f, computed as m, watchEffect as ue, onMounted as me, nextTick as de } from "vue";
2
2
  import { useFormValidation as B } from "./formValidation.js";
3
3
  import { insertCustomCssToHead as ve, insertGlobalFunctionsToHtml as ge, getContainerWidgetByName as H, cloneFormConfigWithoutEventHandler as pe, generateId as Ce } from "../../utils/util.js";
4
4
  import { set as Fe, cloneDeep as we } from "lodash-es";
5
5
  import { message as J } from "ant-design-vue";
6
6
  import { useI18n as he } from "../../utils/i18n.js";
7
7
  import { getUuidKey as xe } from "@kp-ui/tool";
8
- import { useComRef as De, useRef as Re, useExecFunction as Le } from "tmgc2-share";
9
- import be from "../form-render/dynamic-dialog.vue.js";
8
+ import { useComRef as Re, useRef as De, useExecFunction as ye } from "tmgc2-share";
9
+ import Le from "../form-render/dynamic-dialog.vue.js";
10
10
  /* empty css */
11
- import { useEmitter as ye } from "../../utils/useEmitter.js";
11
+ import { useEmitter as be } from "../../utils/useEmitter.js";
12
12
  import { useAppRef as Me } from "../form-designer/useAppRef.js";
13
- const _e = ({ renderForm: x, props: a }) => {
14
- const { formJson: D } = a, p = De(be), { i18nt: d } = he(), [R, P] = Re(!1), C = ye(), v = l(), s = l({}), L = l(!1), F = l(/* @__PURE__ */ new Map()), b = l({}), T = l(), w = Symbol("formWidget");
15
- c("refList", F), c("getFormConfig", () => o.value), c("formData", s), c("getReadMode", () => R.value), c("designState", !1);
16
- const y = l(), { executeFunction: $, context: g, execHttpFunction: M } = Le(), { getFormRef: h, getWidgetRef: U, registerToRefList: _ } = Me(F, w), o = m(() => {
13
+ const Ue = ({ renderForm: x, props: i }) => {
14
+ const { formJson: R } = i, p = Re(Le), { i18nt: d } = he(), [D, P] = De(!1), C = be(), v = l(), s = l({}), y = l(!1), F = l(/* @__PURE__ */ new Map()), L = l({}), T = l(), w = Symbol("formWidget");
15
+ f("refList", F), f("getFormConfig", () => o.value), f("formData", s), f("getReadMode", () => D.value), f("designState", !1);
16
+ const b = l(), { executeFunction: $, context: g, execHttpFunction: M } = ye(), { getFormRef: h, getWidgetRef: k, registerToRefList: U } = Me(F, w), o = m(() => {
17
17
  var e;
18
18
  return ((e = v.value) == null ? void 0 : e.formConfig) || {};
19
19
  });
20
- c("formConfig", o), c("formWidgetId", w);
20
+ f("formConfig", o), f("formWidgetId", w);
21
21
  const W = m(() => {
22
22
  var e;
23
23
  return ((e = v.value) == null ? void 0 : e.widgetList) || [];
24
- }), j = m(() => {
24
+ }), _ = m(() => {
25
25
  var e;
26
26
  return ((e = o.value) == null ? void 0 : e.labelPosition) || "horizontal";
27
- }), q = (e) => {
27
+ }), j = (e) => {
28
28
  T.value = e;
29
- }, S = m(() => {
29
+ }, q = m(() => {
30
30
  var e;
31
31
  return (e = o.value) != null && e.labelWidth ? `${o.value.labelWidth}px` : "80px";
32
- }), k = m(() => {
32
+ }), S = m(() => {
33
33
  var e;
34
34
  return ((e = o.value) == null ? void 0 : e.customClass) || "";
35
35
  });
36
- let f = B(x);
36
+ let c = B(x);
37
37
  ue(() => {
38
- f = B(x);
38
+ c = B(x);
39
39
  });
40
40
  const V = async (e) => {
41
41
  console.log({ json: e }), v.value = e || { widgetList: [], formConfig: {} }, s.value = {}, await de(), re();
42
42
  }, z = () => s.value || {}, A = (e) => {
43
43
  e && Object.keys(e).forEach((t) => {
44
- t === "processingDescribe" && console.log(e[t]), Object.prototype.hasOwnProperty.call(s.value, t) && (s.value[t] = e[t]);
44
+ Object.prototype.hasOwnProperty.call(s.value, t) && (s.value[t] = e[t]);
45
45
  });
46
46
  }, G = (e) => {
47
- L.value = e;
47
+ y.value = e;
48
48
  }, K = () => {
49
- f.resetValidation();
49
+ c.resetValidation();
50
50
  }, Q = () => {
51
- f.clearValidate();
51
+ c.clearValidate();
52
52
  }, X = (e) => {
53
- y.value = e;
53
+ b.value = e;
54
54
  }, Y = () => {
55
- if (!a.parentForm)
55
+ if (!i.parentForm)
56
56
  return h();
57
- let e = a.parentForm;
57
+ let e = i.parentForm;
58
58
  for (; e.parentForm; )
59
59
  e = e.parentForm;
60
60
  return e;
61
61
  }, Z = (e, t = {}, r = {}) => {
62
62
  var I, O;
63
- const n = Y(), i = H((n == null ? void 0 : n.widgetList) || [], e) || H(W.value || [], e);
64
- if (i === null) {
63
+ const n = Y(), a = H((n == null ? void 0 : n.widgetList) || [], e) || H(W.value || [], e);
64
+ if (a === null) {
65
65
  J.error(d("render.hint.refNotFound") + e);
66
66
  return;
67
67
  }
68
- if (!e || i.type !== "vf-dialog") {
68
+ if (!e || a.type !== "vf-dialog") {
69
69
  J.error(d("render.hint.refNotFound") + e);
70
70
  return;
71
71
  }
72
72
  const u = {
73
- widgetList: we((i == null ? void 0 : i.widgetList) || []),
73
+ widgetList: we((a == null ? void 0 : a.widgetList) || []),
74
74
  formConfig: pe(((I = n == null ? void 0 : n.formConfig) == null ? void 0 : I.value) || {})
75
- }, fe = xe();
76
- b.value = {
77
- options: i.options,
75
+ }, ce = xe();
76
+ L.value = {
77
+ options: a.options,
78
78
  formJson: u,
79
79
  formData: { ...t },
80
80
  optionData: n.optionData,
81
81
  globalDsv: n.globalDsv,
82
82
  parentFormRef: g.value,
83
83
  extraData: r,
84
- wrapperId: fe,
84
+ wrapperId: ce,
85
85
  vfCtx: { ...t }
86
86
  }, (O = p.value) == null || O.show();
87
- }, N = () => a.parentForm, ee = () => {
87
+ }, N = () => i.parentForm, ee = () => {
88
88
  var e;
89
89
  return (e = p.value) == null ? void 0 : e.getFormRef();
90
90
  }, te = () => {
@@ -93,14 +93,14 @@ const _e = ({ renderForm: x, props: a }) => {
93
93
  });
94
94
  }, oe = async () => {
95
95
  const e = o.value.serveList, t = await M(e.vformDetail, {
96
- vfCtx: a.vfCtx
96
+ vfCtx: i.vfCtx
97
97
  });
98
98
  return console.log("res: ", t), t;
99
99
  }, ne = async () => {
100
- if (!await f.validate()) throw new Error(d("表单验证失败"));
100
+ if (!await c.validate()) throw new Error(d("表单验证失败"));
101
101
  const t = o.value.serveList, r = await M(t.vformUpdate, {
102
102
  data: s.value,
103
- vfCtx: a.vfCtx
103
+ vfCtx: i.vfCtx
104
104
  });
105
105
  return console.log("res: ", r), r;
106
106
  }, re = () => {
@@ -111,7 +111,7 @@ const _e = ({ renderForm: x, props: a }) => {
111
111
  }, se = () => {
112
112
  const e = "vfRender" + Ce(), { cssCode: t, functions: r } = o.value;
113
113
  t && ve(t, e || ""), r && ge(r, e || "");
114
- }, ie = () => {
114
+ }, ae = () => {
115
115
  var t;
116
116
  const e = (t = g.value) == null ? void 0 : t.$router;
117
117
  e == null || e.replace({
@@ -120,31 +120,32 @@ const _e = ({ renderForm: x, props: a }) => {
120
120
  _t: Date.now()
121
121
  }
122
122
  });
123
- }, ae = (e, t) => {
124
- var n, i;
123
+ }, ie = (e, t) => {
124
+ var n, a;
125
125
  const r = (n = h().vfCtx) == null ? void 0 : n.goBack;
126
126
  if (typeof r == "function")
127
127
  r(e, t);
128
128
  else {
129
- const u = (i = g.value) == null ? void 0 : i.$router;
129
+ const u = (a = g.value) == null ? void 0 : a.$router;
130
130
  u == null || u.go(-1);
131
131
  }
132
- }, le = (e) => s.value[e], ce = () => a.vfCtx;
132
+ }, le = (e) => s.value[e], fe = () => i.vfCtx;
133
133
  me(() => {
134
- D && V(D), te(), se();
134
+ R && V(R), te(), se();
135
135
  });
136
136
  const E = {
137
137
  context: g,
138
138
  i18nt: d,
139
- goBack: ae,
140
- reload: ie,
139
+ goBack: ie,
140
+ reload: ae,
141
+ formValidator: c,
141
142
  getFieldValue: le,
142
143
  resetValidation: K,
143
144
  clearValidate: Q,
144
- getVfCtx: ce,
145
+ getVfCtx: fe,
145
146
  getParentFormRef: N,
146
147
  getFormRef: h,
147
- getWidgetRef: U,
148
+ getWidgetRef: k,
148
149
  showDialog: Z,
149
150
  getFormData: z,
150
151
  getChildFormRef: ee,
@@ -155,35 +156,34 @@ const _e = ({ renderForm: x, props: a }) => {
155
156
  onFormDetail: oe,
156
157
  onFormUpdate: ne,
157
158
  formDataModel: s,
158
- isLoading: L,
159
- vfCtx: a.vfCtx,
159
+ isLoading: y,
160
+ vfCtx: i.vfCtx,
160
161
  // 计算属性
161
162
  formConfig: o,
162
163
  dynamicDialgRef: p,
163
- setChildFormRef: q,
164
+ setChildFormRef: j,
164
165
  setDialogOrDrawerRef: X
165
166
  };
166
167
  return {
167
168
  formWidgetId: w,
168
- registerToRefList: _,
169
- dialogOrDrawerRef: y,
169
+ registerToRefList: U,
170
+ dialogOrDrawerRef: b,
170
171
  emitter: C,
171
172
  // 状态
172
173
  formJsonObj: v,
173
- readModeFlag: R,
174
+ readModeFlag: D,
174
175
  // 引用
175
176
  widgetRefList: F,
176
- formValidator: f,
177
177
  widgetList: W,
178
- labelPosition: j,
179
- labelWidth: S,
180
- customClass: k,
181
- dialogProps: b,
178
+ labelPosition: _,
179
+ labelWidth: q,
180
+ customClass: S,
181
+ dialogProps: L,
182
182
  expose: E,
183
183
  ...E
184
184
  };
185
185
  };
186
186
  export {
187
- _e as useFormContext
187
+ Ue as useFormContext
188
188
  };
189
189
  //# sourceMappingURL=useFormContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.js","sources":["../../../../src/components/FormRender/useFormContext.ts"],"sourcesContent":["import { computed, nextTick, onMounted, provide, ref, watchEffect } from 'vue';\nimport { useFormValidation } from './formValidation';\n\n/**\n * 表单上下文接口\n */\nimport { Widget } from '@/types/schema';\nimport {\n cloneFormConfigWithoutEventHandler,\n generateId,\n getContainerWidgetByName,\n insertCustomCssToHead,\n insertGlobalFunctionsToHtml\n} from '@/utils/util';\nimport { cloneDeep, set } from 'lodash-es';\nimport { message } from 'ant-design-vue';\nimport { useI18n } from '@/utils/i18n';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { routerReloadStatus, useComRef, useExecFunction, useRef } from 'tmgc2-share';\nimport DynamicDialog from '../form-render/dynamic-dialog.vue';\nimport { useEmitter } from '@/utils/useEmitter';\nimport { useAppRef } from '../form-designer/useAppRef';\nexport interface FormRenderProps {\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n renderConfig?: {\n languageName?: string;\n };\n globalDsv?: Record<string, any>;\n parentForm?: any;\n dynamicCreation?: boolean;\n debug?: boolean;\n}\n\n/**\n * 表单上下文配置\n */\nexport interface FormContextOptions {\n props: FormRenderProps;\n renderForm: any;\n}\n\n/**\n * 创建表单上下文\n * @param options 表单上下文配置\n * @returns 表单上下文\n */\nexport const useFormContext = ({ renderForm, props }: FormContextOptions) => {\n const { formJson } = props;\n const dynamicDialgRef = useComRef(DynamicDialog);\n const { i18nt } = useI18n();\n const [readModeFlag, setReadMode] = useRef(false);\n\n const emitter = useEmitter();\n\n const formJsonObj = ref();\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n const isLoading = ref(false);\n const widgetRefList = ref<Map<string, any>>(new Map());\n const dialogProps = ref({});\n const childFormRef = ref();\n\n const formWidgetId = Symbol('formWidget');\n\n // 提供给子组件的数据\n provide('refList', widgetRefList);\n provide('getFormConfig', () => formConfig.value);\n provide('formData', formDataModel);\n provide('getReadMode', () => readModeFlag.value);\n provide('designState', false); // 设计态标识\n\n const dialogOrDrawerRef = ref();\n\n const { executeFunction, context, execHttpFunction } = useExecFunction();\n const { getFormRef, getWidgetRef, registerToRefList } = useAppRef(widgetRefList, formWidgetId);\n\n // 计算属性\n const formConfig = computed(() => formJsonObj.value?.formConfig || {});\n\n provide('formConfig', formConfig);\n provide('formWidgetId', formWidgetId);\n\n const widgetList = computed(() => formJsonObj.value?.widgetList || []);\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const setChildFormRef = chid => {\n childFormRef.value = chid;\n };\n\n const labelWidth = computed(() => {\n return formConfig.value?.labelWidth ? `${formConfig.value.labelWidth}px` : '80px';\n });\n\n const customClass = computed(() => {\n return formConfig.value?.customClass || '';\n });\n\n // 初始化表单验证器\n let formValidator = useFormValidation(renderForm);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n console.log({ json });\n\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n // 重新构建表单数据模型\n formDataModel.value = {};\n\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (key === 'processingDescribe') {\n console.log(data[key]);\n }\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n globalDsv: topFormRef.globalDsv,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialgRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialgRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n const getFieldValue = (field: string) => {\n return formDataModel.value[field];\n };\n\n const getVfCtx = () => {\n return props.vfCtx;\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n insertCustomCode();\n });\n\n const expose = {\n context,\n i18nt,\n goBack,\n reload,\n getFieldValue,\n resetValidation,\n clearValidate,\n getVfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n showDialog,\n getFormData,\n getChildFormRef,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n formDataModel,\n isLoading,\n vfCtx: props.vfCtx,\n // 计算属性\n formConfig,\n dynamicDialgRef,\n setChildFormRef,\n setDialogOrDrawerRef\n };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n\n emitter,\n // 状态\n formJsonObj,\n readModeFlag,\n // 引用\n widgetRefList,\n formValidator,\n\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dialogProps,\n\n expose,\n ...expose\n };\n};\n"],"names":["useFormContext","renderForm","props","formJson","dynamicDialgRef","useComRef","DynamicDialog","i18nt","useI18n","readModeFlag","setReadMode","useRef","emitter","useEmitter","formJsonObj","ref","formDataModel","isLoading","widgetRefList","dialogProps","childFormRef","formWidgetId","provide","formConfig","dialogOrDrawerRef","executeFunction","context","execHttpFunction","useExecFunction","getFormRef","getWidgetRef","registerToRefList","useAppRef","computed","_a","widgetList","labelPosition","setChildFormRef","chid","labelWidth","customClass","formValidator","useFormValidation","watchEffect","setFormJson","json","nextTick","handleOnMounted","getFormData","setFormData","data","key","setLoading","loading","resetValidation","clearValidate","setDialogOrDrawerRef","ddRef","getTopFormRef","topFormRef","showDialog","dialogName","formData","extraData","dialogCon","getContainerWidgetByName","message","dFormJson","cloneDeep","cloneFormConfigWithoutEventHandler","wrapperDivId","getUuidKey","_b","getParentFormRef","getChildFormRef","fieldChangeEventHandler","fieldName","value","set","onFormDetail","serveList","res","onFormUpdate","insertCustomCode","formId","generateId","cssCode","functions","insertCustomCssToHead","insertGlobalFunctionsToHtml","reload","router","goBack","reloadStatus","cb","getFieldValue","field","getVfCtx","onMounted","expose"],"mappings":"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"}
1
+ {"version":3,"file":"useFormContext.js","sources":["../../../../src/components/FormRender/useFormContext.ts"],"sourcesContent":["import { computed, nextTick, onMounted, provide, ref, watchEffect } from 'vue';\nimport { useFormValidation } from './formValidation';\n\n/**\n * 表单上下文接口\n */\nimport { Widget } from '@/types/schema';\nimport {\n cloneFormConfigWithoutEventHandler,\n generateId,\n getContainerWidgetByName,\n insertCustomCssToHead,\n insertGlobalFunctionsToHtml\n} from '@/utils/util';\nimport { cloneDeep, set } from 'lodash-es';\nimport { message } from 'ant-design-vue';\nimport { useI18n } from '@/utils/i18n';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { routerReloadStatus, useComRef, useExecFunction, useRef } from 'tmgc2-share';\nimport DynamicDialog from '../form-render/dynamic-dialog.vue';\nimport { useEmitter } from '@/utils/useEmitter';\nimport { useAppRef } from '../form-designer/useAppRef';\nexport interface FormRenderProps {\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n renderConfig?: {\n languageName?: string;\n };\n globalDsv?: Record<string, any>;\n parentForm?: any;\n dynamicCreation?: boolean;\n debug?: boolean;\n}\n\n/**\n * 表单上下文配置\n */\nexport interface FormContextOptions {\n props: FormRenderProps;\n renderForm: any;\n}\n\n/**\n * 创建表单上下文\n * @param options 表单上下文配置\n * @returns 表单上下文\n */\nexport const useFormContext = ({ renderForm, props }: FormContextOptions) => {\n const { formJson } = props;\n const dynamicDialgRef = useComRef(DynamicDialog);\n const { i18nt } = useI18n();\n const [readModeFlag, setReadMode] = useRef(false);\n\n const emitter = useEmitter();\n\n const formJsonObj = ref();\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n const isLoading = ref(false);\n const widgetRefList = ref<Map<string, any>>(new Map());\n const dialogProps = ref({});\n const childFormRef = ref();\n\n const formWidgetId = Symbol('formWidget');\n\n // 提供给子组件的数据\n provide('refList', widgetRefList);\n provide('getFormConfig', () => formConfig.value);\n provide('formData', formDataModel);\n provide('getReadMode', () => readModeFlag.value);\n provide('designState', false); // 设计态标识\n\n const dialogOrDrawerRef = ref();\n\n const { executeFunction, context, execHttpFunction } = useExecFunction();\n const { getFormRef, getWidgetRef, registerToRefList } = useAppRef(widgetRefList, formWidgetId);\n\n // 计算属性\n const formConfig = computed(() => formJsonObj.value?.formConfig || {});\n\n provide('formConfig', formConfig);\n provide('formWidgetId', formWidgetId);\n\n const widgetList = computed(() => formJsonObj.value?.widgetList || []);\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const setChildFormRef = chid => {\n childFormRef.value = chid;\n };\n\n const labelWidth = computed(() => {\n return formConfig.value?.labelWidth ? `${formConfig.value.labelWidth}px` : '80px';\n });\n\n const customClass = computed(() => {\n return formConfig.value?.customClass || '';\n });\n\n // 初始化表单验证器\n let formValidator = useFormValidation(renderForm);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n console.log({ json });\n\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n // 重新构建表单数据模型\n formDataModel.value = {};\n\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n globalDsv: topFormRef.globalDsv,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialgRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialgRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n const getFieldValue = (field: string) => {\n return formDataModel.value[field];\n };\n\n const getVfCtx = () => {\n return props.vfCtx;\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n insertCustomCode();\n });\n\n const expose = {\n context,\n i18nt,\n goBack,\n reload,\n formValidator,\n getFieldValue,\n resetValidation,\n clearValidate,\n getVfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n showDialog,\n getFormData,\n getChildFormRef,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n formDataModel,\n isLoading,\n vfCtx: props.vfCtx,\n // 计算属性\n formConfig,\n dynamicDialgRef,\n setChildFormRef,\n setDialogOrDrawerRef\n };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n\n emitter,\n // 状态\n formJsonObj,\n readModeFlag,\n // 引用\n widgetRefList,\n\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dialogProps,\n\n expose,\n ...expose\n };\n};\n"],"names":["useFormContext","renderForm","props","formJson","dynamicDialgRef","useComRef","DynamicDialog","i18nt","useI18n","readModeFlag","setReadMode","useRef","emitter","useEmitter","formJsonObj","ref","formDataModel","isLoading","widgetRefList","dialogProps","childFormRef","formWidgetId","provide","formConfig","dialogOrDrawerRef","executeFunction","context","execHttpFunction","useExecFunction","getFormRef","getWidgetRef","registerToRefList","useAppRef","computed","_a","widgetList","labelPosition","setChildFormRef","chid","labelWidth","customClass","formValidator","useFormValidation","watchEffect","setFormJson","json","nextTick","handleOnMounted","getFormData","setFormData","data","key","setLoading","loading","resetValidation","clearValidate","setDialogOrDrawerRef","ddRef","getTopFormRef","topFormRef","showDialog","dialogName","formData","extraData","dialogCon","getContainerWidgetByName","message","dFormJson","cloneDeep","cloneFormConfigWithoutEventHandler","wrapperDivId","getUuidKey","_b","getParentFormRef","getChildFormRef","fieldChangeEventHandler","fieldName","value","set","onFormDetail","serveList","res","onFormUpdate","insertCustomCode","formId","generateId","cssCode","functions","insertCustomCssToHead","insertGlobalFunctionsToHtml","reload","router","goBack","reloadStatus","cb","getFieldValue","field","getVfCtx","onMounted","expose"],"mappings":";;;;;;;;;;;;AAkDO,MAAMA,KAAiB,CAAC,EAAE,YAAAC,GAAY,OAAAC,QAAgC;AACzE,QAAM,EAAE,UAAAC,MAAaD,GACfE,IAAkBC,GAAUC,EAAa,GACzC,EAAE,OAAAC,EAAA,IAAUC,GAAA,GACZ,CAACC,GAAcC,CAAW,IAAIC,GAAO,EAAK,GAE1CC,IAAUC,GAAA,GAEVC,IAAcC,EAAA,GAEdC,IAAgBD,EAAyB,EAAE,GAC3CE,IAAYF,EAAI,EAAK,GACrBG,IAAgBH,EAAsB,oBAAI,KAAK,GAC/CI,IAAcJ,EAAI,EAAE,GACpBK,IAAeL,EAAA,GAEfM,IAAe,OAAO,YAAY;AAGxC,EAAAC,EAAQ,WAAWJ,CAAa,GAChCI,EAAQ,iBAAiB,MAAMC,EAAW,KAAK,GAC/CD,EAAQ,YAAYN,CAAa,GACjCM,EAAQ,eAAe,MAAMb,EAAa,KAAK,GAC/Ca,EAAQ,eAAe,EAAK;AAE5B,QAAME,IAAoBT,EAAA,GAEpB,EAAE,iBAAAU,GAAiB,SAAAC,GAAS,kBAAAC,EAAA,IAAqBC,GAAA,GACjD,EAAE,YAAAC,GAAY,cAAAC,GAAc,mBAAAC,MAAsBC,GAAUd,GAAeG,CAAY,GAGvFE,IAAaU,EAAS,MAAA;;AAAM,aAAAC,IAAApB,EAAY,UAAZ,gBAAAoB,EAAmB,eAAc;GAAE;AAErE,EAAAZ,EAAQ,cAAcC,CAAU,GAChCD,EAAQ,gBAAgBD,CAAY;AAEpC,QAAMc,IAAaF,EAAS,MAAA;;AAAM,aAAAC,IAAApB,EAAY,UAAZ,gBAAAoB,EAAmB,eAAc;GAAE,GAC/DE,IAAgBH,EAAS,MAAM;;AACjC,aAAOC,IAAAX,EAAW,UAAX,gBAAAW,EAAkB,kBAAiB;AAAA,EAC9C,CAAC,GAEKG,IAAkB,CAAAC,MAAQ;AAC5B,IAAAlB,EAAa,QAAQkB;AAAA,EACzB,GAEMC,IAAaN,EAAS,MAAM;;AAC9B,YAAOC,IAAAX,EAAW,UAAX,QAAAW,EAAkB,aAAa,GAAGX,EAAW,MAAM,UAAU,OAAO;AAAA,EAC/E,CAAC,GAEKiB,IAAcP,EAAS,MAAM;;AAC/B,aAAOC,IAAAX,EAAW,UAAX,gBAAAW,EAAkB,gBAAe;AAAA,EAC5C,CAAC;AAGD,MAAIO,IAAgBC,EAAkBzC,CAAU;AAGhD,EAAA0C,GAAY,MAAM;AACd,IAAAF,IAAgBC,EAAkBzC,CAAU;AAAA,EAChD,CAAC;AAKD,QAAM2C,IAAc,OAAOC,MAAc;AACrC,YAAQ,IAAI,EAAE,MAAAA,GAAM,GAEpB/B,EAAY,QAAQ+B,KAAQ,EAAE,YAAY,CAAA,GAAI,YAAY,GAAC,GAE3D7B,EAAc,QAAQ,CAAA,GAEtB,MAAM8B,GAAA,GACNC,GAAA;AAAA,EACJ,GAKMC,IAAc,MACThC,EAAc,SAAS,CAAA,GAM5BiC,IAAc,CAACC,MAA8B;AAC/C,IAAKA,KAEL,OAAO,KAAKA,CAAI,EAAE,QAAQ,CAAAC,MAAO;AAC7B,MAAI,OAAO,UAAU,eAAe,KAAKnC,EAAc,OAAOmC,CAAG,MAC7DnC,EAAc,MAAMmC,CAAG,IAAID,EAAKC,CAAG;AAAA,IAE3C,CAAC;AAAA,EACL,GAKMC,IAAa,CAACC,MAAqB;AACrC,IAAApC,EAAU,QAAQoC;AAAA,EACtB,GAKMC,IAAkB,MAAM;AAC1B,IAAAb,EAAc,gBAAA;AAAA,EAClB,GAKMc,IAAgB,MAAM;AACxB,IAAAd,EAAc,cAAA;AAAA,EAClB,GAEMe,IAAuB,CAACC,MAAe;AACzC,IAAAjC,EAAkB,QAAQiC;AAAA,EAC9B,GAMMC,IAAgB,MAAM;AACxB,QAAI,CAACxD,EAAM;AACP,aAAO2B,EAAA;AAGX,QAAI8B,IAAazD,EAAM;AACvB,WAAOyD,EAAW;AACd,MAAAA,IAAaA,EAAW;AAG5B,WAAOA;AAAA,EACX,GAQMC,IAAa,CAACC,GAAYC,IAAW,CAAA,GAAIC,IAAY,OAAO;;AAC9D,UAAMJ,IAAaD,EAAA,GACbM,IAAaC,GAAyBN,KAAA,gBAAAA,EAAY,eAAc,CAAA,GAAIE,CAAU,KAChFI,EAAyB9B,EAAW,SAAS,CAAA,GAAI0B,CAAU;AAE/D,QAAIG,MAAc,MAAM;AACpB,MAAAE,EAAQ,MAAM3D,EAAM,yBAAyB,IAAIsD,CAAU;AAC3D;AAAA,IACJ;AAEA,QAAI,CAACA,KAAcG,EAAU,SAAS,aAAa;AAC/C,MAAAE,EAAQ,MAAM3D,EAAM,yBAAyB,IAAIsD,CAAU;AAC3D;AAAA,IACJ;AACA,UAAMM,IAAY;AAAA,MACd,YAAYC,IAAUJ,KAAA,gBAAAA,EAAW,eAAc,CAAA,CAAE;AAAA,MACjD,YAAYK,KAAmCnC,IAAAyB,KAAA,gBAAAA,EAAY,eAAZ,gBAAAzB,EAAwB,UAAS,CAAA,CAAE;AAAA,IAAA,GAEhFoC,KAAeC,GAAA;AACrB,IAAApD,EAAY,QAAQ;AAAA,MAChB,SAAS6C,EAAU;AAAA,MACnB,UAAUG;AAAA,MACV,UAAU,EAAE,GAAGL,EAAA;AAAA,MACf,YAAYH,EAAW;AAAA,MACvB,WAAWA,EAAW;AAAA,MACtB,eAAejC,EAAQ;AAAA,MACvB,WAAAqC;AAAA,MACA,WAAWO;AAAA,MACX,OAAO,EAAE,GAAGR,EAAA;AAAA,IAAS,IAGzBU,IAAApE,EAAgB,UAAhB,QAAAoE,EAAuB;AAAA,EAC3B,GAKMC,IAAmB,MACdvE,EAAM,YAGXwE,KAAkB,MAAM;;AAC1B,YAAOxC,IAAA9B,EAAgB,UAAhB,gBAAA8B,EAAuB;AAAA,EAClC,GAKMyC,KAA0B,MAAM;AAClC,IAAA/D,EAAQ,KAAK,aAAa,GAC1BA,EAAQ,IAAI,eAAe,CAAC,EAAE,WAAAgE,GAAW,OAAAC,QAAY;AAEjD,MAAI,OAAOD,IAAc,OAAe,OAAOC,IAAU,OACrDC,GAAI9D,EAAc,OAAO4D,GAAWC,CAAK;AAAA,IAEjD,CAAC;AAAA,EACL,GAEME,KAAe,YAAY;AAC7B,UAAMC,IAAYzD,EAAW,MAAM,WAC7B0D,IAAM,MAAMtD,EAAiBqD,EAAU,aAAa;AAAA,MACtD,OAAO9E,EAAM;AAAA,IAAA,CAChB;AACD,mBAAQ,IAAI,SAAS+E,CAAG,GACjBA;AAAA,EACX,GAEMC,KAAe,YAAY;AAE7B,QAAI,CADU,MAAMzC,EAAc,SAAA,EACtB,OAAM,IAAI,MAAMlC,EAAM,QAAQ,CAAC;AAE3C,UAAMyE,IAAYzD,EAAW,MAAM,WAC7B0D,IAAM,MAAMtD,EAAiBqD,EAAU,aAAa;AAAA,MACtD,MAAMhE,EAAc;AAAA,MACpB,OAAOd,EAAM;AAAA,IAAA,CAChB;AACD,mBAAQ,IAAI,SAAS+E,CAAG,GACjBA;AAAA,EACX,GAEMlC,KAAkB,MAAM;;AAC1B,KAAIb,IAAAX,EAAW,UAAX,QAAAW,EAAkB,kBAClB,QAAQ,IAAI,iBAAiB,GAC7BT,EAAgB;AAAA,MACZ,eAAc+C,IAAAjD,EAAW,UAAX,gBAAAiD,EAAkB;AAAA,IAAA,CACnC;AAAA,EAET,GAQMW,KAAmB,MAAM;AAC3B,UAAMC,IAAS,aAAaC,GAAA,GACtB,EAAE,SAAAC,GAAS,WAAAC,EAAA,IAAchE,EAAW;AAC1C,IAAI+D,KACAE,GAAsBF,GAASF,KAAU,EAAE,GAE3CG,KACAE,GAA4BF,GAAWH,KAAU,EAAE;AAAA,EAE3D,GAEMM,KAAS,MAAM;;AACjB,UAAMC,KAASzD,IAAAR,EAAQ,UAAR,gBAAAQ,EAAe;AAC9B,IAAAyD,KAAA,QAAAA,EAAQ,QAAQ;AAAA,MACZ,OAAO;AAAA,QACH,GAAGA,EAAO,aAAa,MAAM;AAAA,QAC7B,IAAI,KAAK,IAAA;AAAA,MAAI;AAAA,IACjB;AAAA,EAER,GAEMC,KAAS,CAACC,GAAmCC,MAAoB;;AACnE,UAAMF,KAAS1D,IAAAL,IAAa,UAAb,gBAAAK,EAAoB;AACnC,QAAI,OAAO0D,KAAW;AAClBA,MAAAA,EAAOC,GAAcC,CAAE;AAAA,SACpB;AACH,YAAMH,KAASnB,IAAA9C,EAAQ,UAAR,gBAAA8C,EAAe;AAC9B,MAAAmB,KAAA,QAAAA,EAAQ,GAAG;AAAA,IACf;AAAA,EACJ,GAEMI,KAAgB,CAACC,MACZhF,EAAc,MAAMgF,CAAK,GAG9BC,KAAW,MACN/F,EAAM;AAGjB,EAAAgG,GAAU,MAAM;AACZ,IAAI/F,KACAyC,EAAYzC,CAAQ,GAExBwE,GAAA,GACAQ,GAAA;AAAA,EACJ,CAAC;AAED,QAAMgB,IAAS;AAAA,IACX,SAAAzE;AAAA,IACA,OAAAnB;AAAA,IACA,QAAAqF;AAAA,IACA,QAAAF;AAAA,IACA,eAAAjD;AAAA,IACA,eAAAsD;AAAA,IACA,iBAAAzC;AAAA,IACA,eAAAC;AAAA,IACA,UAAA0C;AAAA,IACA,kBAAAxB;AAAA,IACA,YAAA5C;AAAA,IACA,cAAAC;AAAA,IACA,YAAA8B;AAAA,IACA,aAAAZ;AAAA,IACA,iBAAA0B;AAAA,IACA,aAAAzB;AAAA,IACA,aAAAvC;AAAA,IACA,aAAAkC;AAAA,IACA,YAAAQ;AAAA,IACA,cAAA2B;AAAA,IACA,cAAAG;AAAA,IACA,eAAAlE;AAAA,IACA,WAAAC;AAAA,IACA,OAAOf,EAAM;AAAA;AAAA,IAEb,YAAAqB;AAAA,IACA,iBAAAnB;AAAA,IACA,iBAAAiC;AAAA,IACA,sBAAAmB;AAAA,EAAA;AAGJ,SAAO;AAAA,IACH,cAAAnC;AAAA,IACA,mBAAAU;AAAA,IACA,mBAAAP;AAAA,IAEA,SAAAZ;AAAA;AAAA,IAEA,aAAAE;AAAA,IACA,cAAAL;AAAA;AAAA,IAEA,eAAAS;AAAA,IAEA,YAAAiB;AAAA,IACA,eAAAC;AAAA,IACA,YAAAG;AAAA,IACA,aAAAC;AAAA,IACA,aAAArB;AAAA,IAEA,QAAAgF;AAAA,IACA,GAAGA;AAAA,EAAA;AAEX;"}