@kp-ui/lowcode 2.15.0-beta.8 → 2.16.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/install.js +17 -15
- package/install.js.map +1 -1
- package/package.json +3 -2
- package/src/components/FormRender/FormContainer.vue.js +55 -0
- package/src/components/FormRender/FormContainer.vue.js.map +1 -0
- package/src/components/FormRender/FormContainer.vue2.js +5 -0
- package/src/components/FormRender/FormContainer.vue2.js.map +1 -0
- package/src/components/FormRender/index.vue.js +2 -2
- package/src/components/FormRender/index.vue2.js +28 -30
- package/src/components/FormRender/index.vue2.js.map +1 -1
- package/src/components/FormRender/useFormContext.js +119 -112
- package/src/components/FormRender/useFormContext.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/useTableWidget.js +143 -138
- package/src/components/form-designer/form-widget/container-widget/useTableWidget.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/vf-dialog-widget.vue.js +2 -2
- package/src/components/form-designer/form-widget/container-widget/vf-dialog-widget.vue2.js +22 -16
- package/src/components/form-designer/form-widget/container-widget/vf-dialog-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue.js +1 -1
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue2.js +65 -53
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/rich-editor-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/useField.js +33 -33
- package/src/components/form-designer/form-widget/field-widget/useField.js.map +1 -1
- package/src/components/form-designer/setting-panel/form-setting.vue.js +2 -2
- package/src/components/form-designer/setting-panel/form-setting.vue2.js +100 -126
- package/src/components/form-designer/setting-panel/form-setting.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue2.js +45 -39
- package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue.js +2 -2
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonLabel-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue.js +5 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue2.js +38 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue2.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue.js +5 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue2.js +38 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue2.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/event-handler/onTableChange-editor.vue2.js +4 -4
- package/src/components/form-designer/setting-panel/property-editor/event-handler/onTableChange-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/index.js +158 -156
- package/src/components/form-designer/setting-panel/property-editor/index.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/labelIconClass-editor.vue2.js +29 -18
- package/src/components/form-designer/setting-panel/property-editor/labelIconClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/propertyRegister.js +2 -0
- package/src/components/form-designer/setting-panel/propertyRegister.js.map +1 -1
- package/src/components/form-designer/widget-panel/basicFields/input.js +4 -2
- package/src/components/form-designer/widget-panel/basicFields/input.js.map +1 -1
- package/src/components/form-designer/widget-panel/containers/vf-dialog.js +34 -10
- package/src/components/form-designer/widget-panel/containers/vf-dialog.js.map +1 -1
- package/src/components/form-render/container-items/data-table-widget.vue.js +1 -1
- package/src/components/form-render/container-items/data-table-widget.vue2.js +60 -61
- package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
- package/src/components/form-render/dynamic-dialog.vue.js +79 -82
- package/src/components/form-render/dynamic-dialog.vue.js.map +1 -1
- package/src/components/public/ActionButtonListDialog.vue.js +2 -2
- package/src/components/public/ActionButtonListDialog.vue2.js +117 -96
- package/src/components/public/ActionButtonListDialog.vue2.js.map +1 -1
- package/src/components/public/ActionButtonListRender.vue.js +17 -15
- package/src/components/public/ActionButtonListRender.vue.js.map +1 -1
- package/src/components/public/ActionButtonListRender.vue2.js +48 -38
- package/src/components/public/ActionButtonListRender.vue2.js.map +1 -1
- package/src/components/public/ConfigView/CustomPageRender.vue.js +58 -0
- package/src/components/public/ConfigView/CustomPageRender.vue.js.map +1 -0
- package/src/components/public/ConfigView/CustomPageRender.vue2.js +5 -0
- package/src/components/public/ConfigView/CustomPageRender.vue2.js.map +1 -0
- package/src/components/public/CustomerModal/CustomerModal.vue2.js +63 -56
- package/src/components/public/CustomerModal/CustomerModal.vue2.js.map +1 -1
- package/src/constants/EditorTypeEnum.js +1 -1
- package/src/constants/EditorTypeEnum.js.map +1 -1
- package/src/hooks/useDataHttp.js +8 -7
- package/src/hooks/useDataHttp.js.map +1 -1
- package/src/hooks/useLowcode.js.map +1 -1
- package/src/lang/en-US.js +2 -0
- package/src/lang/en-US.js.map +1 -1
- package/src/lang/zh-CN.js +2 -0
- package/src/lang/zh-CN.js.map +1 -1
- package/src/utils/util.js +25 -34
- package/src/utils/util.js.map +1 -1
- package/stats.html +1 -1
- package/styles/style.css +1 -1
- package/src/components/FormRender/FormContainer.js +0 -52
- package/src/components/FormRender/FormContainer.js.map +0 -1
- package/src/components/form-render/SubmitButtonRender.vue.js +0 -92
- package/src/components/form-render/SubmitButtonRender.vue.js.map +0 -1
- package/src/components/form-render/SubmitButtonRender.vue2.js +0 -5
- package/src/components/form-render/SubmitButtonRender.vue2.js.map +0 -1
|
@@ -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, widgetList.value || []);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm, widgetList.value || []);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n console.log({ json });\n\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n // 重新构建表单数据模型\n formDataModel.value = {};\n\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n globalDsv: topFormRef.globalDsv,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialgRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialgRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n insertCustomCode();\n });\n\n return {\n i18nt,\n goBack,\n reload,\n formWidgetId,\n vfCtx: props.vfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n registerToRefList,\n dialogOrDrawerRef,\n setDialogOrDrawerRef,\n showDialog,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n emitter,\n context,\n getFormData,\n getChildFormRef,\n // 状态\n formJsonObj,\n formDataModel,\n isLoading,\n readModeFlag,\n\n // 引用\n widgetRefList,\n\n formValidator,\n\n // 计算属性\n formConfig,\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dynamicDialgRef,\n dialogProps,\n\n setChildFormRef,\n resetValidation,\n clearValidate\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","onMounted"],"mappings":";;;;;;;;;;;;AAkDO,MAAMA,KAAiB,CAAC,EAAE,YAAAC,GAAY,OAAAC,QAAgC;AACzE,QAAM,EAAE,UAAAC,MAAaD,GACfE,IAAkBC,GAAUC,EAAa,GACzC,EAAE,OAAAC,EAAA,IAAUC,GAAA,GACZ,CAACC,GAAcC,CAAW,IAAIC,GAAO,EAAK,GAE1CC,IAAUC,GAAA,GAEVC,IAAcC,EAAA,GAEdC,IAAgBD,EAAyB,EAAE,GAC3CE,IAAYF,EAAI,EAAK,GACrBG,IAAgBH,EAAsB,oBAAI,KAAK,GAC/CI,IAAcJ,EAAI,EAAE,GACpBK,IAAeL,EAAA,GAEfM,IAAe,OAAO,YAAY;AAGxC,EAAAC,EAAQ,WAAWJ,CAAa,GAChCI,EAAQ,iBAAiB,MAAMC,EAAW,KAAK,GAC/CD,EAAQ,YAAYN,CAAa,GACjCM,EAAQ,eAAe,MAAMb,EAAa,KAAK,GAC/Ca,EAAQ,eAAe,EAAK;AAE5B,QAAME,IAAoBT,EAAA,GAEpB,EAAE,iBAAAU,GAAiB,SAAAC,GAAS,kBAAAC,EAAA,IAAqBC,GAAA,GACjD,EAAE,YAAAC,GAAY,cAAAC,GAAc,mBAAAC,MAAsBC,GAAUd,GAAeG,CAAY,GAGvFE,IAAaU,EAAS,MAAA;;AAAM,aAAAC,IAAApB,EAAY,UAAZ,gBAAAoB,EAAmB,eAAc;GAAE;AAErE,EAAAZ,EAAQ,cAAcC,CAAU,GAChCD,EAAQ,gBAAgBD,CAAY;AAEpC,QAAMc,IAAaF,EAAS,MAAA;;AAAM,aAAAC,IAAApB,EAAY,UAAZ,gBAAAoB,EAAmB,eAAc;GAAE,GAC/DE,IAAgBH,EAAS,MAAM;;AACjC,aAAOC,IAAAX,EAAW,UAAX,gBAAAW,EAAkB,kBAAiB;AAAA,EAC9C,CAAC,GAEKG,IAAkB,CAAAC,MAAQ;AAC5B,IAAAlB,EAAa,QAAQkB;AAAA,EACzB,GAEMC,IAAaN,EAAS,MAAM;;AAC9B,YAAOC,IAAAX,EAAW,UAAX,QAAAW,EAAkB,aAAa,GAAGX,EAAW,MAAM,UAAU,OAAO;AAAA,EAC/E,CAAC,GAEKiB,IAAcP,EAAS,MAAM;;AAC/B,aAAOC,IAAAX,EAAW,UAAX,gBAAAW,EAAkB,gBAAe;AAAA,EAC5C,CAAC;AAGD,MAAIO,IAAgBC,EAAkBzC,GAAYkC,EAAW,SAAS,CAAA,CAAE;AAGxE,EAAAQ,GAAY,MAAM;AACd,IAAAF,IAAgBC,EAAkBzC,GAAYkC,EAAW,SAAS,CAAA,CAAE;AAAA,EACxE,CAAC;AAKD,QAAMS,IAAc,OAAOC,MAAc;AACrC,YAAQ,IAAI,EAAE,MAAAA,GAAM,GAEpB/B,EAAY,QAAQ+B,KAAQ,EAAE,YAAY,CAAA,GAAI,YAAY,GAAC,GAE3D7B,EAAc,QAAQ,CAAA,GAEtB,MAAM8B,GAAA,GACNC,GAAA;AAAA,EACJ,GAKMC,IAAc,MACThC,EAAc,SAAS,CAAA,GAM5BiC,IAAc,CAACC,MAA8B;AAC/C,IAAKA,KAEL,OAAO,KAAKA,CAAI,EAAE,QAAQ,CAAAC,MAAO;AAC7B,MAAI,OAAO,UAAU,eAAe,KAAKnC,EAAc,OAAOmC,CAAG,MAC7DnC,EAAc,MAAMmC,CAAG,IAAID,EAAKC,CAAG;AAAA,IAE3C,CAAC;AAAA,EACL,GAKMC,IAAa,CAACC,MAAqB;AACrC,IAAApC,EAAU,QAAQoC;AAAA,EACtB,GAKMC,IAAkB,MAAM;AAC1B,IAAAb,EAAc,gBAAA;AAAA,EAClB,GAKMc,IAAgB,MAAM;AACxB,IAAAd,EAAc,cAAA;AAAA,EAClB,GAEMe,IAAuB,CAACC,MAAe;AACzC,IAAAjC,EAAkB,QAAQiC;AAAA,EAC9B,GAMMC,IAAgB,MAAM;AACxB,QAAI,CAACxD,EAAM;AACP,aAAO2B,EAAA;AAGX,QAAI8B,IAAazD,EAAM;AACvB,WAAOyD,EAAW;AACd,MAAAA,IAAaA,EAAW;AAG5B,WAAOA;AAAA,EACX,GAQMC,IAAa,CAACC,GAAYC,IAAW,CAAA,GAAIC,IAAY,OAAO;;AAC9D,UAAMJ,IAAaD,EAAA,GACbM,IAAaC,GAAyBN,KAAA,gBAAAA,EAAY,eAAc,CAAA,GAAIE,CAAU,KAChFI,EAAyB9B,EAAW,SAAS,CAAA,GAAI0B,CAAU;AAE/D,QAAIG,MAAc,MAAM;AACpB,MAAAE,EAAQ,MAAM3D,EAAM,yBAAyB,IAAIsD,CAAU;AAC3D;AAAA,IACJ;AAEA,QAAI,CAACA,KAAcG,EAAU,SAAS,aAAa;AAC/C,MAAAE,EAAQ,MAAM3D,EAAM,yBAAyB,IAAIsD,CAAU;AAC3D;AAAA,IACJ;AACA,UAAMM,IAAY;AAAA,MACd,YAAYC,IAAUJ,KAAA,gBAAAA,EAAW,eAAc,CAAA,CAAE;AAAA,MACjD,YAAYK,KAAmCnC,IAAAyB,KAAA,gBAAAA,EAAY,eAAZ,gBAAAzB,EAAwB,UAAS,CAAA,CAAE;AAAA,IAAA,GAEhFoC,KAAeC,GAAA;AACrB,IAAApD,EAAY,QAAQ;AAAA,MAChB,SAAS6C,EAAU;AAAA,MACnB,UAAUG;AAAA,MACV,UAAU,EAAE,GAAGL,EAAA;AAAA,MACf,YAAYH,EAAW;AAAA,MACvB,WAAWA,EAAW;AAAA,MACtB,eAAejC,EAAQ;AAAA,MACvB,WAAAqC;AAAA,MACA,WAAWO;AAAA,MACX,OAAO,EAAE,GAAGR,EAAA;AAAA,IAAS,IAGzBU,IAAApE,EAAgB,UAAhB,QAAAoE,EAAuB;AAAA,EAC3B,GAKMC,IAAmB,MACdvE,EAAM,YAGXwE,IAAkB,MAAM;;AAC1B,YAAOxC,IAAA9B,EAAgB,UAAhB,gBAAA8B,EAAuB;AAAA,EAClC,GAKMyC,KAA0B,MAAM;AAClC,IAAA/D,EAAQ,KAAK,aAAa,GAC1BA,EAAQ,IAAI,eAAe,CAAC,EAAE,WAAAgE,GAAW,OAAAC,QAAY;AAEjD,MAAI,OAAOD,IAAc,OAAe,OAAOC,IAAU,OACrDC,GAAI9D,EAAc,OAAO4D,GAAWC,CAAK;AAAA,IAEjD,CAAC;AAAA,EACL,GAEME,KAAe,YAAY;AAC7B,UAAMC,IAAYzD,EAAW,MAAM,WAC7B0D,IAAM,MAAMtD,EAAiBqD,EAAU,aAAa;AAAA,MACtD,OAAO9E,EAAM;AAAA,IAAA,CAChB;AACD,mBAAQ,IAAI,SAAS+E,CAAG,GACjBA;AAAA,EACX,GAEMC,KAAe,YAAY;AAE7B,QAAI,CADU,MAAMzC,EAAc,SAAA,EACtB,OAAM,IAAI,MAAMlC,EAAM,QAAQ,CAAC;AAE3C,UAAMyE,IAAYzD,EAAW,MAAM,WAC7B0D,IAAM,MAAMtD,EAAiBqD,EAAU,aAAa;AAAA,MACtD,MAAMhE,EAAc;AAAA,MACpB,OAAOd,EAAM;AAAA,IAAA,CAChB;AACD,mBAAQ,IAAI,SAAS+E,CAAG,GACjBA;AAAA,EACX,GAEMlC,KAAkB,MAAM;;AAC1B,KAAIb,IAAAX,EAAW,UAAX,QAAAW,EAAkB,kBAClB,QAAQ,IAAI,iBAAiB,GAC7BT,EAAgB;AAAA,MACZ,eAAc+C,IAAAjD,EAAW,UAAX,gBAAAiD,EAAkB;AAAA,IAAA,CACnC;AAAA,EAET,GAQMW,KAAmB,MAAM;AAC3B,UAAMC,IAAS,aAAaC,GAAA,GACtB,EAAE,SAAAC,GAAS,WAAAC,EAAA,IAAchE,EAAW;AAC1C,IAAI+D,KACAE,GAAsBF,GAASF,KAAU,EAAE,GAE3CG,KACAE,GAA4BF,GAAWH,KAAU,EAAE;AAAA,EAE3D,GAEMM,KAAS,MAAM;;AACjB,UAAMC,KAASzD,IAAAR,EAAQ,UAAR,gBAAAQ,EAAe;AAC9B,IAAAyD,KAAA,QAAAA,EAAQ,QAAQ;AAAA,MACZ,OAAO;AAAA,QACH,GAAGA,EAAO,aAAa,MAAM;AAAA,QAC7B,IAAI,KAAK,IAAA;AAAA,MAAI;AAAA,IACjB;AAAA,EAER,GAEMC,KAAS,CAACC,GAAmCC,MAAoB;;AACnE,UAAMF,KAAS1D,IAAAL,IAAa,UAAb,gBAAAK,EAAoB;AACnC,QAAI,OAAO0D,KAAW;AAClBA,MAAAA,EAAOC,GAAcC,CAAE;AAAA,SACpB;AACH,YAAMH,KAASnB,IAAA9C,EAAQ,UAAR,gBAAA8C,EAAe;AAC9B,MAAAmB,KAAA,QAAAA,EAAQ,GAAG;AAAA,IACf;AAAA,EACJ;AAEA,SAAAI,GAAU,MAAM;AACZ,IAAI5F,KACAyC,EAAYzC,CAAQ,GAExBwE,GAAA,GACAQ,GAAA;AAAA,EACJ,CAAC,GAEM;AAAA,IACH,OAAA5E;AAAA,IACA,QAAAqF;AAAA,IACA,QAAAF;AAAA,IACA,cAAArE;AAAA,IACA,OAAOnB,EAAM;AAAA,IACb,kBAAAuE;AAAA,IACA,YAAA5C;AAAA,IACA,cAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAP;AAAA,IACA,sBAAAgC;AAAA,IACA,YAAAI;AAAA,IACA,aAAAX;AAAA,IACA,aAAAvC;AAAA,IACA,aAAAkC;AAAA,IACA,YAAAQ;AAAA,IACA,cAAA2B;AAAA,IACA,cAAAG;AAAA,IACA,SAAAtE;AAAA,IACA,SAAAc;AAAA,IACA,aAAAsB;AAAA,IACA,iBAAA0B;AAAA;AAAA,IAEA,aAAA5D;AAAA,IACA,eAAAE;AAAA,IACA,WAAAC;AAAA,IACA,cAAAR;AAAA;AAAA,IAGA,eAAAS;AAAA,IAEA,eAAAuB;AAAA;AAAA,IAGA,YAAAlB;AAAA,IACA,YAAAY;AAAA,IACA,eAAAC;AAAA,IACA,YAAAG;AAAA,IACA,aAAAC;AAAA,IACA,iBAAApC;AAAA,IACA,aAAAe;AAAA,IAEA,iBAAAkB;AAAA,IACA,iBAAAiB;AAAA,IACA,eAAAC;AAAA,EAAA;AAER;"}
|
|
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,24 +1,24 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
import { omit as
|
|
3
|
-
import
|
|
4
|
-
import { useI18n as
|
|
5
|
-
import { useExecFunction as
|
|
6
|
-
import { useDataHttp as
|
|
7
|
-
import { message as
|
|
8
|
-
function
|
|
9
|
-
const
|
|
10
|
-
props:
|
|
11
|
-
}),
|
|
12
|
-
const t = [],
|
|
13
|
-
|
|
14
|
-
title:
|
|
15
|
-
width:
|
|
1
|
+
import { ref as T, computed as c, h as k, watch as G } from "vue";
|
|
2
|
+
import { omit as J, cloneDeep as x, isArray as O } from "lodash-es";
|
|
3
|
+
import Q from "../../../public/ActionButtonListRender.vue.js";
|
|
4
|
+
import { useI18n as U } from "../../../../utils/i18n.js";
|
|
5
|
+
import { useExecFunction as X, tranformAntTableColumnToVxetableColumn as Y, tranformAntSizzVxetableSize as Z, TpfDelConfirm as $ } from "tmgc2-share";
|
|
6
|
+
import { useDataHttp as M } from "../../../../hooks/useDataHttp.js";
|
|
7
|
+
import { Space as tt, message as et } from "ant-design-vue";
|
|
8
|
+
function ht({ props: r, fieldModel: a }) {
|
|
9
|
+
const S = T(), b = T(!1), { widget: o } = r, { i18nt: g } = U(), { executeFunction: u, context: R } = X(), { loadataSource: z, setPagination: h, getPagination: p, pagintion: D } = M({
|
|
10
|
+
props: r
|
|
11
|
+
}), B = c(() => {
|
|
12
|
+
const t = [], e = (o == null ? void 0 : o.options) || {}, { rowSelection: n, showIndex: i, tableColumns: f = [] } = (o == null ? void 0 : o.options) ?? {};
|
|
13
|
+
n != null && n.hasRowSelection && t.push({
|
|
14
|
+
title: n.columnTitle,
|
|
15
|
+
width: n.columnWidth,
|
|
16
16
|
align: "left",
|
|
17
17
|
fixed: "left",
|
|
18
18
|
dataIndex: "checkbox",
|
|
19
19
|
type: "checkbox"
|
|
20
|
-
}),
|
|
21
|
-
title:
|
|
20
|
+
}), i && t.push({
|
|
21
|
+
title: g("designer.setting.seq"),
|
|
22
22
|
align: "left",
|
|
23
23
|
width: 90,
|
|
24
24
|
fixed: "left",
|
|
@@ -27,24 +27,24 @@ function ft({ props: l, fieldModel: s }) {
|
|
|
27
27
|
resizable: !0,
|
|
28
28
|
type: "seq"
|
|
29
29
|
});
|
|
30
|
-
const
|
|
31
|
-
...
|
|
32
|
-
...
|
|
33
|
-
titleSuffix:
|
|
34
|
-
})),
|
|
35
|
-
if (
|
|
36
|
-
const
|
|
37
|
-
|
|
30
|
+
const l = f.filter((s) => s.show).map((s) => ({
|
|
31
|
+
...s,
|
|
32
|
+
...W(s),
|
|
33
|
+
titleSuffix: s.titleSuffix ? { content: s.titleSuffixContent } : !1
|
|
34
|
+
})), m = [];
|
|
35
|
+
if (e.showButtonsColumn) {
|
|
36
|
+
const s = e.operationButtons ?? [];
|
|
37
|
+
m.push({
|
|
38
38
|
fixed: "right",
|
|
39
39
|
align: "center",
|
|
40
|
-
title:
|
|
41
|
-
width:
|
|
40
|
+
title: e.buttonsColumnTitle,
|
|
41
|
+
width: e.buttonsColumnWidth,
|
|
42
42
|
slots: {
|
|
43
|
-
default: (_) =>
|
|
44
|
-
buttonList:
|
|
43
|
+
default: (_) => k(Q, {
|
|
44
|
+
buttonList: s,
|
|
45
45
|
flex: "center",
|
|
46
46
|
scope: _,
|
|
47
|
-
ctx:
|
|
47
|
+
ctx: R.value,
|
|
48
48
|
onClick: (j) => {
|
|
49
49
|
j.stopPropagation();
|
|
50
50
|
}
|
|
@@ -52,175 +52,180 @@ function ft({ props: l, fieldModel: s }) {
|
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
|
-
const
|
|
56
|
-
return
|
|
57
|
-
}),
|
|
58
|
-
const
|
|
59
|
-
return t.minWidth = 50, t.maxWidth = 1200, t.isAutoWidth ? (t.width = null, delete t.width) : t.width = isNaN(Number(t.width)) ? t.width : Number(t.width),
|
|
60
|
-
...
|
|
55
|
+
const w = [...t, ...l, ...m];
|
|
56
|
+
return Y(w);
|
|
57
|
+
}), W = (t) => {
|
|
58
|
+
const e = J(t, ["customRender"]), n = t.customRender;
|
|
59
|
+
return t.minWidth = 50, t.maxWidth = 1200, t.isAutoWidth ? (t.width = null, delete t.width) : t.width = isNaN(Number(t.width)) ? t.width : Number(t.width), n ? {
|
|
60
|
+
...e,
|
|
61
61
|
slots: {
|
|
62
|
-
default(
|
|
63
|
-
const
|
|
64
|
-
source:
|
|
65
|
-
functionBody:
|
|
62
|
+
default(i) {
|
|
63
|
+
const f = u({
|
|
64
|
+
source: r.field.options.name,
|
|
65
|
+
functionBody: n,
|
|
66
66
|
params: {
|
|
67
|
-
index:
|
|
68
|
-
record:
|
|
69
|
-
...
|
|
67
|
+
index: i.rowIndex,
|
|
68
|
+
record: i.row,
|
|
69
|
+
...i
|
|
70
70
|
},
|
|
71
|
-
errorCallback: (
|
|
72
|
-
console.error("Custom render error:",
|
|
71
|
+
errorCallback: (l) => {
|
|
72
|
+
console.error("Custom render error:", l);
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
|
-
return
|
|
76
|
-
|
|
75
|
+
return k(
|
|
76
|
+
tt,
|
|
77
77
|
{
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
align: "center",
|
|
79
|
+
size: 5,
|
|
80
|
+
onClick: (l) => {
|
|
81
|
+
l.stopPropagation();
|
|
80
82
|
}
|
|
81
83
|
},
|
|
82
|
-
|
|
84
|
+
f
|
|
83
85
|
);
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
} : t;
|
|
87
|
-
}, P =
|
|
88
|
-
|
|
89
|
-
}, v =
|
|
89
|
+
}, P = c(() => o.options.tableWidth), F = c(() => o.options.tableSize), I = () => {
|
|
90
|
+
d();
|
|
91
|
+
}, v = c(() => o.options.rowKey), A = c(() => {
|
|
90
92
|
const {
|
|
91
93
|
tableSize: t,
|
|
92
|
-
rowKey:
|
|
93
|
-
tableHeight:
|
|
94
|
-
border:
|
|
95
|
-
lineHeight:
|
|
96
|
-
colorRow:
|
|
97
|
-
|
|
94
|
+
rowKey: e,
|
|
95
|
+
tableHeight: n = 300,
|
|
96
|
+
border: i = !1,
|
|
97
|
+
lineHeight: f = 50,
|
|
98
|
+
colorRow: l = !1,
|
|
99
|
+
showPagination: m = !0
|
|
100
|
+
} = o.options;
|
|
98
101
|
return {
|
|
99
|
-
showPagination:
|
|
100
|
-
size:
|
|
101
|
-
height:
|
|
102
|
-
border:
|
|
103
|
-
data:
|
|
104
|
-
columns:
|
|
102
|
+
showPagination: m,
|
|
103
|
+
size: Z(t),
|
|
104
|
+
height: n,
|
|
105
|
+
border: i ?? !1,
|
|
106
|
+
data: a.value || [],
|
|
107
|
+
columns: B.value,
|
|
105
108
|
sortConfig: {
|
|
106
109
|
trigger: "cell",
|
|
107
110
|
remote: !0,
|
|
108
111
|
orders: ["ascend", "descend", null]
|
|
109
112
|
},
|
|
110
113
|
rowConfig: {
|
|
111
|
-
keyField:
|
|
112
|
-
isCurrent:
|
|
114
|
+
keyField: e,
|
|
115
|
+
isCurrent: l,
|
|
113
116
|
isHover: !0
|
|
114
117
|
},
|
|
115
118
|
checkboxConfig: {
|
|
116
119
|
isShiftKey: !0,
|
|
117
|
-
checkMethod: (
|
|
118
|
-
var
|
|
119
|
-
return
|
|
120
|
-
functionBody: (
|
|
121
|
-
params:
|
|
120
|
+
checkMethod: (w) => {
|
|
121
|
+
var s;
|
|
122
|
+
return u({
|
|
123
|
+
functionBody: (s = o.options.rowSelection) == null ? void 0 : s.checkMethod,
|
|
124
|
+
params: w,
|
|
122
125
|
keys: ["row"]
|
|
123
126
|
});
|
|
124
127
|
}
|
|
125
128
|
},
|
|
126
129
|
cellConfig: {
|
|
127
|
-
height:
|
|
130
|
+
height: f
|
|
128
131
|
}
|
|
129
132
|
};
|
|
130
|
-
}),
|
|
131
|
-
|
|
132
|
-
},
|
|
133
|
+
}), E = (t) => {
|
|
134
|
+
S.value = t;
|
|
135
|
+
}, d = async () => {
|
|
133
136
|
var t;
|
|
134
|
-
if (
|
|
137
|
+
if (r.field.options.dsEnabled) {
|
|
135
138
|
b.value = !0;
|
|
136
139
|
try {
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
} catch (
|
|
140
|
-
console.error(
|
|
140
|
+
const e = await z(), n = e.list || [];
|
|
141
|
+
a.value = x(n || []), h(e);
|
|
142
|
+
} catch (e) {
|
|
143
|
+
console.error(e);
|
|
141
144
|
}
|
|
142
145
|
} else
|
|
143
|
-
|
|
144
|
-
total: ((t =
|
|
146
|
+
a.value = o.options.dataSource || [], h({
|
|
147
|
+
total: ((t = o.options.dataSource) == null ? void 0 : t.length) || 0
|
|
145
148
|
});
|
|
146
149
|
b.value = !1;
|
|
147
|
-
},
|
|
148
|
-
|
|
149
|
-
functionBody:
|
|
150
|
-
params: [t,
|
|
150
|
+
}, H = ({ row: t, $event: e }, n) => {
|
|
151
|
+
u({
|
|
152
|
+
functionBody: o.options.customRow[n],
|
|
153
|
+
params: [t, e],
|
|
151
154
|
keys: ["record", "event"]
|
|
152
155
|
});
|
|
153
|
-
},
|
|
156
|
+
}, L = (t) => {
|
|
154
157
|
C(t);
|
|
155
|
-
},
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
i && f({
|
|
160
|
-
functionBody: i,
|
|
158
|
+
}, N = ({ sorts: t }) => {
|
|
159
|
+
const e = o.options.onTableChange;
|
|
160
|
+
e && u({
|
|
161
|
+
functionBody: e,
|
|
161
162
|
params: {
|
|
162
|
-
pagination:
|
|
163
|
-
|
|
164
|
-
sorter:
|
|
165
|
-
currentDataSource: a
|
|
163
|
+
pagination: p(),
|
|
164
|
+
currentDataSource: y(),
|
|
165
|
+
sorter: t
|
|
166
166
|
},
|
|
167
|
-
keys: ["pagination", "
|
|
167
|
+
keys: ["pagination", "sorter", "currentDataSource"]
|
|
168
168
|
});
|
|
169
169
|
}, V = (t) => {
|
|
170
|
-
|
|
171
|
-
functionBody:
|
|
170
|
+
u({
|
|
171
|
+
functionBody: o.options.rowSelection.onChange,
|
|
172
172
|
keys: ["selectedRowKeys", "selectedRows"],
|
|
173
173
|
params: t
|
|
174
174
|
});
|
|
175
|
-
},
|
|
176
|
-
|
|
175
|
+
}, y = () => a.value, q = (t) => {
|
|
176
|
+
a.value || (a.value = []), a.value.push(x(t));
|
|
177
177
|
}, C = (t) => {
|
|
178
|
-
if (!
|
|
178
|
+
if (!O(t))
|
|
179
179
|
return console.error("表格数据类型错误");
|
|
180
|
-
|
|
180
|
+
a.value = x(t);
|
|
181
|
+
}, K = {
|
|
182
|
+
delSelectRow: async (t) => {
|
|
183
|
+
if (t.length)
|
|
184
|
+
try {
|
|
185
|
+
await $({ content: g("确定删除选中的数据吗") });
|
|
186
|
+
const e = a.value.filter((n) => !(t != null && t.includes(n[v.value])));
|
|
187
|
+
C(e), et.success(g("操作成功"));
|
|
188
|
+
} catch {
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
getTableColumns: () => r.field.options.tableColumns,
|
|
192
|
+
setTableColumns: (t) => {
|
|
193
|
+
r.field.options.tableColumns = t;
|
|
194
|
+
},
|
|
195
|
+
setValue: C,
|
|
196
|
+
insertTableValue: q,
|
|
197
|
+
setPagination: h,
|
|
198
|
+
getDataSource: y,
|
|
199
|
+
getPagination: p,
|
|
200
|
+
initTableSoureData: d
|
|
181
201
|
};
|
|
182
|
-
return
|
|
202
|
+
return G(
|
|
203
|
+
() => r.field.options.dsEnabled,
|
|
204
|
+
() => {
|
|
205
|
+
d();
|
|
206
|
+
}
|
|
207
|
+
), {
|
|
183
208
|
rowKey: v,
|
|
184
209
|
onCheckboxChange: V,
|
|
185
|
-
tableDefinExpoed:
|
|
186
|
-
|
|
187
|
-
if (t.length)
|
|
188
|
-
try {
|
|
189
|
-
await Z({ content: p("确定删除选中的数据吗") });
|
|
190
|
-
const o = s.value.filter((e) => !(t != null && t.includes(e[v.value])));
|
|
191
|
-
C(o), M.success(p("操作成功"));
|
|
192
|
-
} catch {
|
|
193
|
-
}
|
|
194
|
-
},
|
|
195
|
-
getTableColumns: () => l.field.options.tableColumns,
|
|
196
|
-
setTableColumns: (t) => {
|
|
197
|
-
l.field.options.tableColumns = t;
|
|
198
|
-
},
|
|
199
|
-
setValue: C,
|
|
200
|
-
insertTableValue: K,
|
|
201
|
-
setPagination: h,
|
|
202
|
-
getDataSource: q,
|
|
203
|
-
getPagination: S
|
|
204
|
-
},
|
|
205
|
-
onSortChange: F,
|
|
210
|
+
tableDefinExpoed: K,
|
|
211
|
+
onSortChange: I,
|
|
206
212
|
pagintion: D,
|
|
207
213
|
setPagination: h,
|
|
208
|
-
getPagination:
|
|
214
|
+
getPagination: p,
|
|
209
215
|
handleTableChange: N,
|
|
210
|
-
setTableData:
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
onRunEvent: E,
|
|
216
|
+
setTableData: L,
|
|
217
|
+
showPagination: c(() => !!r.field.options.showPagination),
|
|
218
|
+
onRunEvent: H,
|
|
214
219
|
isLoading: b,
|
|
215
|
-
initTableSoureData:
|
|
216
|
-
setTableRef:
|
|
217
|
-
tableSize:
|
|
220
|
+
initTableSoureData: d,
|
|
221
|
+
setTableRef: E,
|
|
222
|
+
tableSize: F,
|
|
218
223
|
tableWidth: P,
|
|
219
|
-
tableProps:
|
|
220
|
-
tableRef:
|
|
224
|
+
tableProps: A,
|
|
225
|
+
tableRef: S
|
|
221
226
|
};
|
|
222
227
|
}
|
|
223
228
|
export {
|
|
224
|
-
|
|
229
|
+
ht as useTableWidget
|
|
225
230
|
};
|
|
226
231
|
//# sourceMappingURL=useTableWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableWidget.js","sources":["../../../../../../src/components/form-designer/form-widget/container-widget/useTableWidget.ts"],"sourcesContent":["import { computed, Ref, h, ref } from 'vue';\nimport { VxeGridInstance } from 'vxe-table';\nimport { cloneDeep, isArray, omit } from 'lodash-es';\nimport ActionButtonListRender from '@/components/public/ActionButtonListRender.vue';\n\nimport { useI18n } from '@/utils/i18n';\nimport { WidgetProps } from './useContainerWidget';\nimport {\n tranformAntTableColumnToVxetableColumn,\n tranformAntSizzVxetableSize,\n ImeTableProps,\n useExecFunction,\n TpfDelConfirm\n} from 'tmgc2-share';\nimport { useDataHttp } from '@/hooks/useDataHttp';\nimport { message } from 'ant-design-vue';\ntype useTableWidgetProps = {\n props: WidgetProps;\n fieldModel: Ref<any>;\n};\n\nexport function useTableWidget<T>({ props, fieldModel }: useTableWidgetProps) {\n const tableRef = ref<VxeGridInstance>();\n const isLoading = ref(false);\n const { widget } = props;\n const { i18nt } = useI18n();\n const { executeFunction, context } = useExecFunction();\n const { loadataSource, setPagination, getPagination, pagintion } = useDataHttp({\n props\n });\n\n const columns = computed(() => {\n const leftFixedColumns: any[] = [];\n const optins = widget?.options || {};\n const { rowSelection, showIndex, tableColumns = [] } = widget?.options ?? {};\n if (rowSelection?.hasRowSelection) {\n leftFixedColumns.push({\n title: rowSelection.columnTitle,\n width: rowSelection.columnWidth,\n align: 'left',\n fixed: 'left',\n dataIndex: 'checkbox',\n type: 'checkbox'\n });\n }\n if (showIndex) {\n leftFixedColumns.push({\n title: i18nt('designer.setting.seq'),\n align: 'left',\n width: 90,\n fixed: 'left',\n maxWidth: 100,\n dataIndex: 'seq',\n resizable: true,\n type: 'seq'\n });\n }\n\n const centerColumns = tableColumns\n .filter(item => item.show)\n .map(item => {\n // titleSuffix: ),\n return {\n ...item,\n ...handleColumnItem(item),\n titleSuffix: item.titleSuffix ? { content: item.titleSuffixContent } : false\n };\n });\n const rightFixedColumns: any[] = [];\n if (optins.showButtonsColumn) {\n const operationButtons = optins.operationButtons ?? [];\n rightFixedColumns.push({\n fixed: 'right',\n align: 'center',\n title: optins.buttonsColumnTitle,\n width: optins.buttonsColumnWidth,\n slots: {\n default: scope => {\n return h(ActionButtonListRender, {\n buttonList: operationButtons,\n flex: 'center',\n scope: scope,\n ctx: context.value,\n onClick: (e: Event) => {\n e.stopPropagation();\n }\n });\n }\n }\n });\n }\n\n // 把customRender渲染成 bodyCell 插槽\n const _columns = [...leftFixedColumns, ...centerColumns, ...rightFixedColumns];\n\n return tranformAntTableColumnToVxetableColumn(_columns);\n });\n\n // 处理列配置\n const handleColumnItem = item => {\n const res = omit(item, ['customRender']);\n const customRenderFn = item.customRender;\n item.minWidth = 50;\n item.maxWidth = 1200;\n if (item.isAutoWidth) {\n item.width = null;\n delete item.width;\n } else {\n item.width = isNaN(Number(item.width)) ? item.width : Number(item.width);\n }\n if (!customRenderFn) return item;\n\n return {\n ...res,\n slots: {\n default(scope) {\n const com = executeFunction({\n source: props.field.options.name,\n functionBody: customRenderFn,\n params: {\n index: scope.rowIndex,\n record: scope.row,\n ...scope\n },\n errorCallback: error => {\n console.error('Custom render error:', error);\n }\n });\n\n return h(\n 'div',\n {\n onClick: (e: Event) => {\n e.stopPropagation();\n }\n },\n [com]\n );\n }\n }\n };\n };\n\n const tableWidth = computed(() => widget.options.tableWidth);\n const tableSize = computed(() => widget.options.tableSize);\n\n const onSortChange = () => {\n initTableSoureData();\n };\n\n const rowKey = computed(() => widget.options.rowKey);\n\n const tableProps = computed<ImeTableProps>(() => {\n const {\n tableSize,\n rowKey,\n tableHeight = 300,\n border = false,\n lineHeight = 50,\n colorRow = false\n } = widget.options;\n\n return {\n showPagination: widget.options.showPagination,\n size: tranformAntSizzVxetableSize(tableSize),\n height: tableHeight,\n border: border ?? false,\n data: fieldModel.value || [],\n columns: columns.value,\n sortConfig: {\n trigger: 'cell',\n remote: true,\n orders: ['ascend', 'descend', null]\n },\n rowConfig: {\n keyField: rowKey,\n isCurrent: colorRow,\n isHover: true\n },\n checkboxConfig: {\n isShiftKey: true,\n checkMethod: data => {\n return executeFunction({\n functionBody: widget.options.rowSelection?.checkMethod,\n params: data,\n keys: ['row']\n });\n }\n },\n cellConfig: {\n height: lineHeight\n }\n } as ImeTableProps;\n });\n\n const setTableRef = _tableRef => {\n tableRef.value = _tableRef;\n };\n\n const initTableSoureData = async () => {\n if (props.field.options.dsEnabled) {\n isLoading.value = true;\n try {\n const data = await loadataSource();\n const tableData = data.list || [];\n fieldModel.value = cloneDeep(tableData || []);\n setPagination(data);\n } catch (error) {\n console.error(error);\n }\n } else {\n fieldModel.value = widget.options.dataSource || [];\n setPagination({\n total: widget.options.dataSource?.length || 0\n });\n }\n isLoading.value = false;\n };\n\n type EventType = 'onDblclick' | 'onMouseenter' | 'onMouseleave' | 'onClick';\n const onRunEvent = ({ row, $event }: any, type: EventType) => {\n executeFunction({\n functionBody: widget.options.customRow[type],\n params: [row, $event],\n keys: ['record', 'event']\n });\n };\n\n const setTableData = (data: T[]) => {\n setValue(data);\n };\n\n /**\n * 加载表格数据\n * @deprecated 兼容老 API\n */\n const loadDataTableDataSource = () => {\n initTableSoureData();\n };\n\n const handleTableChange = (pagination, filters, sorter, currentDataSource) => {\n const fn = widget.options.onTableChange;\n if (fn) {\n executeFunction({\n functionBody: fn,\n params: {\n pagination,\n filters,\n sorter,\n currentDataSource: currentDataSource\n },\n keys: ['pagination', 'filters', 'sorter', 'currentDataSource']\n });\n }\n };\n\n // 选中 checkbox回调\n const onCheckboxChange = (selectedRowInfo: any) => {\n executeFunction({\n functionBody: widget.options.rowSelection.onChange,\n keys: ['selectedRowKeys', 'selectedRows'],\n params: selectedRowInfo\n });\n };\n\n const getDataSource = () => {\n return fieldModel.value;\n };\n\n const insertTableValue = (data: T) => {\n if (!fieldModel.value) {\n fieldModel.value = [];\n }\n fieldModel.value.push(cloneDeep(data));\n };\n\n const setValue = (data: T[]) => {\n if (!isArray(data)) {\n return console.error('表格数据类型错误');\n }\n fieldModel.value = cloneDeep(data);\n };\n\n const getTableColumns = () => {\n return props.field.options.tableColumns;\n };\n\n const setTableColumns = (data: any[]) => {\n props.field.options.tableColumns = data;\n };\n\n const delSelectRow = async delKeys => {\n if (!delKeys.length) return;\n try {\n await TpfDelConfirm({ content: i18nt('确定删除选中的数据吗') });\n const newList = fieldModel.value.filter(item => !delKeys?.includes(item[rowKey.value]));\n setValue(newList);\n message.success(i18nt('操作成功'));\n } catch {}\n };\n\n const tableDefinExpoed = {\n delSelectRow,\n getTableColumns,\n setTableColumns,\n setValue,\n insertTableValue,\n setPagination,\n getDataSource,\n getPagination\n };\n\n return {\n rowKey,\n onCheckboxChange,\n tableDefinExpoed,\n onSortChange,\n pagintion,\n setPagination,\n getPagination,\n handleTableChange,\n setTableData,\n loadDataTableDataSource,\n showPagination: computed(() => !!props.field.options.showPagination),\n onRunEvent,\n isLoading,\n initTableSoureData,\n setTableRef,\n tableSize,\n tableWidth,\n tableProps,\n tableRef\n };\n}\n"],"names":["useTableWidget","props","fieldModel","tableRef","ref","isLoading","widget","i18nt","useI18n","executeFunction","context","useExecFunction","loadataSource","setPagination","getPagination","pagintion","useDataHttp","columns","computed","leftFixedColumns","optins","rowSelection","showIndex","tableColumns","centerColumns","item","handleColumnItem","rightFixedColumns","operationButtons","scope","h","ActionButtonListRender","e","_columns","tranformAntTableColumnToVxetableColumn","res","omit","customRenderFn","com","error","tableWidth","tableSize","onSortChange","initTableSoureData","rowKey","tableProps","tableHeight","border","lineHeight","colorRow","tranformAntSizzVxetableSize","data","_a","setTableRef","_tableRef","tableData","cloneDeep","onRunEvent","row","$event","type","setTableData","setValue","loadDataTableDataSource","handleTableChange","pagination","filters","sorter","currentDataSource","fn","onCheckboxChange","selectedRowInfo","getDataSource","insertTableValue","isArray","delKeys","TpfDelConfirm","newList","message"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableWidget.js","sources":["../../../../../../src/components/form-designer/form-widget/container-widget/useTableWidget.ts"],"sourcesContent":["import { computed, Ref, h, ref, watchEffect, watch } from 'vue';\nimport { VxeGridInstance } from 'vxe-table';\nimport { cloneDeep, isArray, omit } from 'lodash-es';\nimport ActionButtonListRender from '@/components/public/ActionButtonListRender.vue';\n\nimport { useI18n } from '@/utils/i18n';\nimport { WidgetProps } from './useContainerWidget';\nimport {\n tranformAntTableColumnToVxetableColumn,\n tranformAntSizzVxetableSize,\n ImeTableProps,\n useExecFunction,\n TpfDelConfirm\n} from 'tmgc2-share';\nimport { useDataHttp } from '@/hooks/useDataHttp';\nimport { message, Space } from 'ant-design-vue';\ntype useTableWidgetProps = {\n props: WidgetProps;\n fieldModel: Ref<any>;\n};\n\nexport function useTableWidget<T>({ props, fieldModel }: useTableWidgetProps) {\n const tableRef = ref<VxeGridInstance>();\n const isLoading = ref(false);\n const { widget } = props;\n const { i18nt } = useI18n();\n const { executeFunction, context } = useExecFunction();\n const { loadataSource, setPagination, getPagination, pagintion } = useDataHttp({\n props\n });\n\n const columns = computed(() => {\n const leftFixedColumns: any[] = [];\n const optins = widget?.options || {};\n const { rowSelection, showIndex, tableColumns = [] } = widget?.options ?? {};\n if (rowSelection?.hasRowSelection) {\n leftFixedColumns.push({\n title: rowSelection.columnTitle,\n width: rowSelection.columnWidth,\n align: 'left',\n fixed: 'left',\n dataIndex: 'checkbox',\n type: 'checkbox'\n });\n }\n if (showIndex) {\n leftFixedColumns.push({\n title: i18nt('designer.setting.seq'),\n align: 'left',\n width: 90,\n fixed: 'left',\n maxWidth: 100,\n dataIndex: 'seq',\n resizable: true,\n type: 'seq'\n });\n }\n\n const centerColumns = tableColumns\n .filter(item => item.show)\n .map(item => {\n // titleSuffix: ),\n return {\n ...item,\n ...handleColumnItem(item),\n titleSuffix: item.titleSuffix ? { content: item.titleSuffixContent } : false\n };\n });\n const rightFixedColumns: any[] = [];\n if (optins.showButtonsColumn) {\n const operationButtons = optins.operationButtons ?? [];\n rightFixedColumns.push({\n fixed: 'right',\n align: 'center',\n title: optins.buttonsColumnTitle,\n width: optins.buttonsColumnWidth,\n slots: {\n default: scope => {\n return h(ActionButtonListRender, {\n buttonList: operationButtons,\n flex: 'center',\n scope: scope,\n ctx: context.value,\n onClick: (e: Event) => {\n e.stopPropagation();\n }\n });\n }\n }\n });\n }\n\n // 把customRender渲染成 bodyCell 插槽\n const _columns = [...leftFixedColumns, ...centerColumns, ...rightFixedColumns];\n\n return tranformAntTableColumnToVxetableColumn(_columns);\n });\n\n // 处理列配置\n const handleColumnItem = item => {\n const res = omit(item, ['customRender']);\n const customRenderFn = item.customRender;\n item.minWidth = 50;\n item.maxWidth = 1200;\n if (item.isAutoWidth) {\n item.width = null;\n delete item.width;\n } else {\n item.width = isNaN(Number(item.width)) ? item.width : Number(item.width);\n }\n if (!customRenderFn) return item;\n\n return {\n ...res,\n slots: {\n default(scope) {\n const Com = executeFunction({\n source: props.field.options.name,\n functionBody: customRenderFn,\n params: {\n index: scope.rowIndex,\n record: scope.row,\n ...scope\n },\n errorCallback: error => {\n console.error('Custom render error:', error);\n }\n });\n return h(\n Space,\n {\n align: 'center',\n size: 5,\n onClick: (e: Event) => {\n e.stopPropagation();\n }\n },\n Com\n );\n }\n }\n };\n };\n\n const tableWidth = computed(() => widget.options.tableWidth);\n const tableSize = computed(() => widget.options.tableSize);\n\n const onSortChange = () => {\n initTableSoureData();\n };\n\n const rowKey = computed(() => widget.options.rowKey);\n\n const tableProps = computed<ImeTableProps>(() => {\n const {\n tableSize,\n rowKey,\n tableHeight = 300,\n border = false,\n lineHeight = 50,\n colorRow = false,\n showPagination = true\n } = widget.options;\n\n return {\n showPagination,\n size: tranformAntSizzVxetableSize(tableSize),\n height: tableHeight,\n border: border ?? false,\n data: fieldModel.value || [],\n columns: columns.value,\n sortConfig: {\n trigger: 'cell',\n remote: true,\n orders: ['ascend', 'descend', null]\n },\n rowConfig: {\n keyField: rowKey,\n isCurrent: colorRow,\n isHover: true\n },\n checkboxConfig: {\n isShiftKey: true,\n checkMethod: data => {\n return executeFunction({\n functionBody: widget.options.rowSelection?.checkMethod,\n params: data,\n keys: ['row']\n });\n }\n },\n cellConfig: {\n height: lineHeight\n }\n } as ImeTableProps;\n });\n\n const setTableRef = _tableRef => {\n tableRef.value = _tableRef;\n };\n\n const initTableSoureData = async () => {\n if (props.field.options.dsEnabled) {\n isLoading.value = true;\n try {\n const data = await loadataSource();\n const tableData = data.list || [];\n fieldModel.value = cloneDeep(tableData || []);\n setPagination(data);\n } catch (error) {\n console.error(error);\n }\n } else {\n fieldModel.value = widget.options.dataSource || [];\n setPagination({\n total: widget.options.dataSource?.length || 0\n });\n }\n isLoading.value = false;\n };\n\n type EventType = 'onDblclick' | 'onMouseenter' | 'onMouseleave' | 'onClick';\n const onRunEvent = ({ row, $event }: any, type: EventType) => {\n executeFunction({\n functionBody: widget.options.customRow[type],\n params: [row, $event],\n keys: ['record', 'event']\n });\n };\n\n const setTableData = (data: T[]) => {\n setValue(data);\n };\n\n const handleTableChange = ({ sorts }) => {\n const fn = widget.options.onTableChange;\n if (fn) {\n executeFunction({\n functionBody: fn,\n params: {\n pagination: getPagination(),\n currentDataSource: getDataSource(),\n sorter: sorts\n },\n keys: ['pagination', 'sorter', 'currentDataSource']\n });\n }\n };\n\n // 选中 checkbox回调\n const onCheckboxChange = (selectedRowInfo: any) => {\n executeFunction({\n functionBody: widget.options.rowSelection.onChange,\n keys: ['selectedRowKeys', 'selectedRows'],\n params: selectedRowInfo\n });\n };\n\n const getDataSource = () => {\n return fieldModel.value;\n };\n\n const insertTableValue = (data: T) => {\n if (!fieldModel.value) {\n fieldModel.value = [];\n }\n fieldModel.value.push(cloneDeep(data));\n };\n\n const setValue = (data: T[]) => {\n if (!isArray(data)) {\n return console.error('表格数据类型错误');\n }\n fieldModel.value = cloneDeep(data);\n };\n\n const getTableColumns = () => {\n return props.field.options.tableColumns;\n };\n\n const setTableColumns = (data: any[]) => {\n props.field.options.tableColumns = data;\n };\n\n const delSelectRow = async delKeys => {\n if (!delKeys.length) return;\n try {\n await TpfDelConfirm({ content: i18nt('确定删除选中的数据吗') });\n const newList = fieldModel.value.filter(item => !delKeys?.includes(item[rowKey.value]));\n setValue(newList);\n message.success(i18nt('操作成功'));\n } catch {}\n };\n\n const tableDefinExpoed = {\n delSelectRow,\n getTableColumns,\n setTableColumns,\n setValue,\n insertTableValue,\n setPagination,\n getDataSource,\n getPagination,\n initTableSoureData\n };\n\n watch(\n () => props.field.options.dsEnabled,\n () => {\n initTableSoureData();\n }\n );\n\n return {\n rowKey,\n onCheckboxChange,\n tableDefinExpoed,\n onSortChange,\n pagintion,\n setPagination,\n getPagination,\n handleTableChange,\n setTableData,\n showPagination: computed(() => !!props.field.options.showPagination),\n onRunEvent,\n isLoading,\n initTableSoureData,\n setTableRef,\n tableSize,\n tableWidth,\n tableProps,\n tableRef\n };\n}\n"],"names":["useTableWidget","props","fieldModel","tableRef","ref","isLoading","widget","i18nt","useI18n","executeFunction","context","useExecFunction","loadataSource","setPagination","getPagination","pagintion","useDataHttp","columns","computed","leftFixedColumns","optins","rowSelection","showIndex","tableColumns","centerColumns","item","handleColumnItem","rightFixedColumns","operationButtons","scope","h","ActionButtonListRender","e","_columns","tranformAntTableColumnToVxetableColumn","res","omit","customRenderFn","Com","error","Space","tableWidth","tableSize","onSortChange","initTableSoureData","rowKey","tableProps","tableHeight","border","lineHeight","colorRow","showPagination","tranformAntSizzVxetableSize","data","_a","setTableRef","_tableRef","tableData","cloneDeep","onRunEvent","row","$event","type","setTableData","setValue","handleTableChange","sorts","fn","getDataSource","onCheckboxChange","selectedRowInfo","insertTableValue","isArray","tableDefinExpoed","delKeys","TpfDelConfirm","newList","message","watch"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import o from "./vf-dialog-widget.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const i = /* @__PURE__ */ t(o, [["__scopeId", "data-v-651578b1"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
i as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=vf-dialog-widget.vue.js.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import { useAppRef as
|
|
4
|
-
import { ComponentNameEnum as
|
|
5
|
-
|
|
1
|
+
import { defineComponent as l, createBlock as p, openBlock as r, normalizeProps as c, guardReactiveProps as f, withCtx as g, createElementBlock as u, createElementVNode as e, toDisplayString as w, createVNode as h } from "vue";
|
|
2
|
+
import C from "./container-wrapper.vue.js";
|
|
3
|
+
import { useAppRef as k } from "../../useAppRef.js";
|
|
4
|
+
import { ComponentNameEnum as L, ContainerTypeEnum as _ } from "../../../../constants/WidgetTypeEnum.js";
|
|
5
|
+
import R from "../../../public/ActionButtonListRender.vue.js";
|
|
6
|
+
const b = { class: "dialog-title" }, P = { class: "right-btns" }, W = /* @__PURE__ */ l({
|
|
6
7
|
name: _.VfDialogWidget,
|
|
7
|
-
componentName:
|
|
8
|
+
componentName: L.VfDialogWidget,
|
|
8
9
|
__name: "vf-dialog-widget",
|
|
9
10
|
props: {
|
|
10
11
|
widget: {},
|
|
@@ -15,22 +16,27 @@ const P = { class: "dialog-title" }, W = /* @__PURE__ */ p({
|
|
|
15
16
|
subFormRowIndex: {},
|
|
16
17
|
subFormRowId: {}
|
|
17
18
|
},
|
|
18
|
-
setup(
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
19
|
+
setup(s) {
|
|
20
|
+
const o = s, { initRefList: a } = k(), d = () => {
|
|
21
|
+
const t = new URL(window.location.href), { title: i, formCode: m, formId: n } = o.widget.options;
|
|
22
|
+
n && (t.searchParams.set("formCode", m), t.searchParams.set("remark", i), t.searchParams.set("id", n), window.open(t.href));
|
|
22
23
|
};
|
|
23
|
-
return
|
|
24
|
+
return a(), (t, i) => (r(), p(C, c(f(o)), {
|
|
24
25
|
default: g(() => [
|
|
25
|
-
(
|
|
26
|
+
(r(), u("div", {
|
|
26
27
|
class: "dialog-container",
|
|
27
|
-
key:
|
|
28
|
+
key: t.widget.id
|
|
28
29
|
}, [
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
e("div", b, [
|
|
31
|
+
e("span", {
|
|
31
32
|
class: "tpf-link",
|
|
32
33
|
onClick: d
|
|
33
|
-
},
|
|
34
|
+
}, w(t.widget.options.title), 1)
|
|
35
|
+
]),
|
|
36
|
+
e("div", P, [
|
|
37
|
+
h(R, {
|
|
38
|
+
buttonList: t.widget.options.buttonList || []
|
|
39
|
+
}, null, 8, ["buttonList"])
|
|
34
40
|
])
|
|
35
41
|
]))
|
|
36
42
|
]),
|