From e0298b4cd3e950c299b1ce19968331f3e3728e44 Mon Sep 17 00:00:00 2001 From: suguangxu <274928232@qq.com> Date: Mon, 12 May 2025 11:55:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=8F=AF=E4=B8=AA=E6=80=A7?= =?UTF-8?q?=E5=8C=96=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= =?UTF-8?q?=EF=BC=9A=201.=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8-?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E5=88=97=E8=A1=A8=E4=B8=AD=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E7=9A=84=E4=B8=AA=E6=80=A7=E5=8C=96=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=202.useFormConfig.ts-=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AF=B9=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=94=99=E8=AF=AF=E7=9A=84=E6=8D=95=E8=8E=B7=E5=B9=B6?= =?UTF-8?q?=E5=BC=B9=E5=87=BA=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/web/useFormConfig.ts | 92 +++++++++++++++++++++-------- src/utils/helper/generatorHelper.ts | 16 ++++- 2 files changed, 81 insertions(+), 27 deletions(-) diff --git a/src/hooks/web/useFormConfig.ts b/src/hooks/web/useFormConfig.ts index ef97409..be1f517 100644 --- a/src/hooks/web/useFormConfig.ts +++ b/src/hooks/web/useFormConfig.ts @@ -3,41 +3,85 @@ import { FormSchema } from '/@/components/Form'; import { BasicColumn } from "/@/components/Table"; import { getFormTemplateUsingCache } from '/@/api/form/design'; import { deepMerge } from '/@/utils'; +import { useI18n } from '/@/hooks/web/useI18n'; +import { useMessage } from '/@/hooks/web/useMessage'; - +const { t } = useI18n(); +const { notification } = useMessage(); export function useFormConfig() { async function mergeFormSchemas(formSchema: FormSchema[],formId:String){ - const formProps=await queryConfig(formId,'formProps'); - let fschemas=formProps?.schemas; - if(fschemas&&fschemas.length>0){ - return deepMerge(formSchema,fschemas); - }else{ - return formSchema; + try{ + const formProps=await queryConfig(formId,'formProps'); + let fschemas=formProps?.schemas; + if(fschemas&&fschemas.length>0){ + return deepMerge(formSchema,fschemas); + }else{ + return formSchema; + } + }catch(e){ + notification.error({ + message: t('提示'), + description: '解析表单渲染覆盖配置出错[解析formProps发生异常]', + }); + return []; } } async function mergeColumns(columns: BasicColumn[],formId:String){ - const cols=await queryConfig(formId,'columns'); - if(cols&&cols.length>0){ - const filteredCol = cols.filter(colItem => - columns.some(column => column.dataIndex === colItem.dataIndex) - ); - return filteredCol; - }else{ - return columns; + try{ + const cols=await queryConfig(formId,'columns'); + if(cols&&cols.length>0){ + const filteredCol = cols.filter(colItem => + columns.some(column => column.dataIndex === colItem.dataIndex) + ); + return filteredCol; + }else{ + return columns; + } + }catch(e){ + notification.error({ + message: t('提示'), + description: '解析表单渲染覆盖配置出错[解析columns发生异常]', + }); + return []; } } async function mergeSearchFormSchema(searchFormSchema: FormSchema[],formId:String){ - const sFormSchema=await queryConfig(formId,'searchFormSchema'); - if(sFormSchema&&sFormSchema.length>0){ - const filteredsFormSchema = sFormSchema.filter(sItem => - searchFormSchema.some( searchItem => searchItem.field === sItem.field) - ); - return filteredsFormSchema; + try{ + const sFormSchema=await queryConfig(formId,'searchFormSchema'); + if(sFormSchema&&sFormSchema.length>0){ + const filteredsFormSchema = sFormSchema.filter(sItem => + searchFormSchema.some( searchItem => searchItem.field === sItem.field) + ); + return filteredsFormSchema; + }else{ + return searchFormSchema; + } + }catch(e){ + notification.error({ + message: t('提示'), + description: '解析表单渲染覆盖配置出错[解析searchFormSchema发生异常]', + }); + return []; + } + } + + async function mergeButtons(buttons,formId:String){ + try{ + const btns=await queryConfig(formId,'buttons'); + if(btns&&btns.length>0){ + return btns; }else{ - return searchFormSchema; + return buttons; + } + }catch(e){ + notification.error({ + message: t('提示'), + description: '解析表单渲染覆盖配置出错[解析buttons发生异常]', + }); + return[]; } } @@ -53,7 +97,6 @@ export function useFormConfig() { if(varName==configName) { try { const value = new Function(`return ${cleanCode}`)(); - // console.log(value); return value; } catch (e) { console.error(`Failed to parse ${varName}:`, e); @@ -67,6 +110,7 @@ export function useFormConfig() { return { mergeFormSchemas, mergeColumns, - mergeSearchFormSchema + mergeSearchFormSchema, + mergeButtons }; } diff --git a/src/utils/helper/generatorHelper.ts b/src/utils/helper/generatorHelper.ts index 093fd07..3272204 100644 --- a/src/utils/helper/generatorHelper.ts +++ b/src/utils/helper/generatorHelper.ts @@ -755,7 +755,7 @@ ${hasTemplatePrint ? ' reactive ' : ''} const { t } = useI18n(); defineEmits(['register']); const { filterColumnAuth, filterButtonAuth } = usePermission(); - const { mergeColumns,mergeSearchFormSchema } = useFormConfig(); + const { mergeColumns,mergeSearchFormSchema,mergeButtons } = useFormConfig(); const filterColumns = cloneDeep(filterColumnAuth(columns)); const customConfigColums =ref(filterColumns); @@ -772,11 +772,13 @@ ${hasTemplatePrint ? ' reactive ' : ''} }` : '' } + + //所有按钮 + const buttons = ref([{"name":"新增","code":"add","icon":"ant-design:plus-outlined","isDefault":true,"isUse":true,"type":"primary"},{"name":"编辑","code":"edit","icon":"ant-design:form-outlined","isDefault":true,"isUse":true},{"name":"刷新","code":"refresh","icon":"ant-design:reload-outlined","isDefault":true,"isUse":true},{"name":"删除","code":"delete","icon":"ant-design:delete-outlined","isDefault":true,"isUse":true}]); //展示在列表内的按钮 const actionButtons = ref(['view', 'edit', 'copyData', 'delete', 'startwork','flowRecord']); const buttonConfigs = computed(()=>{ - const list = ${JSON.stringify(model.listConfig.buttonConfigs.filter((x) => x.isUse))} - return filterButtonAuth(list); + return filterButtonAuth(buttons.value); }) const tableButtonConfig = computed(() => { @@ -1453,6 +1455,7 @@ ${hasTemplatePrint ? ' reactive ' : ''} } setCustomConfigColumns(); setCustomSearchFormSchema(); + setCustomButtons(); }); onUnmounted(() => { if (schemaIdComputedRef.value) { @@ -1614,6 +1617,13 @@ ${hasTemplatePrint ? ' reactive ' : ''} customSearchFormSchema.value=cols; } }; + + async function setCustomButtons(){ + if (formConfig.useCustomConfig) { + const btns= await mergeButtons(buttons.value,currentRoute.value.meta.formId); + buttons.value=btns; + } + };