@kp-ui/lowcode 2.16.0-alpha.11 → 2.16.0-alpha.13

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kp-ui/lowcode",
3
- "version": "2.16.0-alpha.11",
3
+ "version": "2.16.0-alpha.13",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -138,6 +138,7 @@ const _e = ({ renderForm: x, props: a }) => {
138
138
  i18nt: d,
139
139
  goBack: ae,
140
140
  reload: ie,
141
+ formValidator: f,
141
142
  getFieldValue: le,
142
143
  resetValidation: K,
143
144
  clearValidate: Q,
@@ -173,7 +174,6 @@ const _e = ({ renderForm: x, props: a }) => {
173
174
  readModeFlag: R,
174
175
  // 引用
175
176
  widgetRefList: F,
176
- formValidator: f,
177
177
  widgetList: W,
178
178
  labelPosition: j,
179
179
  labelWidth: S,
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.js","sources":["../../../../src/components/FormRender/useFormContext.ts"],"sourcesContent":["import { computed, nextTick, onMounted, provide, ref, watchEffect } from 'vue';\nimport { useFormValidation } from './formValidation';\n\n/**\n * 表单上下文接口\n */\nimport { Widget } from '@/types/schema';\nimport {\n cloneFormConfigWithoutEventHandler,\n generateId,\n getContainerWidgetByName,\n insertCustomCssToHead,\n insertGlobalFunctionsToHtml\n} from '@/utils/util';\nimport { cloneDeep, set } from 'lodash-es';\nimport { message } from 'ant-design-vue';\nimport { useI18n } from '@/utils/i18n';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { routerReloadStatus, useComRef, useExecFunction, useRef } from 'tmgc2-share';\nimport DynamicDialog from '../form-render/dynamic-dialog.vue';\nimport { useEmitter } from '@/utils/useEmitter';\nimport { useAppRef } from '../form-designer/useAppRef';\nexport interface FormRenderProps {\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n renderConfig?: {\n languageName?: string;\n };\n globalDsv?: Record<string, any>;\n parentForm?: any;\n dynamicCreation?: boolean;\n debug?: boolean;\n}\n\n/**\n * 表单上下文配置\n */\nexport interface FormContextOptions {\n props: FormRenderProps;\n renderForm: any;\n}\n\n/**\n * 创建表单上下文\n * @param options 表单上下文配置\n * @returns 表单上下文\n */\nexport const useFormContext = ({ renderForm, props }: FormContextOptions) => {\n const { formJson } = props;\n const dynamicDialgRef = useComRef(DynamicDialog);\n const { i18nt } = useI18n();\n const [readModeFlag, setReadMode] = useRef(false);\n\n const emitter = useEmitter();\n\n const formJsonObj = ref();\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n const isLoading = ref(false);\n const widgetRefList = ref<Map<string, any>>(new Map());\n const dialogProps = ref({});\n const childFormRef = ref();\n\n const formWidgetId = Symbol('formWidget');\n\n // 提供给子组件的数据\n provide('refList', widgetRefList);\n provide('getFormConfig', () => formConfig.value);\n provide('formData', formDataModel);\n provide('getReadMode', () => readModeFlag.value);\n provide('designState', false); // 设计态标识\n\n const dialogOrDrawerRef = ref();\n\n const { executeFunction, context, execHttpFunction } = useExecFunction();\n const { getFormRef, getWidgetRef, registerToRefList } = useAppRef(widgetRefList, formWidgetId);\n\n // 计算属性\n const formConfig = computed(() => formJsonObj.value?.formConfig || {});\n\n provide('formConfig', formConfig);\n provide('formWidgetId', formWidgetId);\n\n const widgetList = computed(() => formJsonObj.value?.widgetList || []);\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const setChildFormRef = chid => {\n childFormRef.value = chid;\n };\n\n const labelWidth = computed(() => {\n return formConfig.value?.labelWidth ? `${formConfig.value.labelWidth}px` : '80px';\n });\n\n const customClass = computed(() => {\n return formConfig.value?.customClass || '';\n });\n\n // 初始化表单验证器\n let formValidator = useFormValidation(renderForm);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n console.log({ json });\n\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n // 重新构建表单数据模型\n formDataModel.value = {};\n\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (key === 'processingDescribe') {\n console.log(data[key]);\n }\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n globalDsv: topFormRef.globalDsv,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialgRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialgRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n const getFieldValue = (field: string) => {\n return formDataModel.value[field];\n };\n\n const getVfCtx = () => {\n return props.vfCtx;\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n insertCustomCode();\n });\n\n const expose = {\n context,\n i18nt,\n goBack,\n reload,\n getFieldValue,\n resetValidation,\n clearValidate,\n getVfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n showDialog,\n getFormData,\n getChildFormRef,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n formDataModel,\n isLoading,\n vfCtx: props.vfCtx,\n // 计算属性\n formConfig,\n dynamicDialgRef,\n setChildFormRef,\n setDialogOrDrawerRef\n };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n\n emitter,\n // 状态\n formJsonObj,\n readModeFlag,\n // 引用\n widgetRefList,\n formValidator,\n\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dialogProps,\n\n expose,\n ...expose\n };\n};\n"],"names":["useFormContext","renderForm","props","formJson","dynamicDialgRef","useComRef","DynamicDialog","i18nt","useI18n","readModeFlag","setReadMode","useRef","emitter","useEmitter","formJsonObj","ref","formDataModel","isLoading","widgetRefList","dialogProps","childFormRef","formWidgetId","provide","formConfig","dialogOrDrawerRef","executeFunction","context","execHttpFunction","useExecFunction","getFormRef","getWidgetRef","registerToRefList","useAppRef","computed","_a","widgetList","labelPosition","setChildFormRef","chid","labelWidth","customClass","formValidator","useFormValidation","watchEffect","setFormJson","json","nextTick","handleOnMounted","getFormData","setFormData","data","key","setLoading","loading","resetValidation","clearValidate","setDialogOrDrawerRef","ddRef","getTopFormRef","topFormRef","showDialog","dialogName","formData","extraData","dialogCon","getContainerWidgetByName","message","dFormJson","cloneDeep","cloneFormConfigWithoutEventHandler","wrapperDivId","getUuidKey","_b","getParentFormRef","getChildFormRef","fieldChangeEventHandler","fieldName","value","set","onFormDetail","serveList","res","onFormUpdate","insertCustomCode","formId","generateId","cssCode","functions","insertCustomCssToHead","insertGlobalFunctionsToHtml","reload","router","goBack","reloadStatus","cb","getFieldValue","field","getVfCtx","onMounted","expose"],"mappings":"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"}
1
+ {"version":3,"file":"useFormContext.js","sources":["../../../../src/components/FormRender/useFormContext.ts"],"sourcesContent":["import { computed, nextTick, onMounted, provide, ref, watchEffect } from 'vue';\nimport { useFormValidation } from './formValidation';\n\n/**\n * 表单上下文接口\n */\nimport { Widget } from '@/types/schema';\nimport {\n cloneFormConfigWithoutEventHandler,\n generateId,\n getContainerWidgetByName,\n insertCustomCssToHead,\n insertGlobalFunctionsToHtml\n} from '@/utils/util';\nimport { cloneDeep, set } from 'lodash-es';\nimport { message } from 'ant-design-vue';\nimport { useI18n } from '@/utils/i18n';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { routerReloadStatus, useComRef, useExecFunction, useRef } from 'tmgc2-share';\nimport DynamicDialog from '../form-render/dynamic-dialog.vue';\nimport { useEmitter } from '@/utils/useEmitter';\nimport { useAppRef } from '../form-designer/useAppRef';\nexport interface FormRenderProps {\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n renderConfig?: {\n languageName?: string;\n };\n globalDsv?: Record<string, any>;\n parentForm?: any;\n dynamicCreation?: boolean;\n debug?: boolean;\n}\n\n/**\n * 表单上下文配置\n */\nexport interface FormContextOptions {\n props: FormRenderProps;\n renderForm: any;\n}\n\n/**\n * 创建表单上下文\n * @param options 表单上下文配置\n * @returns 表单上下文\n */\nexport const useFormContext = ({ renderForm, props }: FormContextOptions) => {\n const { formJson } = props;\n const dynamicDialgRef = useComRef(DynamicDialog);\n const { i18nt } = useI18n();\n const [readModeFlag, setReadMode] = useRef(false);\n\n const emitter = useEmitter();\n\n const formJsonObj = ref();\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n const isLoading = ref(false);\n const widgetRefList = ref<Map<string, any>>(new Map());\n const dialogProps = ref({});\n const childFormRef = ref();\n\n const formWidgetId = Symbol('formWidget');\n\n // 提供给子组件的数据\n provide('refList', widgetRefList);\n provide('getFormConfig', () => formConfig.value);\n provide('formData', formDataModel);\n provide('getReadMode', () => readModeFlag.value);\n provide('designState', false); // 设计态标识\n\n const dialogOrDrawerRef = ref();\n\n const { executeFunction, context, execHttpFunction } = useExecFunction();\n const { getFormRef, getWidgetRef, registerToRefList } = useAppRef(widgetRefList, formWidgetId);\n\n // 计算属性\n const formConfig = computed(() => formJsonObj.value?.formConfig || {});\n\n provide('formConfig', formConfig);\n provide('formWidgetId', formWidgetId);\n\n const widgetList = computed(() => formJsonObj.value?.widgetList || []);\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const setChildFormRef = chid => {\n childFormRef.value = chid;\n };\n\n const labelWidth = computed(() => {\n return formConfig.value?.labelWidth ? `${formConfig.value.labelWidth}px` : '80px';\n });\n\n const customClass = computed(() => {\n return formConfig.value?.customClass || '';\n });\n\n // 初始化表单验证器\n let formValidator = useFormValidation(renderForm);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n console.log({ json });\n\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n // 重新构建表单数据模型\n formDataModel.value = {};\n\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (key === 'processingDescribe') {\n console.log(data[key]);\n }\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n globalDsv: topFormRef.globalDsv,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialgRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialgRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n const getFieldValue = (field: string) => {\n return formDataModel.value[field];\n };\n\n const getVfCtx = () => {\n return props.vfCtx;\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n insertCustomCode();\n });\n\n const expose = {\n context,\n i18nt,\n goBack,\n reload,\n formValidator,\n getFieldValue,\n resetValidation,\n clearValidate,\n getVfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n showDialog,\n getFormData,\n getChildFormRef,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n formDataModel,\n isLoading,\n vfCtx: props.vfCtx,\n // 计算属性\n formConfig,\n dynamicDialgRef,\n setChildFormRef,\n setDialogOrDrawerRef\n };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n\n emitter,\n // 状态\n formJsonObj,\n readModeFlag,\n // 引用\n widgetRefList,\n\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dialogProps,\n\n expose,\n ...expose\n };\n};\n"],"names":["useFormContext","renderForm","props","formJson","dynamicDialgRef","useComRef","DynamicDialog","i18nt","useI18n","readModeFlag","setReadMode","useRef","emitter","useEmitter","formJsonObj","ref","formDataModel","isLoading","widgetRefList","dialogProps","childFormRef","formWidgetId","provide","formConfig","dialogOrDrawerRef","executeFunction","context","execHttpFunction","useExecFunction","getFormRef","getWidgetRef","registerToRefList","useAppRef","computed","_a","widgetList","labelPosition","setChildFormRef","chid","labelWidth","customClass","formValidator","useFormValidation","watchEffect","setFormJson","json","nextTick","handleOnMounted","getFormData","setFormData","data","key","setLoading","loading","resetValidation","clearValidate","setDialogOrDrawerRef","ddRef","getTopFormRef","topFormRef","showDialog","dialogName","formData","extraData","dialogCon","getContainerWidgetByName","message","dFormJson","cloneDeep","cloneFormConfigWithoutEventHandler","wrapperDivId","getUuidKey","_b","getParentFormRef","getChildFormRef","fieldChangeEventHandler","fieldName","value","set","onFormDetail","serveList","res","onFormUpdate","insertCustomCode","formId","generateId","cssCode","functions","insertCustomCssToHead","insertGlobalFunctionsToHtml","reload","router","goBack","reloadStatus","cb","getFieldValue","field","getVfCtx","onMounted","expose"],"mappings":"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"}
@@ -1,9 +1,8 @@
1
- import { defineComponent as a, useModel as d, resolveComponent as o, createBlock as s, openBlock as c, unref as n, withCtx as f, createVNode as _ } from "vue";
2
- import { useI18n as h } from "../../../../../utils/i18n.js";
3
- import { EditorTypeEnum as M } from "../../../../../constants/EditorTypeEnum.js";
4
- import { useEditor as b } from "../useEditor.js";
5
- const y = /* @__PURE__ */ a({
6
- name: M.heightEditor,
1
+ import { defineComponent as a, useModel as u, resolveComponent as o, createBlock as m, openBlock as d, unref as s, withCtx as c, createVNode as f } from "vue";
2
+ import { useI18n as _ } from "../../../../../utils/i18n.js";
3
+ import { EditorTypeEnum as h } from "../../../../../constants/EditorTypeEnum.js";
4
+ const C = /* @__PURE__ */ a({
5
+ name: h.heightEditor,
7
6
  __name: "height-editor",
8
7
  props: {
9
8
  optionModel: {
@@ -14,20 +13,19 @@ const y = /* @__PURE__ */ a({
14
13
  optionModelModifiers: {}
15
14
  },
16
15
  emits: ["update:optionModel"],
17
- setup(r) {
18
- const e = d(r, "optionModel"), { i18nt: i } = h(), { inputNumberHandler: p } = b();
19
- return (v, t) => {
20
- const u = o("a-input-number"), l = o("a-form-item");
21
- return c(), s(l, {
22
- label: n(i)("height") + "(px)"
16
+ setup(n) {
17
+ const e = u(n, "optionModel"), { i18nt: i } = _();
18
+ return (M, t) => {
19
+ const p = o("a-input"), r = o("a-form-item");
20
+ return d(), m(r, {
21
+ label: s(i)("height") + "(px)"
23
22
  }, {
24
- default: f(() => [
25
- _(u, {
23
+ default: c(() => [
24
+ f(p, {
26
25
  type: "text",
27
26
  value: e.value.height,
28
- "onUpdate:value": t[0] || (t[0] = (m) => e.value.height = m),
29
- onInput: n(p)
30
- }, null, 8, ["value", "onInput"])
27
+ "onUpdate:value": t[0] || (t[0] = (l) => e.value.height = l)
28
+ }, null, 8, ["value"])
31
29
  ]),
32
30
  _: 1
33
31
  }, 8, ["label"]);
@@ -35,6 +33,6 @@ const y = /* @__PURE__ */ a({
35
33
  }
36
34
  });
37
35
  export {
38
- y as default
36
+ C as default
39
37
  };
40
38
  //# sourceMappingURL=height-editor.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"height-editor.vue2.js","sources":["../../../../../../../src/components/form-designer/setting-panel/property-editor/container-vf-dialog/height-editor.vue"],"sourcesContent":["<template>\n <a-form-item :label=\"i18nt('height') + '(px)'\">\n <a-input-number\n type=\"text\"\n v-model:value=\"optionModel.height\"\n @input=\"inputNumberHandler\"\n />\n </a-form-item>\n</template>\n\n<script lang=\"ts\" setup>\n import { useI18n } from '@/utils/i18n';\n import { EditorTypeEnum } from '@/constants/EditorTypeEnum';\n import { useEditor } from '../useEditor';\n\n defineOptions({\n name: EditorTypeEnum.heightEditor\n });\n\n const optionModel = defineModel('optionModel', {\n type: Object,\n required: true,\n default: () => ({ customClass: '' })\n });\n\n const { i18nt } = useI18n();\n const { inputNumberHandler } = useEditor();\n // export default {\n // name: 'height-editor',\n // mixins: [i18n, propertyMixin],\n // props: {\n // designer: Object,\n // selectedWidget: Object,\n // optionModel: Object\n // }\n // };\n</script>\n\n<style scoped></style>\n"],"names":["optionModel","_useModel","__props","i18nt","useI18n","inputNumberHandler","useEditor","_createBlock","_component_a_form_item","_unref","_createVNode","_component_a_input_number","_cache","$event"],"mappings":";;;;;;;;;;;;;;;;;AAmBI,UAAMA,IAAcC,EAAWC,GAAC,aAI/B,GAEK,EAAE,OAAAC,EAAA,IAAUC,EAAA,GACZ,EAAE,oBAAAC,EAAA,IAAuBC,EAAA;;;kBAzB/BC,EAMcC,GAAA;AAAA,QANA,OAAOC,EAAAN,CAAA,EAAK,QAAA,IAAA;AAAA,MAAA;mBACtB,MAIE;AAAA,UAJFO,EAIEC,GAAA;AAAA,YAHE,MAAK;AAAA,YACG,OAAOX,EAAA,MAAY;AAAA,YAAZ,kBAAAY,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAb,EAAA,MAAY,SAAMa;AAAA,YAChC,SAAOJ,EAAAJ,CAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"height-editor.vue2.js","sources":["../../../../../../../src/components/form-designer/setting-panel/property-editor/container-vf-dialog/height-editor.vue"],"sourcesContent":["<template>\n <a-form-item :label=\"i18nt('height') + '(px)'\">\n <a-input type=\"text\" v-model:value=\"optionModel.height\" />\n </a-form-item>\n</template>\n\n<script lang=\"ts\" setup>\n import { useI18n } from '@/utils/i18n';\n import { EditorTypeEnum } from '@/constants/EditorTypeEnum';\n\n defineOptions({\n name: EditorTypeEnum.heightEditor\n });\n\n const optionModel = defineModel('optionModel', {\n type: Object,\n required: true,\n default: () => ({ customClass: '' })\n });\n\n const { i18nt } = useI18n();\n</script>\n\n<style scoped></style>\n"],"names":["optionModel","_useModel","__props","i18nt","useI18n","_createBlock","_component_a_form_item","_unref","_createVNode","_component_a_input","_cache","$event"],"mappings":";;;;;;;;;;;;;;;;AAcI,UAAMA,IAAcC,EAAWC,GAAC,aAI/B,GAEK,EAAE,OAAAC,EAAA,IAAUC,EAAA;;;kBAnBlBC,EAEcC,GAAA;AAAA,QAFA,OAAOC,EAAAJ,CAAA,EAAK,QAAA,IAAA;AAAA,MAAA;mBACtB,MAA0D;AAAA,UAA1DK,EAA0DC,GAAA;AAAA,YAAjD,MAAK;AAAA,YAAe,OAAOT,EAAA,MAAY;AAAA,YAAZ,kBAAAU,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAX,EAAA,MAAY,SAAMW;AAAA,UAAA;;;;;;;"}
@@ -1,9 +1,10 @@
1
- import { defineComponent as H, computed as d, ref as u, onBeforeUnmount as J, createBlock as P, openBlock as A, unref as c, mergeProps as U, withCtx as x, createElementVNode as I, createVNode as C, nextTick as q } from "vue";
2
- import { useExecFunction as z, TpfModal as G } from "tmgc2-share";
3
- import { useLowcode as K } from "../../hooks/useLowcode.js";
4
- import Q from "../FormRender/index.vue.js";
5
- import W from "../public/ActionButtonListRender.vue.js";
6
- const X = { class: "dialog-content" }, oe = /* @__PURE__ */ H({
1
+ import { defineComponent as J, computed as u, ref as c, onBeforeUnmount as P, createBlock as A, openBlock as U, unref as i, mergeProps as z, withCtx as x, createElementVNode as I, createVNode as C, nextTick as q } from "vue";
2
+ import { useExecFunction as G, TpfModal as K } from "tmgc2-share";
3
+ import { useLowcode as Q } from "../../hooks/useLowcode.js";
4
+ import { formatSize as h } from "../../utils/format.js";
5
+ import W from "../FormRender/index.vue.js";
6
+ import X from "../public/ActionButtonListRender.vue.js";
7
+ const Y = { class: "dialog-content" }, ae = /* @__PURE__ */ J({
7
8
  name: "dynamic-dialog",
8
9
  __name: "dynamic-dialog",
9
10
  props: {
@@ -45,31 +46,31 @@ const X = { class: "dialog-content" }, oe = /* @__PURE__ */ H({
45
46
  default: null
46
47
  }
47
48
  },
48
- setup(n, { expose: h }) {
49
- const t = n, O = d(() => t.options.height || "500px"), f = u(null), p = u(!1), s = u(!1), { context: i, asyncExecuteFunction: m, executeFunction: Y } = z(), { vfdRef: l, isLoading: v, getComponentJson: R } = K({
49
+ setup(n, { expose: O }) {
50
+ const t = n, R = u(() => h(t.options.height, "500px")), f = c(null), p = c(!1), s = c(!1), { context: r, asyncExecuteFunction: m, executeFunction: Z } = G(), { vfdRef: l, isLoading: v, getComponentJson: F } = Q({
50
51
  formCode: t.options.formCode,
51
52
  ...t.vfCtx
52
- }), F = d(() => ({
53
+ }), D = u(() => ({
53
54
  ...t.parentFormRef,
54
- parentDom: i.value,
55
+ parentDom: r.value,
55
56
  getParentFormRef: g
56
- })), D = d(() => t.options.cancelButtonHidden && t.options.okButtonHidden ? { footer: null } : {});
57
- J(() => {
57
+ })), k = u(() => t.options.cancelButtonHidden && t.options.okButtonHidden ? { footer: null } : {});
58
+ P(() => {
58
59
  var e, o;
59
60
  console.log(t.parentFormRef), (o = (e = t.parentFormRef) == null ? void 0 : e.setChildFormRef) == null || o.call(e, null);
60
61
  });
61
- const k = (e) => {
62
+ const w = (e) => {
62
63
  v.value = e;
63
- }, w = (e) => {
64
+ }, B = (e) => {
64
65
  t.options.title = e;
65
- }, B = () => {
66
+ }, j = () => {
66
67
  s.value = !0;
67
- }, j = async ({ result: e }) => {
68
- e !== !1 && await r();
69
- }, E = () => {
68
+ }, E = async ({ result: e }) => {
69
+ e !== !1 && await d();
70
+ }, L = () => {
70
71
  s.value = !0, q(async () => {
71
72
  var e, o, a;
72
- (e = t.options) != null && e.readMode && ((o = l.value) == null || o.setReadMode(!0)), await R([], t.options.formCode), (a = l.value) == null || a.setDialogOrDrawerRef(i.value), t.parentFormRef && t.parentFormRef.setChildFormRef(l.value), y();
73
+ (e = t.options) != null && e.readMode && ((o = l.value) == null || o.setReadMode(!0)), await F([], t.options.formCode), (a = l.value) == null || a.setDialogOrDrawerRef(r.value), t.parentFormRef && t.parentFormRef.setChildFormRef(l.value), y();
73
74
  });
74
75
  }, b = async () => {
75
76
  if (t.options.onDialogBeforeClose)
@@ -77,76 +78,76 @@ const X = { class: "dialog-content" }, oe = /* @__PURE__ */ H({
77
78
  functionBody: t.options.onDialogBeforeClose
78
79
  });
79
80
  s.value = !1;
80
- }, r = () => {
81
+ }, d = () => {
81
82
  b();
82
83
  }, y = async () => {
83
84
  if (t.options.onDialogOpened)
84
85
  return await m({
85
86
  functionBody: t.options.onDialogOpened
86
87
  });
87
- }, g = () => t.parentFormRef, L = () => {
88
+ }, g = () => t.parentFormRef, T = () => {
88
89
  var e, o, a;
89
90
  (a = (o = (e = t.vfCtx) == null ? void 0 : e.parent) == null ? void 0 : o.exposed) != null && a.updateTable && t.vfCtx.parent.exposed.updateTable();
90
- }, T = () => t.extraData, M = (e) => {
91
+ }, M = () => t.extraData, S = (e) => {
91
92
  f.value = e;
92
- }, S = (e) => {
93
+ }, N = (e) => {
93
94
  p.value = e;
94
- }, N = () => l.value, V = () => {
95
+ }, V = () => l.value, H = () => {
95
96
  var e;
96
97
  return (e = l.value) == null ? void 0 : e.context;
97
98
  };
98
- return h({
99
+ return O({
99
100
  getParentFormRef: g,
100
- getFormRef: N,
101
- setDisabled: S,
102
- setleftText: M,
103
- setLoading: k,
104
- setTitle: w,
105
- beforeOpen: B,
106
- show: E,
101
+ getFormRef: V,
102
+ setDisabled: N,
103
+ setleftText: S,
104
+ setLoading: w,
105
+ setTitle: B,
106
+ beforeOpen: j,
107
+ show: L,
107
108
  close: b,
108
- handleCloseEvent: r,
109
+ handleCloseEvent: d,
109
110
  handleOpenedEvent: y,
110
- updateTable: L,
111
- getExtraData: T
112
- }), (e, o) => (A(), P(c(G), U({
111
+ updateTable: T,
112
+ getExtraData: M
113
+ }), (e, o) => (U(), A(i(K), z({
113
114
  class: "tpf-model design-model",
114
115
  destroyOnClose: !0,
115
116
  title: n.options.title,
116
117
  bodyStyle: {
117
- height: O.value,
118
+ height: R.value,
118
119
  overflow: "auto",
119
120
  ...JSON.parse(n.options.bodyStyle || "{}")
120
121
  },
121
122
  centered: !0,
122
123
  visible: s.value,
123
124
  "onUpdate:visible": o[0] || (o[0] = (a) => s.value = a),
124
- width: n.options.width,
125
+ width: i(h)(n.options.width),
125
126
  mask: n.options.showModal,
126
127
  maskClosable: n.options.closeOnClickModal,
127
128
  keyboard: n.options.closeOnPressEscape,
128
- onCancel: r,
129
+ onCancel: d,
129
130
  "left-num": f.value
130
- }, D.value), {
131
+ }, k.value), {
131
132
  footerRight: x(() => [
132
- C(W, {
133
+ C(X, {
133
134
  buttonList: n.options.buttonList || [],
134
- ctx: V(),
135
- onOnClick: j,
135
+ ctx: H(),
136
+ onOnClick: E,
136
137
  disabled: p.value
137
138
  }, null, 8, ["buttonList", "ctx", "disabled"])
138
139
  ]),
139
140
  default: x(() => [
140
- I("div", X, [
141
- C(Q, {
141
+ I("div", Y, [
142
+ C(W, {
142
143
  ref_key: "vfdRef",
143
144
  ref: l,
144
- loading: c(v),
145
+ loading: i(v),
145
146
  vfCtx: {
146
147
  ...n.vfCtx,
147
- instance: c(i)
148
+ instance: i(r)
148
149
  },
149
- "parent-form": F.value,
150
+ "parent-form": D.value,
150
151
  "disabled-mode": n.options.disabledMode,
151
152
  "dynamic-creation": !0
152
153
  }, null, 8, ["loading", "vfCtx", "parent-form", "disabled-mode"])
@@ -157,6 +158,6 @@ const X = { class: "dialog-content" }, oe = /* @__PURE__ */ H({
157
158
  }
158
159
  });
159
160
  export {
160
- oe as default
161
+ ae as default
161
162
  };
162
163
  //# sourceMappingURL=dynamic-dialog.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-dialog.vue.js","sources":["../../../../src/components/form-render/dynamic-dialog.vue"],"sourcesContent":["<template>\n <TpfModal\n class=\"tpf-model design-model\"\n :destroyOnClose=\"true\"\n :title=\"options.title\"\n :bodyStyle=\"{\n height: dialogHeight,\n overflow: 'auto',\n ...JSON.parse(options.bodyStyle || '{}')\n }\"\n :centered=\"true\"\n v-model:visible=\"dialogVisible\"\n :width=\"options.width\"\n :mask=\"options.showModal\"\n :maskClosable=\"options.closeOnClickModal\"\n :keyboard=\"options.closeOnPressEscape\"\n @cancel=\"handleCloseEvent\"\n :left-num=\"leftNum\"\n v-bind=\"otherAttrs\"\n >\n <div class=\"dialog-content\">\n <VFormRender\n ref=\"vfdRef\"\n :loading=\"isLoading\"\n :vfCtx=\"{\n ...vfCtx,\n instance: context\n }\"\n :parent-form=\"parentForm\"\n :disabled-mode=\"options.disabledMode\"\n :dynamic-creation=\"true\"\n />\n </div>\n <template #footerRight>\n <ActionButtonListRender\n :buttonList=\"options.buttonList || []\"\n :ctx=\"getFormContext()\"\n @on-click=\"handleBtnClick\"\n :disabled=\"isDisabled\"\n />\n </template>\n </TpfModal>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, computed, nextTick, onBeforeUnmount } from 'vue';\n import { TpfModal, useExecFunction } from 'tmgc2-share';\n import { useLowcode } from '@/hooks/useLowcode';\n import VFormRender from '../FormRender/index.vue';\n import ActionButtonListRender from '@/components/public/ActionButtonListRender.vue';\n defineOptions({\n name: 'dynamic-dialog'\n });\n\n const props = defineProps({\n options: {\n type: Object,\n default: () => ({})\n },\n formJson: {\n type: Object\n },\n formData: {\n type: Object,\n default: () => ({})\n },\n vfCtx: {\n type: Object,\n default: () => ({})\n },\n optionData: {\n //prop传入的选项数据\n type: Object,\n default: () => ({})\n },\n globalDsv: {\n // 全局数据源变量\n type: Object,\n default: () => ({})\n },\n parentFormRef: {\n type: Object,\n default: null\n },\n extraData: {\n type: Object,\n default: () => ({})\n },\n wrapperId: {\n type: String,\n default: null\n }\n });\n\n const dialogHeight = computed(() => {\n return props.options.height || '500px';\n });\n const leftNum = ref(null);\n\n const isDisabled = ref(false);\n const dialogVisible = ref(false);\n\n const { context, asyncExecuteFunction, executeFunction } = useExecFunction();\n const { vfdRef, isLoading, getComponentJson } = useLowcode({\n formCode: props.options.formCode,\n ...props.vfCtx\n });\n // 计算属性\n const parentForm = computed(() => {\n return {\n ...props.parentFormRef,\n parentDom: context.value,\n getParentFormRef\n };\n });\n\n const otherAttrs = computed(() => {\n if (props.options.cancelButtonHidden && props.options.okButtonHidden) {\n return { footer: null };\n }\n return {};\n });\n\n // 生命周期钩子\n onBeforeUnmount(() => {\n console.log(props.parentFormRef);\n props.parentFormRef?.setChildFormRef?.(null);\n });\n\n const setLoading = status => {\n isLoading.value = status;\n };\n\n const setTitle = title => {\n props.options.title = title;\n };\n\n const beforeOpen = () => {\n dialogVisible.value = true;\n };\n\n const handleBtnClick = async ({ result }: any) => {\n if (result !== false) {\n await handleCloseEvent();\n }\n };\n\n const show = () => {\n dialogVisible.value = true;\n\n //设置readMode模式\n nextTick(async () => {\n if (props.options?.readMode) {\n vfdRef.value?.setReadMode(true);\n }\n await getComponentJson([], props.options.formCode);\n vfdRef.value?.setDialogOrDrawerRef(context.value);\n if (props.parentFormRef) {\n props.parentFormRef.setChildFormRef(vfdRef.value);\n }\n handleOpenedEvent();\n });\n };\n\n const close = async () => {\n if (props.options.onDialogBeforeClose) {\n return await asyncExecuteFunction({\n functionBody: props.options.onDialogBeforeClose\n });\n }\n\n dialogVisible.value = false;\n };\n\n const handleCloseEvent = () => {\n close();\n };\n\n const handleOpenedEvent = async () => {\n if (props.options.onDialogOpened) {\n return await asyncExecuteFunction({\n functionBody: props.options.onDialogOpened\n });\n }\n };\n\n const getParentFormRef = () => {\n return props.parentFormRef;\n };\n\n const updateTable = () => {\n if (props.vfCtx?.parent?.exposed?.updateTable) {\n props.vfCtx.parent.exposed.updateTable();\n }\n };\n\n const getExtraData = () => {\n return props.extraData;\n };\n\n const setleftText = number => {\n leftNum.value = number;\n };\n\n const setDisabled = status => {\n isDisabled.value = status;\n };\n\n const getFormRef = () => {\n return vfdRef.value;\n };\n\n const getFormContext = () => {\n return vfdRef.value?.context;\n };\n\n // 暴露方法给父组件\n defineExpose({\n getParentFormRef,\n getFormRef,\n setDisabled,\n setleftText,\n setLoading,\n setTitle,\n beforeOpen,\n show,\n close,\n handleCloseEvent,\n handleOpenedEvent,\n updateTable,\n getExtraData\n });\n</script>\n\n<style lang=\"less\">\n .dialog-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 300px;\n }\n</style>\n"],"names":["props","__props","dialogHeight","computed","leftNum","ref","isDisabled","dialogVisible","context","asyncExecuteFunction","executeFunction","useExecFunction","vfdRef","isLoading","getComponentJson","useLowcode","parentForm","getParentFormRef","otherAttrs","onBeforeUnmount","_b","_a","setLoading","status","setTitle","title","beforeOpen","handleBtnClick","result","handleCloseEvent","show","nextTick","_c","handleOpenedEvent","close","updateTable","getExtraData","setleftText","number","setDisabled","getFormRef","getFormContext","__expose","_openBlock","_createBlock","_unref","_mergeProps","$event","_createVNode","ActionButtonListRender","_createElementVNode","_hoisted_1","VFormRender"],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-dialog.vue.js","sources":["../../../../src/components/form-render/dynamic-dialog.vue"],"sourcesContent":["<template>\n <TpfModal\n class=\"tpf-model design-model\"\n :destroyOnClose=\"true\"\n :title=\"options.title\"\n :bodyStyle=\"{\n height: dialogHeight,\n overflow: 'auto',\n ...JSON.parse(options.bodyStyle || '{}')\n }\"\n :centered=\"true\"\n v-model:visible=\"dialogVisible\"\n :width=\"formatSize(options.width)\"\n :mask=\"options.showModal\"\n :maskClosable=\"options.closeOnClickModal\"\n :keyboard=\"options.closeOnPressEscape\"\n @cancel=\"handleCloseEvent\"\n :left-num=\"leftNum\"\n v-bind=\"otherAttrs\"\n >\n <div class=\"dialog-content\">\n <VFormRender\n ref=\"vfdRef\"\n :loading=\"isLoading\"\n :vfCtx=\"{\n ...vfCtx,\n instance: context\n }\"\n :parent-form=\"parentForm\"\n :disabled-mode=\"options.disabledMode\"\n :dynamic-creation=\"true\"\n />\n </div>\n <template #footerRight>\n <ActionButtonListRender\n :buttonList=\"options.buttonList || []\"\n :ctx=\"getFormContext()\"\n @on-click=\"handleBtnClick\"\n :disabled=\"isDisabled\"\n />\n </template>\n </TpfModal>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, computed, nextTick, onBeforeUnmount } from 'vue';\n import { TpfModal, useExecFunction } from 'tmgc2-share';\n import { useLowcode } from '@/hooks/useLowcode';\n import { formatSize } from '@/utils/format';\n import VFormRender from '../FormRender/index.vue';\n import ActionButtonListRender from '@/components/public/ActionButtonListRender.vue';\n defineOptions({\n name: 'dynamic-dialog'\n });\n\n const props = defineProps({\n options: {\n type: Object,\n default: () => ({})\n },\n formJson: {\n type: Object\n },\n formData: {\n type: Object,\n default: () => ({})\n },\n vfCtx: {\n type: Object,\n default: () => ({})\n },\n optionData: {\n //prop传入的选项数据\n type: Object,\n default: () => ({})\n },\n globalDsv: {\n // 全局数据源变量\n type: Object,\n default: () => ({})\n },\n parentFormRef: {\n type: Object,\n default: null\n },\n extraData: {\n type: Object,\n default: () => ({})\n },\n wrapperId: {\n type: String,\n default: null\n }\n });\n\n const dialogHeight = computed(() => {\n return formatSize(props.options.height, '500px');\n });\n const leftNum = ref(null);\n\n const isDisabled = ref(false);\n const dialogVisible = ref(false);\n\n const { context, asyncExecuteFunction, executeFunction } = useExecFunction();\n const { vfdRef, isLoading, getComponentJson } = useLowcode({\n formCode: props.options.formCode,\n ...props.vfCtx\n });\n // 计算属性\n const parentForm = computed(() => {\n return {\n ...props.parentFormRef,\n parentDom: context.value,\n getParentFormRef\n };\n });\n\n const otherAttrs = computed(() => {\n if (props.options.cancelButtonHidden && props.options.okButtonHidden) {\n return { footer: null };\n }\n return {};\n });\n\n // 生命周期钩子\n onBeforeUnmount(() => {\n console.log(props.parentFormRef);\n props.parentFormRef?.setChildFormRef?.(null);\n });\n\n const setLoading = status => {\n isLoading.value = status;\n };\n\n const setTitle = title => {\n props.options.title = title;\n };\n\n const beforeOpen = () => {\n dialogVisible.value = true;\n };\n\n const handleBtnClick = async ({ result }: any) => {\n if (result !== false) {\n await handleCloseEvent();\n }\n };\n\n const show = () => {\n dialogVisible.value = true;\n\n //设置readMode模式\n nextTick(async () => {\n if (props.options?.readMode) {\n vfdRef.value?.setReadMode(true);\n }\n await getComponentJson([], props.options.formCode);\n vfdRef.value?.setDialogOrDrawerRef(context.value);\n if (props.parentFormRef) {\n props.parentFormRef.setChildFormRef(vfdRef.value);\n }\n handleOpenedEvent();\n });\n };\n\n const close = async () => {\n if (props.options.onDialogBeforeClose) {\n return await asyncExecuteFunction({\n functionBody: props.options.onDialogBeforeClose\n });\n }\n\n dialogVisible.value = false;\n };\n\n const handleCloseEvent = () => {\n close();\n };\n\n const handleOpenedEvent = async () => {\n if (props.options.onDialogOpened) {\n return await asyncExecuteFunction({\n functionBody: props.options.onDialogOpened\n });\n }\n };\n\n const getParentFormRef = () => {\n return props.parentFormRef;\n };\n\n const updateTable = () => {\n if (props.vfCtx?.parent?.exposed?.updateTable) {\n props.vfCtx.parent.exposed.updateTable();\n }\n };\n\n const getExtraData = () => {\n return props.extraData;\n };\n\n const setleftText = number => {\n leftNum.value = number;\n };\n\n const setDisabled = status => {\n isDisabled.value = status;\n };\n\n const getFormRef = () => {\n return vfdRef.value;\n };\n\n const getFormContext = () => {\n return vfdRef.value?.context;\n };\n\n // 暴露方法给父组件\n defineExpose({\n getParentFormRef,\n getFormRef,\n setDisabled,\n setleftText,\n setLoading,\n setTitle,\n beforeOpen,\n show,\n close,\n handleCloseEvent,\n handleOpenedEvent,\n updateTable,\n getExtraData\n });\n</script>\n\n<style lang=\"less\">\n .dialog-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 300px;\n }\n</style>\n"],"names":["props","__props","dialogHeight","computed","formatSize","leftNum","ref","isDisabled","dialogVisible","context","asyncExecuteFunction","executeFunction","useExecFunction","vfdRef","isLoading","getComponentJson","useLowcode","parentForm","getParentFormRef","otherAttrs","onBeforeUnmount","_b","_a","setLoading","status","setTitle","title","beforeOpen","handleBtnClick","result","handleCloseEvent","show","nextTick","_c","handleOpenedEvent","close","updateTable","getExtraData","setleftText","number","setDisabled","getFormRef","getFormContext","__expose","_openBlock","_createBlock","_unref","_mergeProps","$event","_createVNode","ActionButtonListRender","_createElementVNode","_hoisted_1","VFormRender"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerModal.vue2.js","sources":["../../../../../src/components/public/CustomerModal/CustomerModal.vue"],"sourcesContent":["<template>\n <TpfConfigProvider>\n <TpfModal v-model:visible=\"visible\" v-bind=\"$attrs\" :title=\"title\" :leftNum=\"leftNum\">\n <Skeleton active :loading=\"isLoading\">\n <VFormRender :vfCtx=\"vfCtx\" ref=\"vfdRef\" />\n </Skeleton>\n <template #footerRight>\n <ActionButtonListRender\n :buttonList=\"formConfig?.buttonList || []\"\n :ctx=\"vfdRef?.context\"\n @on-click=\"handleButtonClick\"\n />\n <!-- <SubmitButtonRender\n :disabled=\"isDisabled\"\n :handleBeforeClose=\"handleBeforeClose\"\n v-model:dialogVisible=\"visible\"\n :options=\"formConfig\"\n :ctx=\"vfdRef?.context\"\n /> -->\n </template>\n </TpfModal>\n </TpfConfigProvider>\n</template>\n\n<script setup lang=\"tsx\">\n import { useLowcode } from '@/hooks/useLowcode';\n import { useAttrs, onMounted, nextTick, computed, getCurrentInstance, ref } from 'vue';\n import VFormRender from '@/components/FormRender/index.vue';\n import { TpfModal, TpfConfigProvider, useExecFunction } from 'tmgc2-share';\n import { Skeleton } from 'ant-design-vue';\n import { useI18n } from '@/utils/i18n';\n import ActionButtonListRender from '@/components/public/ActionButtonListRender.vue';\n\n const { i18nt } = useI18n();\n\n const instance = getCurrentInstance()!;\n\n const attrs = (useAttrs() || {}) as any;\n const visible = ref(false);\n\n type Props = {\n title: string;\n type: string;\n formCode: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {});\n const vfCtx = computed(() => {\n return {\n $router: instance.proxy!.$router,\n _id: attrs?.row?.record?._id || null,\n type: props.type,\n instance,\n ...attrs\n };\n });\n const isDisabled = ref(false);\n const { vfdRef, formConfig, getComponentJson, isLoading } = useLowcode({\n formCode: props.formCode,\n type: props.type\n });\n const leftNum = ref(null);\n\n const title = computed(() => {\n if (props.title) return props.title;\n if (props.type === 'add') return '新增';\n if (props.type === 'edit') return '编辑';\n if (props.type === 'view') return '查看';\n return '新增';\n });\n\n const show = async () => {\n visible.value = true;\n await nextTick();\n await getComponentJson([]);\n console.log('attrs', attrs);\n };\n\n const setleftText = number => {\n leftNum.value = number;\n };\n\n const setDisabled = status => {\n isDisabled.value = status;\n };\n\n onMounted(() => {\n show();\n });\n\n const handleCloseDialog = () => {\n visible.value = false;\n };\n\n const handleButtonClick = async ({ item, result }: any) => {\n if (item.name === 'cancelButton') {\n return handleCloseDialog();\n }\n if (result !== false) {\n handleCloseDialog();\n }\n };\n\n defineExpose({\n handleCloseDialog,\n i18nt,\n setDisabled,\n setleftText\n });\n</script>\n\n<style lang=\"less\" scoped></style>\n"],"names":["i18nt","useI18n","instance","getCurrentInstance","attrs","useAttrs","visible","ref","props","__props","vfCtx","computed","$router","proxy","_id","row","record","type","isDisabled","vfdRef","formConfig","getComponentJson","isLoading","useLowcode","formCode","leftNum","title","show","value","nextTick","console","log","setleftText","number","setDisabled","status","onMounted","handleCloseDialog","handleButtonClick","item","result","name","__expose","_createBlock","_unref","TpfConfigProvider","_createVNode","_mergeProps","$event","$attrs","footerRight","ActionButtonListRender","buttonList","ctx","context","onOnClick","Skeleton","active","loading","VFormRender"],"mappings":";;;;;;;;;;;;;;;;;AAiCI,UAAM;AAAA,MAAEA,OAAAA;AAAAA,QAAUC,EAAO,GAEnBC,IAAWC,EAAkB,GAE7BC,IAASC,EAAQ,KAAM,CAAA,GACvBC,IAAUC,EAAI,EAAK,GAQnBC,IAAQC,GACRC,IAAQC,EAAS,MAAM;;AACzB,aAAO;AAAA,QACHC,SAASV,EAASW,MAAOD;AAAAA,QACzBE,OAAKV,KAAAA,IAAAA,KAAAA,gBAAAA,EAAOW,QAAPX,gBAAAA,EAAYY,WAAZZ,gBAAAA,EAAoBU,QAAO;AAAA,QAChCG,MAAMT,EAAMS;AAAAA,QACZf,UAAAA;AAAAA,QACA,GAAGE;AAAAA;IAEX,CAAC,GACKc,IAAaX,EAAI,EAAK,GACtB;AAAA,MAAEY,QAAAA;AAAAA,MAAQC,YAAAA;AAAAA,MAAYC,kBAAAA;AAAAA,MAAkBC,WAAAA;AAAAA,QAAcC,EAAW;AAAA,MACnEC,UAAUhB,EAAMgB;AAAAA,MAChBP,MAAMT,EAAMS;AAAAA,IAChB,CAAC,GACKQ,IAAUlB,EAAI,IAAI,GAElBmB,IAAQf,EAAS,MACfH,EAAMkB,QAAclB,EAAMkB,QAC1BlB,EAAMS,SAAS,QAAc,OAC7BT,EAAMS,SAAS,SAAe,OAC9BT,EAAMS,SAAS,SAAe,OAC3B,IACV,GAEKU,IAAO,YAAY;AACrBrB,MAAAA,EAAQsB,QAAQ,IAChB,MAAMC,EAAQ,GACd,MAAMR,EAAiB,CAAA,CAAE,GACzBS,QAAQC,IAAI,SAAS3B,CAAK;AAAA,IAC9B,GAEM4B,IAAcC,CAAAA,MAAU;AAC1BR,MAAAA,EAAQG,QAAQK;AAAAA,IACpB,GAEMC,IAAcC,CAAAA,MAAU;AAC1BjB,MAAAA,EAAWU,QAAQO;AAAAA,IACvB;AAEAC,IAAAA,EAAU,MAAM;AACZT,MAAAA,EAAI;AAAA,IACR,CAAC;AAED,UAAMU,IAAoBA,MAAM;AAC5B/B,MAAAA,EAAQsB,QAAQ;AAAA,IACpB,GAEMU,IAAoB,OAAO;AAAA,MAAEC,MAAAA;AAAAA,MAAMC,QAAAA;AAAAA,IAAY,MAAM;AACvD,UAAID,EAAKE,SAAS;AACd,eAAOJ,EAAiB;AAE5B,MAAIG,MAAW,MACXH,EAAiB;AAAA,IAEzB;AAEAK,WAAAA,EAAa;AAAA,MACTL,mBAAAA;AAAAA,MACArC,OAAAA;AAAAA,MACAkC,aAAAA;AAAAA,MACAF,aAAAA;AAAAA,IACJ,CAAC,mBA3GDW,EAoBoBC,EAAAC,CAAA,GAAA,MAAA;AAAA,iBAnBhB,MAkBW,CAlBXC,EAkBWF,MAlBXG,EAkBW;AAAA,QAlBOzC,SAASA,EAAAsB;AAAAA,mDAAAtB,EAAOsB,QAAAoB;AAAAA,SAAUC,EAAAA,QAAM;AAAA,QAAGvB,OAAOA,EAAAE;AAAAA,QAAQH,SAASA,EAAAG;AAAAA;QAI9DsB,eACP;;AAIE,kBAJFJ,EAIEK,GAAA;AAAA,YAHGC,cAAYR,IAAAA,EAAAxB,CAAA,MAAAwB,gBAAAA,EAAYQ,eAAU,CAAA;AAAA,YAClCC,MAAKT,IAAAA,EAAAzB,CAAA,MAAAyB,gBAAAA,EAAQU;AAAAA,YACbC,WAAUjB;AAAAA;;mBAPnB,MAEW,CAFXQ,EAEWF,EAAAY,CAAA,GAAA;AAAA,UAFDC,QAAA;AAAA,UAAQC,SAASd,EAAAtB,CAAA;AAAA;qBACvB,MAA2C,CAA3CwB,EAA2Ca,GAAA;AAAA,YAA7BjD,OAAOA,EAAAkB;AAAAA,qBAAW;AAAA,YAAJrB,KAAIY;AAAAA;;;;;;;;;"}
1
+ {"version":3,"file":"CustomerModal.vue2.js","sources":["../../../../../src/components/public/CustomerModal/CustomerModal.vue"],"sourcesContent":["<template>\n <TpfConfigProvider>\n <TpfModal v-model:visible=\"visible\" v-bind=\"$attrs\" :title=\"title\" :leftNum=\"leftNum\">\n <Skeleton active :loading=\"isLoading\">\n <VFormRender :vfCtx=\"vfCtx\" ref=\"vfdRef\" />\n </Skeleton>\n <template #footerRight>\n <ActionButtonListRender\n :buttonList=\"formConfig?.buttonList || []\"\n :ctx=\"vfdRef?.context\"\n @on-click=\"handleButtonClick\"\n />\n </template>\n </TpfModal>\n </TpfConfigProvider>\n</template>\n\n<script setup lang=\"tsx\">\n import { useLowcode } from '@/hooks/useLowcode';\n import { useAttrs, onMounted, nextTick, computed, getCurrentInstance, ref } from 'vue';\n import VFormRender from '@/components/FormRender/index.vue';\n import { TpfModal, TpfConfigProvider, useExecFunction } from 'tmgc2-share';\n import { Skeleton } from 'ant-design-vue';\n import { useI18n } from '@/utils/i18n';\n import ActionButtonListRender from '@/components/public/ActionButtonListRender.vue';\n\n const { i18nt } = useI18n();\n\n const instance = getCurrentInstance()!;\n\n const attrs = (useAttrs() || {}) as any;\n const visible = ref(false);\n\n type Props = {\n title: string;\n type: string;\n formCode: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {});\n const vfCtx = computed(() => {\n return {\n $router: instance.proxy!.$router,\n _id: attrs?.row?.record?._id || null,\n type: props.type,\n instance,\n ...attrs\n };\n });\n const isDisabled = ref(false);\n const { vfdRef, formConfig, getComponentJson, isLoading } = useLowcode({\n formCode: props.formCode,\n type: props.type\n });\n const leftNum = ref(null);\n\n const title = computed(() => {\n if (props.title) return props.title;\n if (props.type === 'add') return '新增';\n if (props.type === 'edit') return '编辑';\n if (props.type === 'view') return '查看';\n return '新增';\n });\n\n const show = async () => {\n visible.value = true;\n await nextTick();\n await getComponentJson([]);\n console.log('attrs', attrs);\n };\n\n const setleftText = number => {\n leftNum.value = number;\n };\n\n const setDisabled = status => {\n isDisabled.value = status;\n };\n\n onMounted(() => {\n show();\n });\n\n const handleCloseDialog = () => {\n visible.value = false;\n };\n\n const handleButtonClick = async ({ item, result }: any) => {\n if (item.name === 'cancelButton') {\n return handleCloseDialog();\n }\n if (result !== false) {\n handleCloseDialog();\n }\n };\n\n defineExpose({\n handleCloseDialog,\n i18nt,\n setDisabled,\n setleftText\n });\n</script>\n\n<style lang=\"less\" scoped></style>\n"],"names":["i18nt","useI18n","instance","getCurrentInstance","attrs","useAttrs","visible","ref","props","__props","vfCtx","computed","$router","proxy","_id","row","record","type","isDisabled","vfdRef","formConfig","getComponentJson","isLoading","useLowcode","formCode","leftNum","title","show","value","nextTick","console","log","setleftText","number","setDisabled","status","onMounted","handleCloseDialog","handleButtonClick","item","result","name","__expose","_createBlock","_unref","TpfConfigProvider","_createVNode","_mergeProps","$event","$attrs","footerRight","ActionButtonListRender","buttonList","ctx","context","onOnClick","Skeleton","active","loading","VFormRender"],"mappings":";;;;;;;;;;;;;;;;;AA0BI,UAAM;AAAA,MAAEA,OAAAA;AAAAA,QAAUC,EAAO,GAEnBC,IAAWC,EAAkB,GAE7BC,IAASC,EAAQ,KAAM,CAAA,GACvBC,IAAUC,EAAI,EAAK,GAQnBC,IAAQC,GACRC,IAAQC,EAAS,MAAM;;AACzB,aAAO;AAAA,QACHC,SAASV,EAASW,MAAOD;AAAAA,QACzBE,OAAKV,KAAAA,IAAAA,KAAAA,gBAAAA,EAAOW,QAAPX,gBAAAA,EAAYY,WAAZZ,gBAAAA,EAAoBU,QAAO;AAAA,QAChCG,MAAMT,EAAMS;AAAAA,QACZf,UAAAA;AAAAA,QACA,GAAGE;AAAAA;IAEX,CAAC,GACKc,IAAaX,EAAI,EAAK,GACtB;AAAA,MAAEY,QAAAA;AAAAA,MAAQC,YAAAA;AAAAA,MAAYC,kBAAAA;AAAAA,MAAkBC,WAAAA;AAAAA,QAAcC,EAAW;AAAA,MACnEC,UAAUhB,EAAMgB;AAAAA,MAChBP,MAAMT,EAAMS;AAAAA,IAChB,CAAC,GACKQ,IAAUlB,EAAI,IAAI,GAElBmB,IAAQf,EAAS,MACfH,EAAMkB,QAAclB,EAAMkB,QAC1BlB,EAAMS,SAAS,QAAc,OAC7BT,EAAMS,SAAS,SAAe,OAC9BT,EAAMS,SAAS,SAAe,OAC3B,IACV,GAEKU,IAAO,YAAY;AACrBrB,MAAAA,EAAQsB,QAAQ,IAChB,MAAMC,EAAQ,GACd,MAAMR,EAAiB,CAAA,CAAE,GACzBS,QAAQC,IAAI,SAAS3B,CAAK;AAAA,IAC9B,GAEM4B,IAAcC,CAAAA,MAAU;AAC1BR,MAAAA,EAAQG,QAAQK;AAAAA,IACpB,GAEMC,IAAcC,CAAAA,MAAU;AAC1BjB,MAAAA,EAAWU,QAAQO;AAAAA,IACvB;AAEAC,IAAAA,EAAU,MAAM;AACZT,MAAAA,EAAI;AAAA,IACR,CAAC;AAED,UAAMU,IAAoBA,MAAM;AAC5B/B,MAAAA,EAAQsB,QAAQ;AAAA,IACpB,GAEMU,IAAoB,OAAO;AAAA,MAAEC,MAAAA;AAAAA,MAAMC,QAAAA;AAAAA,IAAY,MAAM;AACvD,UAAID,EAAKE,SAAS;AACd,eAAOJ,EAAiB;AAE5B,MAAIG,MAAW,MACXH,EAAiB;AAAA,IAEzB;AAEAK,WAAAA,EAAa;AAAA,MACTL,mBAAAA;AAAAA,MACArC,OAAAA;AAAAA,MACAkC,aAAAA;AAAAA,MACAF,aAAAA;AAAAA,IACJ,CAAC,mBApGDW,EAaoBC,EAAAC,CAAA,GAAA,MAAA;AAAA,iBAZhB,MAWW,CAXXC,EAWWF,MAXXG,EAWW;AAAA,QAXOzC,SAASA,EAAAsB;AAAAA,mDAAAtB,EAAOsB,QAAAoB;AAAAA,SAAUC,EAAAA,QAAM;AAAA,QAAGvB,OAAOA,EAAAE;AAAAA,QAAQH,SAASA,EAAAG;AAAAA;QAI9DsB,eACP;;AAIE,kBAJFJ,EAIEK,GAAA;AAAA,YAHGC,cAAYR,IAAAA,EAAAxB,CAAA,MAAAwB,gBAAAA,EAAYQ,eAAU,CAAA;AAAA,YAClCC,MAAKT,IAAAA,EAAAzB,CAAA,MAAAyB,gBAAAA,EAAQU;AAAAA,YACbC,WAAUjB;AAAAA;;mBAPnB,MAEW,CAFXQ,EAEWF,EAAAY,CAAA,GAAA;AAAA,UAFDC,QAAA;AAAA,UAAQC,SAASd,EAAAtB,CAAA;AAAA;qBACvB,MAA2C,CAA3CwB,EAA2Ca,GAAA;AAAA,YAA7BjD,OAAOA,EAAAkB;AAAAA,qBAAW;AAAA,YAAJrB,KAAIY;AAAAA;;;;;;;;;"}
@@ -1,17 +1,24 @@
1
1
  import { isArray as o } from "lodash-es";
2
- const a = (u = [], r, n = { label: "label", value: "value", children: "children" }, e = "/") => {
3
- if (!(!r || r.length === 0))
4
- return o(r[0]) ? r.map((c) => h(u, c, n).join(e)).join(",") : h(u, r, n).join(e);
5
- }, h = (u = [], r = [], n = { label: "label", value: "value", children: "children" }) => {
6
- const e = [];
7
- return u.forEach((l) => {
8
- if (r.length !== 0 && l[n.value] === r[0] && (e.push(l[n.label]), o(l[n.children]))) {
9
- const c = h(l[n.children], r.slice(1), n);
10
- e.push(...c);
2
+ const c = (e = [], n, r = { label: "label", value: "value", children: "children" }, t = "/") => {
3
+ if (!(!n || n.length === 0))
4
+ return o(n[0]) ? n.map((l) => i(e, l, r).join(t)).join(",") : i(e, n, r).join(t);
5
+ }, i = (e = [], n = [], r = { label: "label", value: "value", children: "children" }) => {
6
+ const t = [];
7
+ return e.forEach((u) => {
8
+ if (n.length !== 0 && u[r.value] === n[0] && (t.push(u[r.label]), o(u[r.children]))) {
9
+ const l = i(u[r.children], n.slice(1), r);
10
+ t.push(...l);
11
11
  }
12
- }), e;
12
+ }), t;
13
13
  };
14
+ function h(e, n = "") {
15
+ if (e == null || e === "")
16
+ return n;
17
+ const r = String(e);
18
+ return r.endsWith("px") || r.endsWith("%") || isNaN(Number(r)) ? r : `${r}px`;
19
+ }
14
20
  export {
15
- a as formateCascaderCode
21
+ h as formatSize,
22
+ c as formateCascaderCode
16
23
  };
17
24
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sources":["../../../src/utils/format.js"],"sourcesContent":["import { isArray } from 'lodash-es';\n\nfunction validateDate(dateStr) {\n const date = new Date(Date.parse(dateStr));\n return date instanceof Date && !isNaN(date.getTime());\n}\n\nexport function formatDate1(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n const y = date.getFullYear();\n let m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let d = date.getDate();\n d = d < 10 ? '0' + d : d;\n return y + '-' + m + '-' + d;\n}\n\nexport function formatDate2(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n const y = date.getFullYear();\n let m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let d = date.getDate();\n d = d < 10 ? '0' + d : d;\n return y + '/' + m + '/' + d;\n}\n\nexport function formatDate3(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n const y = date.getFullYear();\n let m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let d = date.getDate();\n d = d < 10 ? '0' + d : d;\n return y + '年' + m + '月' + d + '日';\n}\n\nexport function formatDate4(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n return date.toLocaleString();\n}\n\nexport function formatDate5(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n return date.toLocaleString('chinese', { hour12: false });\n}\n\n// ###,###,###,##0.######\nexport function formatNumber1(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n const length = v.toString().split('.')[1].length;\n switch (length) {\n case 0:\n v = v.toFixed(0);\n break;\n case 1:\n v = v.toFixed(1);\n break;\n case 2:\n v = v.toFixed(2);\n break;\n case 3:\n v = v.toFixed(3);\n break;\n case 4:\n v = v.toFixed(4);\n break;\n case 5:\n v = v.toFixed(5);\n break;\n default:\n v = v.toFixed(6);\n }\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n//###,###,###,##0.00####\nexport function formatNumber2(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n const length = v.toString().split('.')[1].length;\n switch (length) {\n case 0:\n case 1:\n case 2:\n v = v.toFixed(2);\n break;\n case 3:\n v = v.toFixed(3);\n break;\n case 4:\n v = v.toFixed(4);\n break;\n case 5:\n v = v.toFixed(5);\n break;\n default:\n v = v.toFixed(6);\n }\n\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0.000000\nexport function formatNumber3(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(6);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n// ###,###,###,##0.000\nexport function formatNumber4(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(3);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0.00\nexport function formatNumber5(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(2);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0\nexport function formatNumber6(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(0);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,##0.00##%\nexport function formatNumber7(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n const length = v.toString().split('.')[1].length;\n v = v * 100;\n switch (length) {\n case 0:\n case 1:\n case 2:\n v = v.toFixed(2);\n break;\n case 3:\n v = v.toFixed(3);\n break;\n default:\n v = v.toFixed(4);\n }\n\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res + '%';\n}\n\n/**\n * 将Cascader转义为汉字\n * @param codeList string[]\n * @param emblem 拼接符号\n * @returns\n */\nexport const formateCascaderCode = (\n arr = [],\n codeList,\n fieldNames = { label: 'label', value: 'value', children: 'children' },\n emblem = '/'\n) => {\n if (!codeList || codeList.length === 0) return;\n if (isArray(codeList[0])) {\n const res2 = codeList.map(item => getTreeName(arr, item, fieldNames).join(emblem));\n return res2.join(',');\n } else {\n const res = getTreeName(arr, codeList, fieldNames);\n return res.join(emblem);\n }\n};\n\nconst getTreeName = (\n list = [],\n val = [],\n fieldNames = { label: 'label', value: 'value', children: 'children' }\n) => {\n const nameList = [];\n list.forEach(item => {\n if (val.length === 0) return;\n if (item[fieldNames.value] === val[0]) {\n nameList.push(item[fieldNames.label]);\n if (isArray(item[fieldNames.children])) {\n const res = getTreeName(item[fieldNames.children], val.slice(1), fieldNames);\n nameList.push(...res);\n }\n }\n });\n return nameList;\n};\n/**\n * 将tree转义为汉字\n * @param codeList string[]\n * @param emblem 拼接符号\n * @returns\n */\nexport const formateTreeToName = (\n arr = [],\n codeList,\n fieldNames = { label: 'label', value: 'value', children: 'children' },\n emblem = ','\n) => {\n if (!codeList || codeList.length === 0) return;\n const str = arr.reduce((t, v) => {\n const res = getListName(v, codeList, fieldNames);\n t = [...t, res];\n return t;\n }, []);\n return str.map(item => item[fieldNames.label]).join(emblem);\n};\n\nconst getListName = (val, list, fieldNames) => {\n let res;\n list.forEach(it1 => {\n if (it1[fieldNames.value] === val) {\n res = it1;\n return;\n }\n const childrenList = it1[fieldNames.children] || [];\n if (childrenList.length) {\n res = getListName(val, childrenList, fieldNames);\n }\n });\n return res;\n};\n"],"names":["formateCascaderCode","arr","codeList","fieldNames","emblem","isArray","item","getTreeName","list","val","nameList","res"],"mappings":";AA0OY,MAACA,IAAsB,CACjCC,IAAM,CAAA,GACNC,GACAC,IAAa,EAAE,OAAO,SAAS,OAAO,SAAS,UAAU,WAAU,GACnEC,IAAS,QACN;AACH,MAAI,GAACF,KAAYA,EAAS,WAAW;AACrC,WAAIG,EAAQH,EAAS,CAAC,CAAC,IACRA,EAAS,IAAI,CAAAI,MAAQC,EAAYN,GAAKK,GAAMH,CAAU,EAAE,KAAKC,CAAM,CAAC,EACrE,KAAK,GAAG,IAERG,EAAYN,GAAKC,GAAUC,CAAU,EACtC,KAAKC,CAAM;AAE1B,GAEMG,IAAc,CAClBC,IAAO,CAAA,GACPC,IAAM,CAAA,GACNN,IAAa,EAAE,OAAO,SAAS,OAAO,SAAS,UAAU,WAAU,MAChE;AACH,QAAMO,IAAW,CAAA;AACjB,SAAAF,EAAK,QAAQ,CAAAF,MAAQ;AACnB,QAAIG,EAAI,WAAW,KACfH,EAAKH,EAAW,KAAK,MAAMM,EAAI,CAAC,MAClCC,EAAS,KAAKJ,EAAKH,EAAW,KAAK,CAAC,GAChCE,EAAQC,EAAKH,EAAW,QAAQ,CAAC,IAAG;AACtC,YAAMQ,IAAMJ,EAAYD,EAAKH,EAAW,QAAQ,GAAGM,EAAI,MAAM,CAAC,GAAGN,CAAU;AAC3E,MAAAO,EAAS,KAAK,GAAGC,CAAG;AAAA,IACtB;AAAA,EAEJ,CAAC,GACMD;AACT;"}
1
+ {"version":3,"file":"format.js","sources":["../../../src/utils/format.js"],"sourcesContent":["import { isArray } from 'lodash-es';\n\nfunction validateDate(dateStr) {\n const date = new Date(Date.parse(dateStr));\n return date instanceof Date && !isNaN(date.getTime());\n}\n\nexport function formatDate1(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n const y = date.getFullYear();\n let m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let d = date.getDate();\n d = d < 10 ? '0' + d : d;\n return y + '-' + m + '-' + d;\n}\n\nexport function formatDate2(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n const y = date.getFullYear();\n let m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let d = date.getDate();\n d = d < 10 ? '0' + d : d;\n return y + '/' + m + '/' + d;\n}\n\nexport function formatDate3(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n const y = date.getFullYear();\n let m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n let d = date.getDate();\n d = d < 10 ? '0' + d : d;\n return y + '年' + m + '月' + d + '日';\n}\n\nexport function formatDate4(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n return date.toLocaleString();\n}\n\nexport function formatDate5(date) {\n if (!validateDate(date)) {\n return date;\n }\n date = new Date(Date.parse(date)); //转换成Date\n return date.toLocaleString('chinese', { hour12: false });\n}\n\n// ###,###,###,##0.######\nexport function formatNumber1(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n const length = v.toString().split('.')[1].length;\n switch (length) {\n case 0:\n v = v.toFixed(0);\n break;\n case 1:\n v = v.toFixed(1);\n break;\n case 2:\n v = v.toFixed(2);\n break;\n case 3:\n v = v.toFixed(3);\n break;\n case 4:\n v = v.toFixed(4);\n break;\n case 5:\n v = v.toFixed(5);\n break;\n default:\n v = v.toFixed(6);\n }\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n//###,###,###,##0.00####\nexport function formatNumber2(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n const length = v.toString().split('.')[1].length;\n switch (length) {\n case 0:\n case 1:\n case 2:\n v = v.toFixed(2);\n break;\n case 3:\n v = v.toFixed(3);\n break;\n case 4:\n v = v.toFixed(4);\n break;\n case 5:\n v = v.toFixed(5);\n break;\n default:\n v = v.toFixed(6);\n }\n\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0.000000\nexport function formatNumber3(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(6);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n// ###,###,###,##0.000\nexport function formatNumber4(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(3);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0.00\nexport function formatNumber5(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(2);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,###,###,##0\nexport function formatNumber6(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n v = v.toFixed(0);\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res;\n}\n\n// ###,##0.00##%\nexport function formatNumber7(v) {\n if (typeof v !== 'number') {\n return v;\n }\n\n const length = v.toString().split('.')[1].length;\n v = v * 100;\n switch (length) {\n case 0:\n case 1:\n case 2:\n v = v.toFixed(2);\n break;\n case 3:\n v = v.toFixed(3);\n break;\n default:\n v = v.toFixed(4);\n }\n\n const res = v.toString().replace(/\\d+/, function (n) {\n // 先提取整数部分\n return n.replace(/(\\d)(?=(\\d{3})+$)/g, function ($1) {\n return $1 + ',';\n });\n });\n return res + '%';\n}\n\n/**\n * 将Cascader转义为汉字\n * @param codeList string[]\n * @param emblem 拼接符号\n * @returns\n */\nexport const formateCascaderCode = (\n arr = [],\n codeList,\n fieldNames = { label: 'label', value: 'value', children: 'children' },\n emblem = '/'\n) => {\n if (!codeList || codeList.length === 0) return;\n if (isArray(codeList[0])) {\n const res2 = codeList.map(item => getTreeName(arr, item, fieldNames).join(emblem));\n return res2.join(',');\n } else {\n const res = getTreeName(arr, codeList, fieldNames);\n return res.join(emblem);\n }\n};\n\nconst getTreeName = (\n list = [],\n val = [],\n fieldNames = { label: 'label', value: 'value', children: 'children' }\n) => {\n const nameList = [];\n list.forEach(item => {\n if (val.length === 0) return;\n if (item[fieldNames.value] === val[0]) {\n nameList.push(item[fieldNames.label]);\n if (isArray(item[fieldNames.children])) {\n const res = getTreeName(item[fieldNames.children], val.slice(1), fieldNames);\n nameList.push(...res);\n }\n }\n });\n return nameList;\n};\n/**\n * 将tree转义为汉字\n * @param codeList string[]\n * @param emblem 拼接符号\n * @returns\n */\nexport const formateTreeToName = (\n arr = [],\n codeList,\n fieldNames = { label: 'label', value: 'value', children: 'children' },\n emblem = ','\n) => {\n if (!codeList || codeList.length === 0) return;\n const str = arr.reduce((t, v) => {\n const res = getListName(v, codeList, fieldNames);\n t = [...t, res];\n return t;\n }, []);\n return str.map(item => item[fieldNames.label]).join(emblem);\n};\n\nconst getListName = (val, list, fieldNames) => {\n let res;\n list.forEach(it1 => {\n if (it1[fieldNames.value] === val) {\n res = it1;\n return;\n }\n const childrenList = it1[fieldNames.children] || [];\n if (childrenList.length) {\n res = getListName(val, childrenList, fieldNames);\n }\n });\n return res;\n};\n\n/**\n * 格式化尺寸,支持数字、px、%\n * @param value 尺寸值\n * @param defaultSize 默认尺寸\n * @returns 格式化后的尺寸字符串\n */\nexport function formatSize(value, defaultSize = '') {\n if (value === undefined || value === null || value === '') {\n return defaultSize;\n }\n const strValue = String(value);\n if (strValue.endsWith('px') || strValue.endsWith('%')) {\n return strValue;\n }\n if (!isNaN(Number(strValue))) {\n return `${strValue}px`;\n }\n return strValue;\n}\n"],"names":["formateCascaderCode","arr","codeList","fieldNames","emblem","isArray","item","getTreeName","list","val","nameList","res","formatSize","value","defaultSize","strValue"],"mappings":";AA0OY,MAACA,IAAsB,CAC/BC,IAAM,CAAA,GACNC,GACAC,IAAa,EAAE,OAAO,SAAS,OAAO,SAAS,UAAU,WAAU,GACnEC,IAAS,QACR;AACD,MAAI,GAACF,KAAYA,EAAS,WAAW;AACrC,WAAIG,EAAQH,EAAS,CAAC,CAAC,IACNA,EAAS,IAAI,CAAAI,MAAQC,EAAYN,GAAKK,GAAMH,CAAU,EAAE,KAAKC,CAAM,CAAC,EACrE,KAAK,GAAG,IAERG,EAAYN,GAAKC,GAAUC,CAAU,EACtC,KAAKC,CAAM;AAE9B,GAEMG,IAAc,CAChBC,IAAO,CAAA,GACPC,IAAM,CAAA,GACNN,IAAa,EAAE,OAAO,SAAS,OAAO,SAAS,UAAU,WAAU,MAClE;AACD,QAAMO,IAAW,CAAA;AACjB,SAAAF,EAAK,QAAQ,CAAAF,MAAQ;AACjB,QAAIG,EAAI,WAAW,KACfH,EAAKH,EAAW,KAAK,MAAMM,EAAI,CAAC,MAChCC,EAAS,KAAKJ,EAAKH,EAAW,KAAK,CAAC,GAChCE,EAAQC,EAAKH,EAAW,QAAQ,CAAC,IAAG;AACpC,YAAMQ,IAAMJ,EAAYD,EAAKH,EAAW,QAAQ,GAAGM,EAAI,MAAM,CAAC,GAAGN,CAAU;AAC3E,MAAAO,EAAS,KAAK,GAAGC,CAAG;AAAA,IACxB;AAAA,EAER,CAAC,GACMD;AACX;AA2CO,SAASE,EAAWC,GAAOC,IAAc,IAAI;AAChD,MAA2BD,KAAU,QAAQA,MAAU;AACnD,WAAOC;AAEX,QAAMC,IAAW,OAAOF,CAAK;AAC7B,SAAIE,EAAS,SAAS,IAAI,KAAKA,EAAS,SAAS,GAAG,KAG/C,MAAM,OAAOA,CAAQ,CAAC,IAFhBA,IAGA,GAAGA,CAAQ;AAG1B;"}