@usethink/shared-frontend 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/basic/excel/index.js +1 -1
- package/dist/src/components/core/Modal/src/BasicModal2.vue.js +18 -17
- package/dist/src/components/core/Modal/src/BasicModal2.vue.js.map +1 -1
- package/dist/src/components/core/schema-form/src/hooks/useFormMethods.js +48 -47
- package/dist/src/components/core/schema-form/src/hooks/useFormMethods.js.map +1 -1
- package/dist/src/index.js +663 -651
- package/dist/src/index.js.map +1 -1
- package/dist/src/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js +5 -5
- package/dist/src/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js.map +1 -1
- package/dist/src/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js +5 -2
- package/dist/src/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js.map +1 -1
- package/dist/src/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js +7 -7
- package/dist/src/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js.map +1 -1
- package/dist/src/node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js +45 -38
- package/dist/src/node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js.map +1 -1
- package/dist/src/node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js +10 -3
- package/dist/src/node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js.map +1 -1
- package/dist/src/node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js +62 -62
- package/dist/src/node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js.map +1 -1
- package/dist/src/node_modules/.pnpm/hasown@2.0.4/node_modules/hasown/index.js +8 -8
- package/dist/src/node_modules/.pnpm/hasown@2.0.4/node_modules/hasown/index.js.map +1 -1
- package/dist/src/style.css +1 -1
- package/dist/src/styles/antdv.override.less +154 -0
- package/dist/src/styles/common.less +23 -0
- package/dist/src/styles/index.less +8 -0
- package/dist/src/styles/loading.less +64 -0
- package/dist/src/styles/login.css +81 -0
- package/dist/src/styles/reset.css +12 -0
- package/dist/src/styles/theme.less +50 -0
- package/dist/src/styles/transition.less +60 -0
- package/dist/src/styles/variables.less +51 -0
- package/dist/src/utils/index.js +64 -63
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/tableConfig.js +17 -0
- package/dist/src/utils/tableConfig.js.map +1 -0
- package/dist/src/utils/useBufferStatus.js +35 -0
- package/dist/src/utils/useBufferStatus.js.map +1 -0
- package/dist/src/utils/useDownloadBlob.js +28 -0
- package/dist/src/utils/useDownloadBlob.js.map +1 -0
- package/dist/src/utils/useExeSubscription.js +66 -0
- package/dist/src/utils/useExeSubscription.js.map +1 -0
- package/package.json +8 -4
|
@@ -15,10 +15,10 @@ import "../../../utils/propTypes.js";
|
|
|
15
15
|
import "../../../utils/request.js";
|
|
16
16
|
import "../../../utils/Storage.js";
|
|
17
17
|
import "../../../utils/uuid.js";
|
|
18
|
+
import "ant-design-vue";
|
|
18
19
|
import "../../../locales/index.js";
|
|
19
20
|
import "vue/jsx-runtime";
|
|
20
21
|
import "../../../hooks/useModal/modal.js";
|
|
21
|
-
import "ant-design-vue";
|
|
22
22
|
import "../../core/schema-form/src/componentMap.js";
|
|
23
23
|
import "@vueuse/core";
|
|
24
24
|
/* empty css */
|
|
@@ -4,7 +4,7 @@ import y from "./components/ModalWrapper.vue.js";
|
|
|
4
4
|
import A from "./components/ModalClose.vue.js";
|
|
5
5
|
import D from "./components/ModalFooter.vue.js";
|
|
6
6
|
import I from "./components/ModalHeader.vue.js";
|
|
7
|
-
import { omit as
|
|
7
|
+
import { omit as f, isFunction as L } from "lodash-es";
|
|
8
8
|
import "dayjs";
|
|
9
9
|
import "../../../../utils/dateUtil.js";
|
|
10
10
|
import "../../../../utils/eventBus.js";
|
|
@@ -19,28 +19,29 @@ import "../../../../utils/propTypes.js";
|
|
|
19
19
|
import "../../../../utils/request.js";
|
|
20
20
|
import "../../../../utils/Storage.js";
|
|
21
21
|
import "../../../../utils/uuid.js";
|
|
22
|
+
import "ant-design-vue";
|
|
22
23
|
import { basicProps as $ } from "./props.js";
|
|
23
24
|
import { useFullScreen as j } from "./hooks/useModalFullScreen.js";
|
|
24
|
-
const
|
|
25
|
+
const de = T({
|
|
25
26
|
name: "BasicModal",
|
|
26
27
|
components: { Modal: _, ModalWrapper: y, ModalClose: A, ModalFooter: D, ModalHeader: I },
|
|
27
28
|
inheritAttrs: !1,
|
|
28
29
|
props: $,
|
|
29
30
|
emits: ["open-change", "height-change", "cancel", "ok", "register", "update:open"],
|
|
30
|
-
setup(o, { emit:
|
|
31
|
-
const n = c(!1),
|
|
31
|
+
setup(o, { emit: r, attrs: M }) {
|
|
32
|
+
const n = c(!1), m = c(null), a = c(null), v = "mom-basic-modal", F = c(0), p = {
|
|
32
33
|
setModalProps: H,
|
|
33
34
|
emitVisible: void 0,
|
|
34
35
|
redoModalHeight: () => {
|
|
35
36
|
C(() => {
|
|
36
|
-
t(
|
|
37
|
+
t(a) && t(a).setModalHeight();
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
}, l = W();
|
|
40
|
-
l &&
|
|
41
|
+
l && r("register", p, l.uid);
|
|
41
42
|
const s = u(() => ({
|
|
42
43
|
...o,
|
|
43
|
-
...t(
|
|
44
|
+
...t(m)
|
|
44
45
|
})), { handleFullScreen: d, getWrapClassName: h, fullScreenRef: i } = j({
|
|
45
46
|
wrapClassName: S(s.value, "wrapClassName")
|
|
46
47
|
}), g = u(() => ({
|
|
@@ -59,7 +60,7 @@ const pe = T({
|
|
|
59
60
|
open: t(n),
|
|
60
61
|
wrapClassName: t(h)
|
|
61
62
|
};
|
|
62
|
-
return t(i) ?
|
|
63
|
+
return t(i) ? f(e, ["height", "title"]) : f(e, "title");
|
|
63
64
|
}), R = u(() => {
|
|
64
65
|
if (!t(i))
|
|
65
66
|
return t(g).height;
|
|
@@ -69,8 +70,8 @@ const pe = T({
|
|
|
69
70
|
}), E(
|
|
70
71
|
() => t(n),
|
|
71
72
|
(e) => {
|
|
72
|
-
|
|
73
|
-
o.scrollTop && e && t(
|
|
73
|
+
r("open-change", e), r("update:open", e), l && p.emitVisible?.(e, l.uid), C(() => {
|
|
74
|
+
o.scrollTop && e && t(a) && t(a).scrollTop();
|
|
74
75
|
});
|
|
75
76
|
},
|
|
76
77
|
{
|
|
@@ -84,17 +85,17 @@ const pe = T({
|
|
|
84
85
|
n.value = !B;
|
|
85
86
|
return;
|
|
86
87
|
}
|
|
87
|
-
n.value = !1,
|
|
88
|
+
n.value = !1, r("cancel", e);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
function H(e) {
|
|
91
|
-
|
|
92
|
+
m.value = O(t(m) || {}, e), Reflect.has(e, "open") && (n.value = !!e.open), Reflect.has(e, "defaultFullscreen") && (i.value = !!e.defaultFullscreen);
|
|
92
93
|
}
|
|
93
94
|
function k(e) {
|
|
94
|
-
|
|
95
|
+
r("ok", e);
|
|
95
96
|
}
|
|
96
97
|
function b(e) {
|
|
97
|
-
|
|
98
|
+
r("height-change", e);
|
|
98
99
|
}
|
|
99
100
|
function x(e) {
|
|
100
101
|
F.value = e;
|
|
@@ -111,8 +112,8 @@ const pe = T({
|
|
|
111
112
|
getMergeProps: s,
|
|
112
113
|
handleOk: k,
|
|
113
114
|
openRef: n,
|
|
114
|
-
omit:
|
|
115
|
-
modalWrapperRef:
|
|
115
|
+
omit: f,
|
|
116
|
+
modalWrapperRef: a,
|
|
116
117
|
handleExtHeight: x,
|
|
117
118
|
handleHeightChange: b,
|
|
118
119
|
handleTitleDbClick: N,
|
|
@@ -121,6 +122,6 @@ const pe = T({
|
|
|
121
122
|
}
|
|
122
123
|
});
|
|
123
124
|
export {
|
|
124
|
-
|
|
125
|
+
de as default
|
|
125
126
|
};
|
|
126
127
|
//# sourceMappingURL=BasicModal2.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasicModal2.vue.js","sources":["../../../../../../src/components/core/Modal/src/BasicModal.vue"],"sourcesContent":["<template>\n <Modal v-bind=\"getBindValue\" class=\"mom-modal\" @cancel=\"handleCancel\">\n <template v-if=\"!$slots.closeIcon\" #closeIcon>\n <ModalClose\n :can-fullscreen=\"getProps.canFullscreen\"\n :full-screen=\"fullScreenRef\"\n @cancel=\"handleCancel\"\n @fullscreen=\"handleFullScreen\"\n />\n </template>\n\n <template v-if=\"!$slots.title\" #title>\n <ModalHeader\n :help-message=\"getProps.helpMessage\"\n :title=\"getMergeProps.title\"\n @dblclick=\"handleTitleDbClick\"\n />\n </template>\n\n <template v-if=\"!$slots.footer\" #footer>\n <ModalFooter v-bind=\"getBindValue\" @ok=\"handleOk\" @cancel=\"handleCancel\">\n <template v-for=\"item in Object.keys($slots)\" #[item]=\"data\">\n <slot :name=\"item\" v-bind=\"data || {}\"></slot>\n </template>\n </ModalFooter>\n </template>\n\n <ModalWrapper\n ref=\"modalWrapperRef\"\n :use-wrapper=\"getProps.useWrapper\"\n :footer-offset=\"wrapperFooterOffset\"\n :full-screen=\"fullScreenRef\"\n :loading=\"getProps.loading\"\n :loading-tip=\"getProps.loadingTip\"\n :min-height=\"getProps.minHeight\"\n :height=\"getWrapperHeight\"\n :open=\"openRef\"\n :modal-footer-height=\"footer !== undefined && !footer ? 0 : undefined\"\n v-bind=\"omit(getProps.wrapperProps, 'open', 'height', 'modalFooterHeight')\"\n @ext-height=\"handleExtHeight\"\n @height-change=\"handleHeightChange\"\n >\n <slot></slot>\n </ModalWrapper>\n\n <template v-for=\"item in Object.keys(omit($slots, 'default'))\" #[item]=\"data\">\n <slot :name=\"item\" v-bind=\"data || {}\"></slot>\n </template>\n </Modal>\n</template>\n<script lang=\"ts\">\n import type { ModalProps, ModalMethods } from './typing'\n\n import {\n defineComponent,\n computed,\n ref,\n watch,\n unref,\n watchEffect,\n toRef,\n getCurrentInstance,\n nextTick,\n } from 'vue'\n import Modal from './components/Modal'\n import ModalWrapper from './components/ModalWrapper.vue'\n import ModalClose from './components/ModalClose.vue'\n import ModalFooter from './components/ModalFooter.vue'\n import ModalHeader from './components/ModalHeader.vue'\n import { isFunction } from '@/utils/is'\n import { deepMerge } from '@/utils'\n import { basicProps } from './props'\n import { useFullScreen } from './hooks/useModalFullScreen'\n import { omit } from 'lodash-es'\n\n export default defineComponent({\n name: 'BasicModal',\n components: { Modal, ModalWrapper, ModalClose, ModalFooter, ModalHeader },\n inheritAttrs: false,\n props: basicProps,\n emits: ['open-change', 'height-change', 'cancel', 'ok', 'register', 'update:open'],\n setup(props, { emit, attrs }) {\n const openRef = ref(false)\n const propsRef = ref<Partial<ModalProps> | null>(null)\n const modalWrapperRef = ref<any>(null)\n const prefixCls = 'mom-basic-modal'\n\n // modal Bottom and top height\n const extHeightRef = ref(0)\n const modalMethods: ModalMethods = {\n setModalProps,\n emitVisible: undefined,\n redoModalHeight: () => {\n nextTick(() => {\n if (unref(modalWrapperRef)) {\n ;(unref(modalWrapperRef) as any).setModalHeight()\n }\n })\n },\n }\n\n const instance = getCurrentInstance()\n if (instance) {\n emit('register', modalMethods, instance.uid)\n }\n\n // Custom title component: get title\n const getMergeProps = computed((): Recordable => {\n return {\n ...props,\n ...(unref(propsRef) as any),\n }\n })\n\n const { handleFullScreen, getWrapClassName, fullScreenRef } = useFullScreen({\n modalWrapperRef,\n extHeightRef,\n wrapClassName: toRef(getMergeProps.value, 'wrapClassName'),\n })\n\n // modal component does not need title and origin buttons\n const getProps = computed((): Recordable => {\n const opt = {\n ...unref(getMergeProps),\n open: unref(openRef),\n okButtonProps: undefined,\n cancelButtonProps: undefined,\n title: undefined,\n }\n return {\n ...opt,\n wrapClassName: unref(getWrapClassName),\n }\n })\n\n const getBindValue = computed((): Recordable => {\n const attr = {\n ...attrs,\n ...unref(getMergeProps),\n open: unref(openRef),\n wrapClassName: unref(getWrapClassName),\n }\n if (unref(fullScreenRef)) {\n return omit(attr, ['height', 'title'])\n }\n return omit(attr, 'title')\n })\n\n const getWrapperHeight = computed(() => {\n if (unref(fullScreenRef)) return undefined\n return unref(getProps).height\n })\n\n watchEffect(() => {\n openRef.value = !!props.open\n fullScreenRef.value = !!props.defaultFullscreen\n })\n\n watch(\n () => unref(openRef),\n v => {\n emit('open-change', v)\n emit('update:open', v)\n instance && modalMethods.emitVisible?.(v, instance.uid)\n nextTick(() => {\n if (props.scrollTop && v && unref(modalWrapperRef)) {\n ;(unref(modalWrapperRef) as any).scrollTop()\n }\n })\n },\n {\n immediate: false,\n },\n )\n\n // 取消事件\n async function handleCancel(e: Event) {\n e?.stopPropagation()\n // 过滤自定义关闭按钮的空白区域\n if ((e.target as HTMLElement)?.classList?.contains(`${prefixCls}-close--custom`)) return\n if (props.closeFunc && isFunction(props.closeFunc)) {\n const isClose: boolean = await props.closeFunc()\n openRef.value = !isClose\n return\n }\n\n openRef.value = false\n emit('cancel', e)\n }\n\n /**\n * @description: 设置modal参数\n */\n function setModalProps(props: Partial<ModalProps>): void {\n // Keep the last setModalProps\n propsRef.value = deepMerge(unref(propsRef) || ({} as any), props)\n if (Reflect.has(props, 'open')) {\n openRef.value = !!props.open\n }\n if (Reflect.has(props, 'defaultFullscreen')) {\n fullScreenRef.value = !!props.defaultFullscreen\n }\n }\n\n function handleOk(e: Event) {\n emit('ok', e)\n }\n\n function handleHeightChange(height: string) {\n emit('height-change', height)\n }\n\n function handleExtHeight(height: number) {\n extHeightRef.value = height\n }\n\n function handleTitleDbClick(e) {\n if (!props.canFullscreen) return\n e.stopPropagation()\n handleFullScreen(e)\n }\n\n return {\n handleCancel,\n getBindValue,\n getProps,\n handleFullScreen,\n fullScreenRef,\n getMergeProps,\n handleOk,\n openRef,\n omit,\n modalWrapperRef,\n handleExtHeight,\n handleHeightChange,\n handleTitleDbClick,\n getWrapperHeight,\n }\n },\n })\n</script>\n<style lang=\"less\">\n .ant-modal-close {\n background-color: transparent;\n }\n</style>\n"],"names":["_sfc_main","defineComponent","Modal","ModalWrapper","ModalClose","ModalFooter","ModalHeader","basicProps","props","emit","attrs","openRef","ref","propsRef","modalWrapperRef","prefixCls","extHeightRef","modalMethods","setModalProps","nextTick","unref","instance","getCurrentInstance","getMergeProps","computed","handleFullScreen","getWrapClassName","fullScreenRef","useFullScreen","toRef","getProps","getBindValue","attr","omit","getWrapperHeight","watchEffect","watch","v","handleCancel","isFunction","isClose","deepMerge","handleOk","handleHeightChange","height","handleExtHeight","handleTitleDbClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BasicModal2.vue.js","sources":["../../../../../../src/components/core/Modal/src/BasicModal.vue"],"sourcesContent":["<template>\n <Modal v-bind=\"getBindValue\" class=\"mom-modal\" @cancel=\"handleCancel\">\n <template v-if=\"!$slots.closeIcon\" #closeIcon>\n <ModalClose\n :can-fullscreen=\"getProps.canFullscreen\"\n :full-screen=\"fullScreenRef\"\n @cancel=\"handleCancel\"\n @fullscreen=\"handleFullScreen\"\n />\n </template>\n\n <template v-if=\"!$slots.title\" #title>\n <ModalHeader\n :help-message=\"getProps.helpMessage\"\n :title=\"getMergeProps.title\"\n @dblclick=\"handleTitleDbClick\"\n />\n </template>\n\n <template v-if=\"!$slots.footer\" #footer>\n <ModalFooter v-bind=\"getBindValue\" @ok=\"handleOk\" @cancel=\"handleCancel\">\n <template v-for=\"item in Object.keys($slots)\" #[item]=\"data\">\n <slot :name=\"item\" v-bind=\"data || {}\"></slot>\n </template>\n </ModalFooter>\n </template>\n\n <ModalWrapper\n ref=\"modalWrapperRef\"\n :use-wrapper=\"getProps.useWrapper\"\n :footer-offset=\"wrapperFooterOffset\"\n :full-screen=\"fullScreenRef\"\n :loading=\"getProps.loading\"\n :loading-tip=\"getProps.loadingTip\"\n :min-height=\"getProps.minHeight\"\n :height=\"getWrapperHeight\"\n :open=\"openRef\"\n :modal-footer-height=\"footer !== undefined && !footer ? 0 : undefined\"\n v-bind=\"omit(getProps.wrapperProps, 'open', 'height', 'modalFooterHeight')\"\n @ext-height=\"handleExtHeight\"\n @height-change=\"handleHeightChange\"\n >\n <slot></slot>\n </ModalWrapper>\n\n <template v-for=\"item in Object.keys(omit($slots, 'default'))\" #[item]=\"data\">\n <slot :name=\"item\" v-bind=\"data || {}\"></slot>\n </template>\n </Modal>\n</template>\n<script lang=\"ts\">\n import type { ModalProps, ModalMethods } from './typing'\n\n import {\n defineComponent,\n computed,\n ref,\n watch,\n unref,\n watchEffect,\n toRef,\n getCurrentInstance,\n nextTick,\n } from 'vue'\n import Modal from './components/Modal'\n import ModalWrapper from './components/ModalWrapper.vue'\n import ModalClose from './components/ModalClose.vue'\n import ModalFooter from './components/ModalFooter.vue'\n import ModalHeader from './components/ModalHeader.vue'\n import { isFunction } from '@/utils/is'\n import { deepMerge } from '@/utils'\n import { basicProps } from './props'\n import { useFullScreen } from './hooks/useModalFullScreen'\n import { omit } from 'lodash-es'\n\n export default defineComponent({\n name: 'BasicModal',\n components: { Modal, ModalWrapper, ModalClose, ModalFooter, ModalHeader },\n inheritAttrs: false,\n props: basicProps,\n emits: ['open-change', 'height-change', 'cancel', 'ok', 'register', 'update:open'],\n setup(props, { emit, attrs }) {\n const openRef = ref(false)\n const propsRef = ref<Partial<ModalProps> | null>(null)\n const modalWrapperRef = ref<any>(null)\n const prefixCls = 'mom-basic-modal'\n\n // modal Bottom and top height\n const extHeightRef = ref(0)\n const modalMethods: ModalMethods = {\n setModalProps,\n emitVisible: undefined,\n redoModalHeight: () => {\n nextTick(() => {\n if (unref(modalWrapperRef)) {\n ;(unref(modalWrapperRef) as any).setModalHeight()\n }\n })\n },\n }\n\n const instance = getCurrentInstance()\n if (instance) {\n emit('register', modalMethods, instance.uid)\n }\n\n // Custom title component: get title\n const getMergeProps = computed((): Recordable => {\n return {\n ...props,\n ...(unref(propsRef) as any),\n }\n })\n\n const { handleFullScreen, getWrapClassName, fullScreenRef } = useFullScreen({\n modalWrapperRef,\n extHeightRef,\n wrapClassName: toRef(getMergeProps.value, 'wrapClassName'),\n })\n\n // modal component does not need title and origin buttons\n const getProps = computed((): Recordable => {\n const opt = {\n ...unref(getMergeProps),\n open: unref(openRef),\n okButtonProps: undefined,\n cancelButtonProps: undefined,\n title: undefined,\n }\n return {\n ...opt,\n wrapClassName: unref(getWrapClassName),\n }\n })\n\n const getBindValue = computed((): Recordable => {\n const attr = {\n ...attrs,\n ...unref(getMergeProps),\n open: unref(openRef),\n wrapClassName: unref(getWrapClassName),\n }\n if (unref(fullScreenRef)) {\n return omit(attr, ['height', 'title'])\n }\n return omit(attr, 'title')\n })\n\n const getWrapperHeight = computed(() => {\n if (unref(fullScreenRef)) return undefined\n return unref(getProps).height\n })\n\n watchEffect(() => {\n openRef.value = !!props.open\n fullScreenRef.value = !!props.defaultFullscreen\n })\n\n watch(\n () => unref(openRef),\n v => {\n emit('open-change', v)\n emit('update:open', v)\n instance && modalMethods.emitVisible?.(v, instance.uid)\n nextTick(() => {\n if (props.scrollTop && v && unref(modalWrapperRef)) {\n ;(unref(modalWrapperRef) as any).scrollTop()\n }\n })\n },\n {\n immediate: false,\n },\n )\n\n // 取消事件\n async function handleCancel(e: Event) {\n e?.stopPropagation()\n // 过滤自定义关闭按钮的空白区域\n if ((e.target as HTMLElement)?.classList?.contains(`${prefixCls}-close--custom`)) return\n if (props.closeFunc && isFunction(props.closeFunc)) {\n const isClose: boolean = await props.closeFunc()\n openRef.value = !isClose\n return\n }\n\n openRef.value = false\n emit('cancel', e)\n }\n\n /**\n * @description: 设置modal参数\n */\n function setModalProps(props: Partial<ModalProps>): void {\n // Keep the last setModalProps\n propsRef.value = deepMerge(unref(propsRef) || ({} as any), props)\n if (Reflect.has(props, 'open')) {\n openRef.value = !!props.open\n }\n if (Reflect.has(props, 'defaultFullscreen')) {\n fullScreenRef.value = !!props.defaultFullscreen\n }\n }\n\n function handleOk(e: Event) {\n emit('ok', e)\n }\n\n function handleHeightChange(height: string) {\n emit('height-change', height)\n }\n\n function handleExtHeight(height: number) {\n extHeightRef.value = height\n }\n\n function handleTitleDbClick(e) {\n if (!props.canFullscreen) return\n e.stopPropagation()\n handleFullScreen(e)\n }\n\n return {\n handleCancel,\n getBindValue,\n getProps,\n handleFullScreen,\n fullScreenRef,\n getMergeProps,\n handleOk,\n openRef,\n omit,\n modalWrapperRef,\n handleExtHeight,\n handleHeightChange,\n handleTitleDbClick,\n getWrapperHeight,\n }\n },\n })\n</script>\n<style lang=\"less\">\n .ant-modal-close {\n background-color: transparent;\n }\n</style>\n"],"names":["_sfc_main","defineComponent","Modal","ModalWrapper","ModalClose","ModalFooter","ModalHeader","basicProps","props","emit","attrs","openRef","ref","propsRef","modalWrapperRef","prefixCls","extHeightRef","modalMethods","setModalProps","nextTick","unref","instance","getCurrentInstance","getMergeProps","computed","handleFullScreen","getWrapClassName","fullScreenRef","useFullScreen","toRef","getProps","getBindValue","attr","omit","getWrapperHeight","watchEffect","watch","v","handleCancel","isFunction","isClose","deepMerge","handleOk","handleHeightChange","height","handleExtHeight","handleTitleDbClick"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { unref as i, toRaw as ee } from "vue";
|
|
2
2
|
import { isArray as g, isFunction as T, isString as h, set as d, unset as v, isNil as A, cloneDeep as x, uniqBy as te } from "lodash-es";
|
|
3
3
|
import B from "dayjs";
|
|
4
|
-
import { handleInputNumberValue as
|
|
4
|
+
import { handleInputNumberValue as oe, dateItemType as ne } from "../helper.js";
|
|
5
5
|
import { useFormContext as se } from "./useFormContext.js";
|
|
6
6
|
import { dateUtil as C } from "../../../../../utils/dateUtil.js";
|
|
7
7
|
import "../../../../../utils/eventBus.js";
|
|
@@ -17,7 +17,8 @@ import "../../../../../utils/propTypes.js";
|
|
|
17
17
|
import "../../../../../utils/request.js";
|
|
18
18
|
import "../../../../../utils/Storage.js";
|
|
19
19
|
import "../../../../../utils/uuid.js";
|
|
20
|
-
|
|
20
|
+
import "ant-design-vue";
|
|
21
|
+
const Se = () => {
|
|
21
22
|
const M = se(), {
|
|
22
23
|
compRefMap: K,
|
|
23
24
|
formModel: l,
|
|
@@ -36,35 +37,35 @@ const Ee = () => {
|
|
|
36
37
|
return i(p) ? w(ee(i(l))) : {};
|
|
37
38
|
}
|
|
38
39
|
function q(e) {
|
|
39
|
-
return i(c).schemas?.some((s) => s.field === e && h(s.component) ?
|
|
40
|
+
return i(c).schemas?.some((s) => s.field === e && h(s.component) ? ne.includes(s.component) : !1);
|
|
40
41
|
}
|
|
41
42
|
async function S(e) {
|
|
42
|
-
const t = i(y), s = t.map((
|
|
43
|
+
const t = i(y), s = t.map((n) => n.field).filter(Boolean);
|
|
43
44
|
Object.assign(R, e);
|
|
44
45
|
const r = [];
|
|
45
|
-
Object.entries(e).forEach(([
|
|
46
|
-
const f = t.find((a) => a.field ===
|
|
47
|
-
if (h(f?.component) && (
|
|
48
|
-
if (q(
|
|
49
|
-
if (Array.isArray(
|
|
46
|
+
Object.entries(e).forEach(([n, o]) => {
|
|
47
|
+
const f = t.find((a) => a.field === n), m = Reflect.has(e, n);
|
|
48
|
+
if (h(f?.component) && (o = oe(f?.component, o)), m && s.includes(n)) {
|
|
49
|
+
if (q(n))
|
|
50
|
+
if (Array.isArray(o)) {
|
|
50
51
|
const a = [];
|
|
51
|
-
for (const u of
|
|
52
|
+
for (const u of o)
|
|
52
53
|
a.push(u ? B(u) : null);
|
|
53
|
-
d(l,
|
|
54
|
+
d(l, n, a);
|
|
54
55
|
} else {
|
|
55
56
|
const { componentProps: a } = f || {};
|
|
56
57
|
let u = a;
|
|
57
58
|
T(a) && (u = u({ formPropsRef: c, formModel: l })), d(
|
|
58
59
|
l,
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
n,
|
|
61
|
+
o ? u?.valueFormat ? o : B(o) : null
|
|
61
62
|
);
|
|
62
63
|
}
|
|
63
64
|
else
|
|
64
|
-
d(l,
|
|
65
|
-
r.push(
|
|
65
|
+
d(l, n, o);
|
|
66
|
+
r.push(n);
|
|
66
67
|
}
|
|
67
|
-
}), await j(r).catch((
|
|
68
|
+
}), await j(r).catch((n) => {
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
71
|
async function H(e) {
|
|
@@ -72,14 +73,14 @@ const Ee = () => {
|
|
|
72
73
|
F(e) && t.push(e), g(e) && (t = [...e]), i(c).schemas = t;
|
|
73
74
|
}
|
|
74
75
|
async function _(e, t, s = !1) {
|
|
75
|
-
const r = x(i(y)),
|
|
76
|
-
(
|
|
76
|
+
const r = x(i(y)), n = r.findIndex(
|
|
77
|
+
(o) => o.field === t
|
|
77
78
|
);
|
|
78
|
-
if (!t ||
|
|
79
|
+
if (!t || n === -1 || s) {
|
|
79
80
|
s ? r.unshift(e) : r.push(e), c.value.schemas = r;
|
|
80
81
|
return;
|
|
81
82
|
}
|
|
82
|
-
|
|
83
|
+
n !== -1 && r.splice(n + 1, 0, e), c.value.schemas = r, P(c.value.schemas);
|
|
83
84
|
}
|
|
84
85
|
async function z(e) {
|
|
85
86
|
const t = x(i(y));
|
|
@@ -89,8 +90,8 @@ const Ee = () => {
|
|
|
89
90
|
h(e) && (s = [e]);
|
|
90
91
|
for (const r of s)
|
|
91
92
|
if (h(r)) {
|
|
92
|
-
const
|
|
93
|
-
|
|
93
|
+
const n = t.findIndex((o) => o.field === r);
|
|
94
|
+
n !== -1 && (v(l, r), t.splice(n, 1));
|
|
94
95
|
}
|
|
95
96
|
c.value.schemas = t;
|
|
96
97
|
}
|
|
@@ -100,37 +101,37 @@ const Ee = () => {
|
|
|
100
101
|
const G = (e) => {
|
|
101
102
|
let t = [];
|
|
102
103
|
if (F(e) && t.push(e), g(e) && (t = [...e]), !t.every(
|
|
103
|
-
(
|
|
104
|
+
(o) => o.component === "Divider" || Reflect.has(o, "field") && o.field
|
|
104
105
|
)) {
|
|
105
106
|
console.error(
|
|
106
107
|
"All children of the form Schema array that need to be updated must contain the `field` field"
|
|
107
108
|
);
|
|
108
109
|
return;
|
|
109
110
|
}
|
|
110
|
-
const r = [],
|
|
111
|
-
i(y).forEach((
|
|
112
|
-
const f = t.find((m) =>
|
|
111
|
+
const r = [], n = [];
|
|
112
|
+
i(y).forEach((o) => {
|
|
113
|
+
const f = t.find((m) => o.field === m.field);
|
|
113
114
|
if (f) {
|
|
114
|
-
const m = f.componentProps, a = N(
|
|
115
|
-
if (V.has(
|
|
116
|
-
const u = V.get(
|
|
115
|
+
const m = f.componentProps, a = N(o, f);
|
|
116
|
+
if (V.has(o.field)) {
|
|
117
|
+
const u = V.get(o.field);
|
|
117
118
|
a.componentProps = (I) => ({
|
|
118
119
|
...u(I),
|
|
119
120
|
// @ts-ignore
|
|
120
121
|
...T(m) ? m(I) : m
|
|
121
122
|
});
|
|
122
123
|
}
|
|
123
|
-
|
|
124
|
+
n.push(a), r.push(a);
|
|
124
125
|
} else
|
|
125
|
-
r.push(
|
|
126
|
-
}), P(
|
|
126
|
+
r.push(o);
|
|
127
|
+
}), P(n), c.value.schemas = te(r, "field");
|
|
127
128
|
};
|
|
128
129
|
function P(e) {
|
|
129
130
|
let t = [];
|
|
130
131
|
F(e) && t.push(e), g(e) && (t = [...e]);
|
|
131
132
|
const s = {}, r = E();
|
|
132
|
-
t.forEach((
|
|
133
|
-
|
|
133
|
+
t.forEach((n) => {
|
|
134
|
+
n.component != "Divider" && Reflect.has(n, "field") && n.field && !A(n.defaultValue) && (!(n.field in r) || A(r[n.field])) && (s[n.field] = n.defaultValue);
|
|
134
135
|
}), S(s);
|
|
135
136
|
}
|
|
136
137
|
async function J() {
|
|
@@ -163,21 +164,21 @@ const Ee = () => {
|
|
|
163
164
|
if (!F(e))
|
|
164
165
|
return {};
|
|
165
166
|
const t = {};
|
|
166
|
-
for (let [
|
|
167
|
-
if (!
|
|
167
|
+
for (let [n, o] of Object.entries(e)) {
|
|
168
|
+
if (!n || g(o) && o.length === 0 || T(o))
|
|
168
169
|
continue;
|
|
169
170
|
const { transformDateFunc: f } = i(b);
|
|
170
|
-
F(
|
|
171
|
-
const m = D(
|
|
172
|
-
if (T(m?.transform) && (
|
|
173
|
-
Object.assign(t,
|
|
171
|
+
F(o) && (o = f?.(o)), g(o) && o[0]?.format && o[1]?.format && (o = o.map((a) => f?.(a))), h(o) && (o = o.trim());
|
|
172
|
+
const m = D(n);
|
|
173
|
+
if (T(m?.transform) && (o = m?.transform(o), F(o))) {
|
|
174
|
+
Object.assign(t, o), Reflect.deleteProperty(t, n);
|
|
174
175
|
continue;
|
|
175
176
|
}
|
|
176
|
-
d(t,
|
|
177
|
+
d(t, n, o);
|
|
177
178
|
}
|
|
178
179
|
const s = [], { schemas: r } = c.value;
|
|
179
180
|
return r?.forEach(
|
|
180
|
-
(
|
|
181
|
+
(n) => s.push({ field: n.field, type: n.component })
|
|
181
182
|
), d(t, "HeaderUniqForm", { form: s }), k(t);
|
|
182
183
|
}
|
|
183
184
|
function k(e) {
|
|
@@ -186,13 +187,13 @@ const Ee = () => {
|
|
|
186
187
|
return e;
|
|
187
188
|
for (const [
|
|
188
189
|
s,
|
|
189
|
-
[r,
|
|
190
|
-
|
|
190
|
+
[r, n],
|
|
191
|
+
o = "YYYY-MM-DD"
|
|
191
192
|
] of t) {
|
|
192
|
-
if (!s || !r || !
|
|
193
|
+
if (!s || !r || !n || !e[s])
|
|
193
194
|
continue;
|
|
194
195
|
const [f, m] = e[s];
|
|
195
|
-
e[r] = C(f).format(
|
|
196
|
+
e[r] = C(f).format(o), e[n] = C(m).format(o), Reflect.deleteProperty(e, s);
|
|
196
197
|
}
|
|
197
198
|
return e;
|
|
198
199
|
}
|
|
@@ -225,6 +226,6 @@ const Ee = () => {
|
|
|
225
226
|
};
|
|
226
227
|
};
|
|
227
228
|
export {
|
|
228
|
-
|
|
229
|
+
Se as useFormMethods
|
|
229
230
|
};
|
|
230
231
|
//# sourceMappingURL=useFormMethods.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormMethods.js","sources":["../../../../../../../src/components/core/schema-form/src/hooks/useFormMethods.ts"],"sourcesContent":["import { toRaw, unref } from \"vue\";\nimport { cloneDeep, set, unset, isNil, uniqBy } from \"lodash-es\";\nimport dayjs from \"dayjs\";\nimport { dateItemType, handleInputNumberValue } from \"../helper\";\nimport { useFormContext } from \"./useFormContext\";\nimport type { SchemaFormProps } from \"../schema-form\";\nimport type { UnwrapFormSchema } from \"../types/form\";\nimport type { NamePath } from \"ant-design-vue/lib/form/interface\";\nimport { deepMerge } from \"@/utils\";\nimport { isFunction, isObject, isArray, isString } from \"@/utils/is\";\nimport { dateUtil } from \"@/utils/dateUtil\";\n\ntype FormSchema = UnwrapFormSchema;\n\nexport type FormMethods = ReturnType<typeof useFormMethods>;\n\nexport const useFormMethods = () => {\n const schemaFormContext = useFormContext();\n const {\n compRefMap,\n formModel,\n formPropsRef,\n cacheFormModel,\n schemaFormRef,\n getFormProps,\n formSchemasRef,\n defaultFormValues,\n originComponentPropsFnMap,\n emit,\n } = schemaFormContext;\n\n // 将所有的表单组件实例保存起来, 方便外面通过表单组件实例操作\n const setItemRef = (field: string) => {\n return (el) => {\n if (el) {\n compRefMap.set(field, el);\n }\n };\n };\n\n function getFieldsValue(): Recordable {\n const formEl = unref(schemaFormRef);\n if (!formEl) return {};\n return handleFormValues(toRaw(unref(formModel)));\n }\n\n /**\n * @description: Is it time\n */\n function itemIsDateType(key: string) {\n const schemas = unref(formPropsRef).schemas as FormSchema[] | undefined;\n return schemas?.some((item: FormSchema) => {\n return item.field === key && isString(item.component)\n ? dateItemType.includes(item.component)\n : false;\n });\n }\n\n /**\n * @description: 设置表单字段值\n */\n async function setFieldsValue(values: Recordable) {\n const schemas = unref(formSchemasRef) as FormSchema[];\n // @ts-ignore\n const fields = schemas.map((item) => item.field).filter(Boolean);\n\n Object.assign(cacheFormModel, values);\n\n const validKeys: string[] = [];\n Object.entries(values).forEach(([key, value]) => {\n const schema = schemas.find((item) => item.field === key);\n\n const hasKey = Reflect.has(values, key);\n if (isString(schema?.component)) {\n value = handleInputNumberValue(schema?.component, value);\n }\n // 0| '' is allow\n if (hasKey && fields.includes(key)) {\n // time type\n if (itemIsDateType(key)) {\n if (Array.isArray(value)) {\n const arr: any[] = [];\n for (const ele of value) {\n arr.push(ele ? dayjs(ele) : null);\n }\n set(formModel, key, arr);\n } else {\n const { componentProps } = schema || {};\n let _props = componentProps as any;\n if (isFunction(componentProps)) {\n _props = _props({ formPropsRef, formModel });\n }\n set(\n formModel,\n key,\n value ? (_props?.valueFormat ? value : dayjs(value)) : null,\n );\n }\n } else {\n set(formModel, key, value);\n }\n validKeys.push(key);\n }\n });\n // console.log('formModel', formModel);\n await validateFields(validKeys).catch((_) => {});\n }\n\n async function resetSchema(\n data: Partial<FormSchema> | Partial<FormSchema>[],\n ) {\n let updateData: Partial<FormSchema>[] = [];\n if (isObject(data)) {\n updateData.push(data as FormSchema);\n }\n if (isArray(data)) {\n updateData = [...data];\n }\n unref(formPropsRef).schemas = updateData as FormSchema[];\n }\n\n /**\n * @description: 插入到指定 field 后面,如果没传指定 field,则插入到最后,当 first = true 时插入到第一个位置\n */\n async function appendSchemaByField(\n schemaItem: FormSchema,\n prefixField?: string,\n first = false,\n ) {\n const schemaList = cloneDeep(unref(formSchemasRef)) as FormSchema[];\n\n const index = schemaList.findIndex(\n (schema) => schema.field === prefixField,\n );\n\n if (!prefixField || index === -1 || first) {\n first ? schemaList.unshift(schemaItem) : schemaList.push(schemaItem);\n formPropsRef.value.schemas = schemaList;\n return;\n }\n if (index !== -1) {\n schemaList.splice(index + 1, 0, schemaItem);\n }\n formPropsRef.value.schemas = schemaList;\n setDefaultValue(formPropsRef.value.schemas);\n }\n\n /**\n * @description: 根据 field 删除 Schema\n */\n async function removeSchemaByField(fields: string | string[]): Promise<void> {\n const schemaList = cloneDeep(unref(formSchemasRef)) as FormSchema[];\n\n if (!fields) {\n return;\n }\n\n let fieldList: string[] = isString(fields) ? [fields] : fields;\n if (isString(fields)) {\n fieldList = [fields];\n }\n for (const field of fieldList) {\n if (isString(field)) {\n const index = schemaList.findIndex((schema) => schema.field === field);\n if (index !== -1) {\n unset(formModel, field);\n schemaList.splice(index, 1);\n }\n }\n }\n\n formPropsRef.value.schemas = schemaList;\n }\n\n /**\n * @description: 根据 field 查找 Schema\n */\n function getSchemaByField(field: string): FormSchema | undefined {\n return (unref(formSchemasRef) as FormSchema[]).find((schema) => field === schema.field);\n }\n\n /**\n * @description 更新formItemSchema\n */\n const updateSchema = (data: Partial<FormSchema> | Partial<FormSchema>[]) => {\n let updateData: Partial<FormSchema>[] = [];\n if (isObject(data)) {\n updateData.push(data as FormSchema);\n }\n if (isArray(data)) {\n updateData = [...data];\n }\n\n const hasField = updateData.every(\n (item) =>\n item.component === \"Divider\" ||\n (Reflect.has(item, \"field\") && item.field),\n );\n\n if (!hasField) {\n console.error(\n \"All children of the form Schema array that need to be updated must contain the `field` field\",\n );\n return;\n }\n const schemas: FormSchema[] = [];\n const updatedSchemas: FormSchema[] = [];\n\n (unref(formSchemasRef) as FormSchema[]).forEach((val) => {\n const updateItem = updateData.find((n) => val.field === n.field);\n if (updateItem) {\n const compProps = updateItem.componentProps;\n const newSchema = deepMerge(val, updateItem);\n\n if (originComponentPropsFnMap.has(val.field)) {\n const originCompPropsFn = originComponentPropsFnMap.get(val.field)!;\n\n newSchema.componentProps = (opt) => {\n return {\n ...originCompPropsFn(opt),\n // @ts-ignore\n ...(isFunction(compProps) ? compProps(opt) : compProps),\n };\n };\n }\n\n updatedSchemas.push(newSchema);\n schemas.push(newSchema);\n } else {\n schemas.push(val);\n }\n });\n\n setDefaultValue(updatedSchemas);\n formPropsRef.value.schemas = uniqBy<UnwrapFormSchema>(schemas, \"field\");\n };\n\n function setDefaultValue(data: FormSchema | FormSchema[]) {\n let schemas: FormSchema[] = [];\n if (isObject(data)) {\n schemas.push(data as FormSchema);\n }\n if (isArray(data)) {\n schemas = [...data];\n }\n\n const obj: Recordable = {};\n const currentFieldsValue = getFieldsValue();\n schemas.forEach((item) => {\n if (\n item.component != \"Divider\" &&\n Reflect.has(item, \"field\") &&\n item.field &&\n !isNil(item.defaultValue) &&\n (!(item.field in currentFieldsValue) ||\n isNil(currentFieldsValue[item.field]))\n ) {\n obj[item.field] = item.defaultValue;\n }\n });\n setFieldsValue(obj);\n }\n\n async function resetFields(): Promise<void> {\n const { resetFunc, submitOnReset } = unref(getFormProps);\n resetFunc && isFunction(resetFunc) && (await resetFunc());\n\n Object.keys(formModel).forEach((key) => {\n set(formModel, key, defaultFormValues[key]);\n });\n\n emit(\"reset\", formModel);\n submitOnReset && schemaFormContext.submit();\n setTimeout(clearValidate);\n }\n\n async function validateFields(nameList?: NamePath[] | undefined) {\n return schemaFormRef.value?.validateFields(nameList);\n }\n\n async function validate(nameList?: NamePath[] | undefined) {\n return await schemaFormRef.value!.validate(nameList);\n }\n\n async function clearValidate(name?: string | string[]) {\n await schemaFormRef.value?.clearValidate(name);\n }\n\n async function scrollToField(\n name: NamePath,\n options?: ScrollOptions | undefined,\n ) {\n await schemaFormRef.value?.scrollToField(name, options);\n }\n\n // 设置某个字段的值\n const setFormModel = (key: Key, value: any) => {\n set(formModel, key, value);\n set(cacheFormModel, key, value);\n const { validateTrigger } = unref(getFormProps);\n if (!validateTrigger || validateTrigger === \"change\") {\n schemaFormRef.value?.validateFields([key]);\n }\n };\n\n // 删除某个字段\n const delFormModel = (key: Key) => {\n return unset(formModel, key);\n };\n\n const setSchemaFormProps = (formProps: Partial<SchemaFormProps>) => {\n const { schemas } = formPropsRef.value;\n formPropsRef.value = deepMerge(unref(formPropsRef) || {}, formProps);\n // @ts-ignore\n formPropsRef.value.schemas = schemas?.length ? schemas : formProps.schemas;\n };\n\n // Processing form values\n function handleFormValues(values: Recordable) {\n if (!isObject(values)) {\n return {};\n }\n const res: Recordable = {};\n for (let [key, value] of Object.entries(values)) {\n if (!key || (isArray(value) && value.length === 0) || isFunction(value)) {\n continue;\n }\n\n const { transformDateFunc } = unref(getFormProps);\n if (isObject(value)) {\n value = transformDateFunc?.(value);\n }\n\n if (isArray(value) && value[0]?.format && value[1]?.format) {\n value = value.map((item) => transformDateFunc?.(item));\n }\n // Remove spaces\n if (isString(value)) {\n value = value.trim();\n }\n\n const schemaItem = getSchemaByField(key);\n\n if (isFunction(schemaItem?.transform)) {\n value = schemaItem?.transform(value);\n if (isObject(value)) {\n Object.assign(res, value);\n Reflect.deleteProperty(res, key);\n continue;\n }\n }\n\n set(res, key, value);\n }\n // 给后端传递form的field及组件类型, 后端统一处理分页查询\n const fieldValue = [] as any;\n const { schemas } = formPropsRef.value;\n schemas?.forEach((x) =>\n fieldValue.push({ field: x.field, type: x.component }),\n );\n set(res, \"HeaderUniqForm\", { form: fieldValue });\n return handleRangeTimeValue(res);\n }\n\n /**\n * @description: Processing time interval parameters\n */\n function handleRangeTimeValue(values: Recordable) {\n const fieldMapToTime = unref(getFormProps).fieldMapToTime;\n\n if (!fieldMapToTime || !Array.isArray(fieldMapToTime)) {\n return values;\n }\n\n for (const [\n field,\n [startTimeKey, endTimeKey],\n format = \"YYYY-MM-DD\",\n ] of fieldMapToTime) {\n if (!field || !startTimeKey || !endTimeKey || !values[field]) {\n continue;\n }\n\n const [startTime, endTime]: string[] = values[field];\n\n values[startTimeKey] = dateUtil(startTime).format(format);\n values[endTimeKey] = dateUtil(endTime).format(format);\n Reflect.deleteProperty(values, field);\n }\n\n return values;\n }\n\n const handleEnterPress = (e: KeyboardEvent) => {\n const { autoSubmitOnEnter } = unref(formPropsRef);\n if (!autoSubmitOnEnter) return;\n if (e.key === \"Enter\" && e.target && e.target instanceof HTMLElement) {\n const target: HTMLElement = e.target as HTMLElement;\n if (target && target.tagName && target.tagName.toUpperCase() == \"INPUT\") {\n schemaFormContext.submit(e);\n }\n }\n };\n\n return {\n setItemRef,\n clearValidate,\n validate,\n validateFields,\n getFieldsValue,\n updateSchema,\n resetSchema,\n getSchemaByField,\n appendSchemaByField,\n removeSchemaByField,\n resetFields,\n setFieldsValue,\n scrollToField,\n setDefaultValue,\n setFormModel,\n delFormModel,\n setSchemaFormProps,\n handleFormValues,\n handleEnterPress,\n };\n};\n"],"names":["useFormMethods","schemaFormContext","useFormContext","compRefMap","formModel","formPropsRef","cacheFormModel","schemaFormRef","getFormProps","formSchemasRef","defaultFormValues","originComponentPropsFnMap","emit","setItemRef","field","el","getFieldsValue","unref","handleFormValues","toRaw","itemIsDateType","key","item","isString","dateItemType","setFieldsValue","values","schemas","fields","validKeys","value","schema","hasKey","handleInputNumberValue","arr","ele","dayjs","set","componentProps","_props","isFunction","validateFields","_","resetSchema","data","updateData","isObject","isArray","appendSchemaByField","schemaItem","prefixField","first","schemaList","cloneDeep","index","setDefaultValue","removeSchemaByField","fieldList","unset","getSchemaByField","updateSchema","updatedSchemas","val","updateItem","n","compProps","newSchema","deepMerge","originCompPropsFn","opt","uniqBy","obj","currentFieldsValue","isNil","resetFields","resetFunc","submitOnReset","clearValidate","nameList","validate","name","scrollToField","options","setFormModel","validateTrigger","delFormModel","setSchemaFormProps","formProps","res","transformDateFunc","fieldValue","x","handleRangeTimeValue","fieldMapToTime","startTimeKey","endTimeKey","format","startTime","endTime","dateUtil","autoSubmitOnEnter","target"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFormMethods.js","sources":["../../../../../../../src/components/core/schema-form/src/hooks/useFormMethods.ts"],"sourcesContent":["import { toRaw, unref } from \"vue\";\nimport { cloneDeep, set, unset, isNil, uniqBy } from \"lodash-es\";\nimport dayjs from \"dayjs\";\nimport { dateItemType, handleInputNumberValue } from \"../helper\";\nimport { useFormContext } from \"./useFormContext\";\nimport type { SchemaFormProps } from \"../schema-form\";\nimport type { UnwrapFormSchema } from \"../types/form\";\nimport type { NamePath } from \"ant-design-vue/lib/form/interface\";\nimport { deepMerge } from \"@/utils\";\nimport { isFunction, isObject, isArray, isString } from \"@/utils/is\";\nimport { dateUtil } from \"@/utils/dateUtil\";\n\ntype FormSchema = UnwrapFormSchema;\n\nexport type FormMethods = ReturnType<typeof useFormMethods>;\n\nexport const useFormMethods = () => {\n const schemaFormContext = useFormContext();\n const {\n compRefMap,\n formModel,\n formPropsRef,\n cacheFormModel,\n schemaFormRef,\n getFormProps,\n formSchemasRef,\n defaultFormValues,\n originComponentPropsFnMap,\n emit,\n } = schemaFormContext;\n\n // 将所有的表单组件实例保存起来, 方便外面通过表单组件实例操作\n const setItemRef = (field: string) => {\n return (el) => {\n if (el) {\n compRefMap.set(field, el);\n }\n };\n };\n\n function getFieldsValue(): Recordable {\n const formEl = unref(schemaFormRef);\n if (!formEl) return {};\n return handleFormValues(toRaw(unref(formModel)));\n }\n\n /**\n * @description: Is it time\n */\n function itemIsDateType(key: string) {\n const schemas = unref(formPropsRef).schemas as FormSchema[] | undefined;\n return schemas?.some((item: FormSchema) => {\n return item.field === key && isString(item.component)\n ? dateItemType.includes(item.component)\n : false;\n });\n }\n\n /**\n * @description: 设置表单字段值\n */\n async function setFieldsValue(values: Recordable) {\n const schemas = unref(formSchemasRef) as FormSchema[];\n // @ts-ignore\n const fields = schemas.map((item) => item.field).filter(Boolean);\n\n Object.assign(cacheFormModel, values);\n\n const validKeys: string[] = [];\n Object.entries(values).forEach(([key, value]) => {\n const schema = schemas.find((item) => item.field === key);\n\n const hasKey = Reflect.has(values, key);\n if (isString(schema?.component)) {\n value = handleInputNumberValue(schema?.component, value);\n }\n // 0| '' is allow\n if (hasKey && fields.includes(key)) {\n // time type\n if (itemIsDateType(key)) {\n if (Array.isArray(value)) {\n const arr: any[] = [];\n for (const ele of value) {\n arr.push(ele ? dayjs(ele) : null);\n }\n set(formModel, key, arr);\n } else {\n const { componentProps } = schema || {};\n let _props = componentProps as any;\n if (isFunction(componentProps)) {\n _props = _props({ formPropsRef, formModel });\n }\n set(\n formModel,\n key,\n value ? (_props?.valueFormat ? value : dayjs(value)) : null,\n );\n }\n } else {\n set(formModel, key, value);\n }\n validKeys.push(key);\n }\n });\n // console.log('formModel', formModel);\n await validateFields(validKeys).catch((_) => {});\n }\n\n async function resetSchema(\n data: Partial<FormSchema> | Partial<FormSchema>[],\n ) {\n let updateData: Partial<FormSchema>[] = [];\n if (isObject(data)) {\n updateData.push(data as FormSchema);\n }\n if (isArray(data)) {\n updateData = [...data];\n }\n unref(formPropsRef).schemas = updateData as FormSchema[];\n }\n\n /**\n * @description: 插入到指定 field 后面,如果没传指定 field,则插入到最后,当 first = true 时插入到第一个位置\n */\n async function appendSchemaByField(\n schemaItem: FormSchema,\n prefixField?: string,\n first = false,\n ) {\n const schemaList = cloneDeep(unref(formSchemasRef)) as FormSchema[];\n\n const index = schemaList.findIndex(\n (schema) => schema.field === prefixField,\n );\n\n if (!prefixField || index === -1 || first) {\n first ? schemaList.unshift(schemaItem) : schemaList.push(schemaItem);\n formPropsRef.value.schemas = schemaList;\n return;\n }\n if (index !== -1) {\n schemaList.splice(index + 1, 0, schemaItem);\n }\n formPropsRef.value.schemas = schemaList;\n setDefaultValue(formPropsRef.value.schemas);\n }\n\n /**\n * @description: 根据 field 删除 Schema\n */\n async function removeSchemaByField(fields: string | string[]): Promise<void> {\n const schemaList = cloneDeep(unref(formSchemasRef)) as FormSchema[];\n\n if (!fields) {\n return;\n }\n\n let fieldList: string[] = isString(fields) ? [fields] : fields;\n if (isString(fields)) {\n fieldList = [fields];\n }\n for (const field of fieldList) {\n if (isString(field)) {\n const index = schemaList.findIndex((schema) => schema.field === field);\n if (index !== -1) {\n unset(formModel, field);\n schemaList.splice(index, 1);\n }\n }\n }\n\n formPropsRef.value.schemas = schemaList;\n }\n\n /**\n * @description: 根据 field 查找 Schema\n */\n function getSchemaByField(field: string): FormSchema | undefined {\n return (unref(formSchemasRef) as FormSchema[]).find((schema) => field === schema.field);\n }\n\n /**\n * @description 更新formItemSchema\n */\n const updateSchema = (data: Partial<FormSchema> | Partial<FormSchema>[]) => {\n let updateData: Partial<FormSchema>[] = [];\n if (isObject(data)) {\n updateData.push(data as FormSchema);\n }\n if (isArray(data)) {\n updateData = [...data];\n }\n\n const hasField = updateData.every(\n (item) =>\n item.component === \"Divider\" ||\n (Reflect.has(item, \"field\") && item.field),\n );\n\n if (!hasField) {\n console.error(\n \"All children of the form Schema array that need to be updated must contain the `field` field\",\n );\n return;\n }\n const schemas: FormSchema[] = [];\n const updatedSchemas: FormSchema[] = [];\n\n (unref(formSchemasRef) as FormSchema[]).forEach((val) => {\n const updateItem = updateData.find((n) => val.field === n.field);\n if (updateItem) {\n const compProps = updateItem.componentProps;\n const newSchema = deepMerge(val, updateItem);\n\n if (originComponentPropsFnMap.has(val.field)) {\n const originCompPropsFn = originComponentPropsFnMap.get(val.field)!;\n\n newSchema.componentProps = (opt) => {\n return {\n ...originCompPropsFn(opt),\n // @ts-ignore\n ...(isFunction(compProps) ? compProps(opt) : compProps),\n };\n };\n }\n\n updatedSchemas.push(newSchema);\n schemas.push(newSchema);\n } else {\n schemas.push(val);\n }\n });\n\n setDefaultValue(updatedSchemas);\n formPropsRef.value.schemas = uniqBy<UnwrapFormSchema>(schemas, \"field\");\n };\n\n function setDefaultValue(data: FormSchema | FormSchema[]) {\n let schemas: FormSchema[] = [];\n if (isObject(data)) {\n schemas.push(data as FormSchema);\n }\n if (isArray(data)) {\n schemas = [...data];\n }\n\n const obj: Recordable = {};\n const currentFieldsValue = getFieldsValue();\n schemas.forEach((item) => {\n if (\n item.component != \"Divider\" &&\n Reflect.has(item, \"field\") &&\n item.field &&\n !isNil(item.defaultValue) &&\n (!(item.field in currentFieldsValue) ||\n isNil(currentFieldsValue[item.field]))\n ) {\n obj[item.field] = item.defaultValue;\n }\n });\n setFieldsValue(obj);\n }\n\n async function resetFields(): Promise<void> {\n const { resetFunc, submitOnReset } = unref(getFormProps);\n resetFunc && isFunction(resetFunc) && (await resetFunc());\n\n Object.keys(formModel).forEach((key) => {\n set(formModel, key, defaultFormValues[key]);\n });\n\n emit(\"reset\", formModel);\n submitOnReset && schemaFormContext.submit();\n setTimeout(clearValidate);\n }\n\n async function validateFields(nameList?: NamePath[] | undefined) {\n return schemaFormRef.value?.validateFields(nameList);\n }\n\n async function validate(nameList?: NamePath[] | undefined) {\n return await schemaFormRef.value!.validate(nameList);\n }\n\n async function clearValidate(name?: string | string[]) {\n await schemaFormRef.value?.clearValidate(name);\n }\n\n async function scrollToField(\n name: NamePath,\n options?: ScrollOptions | undefined,\n ) {\n await schemaFormRef.value?.scrollToField(name, options);\n }\n\n // 设置某个字段的值\n const setFormModel = (key: Key, value: any) => {\n set(formModel, key, value);\n set(cacheFormModel, key, value);\n const { validateTrigger } = unref(getFormProps);\n if (!validateTrigger || validateTrigger === \"change\") {\n schemaFormRef.value?.validateFields([key]);\n }\n };\n\n // 删除某个字段\n const delFormModel = (key: Key) => {\n return unset(formModel, key);\n };\n\n const setSchemaFormProps = (formProps: Partial<SchemaFormProps>) => {\n const { schemas } = formPropsRef.value;\n formPropsRef.value = deepMerge(unref(formPropsRef) || {}, formProps);\n // @ts-ignore\n formPropsRef.value.schemas = schemas?.length ? schemas : formProps.schemas;\n };\n\n // Processing form values\n function handleFormValues(values: Recordable) {\n if (!isObject(values)) {\n return {};\n }\n const res: Recordable = {};\n for (let [key, value] of Object.entries(values)) {\n if (!key || (isArray(value) && value.length === 0) || isFunction(value)) {\n continue;\n }\n\n const { transformDateFunc } = unref(getFormProps);\n if (isObject(value)) {\n value = transformDateFunc?.(value);\n }\n\n if (isArray(value) && value[0]?.format && value[1]?.format) {\n value = value.map((item) => transformDateFunc?.(item));\n }\n // Remove spaces\n if (isString(value)) {\n value = value.trim();\n }\n\n const schemaItem = getSchemaByField(key);\n\n if (isFunction(schemaItem?.transform)) {\n value = schemaItem?.transform(value);\n if (isObject(value)) {\n Object.assign(res, value);\n Reflect.deleteProperty(res, key);\n continue;\n }\n }\n\n set(res, key, value);\n }\n // 给后端传递form的field及组件类型, 后端统一处理分页查询\n const fieldValue = [] as any;\n const { schemas } = formPropsRef.value;\n schemas?.forEach((x) =>\n fieldValue.push({ field: x.field, type: x.component }),\n );\n set(res, \"HeaderUniqForm\", { form: fieldValue });\n return handleRangeTimeValue(res);\n }\n\n /**\n * @description: Processing time interval parameters\n */\n function handleRangeTimeValue(values: Recordable) {\n const fieldMapToTime = unref(getFormProps).fieldMapToTime;\n\n if (!fieldMapToTime || !Array.isArray(fieldMapToTime)) {\n return values;\n }\n\n for (const [\n field,\n [startTimeKey, endTimeKey],\n format = \"YYYY-MM-DD\",\n ] of fieldMapToTime) {\n if (!field || !startTimeKey || !endTimeKey || !values[field]) {\n continue;\n }\n\n const [startTime, endTime]: string[] = values[field];\n\n values[startTimeKey] = dateUtil(startTime).format(format);\n values[endTimeKey] = dateUtil(endTime).format(format);\n Reflect.deleteProperty(values, field);\n }\n\n return values;\n }\n\n const handleEnterPress = (e: KeyboardEvent) => {\n const { autoSubmitOnEnter } = unref(formPropsRef);\n if (!autoSubmitOnEnter) return;\n if (e.key === \"Enter\" && e.target && e.target instanceof HTMLElement) {\n const target: HTMLElement = e.target as HTMLElement;\n if (target && target.tagName && target.tagName.toUpperCase() == \"INPUT\") {\n schemaFormContext.submit(e);\n }\n }\n };\n\n return {\n setItemRef,\n clearValidate,\n validate,\n validateFields,\n getFieldsValue,\n updateSchema,\n resetSchema,\n getSchemaByField,\n appendSchemaByField,\n removeSchemaByField,\n resetFields,\n setFieldsValue,\n scrollToField,\n setDefaultValue,\n setFormModel,\n delFormModel,\n setSchemaFormProps,\n handleFormValues,\n handleEnterPress,\n };\n};\n"],"names":["useFormMethods","schemaFormContext","useFormContext","compRefMap","formModel","formPropsRef","cacheFormModel","schemaFormRef","getFormProps","formSchemasRef","defaultFormValues","originComponentPropsFnMap","emit","setItemRef","field","el","getFieldsValue","unref","handleFormValues","toRaw","itemIsDateType","key","item","isString","dateItemType","setFieldsValue","values","schemas","fields","validKeys","value","schema","hasKey","handleInputNumberValue","arr","ele","dayjs","set","componentProps","_props","isFunction","validateFields","_","resetSchema","data","updateData","isObject","isArray","appendSchemaByField","schemaItem","prefixField","first","schemaList","cloneDeep","index","setDefaultValue","removeSchemaByField","fieldList","unset","getSchemaByField","updateSchema","updatedSchemas","val","updateItem","n","compProps","newSchema","deepMerge","originCompPropsFn","opt","uniqBy","obj","currentFieldsValue","isNil","resetFields","resetFunc","submitOnReset","clearValidate","nameList","validate","name","scrollToField","options","setFormModel","validateTrigger","delFormModel","setSchemaFormProps","formProps","res","transformDateFunc","fieldValue","x","handleRangeTimeValue","fieldMapToTime","startTimeKey","endTimeKey","format","startTime","endTime","dateUtil","autoSubmitOnEnter","target"],"mappings":"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"}
|