@kp-ui/lowcode 2.16.0-alpha.5 → 2.16.0-alpha.8
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/install.js +15 -15
- package/install.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FormRender/index.vue.js +1 -1
- package/src/components/FormRender/index.vue2.js +30 -27
- package/src/components/FormRender/index.vue2.js.map +1 -1
- package/src/components/FormRender/useFormContext.js +29 -30
- package/src/components/FormRender/useFormContext.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/useTableWidget.js +54 -53
- package/src/components/form-designer/form-widget/container-widget/useTableWidget.js.map +1 -1
- package/src/components/form-render/container-items/data-table-widget.vue.js +3 -3
- package/src/components/form-render/container-items/data-table-widget.vue2.js +7 -5
- package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
- package/src/components/form-render/dynamic-dialog.vue.js +7 -7
- package/src/components/form-render/dynamic-dialog.vue.js.map +1 -1
- package/src/components/public/ActionButtonListDialog.vue.js +2 -2
- package/src/components/public/ActionButtonListDialog.vue2.js +2 -2
- package/src/components/public/ActionButtonListDialog.vue2.js.map +1 -1
- package/src/components/public/ActionButtonListRender.vue.js +12 -12
- package/src/components/public/ActionButtonListRender.vue.js.map +1 -1
- package/src/components/public/ActionButtonListRender.vue2.js +29 -29
- package/src/components/public/ActionButtonListRender.vue2.js.map +1 -1
- package/src/hooks/useDataHttp.js +8 -7
- package/src/hooks/useDataHttp.js.map +1 -1
- package/stats.html +1 -1
- package/styles/style.css +1 -1
package/install.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
import "./_virtual/virtual_svg-icons-register.js";
|
|
3
3
|
import a from "dayjs";
|
|
4
|
-
import { getLocat as
|
|
5
|
-
import { VxeTooltip as
|
|
6
|
-
import { basicFieldsEnums as
|
|
7
|
-
import { default as
|
|
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";
|
|
8
8
|
/* empty css */
|
|
9
|
-
import { openCustomerModal as
|
|
10
|
-
import { default as
|
|
11
|
-
import { default as
|
|
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
12
|
import { default as w } from "./src/components/public/ConfigView/CustomPageRender.vue.js";
|
|
13
13
|
import { useLowcode as I } from "./src/hooks/useLowcode.js";
|
|
14
14
|
import { default as T } from "./src/components/FormRender/index.vue.js";
|
|
15
|
-
const
|
|
16
|
-
const { app: o,
|
|
17
|
-
o.config.globalProperties.$getLocat =
|
|
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);
|
|
18
18
|
};
|
|
19
19
|
export {
|
|
20
|
-
|
|
20
|
+
h as ActionButtonListRender,
|
|
21
21
|
w as CustomPageRender,
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
V as SubmitButtonRender,
|
|
23
|
+
y as VFormDesigner,
|
|
24
24
|
T as VFormRender,
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
$ as basicFieldsEnums,
|
|
26
|
+
b as registerLowcodeCore,
|
|
27
27
|
I as useLowcode
|
|
28
28
|
};
|
|
29
29
|
//# 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 factoryRender: (name: any, props: any, ...args: any[]) => any;\n getUserInfo?: () => any;\n}\n\n// 注册 HTTP\nexport const registerLowcodeCore = (params: RegisterLowcodeCoreParams) => {\n const { app, factoryRender, getUserInfo } = 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","getUserInfo","getLocat","dayjs","ops","openCustomerModal","VxeTooltip"],"mappings":";;;;;;;;;;;;;;
|
|
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;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./index.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import r from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const e = /* @__PURE__ */ r(o, [["__scopeId", "data-v-
|
|
4
|
+
const e = /* @__PURE__ */ r(o, [["__scopeId", "data-v-97ab4c5a"]]);
|
|
5
5
|
export {
|
|
6
6
|
e as default
|
|
7
7
|
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { Skeleton as
|
|
3
|
-
import
|
|
1
|
+
import { defineComponent as D, computed as c, ref as L, useTemplateRef as V, onMounted as h, watch as w, createElementBlock as u, openBlock as n, Fragment as J, createElementVNode as S, createBlock as T, createCommentVNode as p, createVNode as a, unref as e, mergeProps as E } from "vue";
|
|
2
|
+
import { Skeleton as I } from "ant-design-vue";
|
|
3
|
+
import M from "../form-render/dynamic-dialog.vue.js";
|
|
4
4
|
/* empty css */
|
|
5
|
-
import
|
|
6
|
-
import { useFormContext as
|
|
7
|
-
import { useI18n as
|
|
8
|
-
import { storeToRefs as
|
|
9
|
-
import { useLocaleStore as
|
|
10
|
-
import { getLocat as
|
|
11
|
-
import
|
|
12
|
-
const
|
|
5
|
+
import P from "./FormContainer.vue.js";
|
|
6
|
+
import { useFormContext as $ } from "./useFormContext.js";
|
|
7
|
+
import { useI18n as z } from "../../utils/i18n.js";
|
|
8
|
+
import { storeToRefs as A } from "pinia";
|
|
9
|
+
import { useLocaleStore as U } from "@kp-ui/i18n";
|
|
10
|
+
import { getLocat as W } from "@kp-ui/tool";
|
|
11
|
+
import j from "./Debugger.vue.js";
|
|
12
|
+
const q = { class: "form-render-wrapper" }, G = {
|
|
13
13
|
key: 0,
|
|
14
14
|
class: "loading-wrapper"
|
|
15
|
-
},
|
|
15
|
+
}, ae = /* @__PURE__ */ D({
|
|
16
16
|
name: "VFormRender",
|
|
17
17
|
componentName: "VFormRender",
|
|
18
18
|
inheritAttrs: !1,
|
|
@@ -30,17 +30,17 @@ const j = { class: "form-render-wrapper" }, q = {
|
|
|
30
30
|
debug: { type: Boolean }
|
|
31
31
|
},
|
|
32
32
|
emits: ["form-submit", "form-cancel"],
|
|
33
|
-
setup(g, { expose: v, emit:
|
|
34
|
-
const { initLocale: _ } =
|
|
33
|
+
setup(g, { expose: v, emit: H }) {
|
|
34
|
+
const { initLocale: _ } = z(), b = U(), { locale: m } = A(b), C = c(() => W().debug === "1"), i = L(!1), l = g, o = V("formContainer"), s = c(() => {
|
|
35
35
|
var r;
|
|
36
36
|
return (r = o.value) == null ? void 0 : r.renderForm;
|
|
37
|
-
}), t =
|
|
37
|
+
}), t = $({
|
|
38
38
|
props: l,
|
|
39
39
|
renderForm: s
|
|
40
|
-
}), x = () => o.value, {
|
|
41
|
-
return
|
|
42
|
-
|
|
43
|
-
}),
|
|
40
|
+
}), x = () => o.value, { dynamicDialgRef: y, dialogProps: k, emitter: F, isLoading: f, registerToRefList: N, formWidgetId: R } = t;
|
|
41
|
+
return h(() => {
|
|
42
|
+
N(R);
|
|
43
|
+
}), w(
|
|
44
44
|
m,
|
|
45
45
|
() => {
|
|
46
46
|
_(m.value);
|
|
@@ -54,19 +54,22 @@ const j = { class: "form-render-wrapper" }, q = {
|
|
|
54
54
|
getNativeForm: x,
|
|
55
55
|
formJson: l.formJson,
|
|
56
56
|
renderForm: s
|
|
57
|
-
}), (r, d) => (n(),
|
|
58
|
-
|
|
59
|
-
e(f) ? (n(),
|
|
60
|
-
a(e(
|
|
57
|
+
}), (r, d) => (n(), u(J, null, [
|
|
58
|
+
S("div", q, [
|
|
59
|
+
e(f) ? (n(), u("div", G, [
|
|
60
|
+
a(e(I), { active: e(f) }, null, 8, ["active"])
|
|
61
61
|
])) : p("", !0),
|
|
62
|
-
a(
|
|
62
|
+
a(P, {
|
|
63
63
|
ref_key: "formContainer",
|
|
64
64
|
ref: o,
|
|
65
65
|
context: e(t)
|
|
66
66
|
}, null, 8, ["context"]),
|
|
67
|
-
a(
|
|
67
|
+
a(M, E(e(k), {
|
|
68
|
+
ref_key: "dynamicDialgRef",
|
|
69
|
+
ref: y
|
|
70
|
+
}), null, 16)
|
|
68
71
|
]),
|
|
69
|
-
C.value ? (n(),
|
|
72
|
+
C.value ? (n(), T(j, {
|
|
70
73
|
key: 0,
|
|
71
74
|
visible: i.value,
|
|
72
75
|
"onUpdate:visible": d[0] || (d[0] = (B) => i.value = B)
|
|
@@ -75,6 +78,6 @@ const j = { class: "form-render-wrapper" }, q = {
|
|
|
75
78
|
}
|
|
76
79
|
});
|
|
77
80
|
export {
|
|
78
|
-
|
|
81
|
+
ae as default
|
|
79
82
|
};
|
|
80
83
|
//# sourceMappingURL=index.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../src/components/FormRender/index.vue"],"sourcesContent":["<template>\n <div class=\"form-render-wrapper\">\n <div class=\"loading-wrapper\" v-if=\"isLoading\">\n <Skeleton :active=\"isLoading\" />\n </div>\n <FormContainer ref=\"formContainer\" :context=\"formContext\" />\n <DynamicDialog v-bind=\"dialogProps\" ref=\"dynamicDialgRef\" />\n </div>\n <Debugger v-if=\"debug\" v-model:visible=\"debugVisible\" />\n</template>\n\n<script lang=\"ts\" setup>\n import { onMounted, ref, watch, computed, useTemplateRef } from 'vue';\n import { Skeleton } from 'ant-design-vue';\n import DynamicDialog from '@/components/form-render/dynamic-dialog.vue';\n import FormContainer from './FormContainer.vue';\n import { type FormRenderProps, useFormContext } from './useFormContext';\n import { useI18n } from '@/utils/i18n';\n import { storeToRefs } from 'pinia';\n import { useLocaleStore } from '@kp-ui/i18n';\n import { getLocat } from '@kp-ui/tool';\n import Debugger from './Debugger.vue';\n\n const { initLocale } = useI18n();\n defineOptions({\n name: 'VFormRender',\n componentName: 'VFormRender',\n inheritAttrs: false\n });\n const localeStore = useLocaleStore();\n const { locale } = storeToRefs(localeStore);\n\n const debug = computed(() => getLocat().debug === '1');\n const debugVisible = ref(false);\n\n const props = withDefaults(defineProps<FormRenderProps>(), {\n vfCtx: () => ({}),\n formJson: () => ({ widgetList: [], formConfig: {} }),\n formData: () => ({}),\n optionData: () => ({}),\n disabledMode: false,\n renderConfig: () => ({ languageName: 'zh-CN' }),\n globalDsv: () => ({}),\n parentForm: null,\n dynamicCreation: false\n });\n\n // 组件引用\n const formContainer = useTemplateRef('formContainer');\n\n const renderForm = computed(() => formContainer.value?.renderForm);\n\n // 组件事件\n const emit = defineEmits<{\n (e: 'form-submit', formData: any): void;\n (e: 'form-cancel'): void;\n }>();\n\n // 创建表单上下文\n const formContext = useFormContext({\n props,\n renderForm\n });\n\n //获取原生form引用\n const getNativeForm = () => {\n return formContainer.value;\n };\n const { dialogProps, emitter, isLoading, registerToRefList, formWidgetId }
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../src/components/FormRender/index.vue"],"sourcesContent":["<template>\n <div class=\"form-render-wrapper\">\n <div class=\"loading-wrapper\" v-if=\"isLoading\">\n <Skeleton :active=\"isLoading\" />\n </div>\n <FormContainer ref=\"formContainer\" :context=\"formContext\" />\n <DynamicDialog v-bind=\"dialogProps\" ref=\"dynamicDialgRef\" />\n </div>\n <Debugger v-if=\"debug\" v-model:visible=\"debugVisible\" />\n</template>\n\n<script lang=\"ts\" setup>\n import { onMounted, ref, watch, computed, useTemplateRef } from 'vue';\n import { Skeleton } from 'ant-design-vue';\n import DynamicDialog from '@/components/form-render/dynamic-dialog.vue';\n import FormContainer from './FormContainer.vue';\n import { type FormRenderProps, useFormContext } from './useFormContext';\n import { useI18n } from '@/utils/i18n';\n import { storeToRefs } from 'pinia';\n import { useLocaleStore } from '@kp-ui/i18n';\n import { getLocat } from '@kp-ui/tool';\n import Debugger from './Debugger.vue';\n\n const { initLocale } = useI18n();\n defineOptions({\n name: 'VFormRender',\n componentName: 'VFormRender',\n inheritAttrs: false\n });\n const localeStore = useLocaleStore();\n const { locale } = storeToRefs(localeStore);\n\n const debug = computed(() => getLocat().debug === '1');\n const debugVisible = ref(false);\n\n const props = withDefaults(defineProps<FormRenderProps>(), {\n vfCtx: () => ({}),\n formJson: () => ({ widgetList: [], formConfig: {} }),\n formData: () => ({}),\n optionData: () => ({}),\n disabledMode: false,\n renderConfig: () => ({ languageName: 'zh-CN' }),\n globalDsv: () => ({}),\n parentForm: null,\n dynamicCreation: false\n });\n\n // 组件引用\n const formContainer = useTemplateRef('formContainer');\n\n const renderForm = computed(() => formContainer.value?.renderForm);\n\n // 组件事件\n const emit = defineEmits<{\n (e: 'form-submit', formData: any): void;\n (e: 'form-cancel'): void;\n }>();\n\n // 创建表单上下文\n const formContext = useFormContext({\n props,\n renderForm\n });\n\n //获取原生form引用\n const getNativeForm = () => {\n return formContainer.value;\n };\n const { dynamicDialgRef, dialogProps, emitter, isLoading, registerToRefList, formWidgetId } =\n formContext;\n\n // 生命周期钩子\n onMounted(() => {\n registerToRefList(formWidgetId);\n });\n\n watch(\n locale,\n () => {\n initLocale(locale.value);\n },\n {\n immediate: true\n }\n );\n\n // 暴露方法\n defineExpose({\n ...emitter,\n ...formContext.expose,\n getNativeForm,\n formJson: props.formJson,\n renderForm\n });\n</script>\n\n<style lang=\"less\" scoped>\n .loading-wrapper {\n min-height: 300px;\n padding: 20px;\n }\n .ant-form .ant-form-item-explain.ant-form-item-explain-connected {\n display: none;\n }\n</style>\n"],"names":["initLocale","useI18n","localeStore","useLocaleStore","locale","storeToRefs","debug","computed","getLocat","debugVisible","ref","props","__props","formContainer","useTemplateRef","renderForm","_a","formContext","useFormContext","getNativeForm","dynamicDialgRef","dialogProps","emitter","isLoading","registerToRefList","formWidgetId","onMounted","watch","__expose","_createElementVNode","_hoisted_1","_unref","_openBlock","_createElementBlock","_hoisted_2","_createVNode","Skeleton","FormContainer","DynamicDialog","_mergeProps","_createBlock","Debugger","$event"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBI,UAAM,EAAE,YAAAA,EAAA,IAAeC,EAAA,GAMjBC,IAAcC,EAAA,GACd,EAAE,QAAAC,EAAA,IAAWC,EAAYH,CAAW,GAEpCI,IAAQC,EAAS,MAAMC,EAAA,EAAW,UAAU,GAAG,GAC/CC,IAAeC,EAAI,EAAK,GAExBC,IAAQC,GAaRC,IAAgBC,EAAe,eAAe,GAE9CC,IAAaR,EAAS,MAAA;;AAAM,cAAAS,IAAAH,EAAc,UAAd,gBAAAG,EAAqB;AAAA,KAAU,GAS3DC,IAAcC,EAAe;AAAA,MAC/B,OAAAP;AAAA,MACA,YAAAI;AAAA,IAAA,CACH,GAGKI,IAAgB,MACXN,EAAc,OAEnB,EAAE,iBAAAO,GAAiB,aAAAC,GAAa,SAAAC,GAAS,WAAAC,GAAW,mBAAAC,GAAmB,cAAAC,MACzER;AAGJ,WAAAS,EAAU,MAAM;AACZ,MAAAF,EAAkBC,CAAY;AAAA,IAClC,CAAC,GAEDE;AAAA,MACIvB;AAAA,MACA,MAAM;AACF,QAAAJ,EAAWI,EAAO,KAAK;AAAA,MAC3B;AAAA,MACA;AAAA,QACI,WAAW;AAAA,MAAA;AAAA,IACf,GAIJwB,EAAa;AAAA,MACT,GAAGN;AAAA,MACH,GAAGL,EAAY;AAAA,MACf,eAAAE;AAAA,MACA,UAAUR,EAAM;AAAA,MAChB,YAAAI;AAAA,IAAA,CACH;MA5FDc,EAMM,OANNC,GAMM;AAAA,QALiCC,EAAAR,CAAA,KAAnCS,KAAAC,EAEM,OAFNC,GAEM;AAAA,UADFC,EAAgCJ,EAAAK,CAAA,GAAA,EAArB,QAAQL,EAAAR,CAAA,KAAS,MAAA,GAAA,CAAA,QAAA,CAAA;AAAA,QAAA;QAEhCY,EAA4DE,GAAA;AAAA,mBAAzC;AAAA,UAAJ,KAAIxB;AAAA,UAAiB,SAASkB,EAAAd,CAAA;AAAA,QAAA;QAC7CkB,EAA4DG,GAA5DC,EAA4DR,EAAAV,CAAA,GAA1B;AAAA,mBAAM;AAAA,UAAJ,KAAID;AAAA,QAAA;;MAE5Bd,EAAA,cAAhBkC,EAAwDC,GAAA;AAAA;QAAzB,SAAShC,EAAA;AAAA,mDAAAA,EAAY,QAAAiC;AAAA,MAAA;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ref as l, provide as c, computed as
|
|
1
|
+
import { ref as l, provide as c, 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";
|
|
@@ -11,34 +11,34 @@ import be from "../form-render/dynamic-dialog.vue.js";
|
|
|
11
11
|
import { useEmitter as ye } from "../../utils/useEmitter.js";
|
|
12
12
|
import { useAppRef as Me } from "../form-designer/useAppRef.js";
|
|
13
13
|
const _e = ({ renderForm: x, props: a }) => {
|
|
14
|
-
const { formJson: D } = a, p = De(be), { i18nt:
|
|
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
15
|
c("refList", F), c("getFormConfig", () => o.value), c("formData", s), c("getReadMode", () => R.value), c("designState", !1);
|
|
16
|
-
const y = l(), { executeFunction: $, context:
|
|
16
|
+
const y = l(), { executeFunction: $, context: g, execHttpFunction: M } = Le(), { getFormRef: h, getWidgetRef: U, registerToRefList: _ } = Me(F, w), o = m(() => {
|
|
17
17
|
var e;
|
|
18
|
-
return ((e =
|
|
18
|
+
return ((e = v.value) == null ? void 0 : e.formConfig) || {};
|
|
19
19
|
});
|
|
20
20
|
c("formConfig", o), c("formWidgetId", w);
|
|
21
|
-
const W =
|
|
21
|
+
const W = m(() => {
|
|
22
22
|
var e;
|
|
23
|
-
return ((e =
|
|
24
|
-
}), j =
|
|
23
|
+
return ((e = v.value) == null ? void 0 : e.widgetList) || [];
|
|
24
|
+
}), j = m(() => {
|
|
25
25
|
var e;
|
|
26
26
|
return ((e = o.value) == null ? void 0 : e.labelPosition) || "horizontal";
|
|
27
27
|
}), q = (e) => {
|
|
28
28
|
T.value = e;
|
|
29
|
-
}, S =
|
|
29
|
+
}, S = m(() => {
|
|
30
30
|
var e;
|
|
31
31
|
return (e = o.value) != null && e.labelWidth ? `${o.value.labelWidth}px` : "80px";
|
|
32
|
-
}), k =
|
|
32
|
+
}), k = m(() => {
|
|
33
33
|
var e;
|
|
34
34
|
return ((e = o.value) == null ? void 0 : e.customClass) || "";
|
|
35
35
|
});
|
|
36
|
-
let
|
|
36
|
+
let f = B(x);
|
|
37
37
|
ue(() => {
|
|
38
|
-
|
|
38
|
+
f = B(x);
|
|
39
39
|
});
|
|
40
40
|
const V = async (e) => {
|
|
41
|
-
console.log({ json: e }),
|
|
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
44
|
t === "processingDescribe" && console.log(e[t]), Object.prototype.hasOwnProperty.call(s.value, t) && (s.value[t] = e[t]);
|
|
@@ -46,9 +46,9 @@ const _e = ({ renderForm: x, props: a }) => {
|
|
|
46
46
|
}, G = (e) => {
|
|
47
47
|
L.value = e;
|
|
48
48
|
}, K = () => {
|
|
49
|
-
|
|
49
|
+
f.resetValidation();
|
|
50
50
|
}, Q = () => {
|
|
51
|
-
|
|
51
|
+
f.clearValidate();
|
|
52
52
|
}, X = (e) => {
|
|
53
53
|
y.value = e;
|
|
54
54
|
}, Y = () => {
|
|
@@ -62,24 +62,24 @@ const _e = ({ renderForm: x, props: a }) => {
|
|
|
62
62
|
var I, O;
|
|
63
63
|
const n = Y(), i = H((n == null ? void 0 : n.widgetList) || [], e) || H(W.value || [], e);
|
|
64
64
|
if (i === null) {
|
|
65
|
-
J.error(
|
|
65
|
+
J.error(d("render.hint.refNotFound") + e);
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
68
|
if (!e || i.type !== "vf-dialog") {
|
|
69
|
-
J.error(
|
|
69
|
+
J.error(d("render.hint.refNotFound") + e);
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
-
const
|
|
72
|
+
const u = {
|
|
73
73
|
widgetList: we((i == null ? void 0 : i.widgetList) || []),
|
|
74
74
|
formConfig: pe(((I = n == null ? void 0 : n.formConfig) == null ? void 0 : I.value) || {})
|
|
75
75
|
}, fe = xe();
|
|
76
76
|
b.value = {
|
|
77
77
|
options: i.options,
|
|
78
|
-
formJson:
|
|
78
|
+
formJson: u,
|
|
79
79
|
formData: { ...t },
|
|
80
80
|
optionData: n.optionData,
|
|
81
81
|
globalDsv: n.globalDsv,
|
|
82
|
-
parentFormRef:
|
|
82
|
+
parentFormRef: g.value,
|
|
83
83
|
extraData: r,
|
|
84
84
|
wrapperId: fe,
|
|
85
85
|
vfCtx: { ...t }
|
|
@@ -97,7 +97,7 @@ const _e = ({ renderForm: x, props: a }) => {
|
|
|
97
97
|
});
|
|
98
98
|
return console.log("res: ", t), t;
|
|
99
99
|
}, ne = async () => {
|
|
100
|
-
if (!await
|
|
100
|
+
if (!await f.validate()) throw new Error(d("表单验证失败"));
|
|
101
101
|
const t = o.value.serveList, r = await M(t.vformUpdate, {
|
|
102
102
|
data: s.value,
|
|
103
103
|
vfCtx: a.vfCtx
|
|
@@ -113,7 +113,7 @@ const _e = ({ renderForm: x, props: a }) => {
|
|
|
113
113
|
t && ve(t, e || ""), r && ge(r, e || "");
|
|
114
114
|
}, ie = () => {
|
|
115
115
|
var t;
|
|
116
|
-
const e = (t =
|
|
116
|
+
const e = (t = g.value) == null ? void 0 : t.$router;
|
|
117
117
|
e == null || e.replace({
|
|
118
118
|
query: {
|
|
119
119
|
...e.currentRoute.value.query,
|
|
@@ -126,16 +126,16 @@ const _e = ({ renderForm: x, props: a }) => {
|
|
|
126
126
|
if (typeof r == "function")
|
|
127
127
|
r(e, t);
|
|
128
128
|
else {
|
|
129
|
-
const
|
|
130
|
-
|
|
129
|
+
const u = (i = g.value) == null ? void 0 : i.$router;
|
|
130
|
+
u == null || u.go(-1);
|
|
131
131
|
}
|
|
132
132
|
}, le = (e) => s.value[e], ce = () => a.vfCtx;
|
|
133
133
|
me(() => {
|
|
134
134
|
D && V(D), te(), se();
|
|
135
135
|
});
|
|
136
136
|
const E = {
|
|
137
|
-
context:
|
|
138
|
-
i18nt:
|
|
137
|
+
context: g,
|
|
138
|
+
i18nt: d,
|
|
139
139
|
goBack: ae,
|
|
140
140
|
reload: ie,
|
|
141
141
|
getFieldValue: le,
|
|
@@ -160,21 +160,20 @@ const _e = ({ renderForm: x, props: a }) => {
|
|
|
160
160
|
// 计算属性
|
|
161
161
|
formConfig: o,
|
|
162
162
|
dynamicDialgRef: p,
|
|
163
|
-
setChildFormRef: q
|
|
163
|
+
setChildFormRef: q,
|
|
164
|
+
setDialogOrDrawerRef: X
|
|
164
165
|
};
|
|
165
166
|
return {
|
|
166
167
|
formWidgetId: w,
|
|
167
168
|
registerToRefList: _,
|
|
168
169
|
dialogOrDrawerRef: y,
|
|
169
|
-
setDialogOrDrawerRef: X,
|
|
170
170
|
emitter: C,
|
|
171
|
-
context: f,
|
|
172
171
|
// 状态
|
|
173
|
-
formJsonObj:
|
|
172
|
+
formJsonObj: v,
|
|
174
173
|
readModeFlag: R,
|
|
175
174
|
// 引用
|
|
176
175
|
widgetRefList: F,
|
|
177
|
-
formValidator:
|
|
176
|
+
formValidator: f,
|
|
178
177
|
widgetList: W,
|
|
179
178
|
labelPosition: j,
|
|
180
179
|
labelWidth: S,
|
|
@@ -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 };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n setDialogOrDrawerRef,\n\n emitter,\n context,\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 (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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"}
|