@kp-ui/lowcode 2.15.0-beta.6 → 2.15.0-beta.7
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/package.json +6 -2
- package/src/components/FormRender/useFormContext.js +15 -15
- package/src/components/FormRender/useFormContext.js.map +1 -1
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue.js +8 -0
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue.js.map +1 -0
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue2.js +43 -0
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue2.js.map +1 -0
- package/src/components/bi-widget/echartBar/echart-bar.js +35 -0
- package/src/components/bi-widget/echartBar/echart-bar.js.map +1 -0
- package/src/components/bi-widget/index.js +13 -0
- package/src/components/bi-widget/index.js.map +1 -0
- package/src/components/{form-designer/designer.js → designer.js} +71 -76
- package/src/components/designer.js.map +1 -0
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue.js +26 -0
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue.js.map +1 -0
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue2.js +5 -0
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue2.js.map +1 -0
- package/src/components/form-designer/form-widget/RenderDesignerWigetList.vue.js +1 -1
- package/src/components/form-designer/form-widget/RenderDesignerWigetList.vue.js.map +1 -1
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue.js +8 -0
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue.js.map +1 -0
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue2.js +68 -0
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue2.js.map +1 -0
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue.js +8 -0
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue.js.map +1 -0
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue2.js +136 -0
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue2.js.map +1 -0
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue.js +8 -0
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue.js.map +1 -0
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue2.js +153 -0
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue2.js.map +1 -0
- package/src/components/form-designer/form-widget/bi/useRuler.js +66 -0
- package/src/components/form-designer/form-widget/bi/useRuler.js.map +1 -0
- package/src/components/form-designer/form-widget/container-widget/vf-box-widget.vue.js +2 -2
- package/src/components/form-designer/form-widget/container-widget/vf-box-widget.vue2.js +24 -21
- package/src/components/form-designer/form-widget/container-widget/vf-box-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/vf-collapse-widget.vue.js +2 -2
- package/src/components/form-designer/form-widget/container-widget/vf-collapse-widget.vue2.js +36 -34
- package/src/components/form-designer/form-widget/container-widget/vf-collapse-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue.js +1 -1
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue2.js +1 -1
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/index.js +1 -1
- package/src/components/form-designer/form-widget/field-widget/index.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/useField.js +117 -117
- package/src/components/form-designer/form-widget/field-widget/useField.js.map +1 -1
- package/src/components/form-designer/form-widget/index.vue.js +2 -2
- package/src/components/form-designer/form-widget/index.vue2.js +47 -56
- package/src/components/form-designer/form-widget/index.vue2.js.map +1 -1
- package/src/components/form-designer/index.vue.js +74 -77
- package/src/components/form-designer/index.vue.js.map +1 -1
- package/src/components/form-designer/setting-panel/form-setting.vue.js +1 -1
- package/src/components/form-designer/setting-panel/form-setting.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/form-setting.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/index.vue.js +1 -1
- package/src/components/form-designer/setting-panel/index.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/index.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/option-items-setting.vue.js +2 -2
- package/src/components/form-designer/setting-panel/option-items-setting.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/option-items-setting.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/panel/PanelItemDrag.vue.js +51 -0
- package/src/components/form-designer/setting-panel/panel/PanelItemDrag.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue.js +51 -0
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue2.js +5 -0
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue2.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/boxModel-editor.vue.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/boxModel-editor.vue2.js +201 -255
- package/src/components/form-designer/setting-panel/property-editor/boxModel-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-customClass-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-customClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-dsEnabled-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-dsEnabled-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue.js +2 -2
- package/src/components/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/height-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue2.js +10 -10
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/customClass-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/customClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue.js +5 -0
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue2.js +71 -0
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue2.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue.js +5 -0
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue2.js +81 -0
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue2.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-slider/range-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-slider/range-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-switch/switch-defaultValue-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-switch/switch-defaultValue-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/index.js +54 -54
- package/src/components/form-designer/setting-panel/property-editor/index.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/multiple-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/optionItems-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/optionItems-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/rightSlotCss-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/rightSlotCss-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/type-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/useEditor.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/useEditor.js.map +1 -1
- package/src/components/form-designer/setting-panel/propertyRegister.js +12 -10
- package/src/components/form-designer/setting-panel/propertyRegister.js.map +1 -1
- package/src/components/form-designer/toolbar-panel/PreviewDialog.vue.js +1 -1
- package/src/components/form-designer/toolbar-panel/PreviewDialog.vue.js.map +1 -1
- package/src/components/form-designer/toolbar-panel/index.vue.js +2 -2
- package/src/components/form-designer/toolbar-panel/index.vue2.js +137 -177
- package/src/components/form-designer/toolbar-panel/index.vue2.js.map +1 -1
- package/src/components/form-designer/widget-panel/containers/vf-box.js +4 -1
- package/src/components/form-designer/widget-panel/containers/vf-box.js.map +1 -1
- package/src/components/form-designer/widget-panel/containers/vf-collapse.js +6 -6
- package/src/components/form-designer/widget-panel/containers/vf-collapse.js.map +1 -1
- package/src/components/form-designer/widget-panel/index.vue.js +2 -2
- package/src/components/form-designer/widget-panel/index.vue2.js +74 -34
- package/src/components/form-designer/widget-panel/index.vue2.js.map +1 -1
- package/src/components/form-render/container-items/vf-box-widget.vue.js +2 -2
- package/src/components/form-render/container-items/vf-box-widget.vue2.js +19 -17
- package/src/components/form-render/container-items/vf-box-widget.vue2.js.map +1 -1
- package/src/components/form-render/container-items/vf-collapse-widget.vue.js +1 -1
- package/src/components/form-render/container-items/vf-collapse-widget.vue2.js +24 -22
- package/src/components/form-render/container-items/vf-collapse-widget.vue2.js.map +1 -1
- package/src/components/form-render/dynamic-dialog.vue.js +1 -0
- package/src/components/form-render/dynamic-dialog.vue.js.map +1 -1
- package/src/constants/EditorTypeEnum.js +1 -1
- package/src/constants/EditorTypeEnum.js.map +1 -1
- package/src/constants/LayoutTypeEnum.js +5 -0
- package/src/constants/LayoutTypeEnum.js.map +1 -0
- package/src/constants/WidgetTypeEnum.js +4 -3
- package/src/constants/WidgetTypeEnum.js.map +1 -1
- package/src/hooks/useDesigner.js +51 -0
- package/src/hooks/useDesigner.js.map +1 -0
- package/src/lang/en-US.js +1 -1
- package/src/lang/en-US.js.map +1 -1
- package/src/lang/zh-CN.js +5 -3
- package/src/lang/zh-CN.js.map +1 -1
- package/src/utils/util.js +1 -1
- package/src/utils/util.js.map +1 -1
- package/stats.html +1 -1
- package/styles/style.css +1 -1
- package/src/components/form-designer/designer.js.map +0 -1
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue.js +0 -8
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue.js.map +0 -1
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue2.js +0 -58
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue2.js.map +0 -1
- package/src/components/form-designer/form-widget/useFormDesigner.js +0 -34
- package/src/components/form-designer/form-widget/useFormDesigner.js.map +0 -1
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue.js +0 -32
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue.js.map +0 -1
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue.js +0 -32
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue.js.map +0 -1
- package/src/components/form-designer/widget-panel/PanelItemDrag.vue.js +0 -50
- package/src/components/form-designer/widget-panel/PanelItemDrag.vue.js.map +0 -1
- /package/src/components/form-designer/{widget-panel → setting-panel/panel}/PanelItemDrag.vue2.js +0 -0
- /package/src/components/form-designer/{widget-panel → setting-panel/panel}/PanelItemDrag.vue2.js.map +0 -0
|
@@ -1,68 +1,59 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useI18n as
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { defineComponent as k, ref as c, computed as o, provide as n, inject as x, resolveComponent as m, createBlock as L, openBlock as f, withCtx as u, createElementVNode as b, normalizeClass as d, unref as e, createVNode as p, createElementBlock as I, createCommentVNode as M, toDisplayString as N } from "vue";
|
|
2
|
+
import { useI18n as P } from "../../../utils/i18n.js";
|
|
3
|
+
import { useDesigner as V } from "../../../hooks/useDesigner.js";
|
|
4
|
+
import E from "./RenderDesignerPC.vue.js";
|
|
5
|
+
import j from "./bi/RenderDesignerBI.vue.js";
|
|
6
|
+
const H = {
|
|
5
7
|
key: 0,
|
|
6
8
|
class: "no-widget-hint"
|
|
7
|
-
},
|
|
8
|
-
class: "form-widget-canvas",
|
|
9
|
-
style: { minHeight: "calc(100vh - 56px - 68px)" }
|
|
10
|
-
}, A = /* @__PURE__ */ b({
|
|
9
|
+
}, G = /* @__PURE__ */ k({
|
|
11
10
|
__name: "index",
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}, D = () =>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
11
|
+
setup(S) {
|
|
12
|
+
const {
|
|
13
|
+
i18nt: _
|
|
14
|
+
} = P(), r = c(/* @__PURE__ */ new Map()), {
|
|
15
|
+
designer: g,
|
|
16
|
+
formConfig: t,
|
|
17
|
+
layoutType: v,
|
|
18
|
+
isPc: h,
|
|
19
|
+
isBI: w
|
|
20
|
+
} = V(), z = o(() => h.value ? E : j);
|
|
21
|
+
n("refList", r), n("getReadMode", () => !1), n("refList", r), n("getReadMode", () => !1);
|
|
22
|
+
const C = x("formData", c({})), y = o(() => {
|
|
23
|
+
var i;
|
|
24
|
+
return ((i = t.value) == null ? void 0 : i.labelPosition) || "horizontal";
|
|
25
|
+
}), s = o(() => t.value && t.value.size ? t.value.size : "default"), D = o(() => t.value.customClass || "");
|
|
26
|
+
return (i, T) => {
|
|
27
|
+
const B = m("a-form"), R = m("a-config-provider");
|
|
28
|
+
return f(), L(R, {
|
|
29
|
+
"component-size": s.value,
|
|
30
|
+
input: {
|
|
31
|
+
autocomplete: "off"
|
|
32
|
+
}
|
|
34
33
|
}, {
|
|
35
|
-
default:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
update: D
|
|
53
|
-
}, null, 8, ["list", "parentWidget"])
|
|
54
|
-
])
|
|
55
|
-
]),
|
|
56
|
-
_: 1
|
|
57
|
-
}, 8, ["layout", "class", "size", "model"])
|
|
58
|
-
])
|
|
59
|
-
]),
|
|
34
|
+
default: u(() => [b("div", {
|
|
35
|
+
class: d(["form-widget-container", {
|
|
36
|
+
"form-widget-container__bi": e(w)
|
|
37
|
+
}])
|
|
38
|
+
}, [p(B, {
|
|
39
|
+
class: d(["full-height-width widget-form tpf-form", [D.value, e(v) + "-layout"]]),
|
|
40
|
+
layout: y.value,
|
|
41
|
+
size: s.value,
|
|
42
|
+
"validate-on-rule-change": !1,
|
|
43
|
+
model: e(C)
|
|
44
|
+
}, {
|
|
45
|
+
default: u(() => {
|
|
46
|
+
var a, l;
|
|
47
|
+
return [((l = (a = e(g)) == null ? void 0 : a.widgetList) == null ? void 0 : l.length) === 0 ? (f(), I("div", H, N(e(_)("designer.noWidgetHint")), 1)) : M("", !0), p(e(z))];
|
|
48
|
+
}),
|
|
49
|
+
_: 1
|
|
50
|
+
}, 8, ["layout", "class", "size", "model"])], 2)]),
|
|
60
51
|
_: 1
|
|
61
52
|
}, 8, ["component-size"]);
|
|
62
53
|
};
|
|
63
54
|
}
|
|
64
55
|
});
|
|
65
56
|
export {
|
|
66
|
-
|
|
57
|
+
G as default
|
|
67
58
|
};
|
|
68
59
|
//# sourceMappingURL=index.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../../src/components/form-designer/form-widget/index.vue"],"sourcesContent":["<template>\n <a-config-provider :component-size=\"size\" :input=\"{ autocomplete: 'off' }\">\n <div
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../src/components/form-designer/form-widget/index.vue"],"sourcesContent":["<template>\n <a-config-provider :component-size=\"size\" :input=\"{ autocomplete: 'off' }\">\n <div\n class=\"form-widget-container\"\n :class=\"{\n 'form-widget-container__bi': isBI\n }\"\n >\n <a-form\n class=\"full-height-width widget-form tpf-form\"\n :layout=\"labelPosition\"\n :class=\"[customClass, layoutType + '-layout']\"\n :size=\"size\"\n :validate-on-rule-change=\"false\"\n :model=\"formData\"\n >\n <template v-if=\"designer?.widgetList?.length === 0\">\n <div class=\"no-widget-hint\">{{ i18nt('designer.noWidgetHint') }}</div>\n </template>\n <RenderDesigner />\n </a-form>\n </div>\n </a-config-provider>\n</template>\n\n<script lang=\"tsx\" setup>\n import { useI18n } from '@/utils/i18n';\n import { computed, inject, provide, ref } from 'vue';\n import { useDesigner } from '../../../hooks/useDesigner';\n import RenderDesignerPC from './RenderDesignerPC.vue';\n import RenderDesignerBI from './bi/RenderDesignerBI.vue';\n\n const { i18nt } = useI18n();\n const widgetRefList = ref(new Map());\n const { designer, formConfig, layoutType, isPc, isBI } = useDesigner();\n\n const RenderDesigner = computed(() => {\n return isPc.value ? RenderDesignerPC : RenderDesignerBI;\n });\n\n provide('refList', widgetRefList);\n provide('getReadMode', () => false);\n\n provide('refList', widgetRefList);\n provide('getReadMode', () => false);\n\n const formData = inject('formData', ref({}));\n\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const size = computed(() => {\n if (!!formConfig.value && !!formConfig.value.size) {\n return formConfig.value.size;\n }\n\n return 'default';\n });\n\n const customClass = computed(() => {\n return formConfig.value.customClass || '';\n });\n</script>\n\n<style lang=\"less\" scoped>\n .form-widget-container {\n padding: 5px;\n background: #f1f2f3;\n overflow-x: hidden;\n overflow-y: auto;\n &__bi {\n padding: 0;\n }\n .ant-form.full-height-width {\n overflow-y: auto;\n height: 100%;\n padding: 3px;\n background: #ffffff;\n position: relative;\n\n .no-widget-hint {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n font-size: 18px;\n color: #999999;\n }\n\n .form-widget-canvas {\n height: 100%;\n display: flex;\n flex-direction: column;\n padding: 3px;\n position: relative;\n :deep(.container-wrapper) {\n margin: 10px 3px;\n min-width: 0;\n }\n :deep(.field-widget-item),\n :deep(.container-widget-item) {\n margin: 0 0 10px 0;\n border: 1px dashed #333;\n border-radius: 3px;\n background: #eee;\n height: 30px;\n align-items: center;\n display: flex;\n justify-content: center;\n color: #999999;\n }\n }\n }\n\n /* 隐藏组件拖拽状态中显示的黑点 */\n :deep(li.container-widget-item),\n :deep(li.field-widget-item) {\n list-style: none;\n }\n .ant-form.BI-layout {\n padding: 0;\n }\n\n .ant-form.H5-layout {\n margin: 0 auto;\n width: 420px;\n border-radius: 15px;\n //border-width: 10px;\n height: calc(100% - 20px);\n margin-top: 10px;\n box-shadow: 0 0 1px 10px #495060;\n }\n .ant-form.widget-form :deep(.ant-row) {\n padding: 2px;\n }\n }\n</style>\n"],"names":["i18nt","useI18n","widgetRefList","ref","Map","designer","formConfig","layoutType","isPc","isBI","useDesigner","RenderDesigner","computed","value","RenderDesignerPC","RenderDesignerBI","provide","formData","inject","labelPosition","size","customClass","_createBlock","_component_a_config_provider","input","autocomplete","_createElementVNode","class","_unref","_createVNode","_component_a_form","_normalizeClass","layout","model","widgetList","length","_createElementBlock","_hoisted_1","_toDisplayString"],"mappings":";;;;;;;;;;;AAgCI,UAAM;AAAA,MAAEA,OAAAA;AAAAA,QAAUC,EAAO,GACnBC,IAAgBC,EAAI,oBAAIC,KAAK,GAC7B;AAAA,MAAEC,UAAAA;AAAAA,MAAUC,YAAAA;AAAAA,MAAYC,YAAAA;AAAAA,MAAYC,MAAAA;AAAAA,MAAMC,MAAAA;AAAAA,QAASC,EAAW,GAE9DC,IAAiBC,EAAS,MACrBJ,EAAKK,QAAQC,IAAmBC,CAC1C;AAEDC,IAAAA,EAAQ,WAAWd,CAAa,GAChCc,EAAQ,eAAe,MAAM,EAAK,GAElCA,EAAQ,WAAWd,CAAa,GAChCc,EAAQ,eAAe,MAAM,EAAK;AAElC,UAAMC,IAAWC,EAAO,YAAYf,EAAI,CAAA,CAAE,CAAC,GAErCgB,IAAgBP,EAAS,MAAM;;AACjC,eAAON,IAAAA,EAAWO,UAAXP,gBAAAA,EAAkBa,kBAAiB;AAAA,IAC9C,CAAC,GAEKC,IAAOR,EAAS,MACZN,EAAWO,SAAWP,EAAWO,MAAMO,OAClCd,EAAWO,MAAMO,OAGrB,SACV,GAEKC,IAAcT,EAAS,MAClBN,EAAWO,MAAMQ,eAAe,EAC1C;;;kBA7DDC,EAqBoBC,GAAA;AAAA,QArBA,kBAAgBH,EAAAP;AAAAA,QAAOW,OAAO;AAAA,UAAAC,cAAA;AAAA,QAAA;AAAA;mBAC9C,MAmBM,CAnBNC,EAmBM,OAAA;AAAA,UAlBFC,UAAM,yBAAuB;AAAA,yCAC0BC,EAAAnB,CAAA;AAAA;YAIvDoB,EAYSC,GAAA;AAAA,UAXLH,OAAKI,EAAA,CAAC,0CAAwC,CAErCV,EAAAR,OAAae,EAAArB,CAAA,IAAU,SAAA,CAAA,CAAA;AAAA,UAD/ByB,QAAQb,EAAAN;AAAAA,UAERO,MAAMA,EAAAP;AAAAA,UACN,2BAAyB;AAAA,UACzBoB,OAAOL,EAAAX,CAAA;AAAA;qBAER,MAAA;;AAEW,sBAFKW,KAAAA,IAAAA,EAAAvB,CAAA,MAAAuB,gBAAAA,EAAUM,eAAVN,gBAAAA,EAAsBO,YAAM,UACxCC,EAAsE,OAAtEC,GAAsEC,EAAvCV,EAAA5B,CAAA,EAAK,uBAAA,CAAA,GAAA,CAAA,gBAExC6B,EAAkBD,EAAAjB,CAAA,CAAA,CAAA;AAAA;;;;;;;;"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import { defineComponent as z,
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { createDesigner as
|
|
7
|
-
import { useLocaleStore as
|
|
8
|
-
import { deepClone as
|
|
9
|
-
import { isEmpty as
|
|
1
|
+
import { defineComponent as z, provide as i, ref as s, computed as W, watch as G, onMounted as K, resolveComponent as l, createBlock as Q, openBlock as X, withCtx as r, createVNode as n, createSlots as Y, renderList as Z, renderSlot as j, createElementVNode as O } from "vue";
|
|
2
|
+
import ee from "./widget-panel/index.vue.js";
|
|
3
|
+
import te from "./toolbar-panel/index.vue.js";
|
|
4
|
+
import oe from "./setting-panel/index.vue.js";
|
|
5
|
+
import ne from "./form-widget/index.vue.js";
|
|
6
|
+
import { createDesigner as re } from "../designer.js";
|
|
7
|
+
import { useLocaleStore as ie } from "@kp-ui/i18n";
|
|
8
|
+
import { deepClone as w, getAllFieldWidgets as L, getAllContainerWidgets as J } from "../../utils/util.js";
|
|
9
|
+
import { isEmpty as A, set as ae } from "lodash-es";
|
|
10
10
|
import { useI18n as D } from "../../utils/i18n.js";
|
|
11
|
-
import { message as
|
|
12
|
-
import { storeToRefs as
|
|
13
|
-
import { useExecFunction as
|
|
14
|
-
import { useEmitter as
|
|
15
|
-
|
|
11
|
+
import { message as E } from "ant-design-vue";
|
|
12
|
+
import { storeToRefs as se } from "pinia";
|
|
13
|
+
import { useExecFunction as le, useRef as de } from "tmgc2-share";
|
|
14
|
+
import { useEmitter as ue } from "../../utils/useEmitter.js";
|
|
15
|
+
import { LayoutTypeEnum as fe } from "../../constants/LayoutTypeEnum.js";
|
|
16
|
+
import { getLocat as me } from "@kp-ui/tool";
|
|
17
|
+
const ce = { class: "container-scroll-bar" }, be = /* @__PURE__ */ z({
|
|
16
18
|
name: "VFormDesigner",
|
|
17
19
|
componentName: "VFormDesigner",
|
|
18
20
|
__name: "index",
|
|
@@ -35,108 +37,105 @@ const ue = { class: "container-scroll-bar" }, Je = /* @__PURE__ */ z({
|
|
|
35
37
|
}) },
|
|
36
38
|
globalDsv: { default: () => ({}) }
|
|
37
39
|
},
|
|
38
|
-
setup(
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
setup(S, { expose: b }) {
|
|
41
|
+
const { i18nt: c } = D(), B = ie(), { locale: g } = se(B), d = S, u = ue(), { context: T } = le();
|
|
42
|
+
i("serverFieldList", () => p.value), i("designState", !0);
|
|
43
|
+
const f = s(270), m = s(300), p = s([]), { initLocale: x } = D(), o = s(re(T)), V = W(() => o.value.formConfig), v = s({}), h = W(() => {
|
|
44
|
+
const { type: e = fe.PC } = me();
|
|
45
|
+
return e;
|
|
46
|
+
});
|
|
47
|
+
i("formData", v), i("formConfig", V), i("designer", o), i("getDesignerConfig", () => d.designerConfig), i("layoutType", h), o.value.changeLayoutType(h.value);
|
|
48
|
+
const P = (e) => {
|
|
49
|
+
if (!A(e))
|
|
45
50
|
try {
|
|
46
51
|
if (!e || !e.formConfig)
|
|
47
52
|
throw new Error(c("designer.hint.invalidJsonFormat"));
|
|
48
53
|
o.value.loadFormJson(e), o.value.emitHistoryChange(), o.value.emitEvent("form-json-imported", []);
|
|
49
54
|
} catch (t) {
|
|
50
|
-
|
|
55
|
+
E.error(t + "");
|
|
51
56
|
}
|
|
52
|
-
},
|
|
53
|
-
d.fieldListApi && (
|
|
54
|
-
},
|
|
55
|
-
if (!
|
|
57
|
+
}, R = async () => {
|
|
58
|
+
d.fieldListApi && (p.value = await d.fieldListApi());
|
|
59
|
+
}, $ = (e) => {
|
|
60
|
+
if (!A(e))
|
|
56
61
|
try {
|
|
57
62
|
let t = !1;
|
|
58
63
|
typeof e == "string" ? t = o.value.loadFormJson(JSON.parse(e)) : e.constructor === Object && (t = o.value.loadFormJson(e)), t && o.value.emitHistoryChange();
|
|
59
64
|
} catch (t) {
|
|
60
|
-
|
|
65
|
+
E.error(t + "");
|
|
61
66
|
}
|
|
62
67
|
}, H = () => ({
|
|
63
|
-
widgetList:
|
|
64
|
-
formConfig:
|
|
65
|
-
}),
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
widgetList: w(o.value.widgetList),
|
|
69
|
+
formConfig: w(o.value.formConfig)
|
|
70
|
+
}), U = (e = []) => e.length ? L(e) : L(o.value.widgetList), k = (e = []) => e.length ? J(e) : J(o.value.widgetList);
|
|
71
|
+
G(
|
|
72
|
+
g,
|
|
68
73
|
() => {
|
|
69
|
-
|
|
74
|
+
x(g.value);
|
|
70
75
|
},
|
|
71
76
|
{
|
|
72
77
|
immediate: !0
|
|
73
78
|
}
|
|
74
79
|
);
|
|
75
|
-
const [
|
|
76
|
-
|
|
77
|
-
console.log("fieldChange", e, t), typeof e < "u" && typeof t < "u" &&
|
|
80
|
+
const [I, M] = de(!1), N = () => {
|
|
81
|
+
u.off$("fieldChange"), u.on$("fieldChange", ({ fieldName: e, value: t }) => {
|
|
82
|
+
console.log("fieldChange", e, t), typeof e < "u" && typeof t < "u" && ae(v.value, e, t);
|
|
78
83
|
});
|
|
79
84
|
};
|
|
80
|
-
return
|
|
81
|
-
|
|
82
|
-
}),
|
|
83
|
-
...
|
|
85
|
+
return K(() => {
|
|
86
|
+
N(), R();
|
|
87
|
+
}), b({
|
|
88
|
+
...u,
|
|
84
89
|
i18nt: c,
|
|
85
|
-
isLoading:
|
|
86
|
-
setLoading:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
getFieldWidgets: P,
|
|
90
|
+
isLoading: I,
|
|
91
|
+
setLoading: M,
|
|
92
|
+
getContainerWidgets: k,
|
|
93
|
+
getFieldWidgets: U,
|
|
90
94
|
getFormJson: H,
|
|
91
|
-
setFormJson:
|
|
92
|
-
setJsonImport:
|
|
95
|
+
setFormJson: $,
|
|
96
|
+
setJsonImport: P
|
|
93
97
|
}), (e, t) => {
|
|
94
|
-
const
|
|
95
|
-
return
|
|
98
|
+
const y = l("a-layout-sider"), q = l("a-layout-header"), C = l("a-layout-content"), _ = l("a-layout");
|
|
99
|
+
return X(), Q(_, { class: "main-container full-height" }, {
|
|
96
100
|
default: r(() => [
|
|
97
101
|
n(_, null, {
|
|
98
102
|
default: r(() => [
|
|
99
|
-
n(
|
|
100
|
-
width:
|
|
103
|
+
n(y, {
|
|
104
|
+
width: f.value,
|
|
101
105
|
class: "side-panel"
|
|
102
106
|
}, {
|
|
103
107
|
default: r(() => [
|
|
104
|
-
n(
|
|
108
|
+
n(ee)
|
|
105
109
|
]),
|
|
106
110
|
_: 1
|
|
107
111
|
}, 8, ["width"]),
|
|
108
|
-
n(
|
|
112
|
+
n(C, { class: "center-layout-container" }, {
|
|
109
113
|
default: r(() => [
|
|
110
114
|
n(q, { class: "toolbar-header" }, {
|
|
111
115
|
default: r(() => [
|
|
112
|
-
n(
|
|
116
|
+
n(te, {
|
|
113
117
|
saveJsonApi: e.saveJsonApi,
|
|
114
118
|
"global-dsv": e.globalDsv,
|
|
115
|
-
leftWidth:
|
|
116
|
-
"onUpdate:leftWidth": t[0] || (t[0] = (
|
|
117
|
-
rightWidth:
|
|
118
|
-
"onUpdate:rightWidth": t[1] || (t[1] = (
|
|
119
|
+
leftWidth: f.value,
|
|
120
|
+
"onUpdate:leftWidth": t[0] || (t[0] = (a) => f.value = a),
|
|
121
|
+
rightWidth: m.value,
|
|
122
|
+
"onUpdate:rightWidth": t[1] || (t[1] = (a) => m.value = a),
|
|
119
123
|
ref: "toolbarRef"
|
|
120
|
-
},
|
|
121
|
-
|
|
122
|
-
name:
|
|
124
|
+
}, Y({ _: 2 }, [
|
|
125
|
+
Z(e.$slots, (a, F) => ({
|
|
126
|
+
name: F,
|
|
123
127
|
fn: r(() => [
|
|
124
|
-
|
|
128
|
+
j(e.$slots, F)
|
|
125
129
|
])
|
|
126
130
|
}))
|
|
127
131
|
]), 1032, ["saveJsonApi", "global-dsv", "leftWidth", "rightWidth"])
|
|
128
132
|
]),
|
|
129
133
|
_: 3
|
|
130
134
|
}),
|
|
131
|
-
n(
|
|
135
|
+
n(C, { class: "form-widget-main" }, {
|
|
132
136
|
default: r(() => [
|
|
133
|
-
|
|
134
|
-
n(
|
|
135
|
-
"global-dsv": e.globalDsv,
|
|
136
|
-
"form-config": o.value.formConfig,
|
|
137
|
-
ref_key: "formRef",
|
|
138
|
-
ref: m
|
|
139
|
-
}, null, 8, ["global-dsv", "form-config"])
|
|
137
|
+
O("div", ce, [
|
|
138
|
+
n(ne)
|
|
140
139
|
])
|
|
141
140
|
]),
|
|
142
141
|
_: 1
|
|
@@ -144,14 +143,12 @@ const ue = { class: "container-scroll-bar" }, Je = /* @__PURE__ */ z({
|
|
|
144
143
|
]),
|
|
145
144
|
_: 3
|
|
146
145
|
}),
|
|
147
|
-
n(
|
|
146
|
+
n(y, { width: m.value }, {
|
|
148
147
|
default: r(() => [
|
|
149
|
-
n(
|
|
148
|
+
n(oe, {
|
|
150
149
|
"selected-widget": o.value.selectedWidget,
|
|
151
|
-
"onUpdate:selectedWidget": t[2] || (t[2] = (
|
|
152
|
-
|
|
153
|
-
"form-config": o.value.formConfig
|
|
154
|
-
}, null, 8, ["selected-widget", "global-dsv", "form-config"])
|
|
150
|
+
"onUpdate:selectedWidget": t[2] || (t[2] = (a) => o.value.selectedWidget = a)
|
|
151
|
+
}, null, 8, ["selected-widget"])
|
|
155
152
|
]),
|
|
156
153
|
_: 1
|
|
157
154
|
}, 8, ["width"])
|
|
@@ -165,6 +162,6 @@ const ue = { class: "container-scroll-bar" }, Je = /* @__PURE__ */ z({
|
|
|
165
162
|
}
|
|
166
163
|
});
|
|
167
164
|
export {
|
|
168
|
-
|
|
165
|
+
be as default
|
|
169
166
|
};
|
|
170
167
|
//# sourceMappingURL=index.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../src/components/form-designer/index.vue"],"sourcesContent":["<template>\n <a-layout class=\"main-container full-height\">\n <a-layout>\n <a-layout-sider :width=\"leftWidth\" class=\"side-panel\">\n <WidgetPanel />\n </a-layout-sider>\n\n <a-layout-content class=\"center-layout-container\">\n <a-layout-header class=\"toolbar-header\">\n <toolbar-panel\n :saveJsonApi=\"saveJsonApi\"\n :global-dsv=\"globalDsv\"\n v-model:leftWidth=\"leftWidth\"\n v-model:rightWidth=\"rightWidth\"\n ref=\"toolbarRef\"\n >\n <template v-for=\"(idx, slotName) in $slots\" #[slotName]>\n <slot :name=\"slotName\"></slot>\n </template>\n </toolbar-panel>\n </a-layout-header>\n <a-layout-content class=\"form-widget-main\">\n <div class=\"container-scroll-bar\">\n <VFormWidget\n :global-dsv=\"globalDsv\"\n :form-config=\"designer.formConfig\"\n ref=\"formRef\"\n />\n </div>\n </a-layout-content>\n </a-layout-content>\n <a-layout-sider :width=\"rightWidth\">\n <setting-panel\n v-model:selected-widget=\"designer.selectedWidget\"\n :global-dsv=\"globalDsv\"\n :form-config=\"designer.formConfig\"\n />\n </a-layout-sider>\n </a-layout>\n </a-layout>\n</template>\n\n<script lang=\"ts\" setup>\n import WidgetPanel from './widget-panel/index.vue';\n import ToolbarPanel from './toolbar-panel/index.vue';\n import SettingPanel from './setting-panel/index.vue';\n import VFormWidget from './form-widget/index.vue';\n import { createDesigner } from '@/components/form-designer/designer';\n import { useLocaleStore } from '@kp-ui/i18n';\n import {\n deepClone,\n getAllContainerWidgets,\n getAllFieldWidgets,\n traverseAllWidgets\n } from '@/utils/util';\n import { isEmpty, set } from 'lodash-es';\n import { ref, provide, watch, onMounted, computed } from 'vue';\n import { WidgetTree } from '@/types/schema';\n import { useI18n } from '@/utils/i18n';\n import { message } from 'ant-design-vue';\n import { storeToRefs } from 'pinia';\n import { useExecFunction, useRef } from 'tmgc2-share';\n import { useEmitter } from '@/utils/useEmitter';\n\n defineOptions({\n name: 'VFormDesigner',\n componentName: 'VFormDesigner'\n });\n\n const formRef = ref();\n const { i18nt } = useI18n();\n const localeStore = useLocaleStore();\n const { locale } = storeToRefs(localeStore);\n\n const props = withDefaults(\n defineProps<{\n saveJsonApi: (json: any) => Promise<void>;\n fieldListApi: () => Promise<any[]>;\n designerConfig?: {\n eventCollapse?: boolean;\n widgetNameReadonly?: boolean;\n clearDesignerButton?: boolean;\n previewFormButton?: boolean;\n importJsonButton?: boolean;\n exportJsonButton?: boolean;\n };\n globalDsv?: Record<string, any>;\n }>(),\n {\n designerConfig: () => ({\n eventCollapse: true, //是否显示组件事件属性折叠面板\n widgetNameReadonly: false, //禁止修改组件名称\n clearDesignerButton: true, //是否显示清空设计器按钮\n previewFormButton: true, //是否显示预览表单按钮\n importJsonButton: true, //是否显示导入JSON按钮\n exportJsonButton: true //是否显示导出JSON器按钮\n }),\n globalDsv: () => ({})\n }\n );\n const emitter = useEmitter();\n const { context } = useExecFunction();\n provide('serverFieldList', () => fieldList.value);\n provide('designState', true); // 设计态标识\n const leftWidth = ref(270);\n const rightWidth = ref(300);\n const fieldList = ref<any[]>([]);\n const { initLocale } = useI18n();\n const designer = ref(createDesigner(context));\n const formConfig = computed(() => designer.value.formConfig);\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n\n provide('formData', formDataModel);\n provide('formConfig', formConfig);\n provide('designer', designer);\n provide('getDesignerConfig', () => props.designerConfig);\n\n const setJsonImport = (importObj: WidgetTree) => {\n if (isEmpty(importObj)) return;\n try {\n if (!importObj || !importObj.formConfig) {\n throw new Error(i18nt('designer.hint.invalidJsonFormat'));\n }\n designer.value.loadFormJson(importObj);\n designer.value.emitHistoryChange();\n designer.value.emitEvent('form-json-imported', []);\n } catch (error) {\n message.error(error + '');\n }\n };\n\n const loadFieldListFromServer = async () => {\n if (!props.fieldListApi) {\n return;\n }\n fieldList.value = await props.fieldListApi();\n };\n\n const setFormJson = (formJson: WidgetTree) => {\n if (isEmpty(formJson)) return;\n try {\n let modifiedFlag = false;\n if (typeof formJson === 'string') {\n modifiedFlag = designer.value.loadFormJson(JSON.parse(formJson));\n } else if (formJson.constructor === Object) {\n modifiedFlag = designer.value.loadFormJson(formJson);\n }\n if (modifiedFlag) {\n designer.value.emitHistoryChange();\n }\n } catch (error) {\n message.error(error + '');\n }\n };\n\n const getFormJson = (): WidgetTree => {\n return {\n widgetList: deepClone(designer.value.widgetList),\n formConfig: deepClone(designer.value.formConfig)\n };\n };\n\n const getFieldWidgets = (widgetList = []) => {\n return widgetList.length\n ? getAllFieldWidgets(widgetList)\n : getAllFieldWidgets(designer.value.widgetList);\n };\n\n /**\n * 获取所有容器组件\n * @returns {*[]}\n */\n const getContainerWidgets = (widgetList = []) => {\n return widgetList.length\n ? getAllContainerWidgets(widgetList)\n : getAllContainerWidgets(designer.value.widgetList);\n };\n\n const getWidgetRef = (widgetName, showError = false) => {\n return formRef.value.getWidgetRef(widgetName, showError);\n };\n\n watch(\n locale,\n () => {\n initLocale(locale.value);\n },\n {\n immediate: true\n }\n );\n const [isLoading, setLoading] = useRef(false);\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n console.log('fieldChange', fieldName, value);\n\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n onMounted(() => {\n designer.value.initDesigner();\n fieldChangeEventHandler();\n loadFieldListFromServer();\n });\n\n defineExpose({\n ...emitter,\n i18nt,\n isLoading,\n setLoading,\n getWidgetRef,\n getContainerWidgets,\n getFieldWidgets,\n getFormJson,\n setFormJson,\n setJsonImport\n });\n</script>\n\n<style lang=\"less\">\n .main-container {\n background: #fff;\n .ant-layout-sider {\n background: #fff;\n }\n :deep(aside) {\n /* 防止aside样式被外部样式覆盖!! */\n margin: 0;\n padding: 0;\n background: inherit;\n }\n .form-widget-main {\n padding: 0;\n position: relative;\n overflow-x: hidden;\n flex: 1 0 0;\n }\n .full-height {\n height: 100%;\n overflow-y: hidden;\n }\n .center-layout-container {\n min-width: 680px;\n border-left: 2px solid #ebeef5;\n border-right: 2px dotted #ebeef5;\n display: flex;\n flex-direction: column;\n }\n .form-widget-footer {\n flex: 0 0 50px;\n align-items: center;\n background: #fff;\n display: flex;\n justify-content: space-between;\n padding: 0 15px;\n }\n\n .main-header {\n border-bottom: 2px solid #ebeef5;\n background: #fff;\n padding: 0;\n\n height: 48px !important;\n line-height: 48px !important;\n min-width: 800px;\n }\n\n .container-scroll-bar {\n height: 100%;\n & > .form-widget-container {\n height: 100%;\n }\n }\n\n .toolbar-header {\n font-size: 14px;\n border-bottom: 1px dotted #cccccc;\n height: 42px !important;\n background: #fff;\n padding: 0;\n }\n\n .side-panel {\n width: 260px !important;\n overflow-y: hidden;\n }\n }\n\n div.main-title {\n font-size: 18px;\n color: #242424;\n display: flex;\n align-items: center;\n justify-items: center;\n\n img {\n cursor: pointer;\n width: 36px;\n height: 36px;\n }\n\n span.bold {\n font-size: 20px;\n font-weight: bold;\n margin: 0 6px 0 6px;\n }\n\n span.version-span {\n font-size: 14px;\n color: #101f1c;\n margin-left: 6px;\n }\n }\n\n .float-left {\n float: left;\n }\n\n .float-right {\n float: right;\n }\n\n div.external-link {\n display: flex;\n align-items: center;\n\n a {\n font-size: 13px;\n text-decoration: none;\n margin-right: 10px;\n color: #606266;\n }\n }\n</style>\n"],"names":["formRef","ref","i18nt","useI18n","localeStore","useLocaleStore","locale","storeToRefs","props","__props","emitter","useEmitter","context","useExecFunction","provide","fieldList","leftWidth","rightWidth","initLocale","designer","createDesigner","formConfig","computed","formDataModel","setJsonImport","importObj","isEmpty","error","message","loadFieldListFromServer","setFormJson","formJson","modifiedFlag","getFormJson","deepClone","getFieldWidgets","widgetList","getAllFieldWidgets","getContainerWidgets","getAllContainerWidgets","getWidgetRef","widgetName","showError","watch","isLoading","setLoading","useRef","fieldChangeEventHandler","fieldName","value","set","onMounted","__expose","_createBlock","_component_a_layout","_createVNode","_component_a_layout_sider","WidgetPanel","_component_a_layout_content","_component_a_layout_header","ToolbarPanel","saveJsonApi","globalDsv","$event","$slots","idx","slotName","_renderSlot","_ctx","_createElementVNode","_hoisted_1","VFormWidget","SettingPanel","_cache"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../src/components/form-designer/index.vue"],"sourcesContent":["<template>\n <a-layout class=\"main-container full-height\">\n <a-layout>\n <a-layout-sider :width=\"leftWidth\" class=\"side-panel\">\n <WidgetPanel />\n </a-layout-sider>\n\n <a-layout-content class=\"center-layout-container\">\n <a-layout-header class=\"toolbar-header\">\n <toolbar-panel\n :saveJsonApi=\"saveJsonApi\"\n :global-dsv=\"globalDsv\"\n v-model:leftWidth=\"leftWidth\"\n v-model:rightWidth=\"rightWidth\"\n ref=\"toolbarRef\"\n >\n <template v-for=\"(idx, slotName) in $slots\" #[slotName]>\n <slot :name=\"slotName\"></slot>\n </template>\n </toolbar-panel>\n </a-layout-header>\n <a-layout-content class=\"form-widget-main\">\n <div class=\"container-scroll-bar\">\n <VFormWidget />\n </div>\n </a-layout-content>\n </a-layout-content>\n <a-layout-sider :width=\"rightWidth\">\n <setting-panel v-model:selected-widget=\"designer.selectedWidget\" />\n </a-layout-sider>\n </a-layout>\n </a-layout>\n</template>\n\n<script lang=\"ts\" setup>\n import WidgetPanel from './widget-panel/index.vue';\n import ToolbarPanel from './toolbar-panel/index.vue';\n import SettingPanel from './setting-panel/index.vue';\n import VFormWidget from './form-widget/index.vue';\n import { createDesigner } from '../designer';\n import { useLocaleStore } from '@kp-ui/i18n';\n import { deepClone, getAllContainerWidgets, getAllFieldWidgets } from '@/utils/util';\n import { isEmpty, set } from 'lodash-es';\n import { ref, provide, watch, onMounted, computed } from 'vue';\n import { WidgetTree } from '@/types/schema';\n import { useI18n } from '@/utils/i18n';\n import { message } from 'ant-design-vue';\n import { storeToRefs } from 'pinia';\n import { useExecFunction, useRef } from 'tmgc2-share';\n import { useEmitter } from '@/utils/useEmitter';\n import { LayoutTypeEnum } from '@/constants/LayoutTypeEnum';\n import { getLocat } from '@kp-ui/tool';\n defineOptions({\n name: 'VFormDesigner',\n componentName: 'VFormDesigner'\n });\n\n const { i18nt } = useI18n();\n const localeStore = useLocaleStore();\n const { locale } = storeToRefs(localeStore);\n\n const props = withDefaults(\n defineProps<{\n saveJsonApi: (json: any) => Promise<void>;\n fieldListApi: () => Promise<any[]>;\n designerConfig?: {\n eventCollapse?: boolean;\n widgetNameReadonly?: boolean;\n clearDesignerButton?: boolean;\n previewFormButton?: boolean;\n importJsonButton?: boolean;\n exportJsonButton?: boolean;\n };\n globalDsv?: Record<string, any>;\n }>(),\n {\n designerConfig: () => ({\n eventCollapse: true, //是否显示组件事件属性折叠面板\n widgetNameReadonly: false, //禁止修改组件名称\n clearDesignerButton: true, //是否显示清空设计器按钮\n previewFormButton: true, //是否显示预览表单按钮\n importJsonButton: true, //是否显示导入JSON按钮\n exportJsonButton: true //是否显示导出JSON器按钮\n }),\n globalDsv: () => ({})\n }\n );\n const emitter = useEmitter();\n const { context } = useExecFunction();\n\n provide('serverFieldList', () => fieldList.value);\n provide('designState', true); // 设计态标识\n const leftWidth = ref(270);\n const rightWidth = ref(300);\n const fieldList = ref<any[]>([]);\n const { initLocale } = useI18n();\n const designer = ref(createDesigner(context));\n const formConfig = computed(() => designer.value.formConfig);\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n\n const layoutType = computed(() => {\n const { type = LayoutTypeEnum.PC } = getLocat();\n return type;\n });\n\n provide('formData', formDataModel);\n provide('formConfig', formConfig);\n provide('designer', designer);\n provide('getDesignerConfig', () => props.designerConfig);\n provide('layoutType', layoutType);\n\n designer.value.changeLayoutType(layoutType.value);\n\n const setJsonImport = (importObj: WidgetTree) => {\n if (isEmpty(importObj)) return;\n try {\n if (!importObj || !importObj.formConfig) {\n throw new Error(i18nt('designer.hint.invalidJsonFormat'));\n }\n designer.value.loadFormJson(importObj);\n designer.value.emitHistoryChange();\n designer.value.emitEvent('form-json-imported', []);\n } catch (error) {\n message.error(error + '');\n }\n };\n\n const loadFieldListFromServer = async () => {\n if (!props.fieldListApi) {\n return;\n }\n fieldList.value = await props.fieldListApi();\n };\n\n const setFormJson = (formJson: WidgetTree) => {\n if (isEmpty(formJson)) return;\n try {\n let modifiedFlag = false;\n if (typeof formJson === 'string') {\n modifiedFlag = designer.value.loadFormJson(JSON.parse(formJson));\n } else if (formJson.constructor === Object) {\n modifiedFlag = designer.value.loadFormJson(formJson);\n }\n if (modifiedFlag) {\n designer.value.emitHistoryChange();\n }\n } catch (error) {\n message.error(error + '');\n }\n };\n\n const getFormJson = (): WidgetTree => {\n return {\n widgetList: deepClone(designer.value.widgetList),\n formConfig: deepClone(designer.value.formConfig)\n };\n };\n\n const getFieldWidgets = (widgetList = []) => {\n return widgetList.length\n ? getAllFieldWidgets(widgetList)\n : getAllFieldWidgets(designer.value.widgetList);\n };\n\n /**\n * 获取所有容器组件\n * @returns {*[]}\n */\n const getContainerWidgets = (widgetList = []) => {\n return widgetList.length\n ? getAllContainerWidgets(widgetList)\n : getAllContainerWidgets(designer.value.widgetList);\n };\n\n watch(\n locale,\n () => {\n initLocale(locale.value);\n },\n {\n immediate: true\n }\n );\n const [isLoading, setLoading] = useRef(false);\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n console.log('fieldChange', fieldName, value);\n\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n onMounted(() => {\n fieldChangeEventHandler();\n loadFieldListFromServer();\n });\n\n defineExpose({\n ...emitter,\n i18nt,\n isLoading,\n setLoading,\n getContainerWidgets,\n getFieldWidgets,\n getFormJson,\n setFormJson,\n setJsonImport\n });\n</script>\n\n<style lang=\"less\">\n .main-container {\n background: #fff;\n .ant-layout-sider {\n background: #fff;\n }\n :deep(aside) {\n /* 防止aside样式被外部样式覆盖!! */\n margin: 0;\n padding: 0;\n background: inherit;\n }\n .form-widget-main {\n padding: 0;\n position: relative;\n overflow-x: hidden;\n flex: 1 0 0;\n }\n .full-height {\n height: 100%;\n overflow-y: hidden;\n }\n .center-layout-container {\n min-width: 680px;\n border-left: 2px solid #ebeef5;\n border-right: 2px dotted #ebeef5;\n display: flex;\n flex-direction: column;\n }\n .form-widget-footer {\n flex: 0 0 50px;\n align-items: center;\n background: #fff;\n display: flex;\n justify-content: space-between;\n padding: 0 15px;\n }\n\n .main-header {\n border-bottom: 2px solid #ebeef5;\n background: #fff;\n padding: 0;\n\n height: 48px !important;\n line-height: 48px !important;\n min-width: 800px;\n }\n\n .container-scroll-bar {\n height: 100%;\n & > .form-widget-container {\n height: 100%;\n }\n }\n\n .toolbar-header {\n font-size: 14px;\n border-bottom: 1px solid rgba(5, 5, 5, 0.06);\n height: 42px !important;\n background: #fff;\n padding: 0;\n }\n\n .side-panel {\n width: 260px !important;\n overflow-y: hidden;\n }\n }\n\n div.main-title {\n font-size: 18px;\n color: #242424;\n display: flex;\n align-items: center;\n justify-items: center;\n\n img {\n cursor: pointer;\n width: 36px;\n height: 36px;\n }\n\n span.bold {\n font-size: 20px;\n font-weight: bold;\n margin: 0 6px 0 6px;\n }\n\n span.version-span {\n font-size: 14px;\n color: #101f1c;\n margin-left: 6px;\n }\n }\n\n .float-left {\n float: left;\n }\n\n .float-right {\n float: right;\n }\n</style>\n"],"names":["i18nt","useI18n","localeStore","useLocaleStore","locale","storeToRefs","props","__props","emitter","useEmitter","context","useExecFunction","provide","fieldList","leftWidth","ref","rightWidth","initLocale","designer","createDesigner","formConfig","computed","formDataModel","layoutType","type","LayoutTypeEnum","getLocat","setJsonImport","importObj","isEmpty","error","message","loadFieldListFromServer","setFormJson","formJson","modifiedFlag","getFormJson","deepClone","getFieldWidgets","widgetList","getAllFieldWidgets","getContainerWidgets","getAllContainerWidgets","watch","isLoading","setLoading","useRef","fieldChangeEventHandler","fieldName","value","set","onMounted","__expose","_createBlock","_component_a_layout","_createVNode","_component_a_layout_sider","WidgetPanel","_component_a_layout_content","_component_a_layout_header","ToolbarPanel","saveJsonApi","globalDsv","$event","$slots","idx","slotName","_renderSlot","_ctx","_createElementVNode","_hoisted_1","VFormWidget","SettingPanel","_cache"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./form-setting.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const e = /* @__PURE__ */ t(o, [["__scopeId", "data-v-
|
|
4
|
+
const e = /* @__PURE__ */ t(o, [["__scopeId", "data-v-c232c01e"]]);
|
|
5
5
|
export {
|
|
6
6
|
e as default
|
|
7
7
|
};
|
|
@@ -5,7 +5,7 @@ import ae from "../../public/methoad-item.vue.js";
|
|
|
5
5
|
import se from "./property-editor/container-vf-dialog/okButtonHidden-editor.vue2.js";
|
|
6
6
|
import ie from "./property-editor/container-vf-dialog/cancelButtonHidden-editor.vue2.js";
|
|
7
7
|
import { TpfCodeEditor as re } from "tmgc2-share";
|
|
8
|
-
import { useDesigner as ue } from "
|
|
8
|
+
import { useDesigner as ue } from "../../../hooks/useDesigner.js";
|
|
9
9
|
const _e = /* @__PURE__ */ Y({
|
|
10
10
|
name: "form-setting",
|
|
11
11
|
__name: "form-setting",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-setting.vue2.js","sources":["../../../../../src/components/form-designer/setting-panel/form-setting.vue"],"sourcesContent":["<template>\n <a-form\n :model=\"formConfig\"\n labelAlign=\"left\"\n label-width=\"120px\"\n class=\"setting-form\"\n @submit.prevent\n >\n <a-collapse v-model:activeKey=\"formActiveCollapseNames\" class=\"setting-collapse\">\n <a-collapse-panel key=\"1\" :header=\"i18nt('designer.setting.基本属性')\">\n <a-form-item :label=\"i18nt('designer.setting.formSize')\">\n <a-select\n v-model:value=\"formConfig.size\"\n :options=\"formSizes\"\n allowClear\n style=\"width: 120px\"\n />\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.labelPosition')\">\n <a-radio-group\n v-model:value=\"formConfig.labelPosition\"\n class=\"radio-group-custom\"\n >\n <a-radio-button value=\"horizontal\">\n {{ i18nt('designer.setting.horizontal') }}\n </a-radio-button>\n <a-radio-button value=\"vertical\">\n {{ i18nt('designer.setting.vertical') }}\n </a-radio-button>\n </a-radio-group>\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.labelAlign')\">\n <a-radio-group v-model:value=\"formConfig.labelAlign\" class=\"radio-group-custom\">\n <a-radio-button value=\"left\">\n {{ i18nt('designer.setting.leftAlign') }}\n </a-radio-button>\n <a-radio-button value=\"right\">\n {{ i18nt('designer.setting.rightAlign') }}\n </a-radio-button>\n </a-radio-group>\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.labelWidth')\">\n <a-input-number\n v-model:value=\"formConfig.labelWidth\"\n :min=\"0\"\n style=\"width: 100%\"\n allowClear\n />\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.formCss')\">\n <a-button\n shape=\"round\"\n @click=\"\n handleEditEvent({\n eventName: 'cssCode',\n isShowEventHeader: false,\n mode: 'css',\n title: i18nt('designer.setting.formCss')\n })\n \"\n :class=\"[{ 'button-text-highlight': !!formConfig.cssCode }]\"\n >\n {{ i18nt('designer.setting.addCss') }}\n </a-button>\n </a-form-item>\n <!-- -->\n <a-form-item :label=\"i18nt('designer.setting.customClass')\">\n <a-select\n v-model:value=\"formConfig.customClass\"\n allowClear\n mode=\"tags\"\n @change=\"extractCssClass\"\n :options=\"cssClassList\"\n />\n </a-form-item>\n <!-- 表单全局函数 -->\n <a-form-item :label=\"i18nt('designer.setting.globalFunctions')\">\n <a-button\n :class=\"[{ 'button-text-highlight': !!formConfig.functions }]\"\n shape=\"round\"\n @click=\"\n handleEditEvent({\n eventName: 'functions',\n isShowEventHeader: false,\n mode: 'javascript',\n title: i18nt('designer.setting.globalFunctions')\n })\n \"\n >\n {{ i18nt('designer.setting.addEventHandler') }}\n </a-button>\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.cancelButtonLabel')\">\n <a-input type=\"text\" v-model:value=\"formConfig.cancelButtonLabel\" />\n </a-form-item>\n <!-- 隐藏取消按钮 -->\n <CancelButtonHidden :optionModel=\"formConfig\" />\n <a-form-item :label=\"i18nt('designer.setting.okButtonLabel')\">\n <a-input type=\"text\" v-model:value=\"formConfig.okButtonLabel\" />\n </a-form-item>\n <OkButtonHiddenEditor :optionModel=\"formConfig\" />\n </a-collapse-panel>\n\n <a-collapse-panel\n v-if=\"showEventCollapse()\"\n key=\"2\"\n class=\"eventPanel\"\n :header=\"i18nt('designer.setting.事件属性')\"\n >\n <MethodItem\n @click-item=\"handleEditEvent\"\n v-for=\"(value, key) in eventParamsMap\"\n :key=\"key\"\n :event-name=\"key\"\n v-model:value=\"formConfig[key]\"\n :get-form-event-handled=\"getFormEventHandled\"\n :event-params-map=\"eventParamsMap\"\n :form-config=\"formConfig\"\n />\n </a-collapse-panel>\n </a-collapse>\n </a-form>\n\n <a-config-provider componentSize=\"middle\">\n <TpfCodeEditor\n :isShowEventHeader=\"isShowEventHeader\"\n ref=\"codeEditorRef\"\n :event-header=\"eventHeader\"\n v-model=\"formEventHandlerCode\"\n :mode=\"mode\"\n :readonly=\"false\"\n :title=\"title\"\n @set-code=\"saveFormEventHandler\"\n /></a-config-provider>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, reactive, onMounted, inject, Ref } from 'vue';\n import { useI18n } from '@/utils/i18n';\n import { deepClone, insertCustomCssToHead } from '@/utils/util';\n import MethodItem from '@/components/public/methoad-item.vue';\n import OkButtonHiddenEditor from '@/components/form-designer/setting-panel/property-editor/container-vf-dialog/okButtonHidden-editor.vue';\n import CancelButtonHidden from '@/components/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonHidden-editor.vue';\n import { ILanguageMode, TpfCodeEditor } from 'tmgc2-share';\n import { FormDesigner } from '@/types/designer';\n import { useDesigner } from '../form-widget/useFormDesigner';\n // 定义类型\n interface FormSize {\n label: string;\n value: string;\n }\n\n interface EventParams {\n [key: string]: string;\n }\n\n const { formConfig } = useDesigner();\n interface EditEventParams {\n eventName: string;\n mode: ILanguageMode;\n isShowEventHeader: boolean;\n title: string;\n eventHeader?: string;\n }\n\n // 使用i18n\n const { i18nt } = useI18n();\n const designer = inject<Ref<FormDesigner>>('designer', ref({} as FormDesigner));\n // 注入依赖\n const getDesignerConfig = inject<() => any>('getDesignerConfig');\n const designerConfig = getDesignerConfig ? getDesignerConfig() : {};\n\n // 响应式状态\n const mode = ref<ILanguageMode>('javascript');\n const eventName = ref('');\n const title = ref('');\n const isShowEventHeader = ref(false);\n const eventHeader = ref('');\n const formActiveCollapseNames = ref(['1', '2']);\n const formCssCode = ref('');\n const cssClassList = ref<string[]>([]);\n const formEventHandlerCode = ref('');\n\n // 引用\n const codeEditorRef = ref<any>(null);\n\n // 常量数据\n const formSizes: FormSize[] = [\n { label: 'default', value: 'middle' },\n { label: 'large', value: 'large' },\n { label: 'small', value: 'small' }\n ];\n\n const eventParamsMap: EventParams = {\n onFormCreated: 'onFormCreated() {',\n onFormMounted: 'onFormMounted() {',\n onOkButtonClick: 'onOkButtonClick() {',\n onCancelButtonClick: 'onCancelButtonClick() {',\n onFormEnterKey: 'onFormEnterKey() {',\n onFormDataChange:\n 'onFormDataChange(fieldName, newValue, oldValue, formModel, subFormName, subFormRowIndex) {'\n //'onFormValidate': 'onFormValidate() {',\n };\n\n // 方法\n const saveFormEventHandler = (value: string) => {\n formConfig.value[eventName.value] = value;\n };\n\n const handleEditEvent = (params: EditEventParams) => {\n eventName.value = params.eventName;\n mode.value = params.mode;\n isShowEventHeader.value = params.isShowEventHeader;\n formEventHandlerCode.value = formConfig.value[params.eventName];\n title.value = params.title || i18nt('designer.setting.editWidgetEventHandler');\n eventHeader.value = params.eventHeader || '';\n codeEditorRef.value.open();\n };\n\n const getFormEventHandled = (eventName: string) => {\n return !!formConfig.value[eventName] && formConfig.value[eventName].length > 0;\n };\n\n const showEventCollapse = () => {\n if (designerConfig['eventCollapse'] === undefined) {\n return true;\n }\n return !!designerConfig['eventCollapse'];\n };\n\n const extractCssClass = () => {\n const regExp = /\\..*{/g;\n const result = formCssCode.value.match(regExp);\n const cssNameArray: string[] = [];\n\n if (!!result && result.length > 0) {\n result.forEach(rItem => {\n const classArray = rItem.split(','); // 切分逗号分割的多个class\n if (classArray.length > 0) {\n classArray.forEach(cItem => {\n const caItem = cItem.trim();\n if (caItem.indexOf('.', 1) !== -1) {\n // 查找第二个.位置\n const newClass = caItem.substring(\n caItem.indexOf('.') + 1,\n caItem.indexOf('.', 1)\n ); // 仅截取第一、二个.号之间的class\n if (!!newClass) {\n cssNameArray.push(newClass.trim());\n }\n } else if (caItem.indexOf(' ') !== -1) {\n // 查找第一个空格位置\n const newClass = caItem.substring(\n caItem.indexOf('.') + 1,\n caItem.indexOf(' ')\n ); // 仅截取第一、二个.号之间的class\n if (!!newClass) {\n cssNameArray.push(newClass.trim());\n }\n } else {\n if (caItem.indexOf('{') !== -1) {\n // 查找第一个{位置\n const newClass = caItem.substring(\n caItem.indexOf('.') + 1,\n caItem.indexOf('{')\n );\n cssNameArray.push(newClass.trim());\n } else {\n const newClass = caItem.substring(caItem.indexOf('.') + 1);\n cssNameArray.push(newClass.trim());\n }\n }\n });\n }\n });\n }\n\n // cssClassList.value = Array.from(new Set(cssNameArray)); // 数组去重\n };\n\n // 生命周期钩子\n onMounted(() => {\n // 导入表单JSON后需要重新加载自定义CSS样式\n designer.value.handleEvent('form-json-imported', () => {\n formCssCode.value = formConfig.value.cssCode;\n insertCustomCssToHead(formCssCode.value);\n extractCssClass();\n designer.value.emitEvent('form-css-updated', deepClone(cssClassList.value));\n });\n\n /* SettingPanel和FormWidget为兄弟组件, 在FormWidget加载formConfig时,\n 此处SettingPanel可能无法获取到formConfig.cssCode, 故加个延时函数! */\n setTimeout(() => {\n formCssCode.value = formConfig.value.cssCode;\n insertCustomCssToHead(formCssCode.value);\n extractCssClass();\n designer.value.emitEvent('form-css-updated', deepClone(cssClassList.value));\n }, 1200);\n });\n\n // 组件名称定义\n defineOptions({\n name: 'form-setting'\n });\n</script>\n\n<style lang=\"less\" scoped>\n .eventPanel {\n :deep(.ant-form-item-row) {\n flex: 1;\n .ant-form-item-control-input-content .ant-btn {\n border: 1px solid #eee;\n }\n .ant-form-item-label {\n flex: 1;\n }\n }\n :deep(.ant-col.ant-form-item-control) {\n flex: 0 0 80px;\n }\n }\n</style>\n"],"names":["formConfig","useDesigner","i18nt","useI18n","designer","inject","ref","getDesignerConfig","designerConfig","mode","eventName","title","isShowEventHeader","eventHeader","formActiveCollapseNames","formCssCode","cssClassList","formEventHandlerCode","codeEditorRef","formSizes","eventParamsMap","saveFormEventHandler","value","handleEditEvent","params","getFormEventHandled","showEventCollapse","extractCssClass","regExp","result","cssNameArray","rItem","classArray","cItem","caItem","newClass","onMounted","insertCustomCssToHead","deepClone","_createVNode","_component_a_form","_unref","_component_a_collapse","$event","_component_a_collapse_panel","_component_a_form_item","_component_a_select","_cache","_component_a_radio_group","_component_a_radio_button","_component_a_input_number","_component_a_button","_normalizeClass","_component_a_input","CancelButtonHidden","OkButtonHiddenEditor","_createBlock","_openBlock","_createElementBlock","_Fragment","_renderList","key","MethodItem","_component_a_config_provider","TpfCodeEditor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-setting.vue2.js","sources":["../../../../../src/components/form-designer/setting-panel/form-setting.vue"],"sourcesContent":["<template>\n <a-form\n :model=\"formConfig\"\n labelAlign=\"left\"\n label-width=\"120px\"\n class=\"setting-form\"\n @submit.prevent\n >\n <a-collapse v-model:activeKey=\"formActiveCollapseNames\" class=\"setting-collapse\">\n <a-collapse-panel key=\"1\" :header=\"i18nt('designer.setting.基本属性')\">\n <a-form-item :label=\"i18nt('designer.setting.formSize')\">\n <a-select\n v-model:value=\"formConfig.size\"\n :options=\"formSizes\"\n allowClear\n style=\"width: 120px\"\n />\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.labelPosition')\">\n <a-radio-group\n v-model:value=\"formConfig.labelPosition\"\n class=\"radio-group-custom\"\n >\n <a-radio-button value=\"horizontal\">\n {{ i18nt('designer.setting.horizontal') }}\n </a-radio-button>\n <a-radio-button value=\"vertical\">\n {{ i18nt('designer.setting.vertical') }}\n </a-radio-button>\n </a-radio-group>\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.labelAlign')\">\n <a-radio-group v-model:value=\"formConfig.labelAlign\" class=\"radio-group-custom\">\n <a-radio-button value=\"left\">\n {{ i18nt('designer.setting.leftAlign') }}\n </a-radio-button>\n <a-radio-button value=\"right\">\n {{ i18nt('designer.setting.rightAlign') }}\n </a-radio-button>\n </a-radio-group>\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.labelWidth')\">\n <a-input-number\n v-model:value=\"formConfig.labelWidth\"\n :min=\"0\"\n style=\"width: 100%\"\n allowClear\n />\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.formCss')\">\n <a-button\n shape=\"round\"\n @click=\"\n handleEditEvent({\n eventName: 'cssCode',\n isShowEventHeader: false,\n mode: 'css',\n title: i18nt('designer.setting.formCss')\n })\n \"\n :class=\"[{ 'button-text-highlight': !!formConfig.cssCode }]\"\n >\n {{ i18nt('designer.setting.addCss') }}\n </a-button>\n </a-form-item>\n <!-- -->\n <a-form-item :label=\"i18nt('designer.setting.customClass')\">\n <a-select\n v-model:value=\"formConfig.customClass\"\n allowClear\n mode=\"tags\"\n @change=\"extractCssClass\"\n :options=\"cssClassList\"\n />\n </a-form-item>\n <!-- 表单全局函数 -->\n <a-form-item :label=\"i18nt('designer.setting.globalFunctions')\">\n <a-button\n :class=\"[{ 'button-text-highlight': !!formConfig.functions }]\"\n shape=\"round\"\n @click=\"\n handleEditEvent({\n eventName: 'functions',\n isShowEventHeader: false,\n mode: 'javascript',\n title: i18nt('designer.setting.globalFunctions')\n })\n \"\n >\n {{ i18nt('designer.setting.addEventHandler') }}\n </a-button>\n </a-form-item>\n <a-form-item :label=\"i18nt('designer.setting.cancelButtonLabel')\">\n <a-input type=\"text\" v-model:value=\"formConfig.cancelButtonLabel\" />\n </a-form-item>\n <!-- 隐藏取消按钮 -->\n <CancelButtonHidden :optionModel=\"formConfig\" />\n <a-form-item :label=\"i18nt('designer.setting.okButtonLabel')\">\n <a-input type=\"text\" v-model:value=\"formConfig.okButtonLabel\" />\n </a-form-item>\n <OkButtonHiddenEditor :optionModel=\"formConfig\" />\n </a-collapse-panel>\n\n <a-collapse-panel\n v-if=\"showEventCollapse()\"\n key=\"2\"\n class=\"eventPanel\"\n :header=\"i18nt('designer.setting.事件属性')\"\n >\n <MethodItem\n @click-item=\"handleEditEvent\"\n v-for=\"(value, key) in eventParamsMap\"\n :key=\"key\"\n :event-name=\"key\"\n v-model:value=\"formConfig[key]\"\n :get-form-event-handled=\"getFormEventHandled\"\n :event-params-map=\"eventParamsMap\"\n :form-config=\"formConfig\"\n />\n </a-collapse-panel>\n </a-collapse>\n </a-form>\n\n <a-config-provider componentSize=\"middle\">\n <TpfCodeEditor\n :isShowEventHeader=\"isShowEventHeader\"\n ref=\"codeEditorRef\"\n :event-header=\"eventHeader\"\n v-model=\"formEventHandlerCode\"\n :mode=\"mode\"\n :readonly=\"false\"\n :title=\"title\"\n @set-code=\"saveFormEventHandler\"\n /></a-config-provider>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, reactive, onMounted, inject, Ref } from 'vue';\n import { useI18n } from '@/utils/i18n';\n import { deepClone, insertCustomCssToHead } from '@/utils/util';\n import MethodItem from '@/components/public/methoad-item.vue';\n import OkButtonHiddenEditor from '@/components/form-designer/setting-panel/property-editor/container-vf-dialog/okButtonHidden-editor.vue';\n import CancelButtonHidden from '@/components/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonHidden-editor.vue';\n import { ILanguageMode, TpfCodeEditor } from 'tmgc2-share';\n import { FormDesigner } from '@/types/designer';\n import { useDesigner } from '../../../hooks/useDesigner';\n // 定义类型\n interface FormSize {\n label: string;\n value: string;\n }\n\n interface EventParams {\n [key: string]: string;\n }\n\n const { formConfig } = useDesigner();\n interface EditEventParams {\n eventName: string;\n mode: ILanguageMode;\n isShowEventHeader: boolean;\n title: string;\n eventHeader?: string;\n }\n\n // 使用i18n\n const { i18nt } = useI18n();\n const designer = inject<Ref<FormDesigner>>('designer', ref({} as FormDesigner));\n // 注入依赖\n const getDesignerConfig = inject<() => any>('getDesignerConfig');\n const designerConfig = getDesignerConfig ? getDesignerConfig() : {};\n\n // 响应式状态\n const mode = ref<ILanguageMode>('javascript');\n const eventName = ref('');\n const title = ref('');\n const isShowEventHeader = ref(false);\n const eventHeader = ref('');\n const formActiveCollapseNames = ref(['1', '2']);\n const formCssCode = ref('');\n const cssClassList = ref<string[]>([]);\n const formEventHandlerCode = ref('');\n\n // 引用\n const codeEditorRef = ref<any>(null);\n\n // 常量数据\n const formSizes: FormSize[] = [\n { label: 'default', value: 'middle' },\n { label: 'large', value: 'large' },\n { label: 'small', value: 'small' }\n ];\n\n const eventParamsMap: EventParams = {\n onFormCreated: 'onFormCreated() {',\n onFormMounted: 'onFormMounted() {',\n onOkButtonClick: 'onOkButtonClick() {',\n onCancelButtonClick: 'onCancelButtonClick() {',\n onFormEnterKey: 'onFormEnterKey() {',\n onFormDataChange:\n 'onFormDataChange(fieldName, newValue, oldValue, formModel, subFormName, subFormRowIndex) {'\n //'onFormValidate': 'onFormValidate() {',\n };\n\n // 方法\n const saveFormEventHandler = (value: string) => {\n formConfig.value[eventName.value] = value;\n };\n\n const handleEditEvent = (params: EditEventParams) => {\n eventName.value = params.eventName;\n mode.value = params.mode;\n isShowEventHeader.value = params.isShowEventHeader;\n formEventHandlerCode.value = formConfig.value[params.eventName];\n title.value = params.title || i18nt('designer.setting.editWidgetEventHandler');\n eventHeader.value = params.eventHeader || '';\n codeEditorRef.value.open();\n };\n\n const getFormEventHandled = (eventName: string) => {\n return !!formConfig.value[eventName] && formConfig.value[eventName].length > 0;\n };\n\n const showEventCollapse = () => {\n if (designerConfig['eventCollapse'] === undefined) {\n return true;\n }\n return !!designerConfig['eventCollapse'];\n };\n\n const extractCssClass = () => {\n const regExp = /\\..*{/g;\n const result = formCssCode.value.match(regExp);\n const cssNameArray: string[] = [];\n\n if (!!result && result.length > 0) {\n result.forEach(rItem => {\n const classArray = rItem.split(','); // 切分逗号分割的多个class\n if (classArray.length > 0) {\n classArray.forEach(cItem => {\n const caItem = cItem.trim();\n if (caItem.indexOf('.', 1) !== -1) {\n // 查找第二个.位置\n const newClass = caItem.substring(\n caItem.indexOf('.') + 1,\n caItem.indexOf('.', 1)\n ); // 仅截取第一、二个.号之间的class\n if (!!newClass) {\n cssNameArray.push(newClass.trim());\n }\n } else if (caItem.indexOf(' ') !== -1) {\n // 查找第一个空格位置\n const newClass = caItem.substring(\n caItem.indexOf('.') + 1,\n caItem.indexOf(' ')\n ); // 仅截取第一、二个.号之间的class\n if (!!newClass) {\n cssNameArray.push(newClass.trim());\n }\n } else {\n if (caItem.indexOf('{') !== -1) {\n // 查找第一个{位置\n const newClass = caItem.substring(\n caItem.indexOf('.') + 1,\n caItem.indexOf('{')\n );\n cssNameArray.push(newClass.trim());\n } else {\n const newClass = caItem.substring(caItem.indexOf('.') + 1);\n cssNameArray.push(newClass.trim());\n }\n }\n });\n }\n });\n }\n\n // cssClassList.value = Array.from(new Set(cssNameArray)); // 数组去重\n };\n\n // 生命周期钩子\n onMounted(() => {\n // 导入表单JSON后需要重新加载自定义CSS样式\n designer.value.handleEvent('form-json-imported', () => {\n formCssCode.value = formConfig.value.cssCode;\n insertCustomCssToHead(formCssCode.value);\n extractCssClass();\n designer.value.emitEvent('form-css-updated', deepClone(cssClassList.value));\n });\n\n /* SettingPanel和FormWidget为兄弟组件, 在FormWidget加载formConfig时,\n 此处SettingPanel可能无法获取到formConfig.cssCode, 故加个延时函数! */\n setTimeout(() => {\n formCssCode.value = formConfig.value.cssCode;\n insertCustomCssToHead(formCssCode.value);\n extractCssClass();\n designer.value.emitEvent('form-css-updated', deepClone(cssClassList.value));\n }, 1200);\n });\n\n // 组件名称定义\n defineOptions({\n name: 'form-setting'\n });\n</script>\n\n<style lang=\"less\" scoped>\n .eventPanel {\n :deep(.ant-form-item-row) {\n flex: 1;\n .ant-form-item-control-input-content .ant-btn {\n border: 1px solid #eee;\n }\n .ant-form-item-label {\n flex: 1;\n }\n }\n :deep(.ant-col.ant-form-item-control) {\n flex: 0 0 80px;\n }\n }\n</style>\n"],"names":["formConfig","useDesigner","i18nt","useI18n","designer","inject","ref","getDesignerConfig","designerConfig","mode","eventName","title","isShowEventHeader","eventHeader","formActiveCollapseNames","formCssCode","cssClassList","formEventHandlerCode","codeEditorRef","formSizes","eventParamsMap","saveFormEventHandler","value","handleEditEvent","params","getFormEventHandled","showEventCollapse","extractCssClass","regExp","result","cssNameArray","rItem","classArray","cItem","caItem","newClass","onMounted","insertCustomCssToHead","deepClone","_createVNode","_component_a_form","_unref","_component_a_collapse","$event","_component_a_collapse_panel","_component_a_form_item","_component_a_select","_cache","_component_a_radio_group","_component_a_radio_button","_component_a_input_number","_component_a_button","_normalizeClass","_component_a_input","CancelButtonHidden","OkButtonHiddenEditor","_createBlock","_openBlock","_createElementBlock","_Fragment","_renderList","key","MethodItem","_component_a_config_provider","TpfCodeEditor"],"mappings":"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"}
|