From c52ab8fb3abddb6f7b6bd4bcbc3de0e7e5dd548d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?= <908705107@qq.com> Date: Mon, 8 Jun 2026 21:18:16 +0800 Subject: [PATCH] Trim online menu defaults from lightweight admin --- web/apps/web-ele/src/router/guard.ts | 2 +- web/apps/web-ele/src/views/_core/menu/data.ts | 3 - .../views/_core/menu/modules/menu-form.vue | 227 +----------------- .../ui-config/modules/app-settings-form.vue | 2 +- 4 files changed, 10 insertions(+), 224 deletions(-) diff --git a/web/apps/web-ele/src/router/guard.ts b/web/apps/web-ele/src/router/guard.ts index 6166c5f..b0b703b 100644 --- a/web/apps/web-ele/src/router/guard.ts +++ b/web/apps/web-ele/src/router/guard.ts @@ -203,7 +203,7 @@ function setupAccessGuard(router: Router) { if (to.path === subAppRootPath) { const defaultHome = - preferences.app.defaultHomePath || '/page-render/main_home'; + preferences.app.defaultHomePath || '/control-center'; // 确保路径包含子应用前缀 const subAppTargetPath = defaultHome.startsWith(subAppRootPath) ? defaultHome diff --git a/web/apps/web-ele/src/views/_core/menu/data.ts b/web/apps/web-ele/src/views/_core/menu/data.ts index 1606fbd..b2cb0f1 100644 --- a/web/apps/web-ele/src/views/_core/menu/data.ts +++ b/web/apps/web-ele/src/views/_core/menu/data.ts @@ -15,9 +15,6 @@ export function getMenuTypeOptions() { value: 'embedded', }, { type: 'warning', label: $t('menu.typeLink'), value: 'link' }, - { type: 'primary', label: $t('menu.typeOnlineForm'), value: 'online_form' }, - { type: 'primary', label: $t('menu.typeOnlinePage'), value: 'online_page' }, - { type: 'primary', label: $t('menu.typeOnlineReport'), value: 'online_report' }, { type: 'success', label: $t('menu.typeAgent'), value: 'agent' }, ]; } diff --git a/web/apps/web-ele/src/views/_core/menu/modules/menu-form.vue b/web/apps/web-ele/src/views/_core/menu/modules/menu-form.vue index 54a9db0..bc0a1b9 100644 --- a/web/apps/web-ele/src/views/_core/menu/modules/menu-form.vue +++ b/web/apps/web-ele/src/views/_core/menu/modules/menu-form.vue @@ -26,8 +26,6 @@ import { getAllMenuTreeApi, updateMenuApi, } from '#/api/core/menu'; -import { getPageListApi } from '#/api/online-dev/page-manager'; -import { getReportListApi } from '#/api/online-dev/report-manager'; import { componentKeys } from '#/router/routes'; import { useAppContextStore } from '#/store/app-context'; @@ -81,46 +79,7 @@ async function isMenuPathExists(path: string, excludeId?: string) { return result.exists; } -const ONLINE_COMPONENT_MAP: Record = { - online_form: 'online-dev/form-render/index', - online_page: 'online-dev/page-render/index', - online_report: 'online-dev/report-render/index', -}; - -function resolvePageCode(menuData: Record): string | undefined { - return ( - menuData.query?.pageCode ?? - menuData.path?.match(/^\/page-render\/([^/]+)$/)?.[1] - ); -} - -function resolveReportCode(menuData: Record): string | undefined { - return ( - menuData.query?.reportCode ?? - menuData.path?.match(/^\/report-render\/([^/]+)$/)?.[1] - ); -} - -function applyOnlineMenuTypeFields(menuData: Record) { - switch (menuData.type) { - case 'online_form': { - menuData.formCode = menuData.query?.formCode; - break; - } - case 'online_page': { - menuData.pageCode = resolvePageCode(menuData); - break; - } - case 'online_report': { - menuData.reportCode = resolveReportCode(menuData); - break; - } - // No default - } - if (ONLINE_COMPONENT_MAP[menuData.type]) { - menuData.onlineComponentPath = - menuData.component || ONLINE_COMPONENT_MAP[menuData.type]; - } +function normalizeMenuFormFields(menuData: Record) { return menuData; } @@ -251,9 +210,6 @@ function getFormSchema( 'catalog', 'embedded', 'menu', - 'online_form', - 'online_page', - 'online_report', ].includes(values.type); }, triggerFields: ['type'], @@ -335,9 +291,6 @@ function getFormSchema( 'embedded', 'link', 'menu', - 'online_form', - 'online_page', - 'online_report', ].includes(values.type); }, triggerFields: ['type'], @@ -358,9 +311,6 @@ function getFormSchema( 'catalog', 'embedded', 'menu', - 'online_form', - 'online_page', - 'online_report', ].includes(values.type); }, triggerFields: ['type'], @@ -389,86 +339,6 @@ function getFormSchema( fieldName: 'component', label: $t('menu.component'), }, - { - component: 'Input', - fieldName: 'formCode', - hide: true, - }, - { - component: 'ApiSelect', - componentProps: { - api: async () => { - const res = await getPageListApi({ - status: 'published', - pageSize: 100, - }); - return res.items.map((item) => ({ - label: `${item.name} (${item.code})`, - value: item.code, - })); - }, - class: 'w-full', - filterable: true, - placeholder: $t('ui.placeholder.select'), - }, - dependencies: { - rules: (values) => { - return values.type === 'online_page' ? 'required' : null; - }, - show: (values) => { - return values.type === 'online_page'; - }, - triggerFields: ['type'], - }, - fieldName: 'pageCode', - label: $t('menu.pageCode'), - }, - { - component: 'ApiSelect', - componentProps: { - api: async () => { - const res = await getReportListApi({ - pageSize: 500, - applicationId: appContextStore.currentApp?.id, - }); - return res.items.map((item) => ({ - label: `${item.name} (${item.code})`, - value: item.code, - })); - }, - class: 'w-full', - filterable: true, - placeholder: $t('ui.placeholder.select'), - }, - dependencies: { - rules: (values) => { - return values.type === 'online_report' ? 'required' : null; - }, - show: (values) => { - return values.type === 'online_report'; - }, - triggerFields: ['type'], - }, - fieldName: 'reportCode', - label: $t('menu.reportCode'), - }, - { - component: 'Input', - componentProps: { - disabled: true, - class: 'w-full', - }, - dependencies: { - show: (values) => { - return ['online_form', 'online_page', 'online_report'].includes( - values.type, - ); - }, - triggerFields: ['type'], - }, - fieldName: 'onlineComponentPath', - label: $t('menu.componentPath'), - }, { component: 'ApiSelect', componentProps: { @@ -506,29 +376,6 @@ function getFormSchema( label: $t('menu.linkSrc'), rules: z.string().url($t('ui.formRules.invalidURL')), }, - // { - // component: 'Input', - // componentProps: { - // clearable: true, - // }, - // dependencies: { - // rules: (values) => { - // return values.type === 'button' ? 'required' : null; - // }, - // show: (values) => { - // return [ - // 'catalog', - // 'embedded', - // 'menu', - // 'online_form', - // 'online_page', - // ].includes(values.type); - // }, - // triggerFields: ['type'], - // }, - // fieldName: 'authCode', - // label: $t('menu.authCode'), - // }, { component: 'RadioGroup', componentProps: { @@ -638,13 +485,7 @@ function getFormSchema( defaultValue: false, dependencies: { show: (values) => { - return [ - 'agent', - 'menu', - 'online_form', - 'online_page', - 'online_report', - ].includes(values.type); + return ['agent', 'menu'].includes(values.type); }, triggerFields: ['type'], }, @@ -664,14 +505,7 @@ function getFormSchema( defaultValue: false, dependencies: { show: (values) => { - return [ - 'agent', - 'embedded', - 'menu', - 'online_form', - 'online_page', - 'online_report', - ].includes(values.type); + return ['agent', 'embedded', 'menu'].includes(values.type); }, triggerFields: ['type'], }, @@ -771,14 +605,7 @@ function getFormSchema( defaultValue: false, dependencies: { show: (values) => { - return [ - 'agent', - 'embedded', - 'menu', - 'online_form', - 'online_page', - 'online_report', - ].includes(values.type); + return ['agent', 'embedded', 'menu'].includes(values.type); }, triggerFields: ['type'], }, @@ -798,13 +625,7 @@ function getFormSchema( defaultValue: true, dependencies: { show: (values) => { - return [ - 'agent', - 'menu', - 'online_form', - 'online_page', - 'online_report', - ].includes(values.type); + return ['agent', 'menu'].includes(values.type); }, triggerFields: ['type'], }, @@ -870,7 +691,7 @@ function onCancel() { formApi.setState({ commonConfig: { disabled: true } }); // 重新加载表单数据 if (props.menu) { - const menuData = applyOnlineMenuTypeFields({ ...props.menu }); + const menuData = normalizeMenuFormFields({ ...props.menu }); if (menuData.type === 'embedded') { (menuData as any).linkSrc = menuData.iframeSrc; } else if (menuData.type === 'link') { @@ -902,41 +723,9 @@ async function onUpdate() { break; } - case 'online_form': { - data.query = { formCode: data.formCode }; - data.component = 'online-dev/form-render/index'; - - break; - } - case 'online_page': { - data.query = { pageCode: data.pageCode }; - data.component = 'online-dev/page-render/index'; - - break; - } - case 'online_report': { - const prevQuery = formData.value?.query || {}; - data.query = { - relationId: prevQuery.relationId ?? prevQuery.templateId, - moduleId: prevQuery.moduleId ?? prevQuery.templateId, - templateId: prevQuery.templateId ?? prevQuery.relationId, - reportCode: data.reportCode, - }; - data.component = 'online-dev/report-render/index'; - if (data.reportCode) { - data.authCode = `report:${data.reportCode}:preview`; - data.path = `/report-render/${data.reportCode}`; - } - - break; - } // No default } delete data.linkSrc; - delete data.formCode; - delete data.pageCode; - delete data.reportCode; - delete data.onlineComponentPath; // 确保 parent_id 清空时发送 null 而不是 undefined if (data.parent_id === undefined || data.parent_id === '') { @@ -970,7 +759,7 @@ async function onUpdate() { function onReset() { // 重新加载原始数据 if (props.menu) { - const menuData = applyOnlineMenuTypeFields({ ...props.menu }); + const menuData = normalizeMenuFormFields({ ...props.menu }); if (menuData.type === 'embedded') { (menuData as any).linkSrc = menuData.iframeSrc; } else if (menuData.type === 'link') { @@ -986,7 +775,7 @@ watch( (newMenu) => { isEditMode.value = false; // 切换菜单时退出编辑模式 if (newMenu?.id) { - const menuData = applyOnlineMenuTypeFields({ ...newMenu }); + const menuData = normalizeMenuFormFields({ ...newMenu }); if (menuData.type === 'embedded') { (menuData as any).linkSrc = menuData.iframeSrc; } else if (menuData.type === 'link') { diff --git a/web/apps/web-ele/src/views/_core/ui-config/modules/app-settings-form.vue b/web/apps/web-ele/src/views/_core/ui-config/modules/app-settings-form.vue index beee0df..3870d66 100644 --- a/web/apps/web-ele/src/views/_core/ui-config/modules/app-settings-form.vue +++ b/web/apps/web-ele/src/views/_core/ui-config/modules/app-settings-form.vue @@ -106,7 +106,7 @@ function getDefaultConfig() { defaultHomePath: overrides.app?.defaultHomePath || preferences.app.defaultHomePath || - '/page-render/main_home', + '/control-center', enablePreferences: overrides.app?.enablePreferences ?? true, }, footer: {