feat: restore lightweight control center

This commit is contained in:
2026-06-13 09:04:53 +08:00
parent 2d902cd01e
commit ff9dcdd4e1
7 changed files with 41 additions and 12 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ export const overridesPreferences = defineOverridesPreferences({
enablePreferences: false,
accessMode: 'mixed',
authPageLayout: 'panel-center',
defaultHomePath: '/ai-platform/agent',
defaultHomePath: '/page-render/main_home',
layout: 'header-sidebar-nav',
preferencesButtonPosition: 'header',
},
+1
View File
@@ -168,6 +168,7 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) {
'../views/_core/fallback/**/*.vue',
'../views/_core/file-preview/index.vue',
'../views/_core/menu/index.vue',
'../views/_core/page-render/index.vue',
'../views/_core/permission/index.vue',
'../views/_core/role/index.vue',
'../views/_core/user/index.vue',
@@ -8,6 +8,7 @@ export const LIGHT_MENU_NAMES = new Set([
'AnnouncementList',
'AnnouncementManage',
'KnowledgeBase',
'PageRenderMainHome',
'SystemManagement',
'SystemMenu',
'SystemPermission',
@@ -23,6 +24,7 @@ const LIGHT_ROUTE_PATH_PREFIXES = [
'/ai-platform/workflow',
'/ai-platform/workflow-runs',
'/message/announcement',
'/page-render/main_home',
'/system/menu',
'/system/new-permission',
'/system/role',
@@ -5,7 +5,16 @@ const routes: RouteRecordRaw[] = [
meta: { hideInMenu: true },
name: 'ControlCenterLegacyRedirect',
path: '/control-center',
redirect: '/ai-platform/agent',
redirect: '/page-render/main_home',
},
{
meta: {
hideInMenu: true,
title: '控制中心',
},
name: 'PageRenderMainHome',
path: '/page-render/main_home',
component: () => import('#/views/_core/page-render/index.vue'),
},
{
meta: { hideInMenu: true },
@@ -3,7 +3,6 @@ import { preferences } from '@vben/preferences';
const LEGACY_HOME_PATTERNS = [
/^\/app\/[^/]+\/page-render\//,
/^\/app\/[^/]+\/form-render\//,
/^\/page-render\//,
/^\/form-render\//,
];
@@ -1,20 +1,27 @@
<script lang="ts" setup>
import { onMounted, ref, watch } from 'vue';
import type { Component } from 'vue';
import { computed, defineAsyncComponent, onMounted, ref, watch } from 'vue';
import { useRoute } from 'vue-router';
import { ElEmpty, ElMessage, ElScrollbar } from 'element-plus';
import { getPageByCodeApi } from '#/api/online-dev/page-manager';
import DashboardRenderer from '#/components/dashboard-design/DashboardRenderer.vue';
defineOptions({ name: 'PageRender' });
const route = useRoute();
const DashboardRenderer = defineAsyncComponent(
() => import('#/components/dashboard-design/DashboardRenderer.vue'),
);
const loading = ref(false);
const pageConfig = ref<string>('');
const pageName = ref('');
const pageCode = ref('');
const builtinPages: Record<string, Component> = {
main_home: defineAsyncComponent(() => import('./AiAgentHome.vue')),
};
const currentBuiltinPage = computed(() => builtinPages[pageCode.value]);
// 获取页面编码
function getPageCode(): string {
// 优先从 query 获取
@@ -46,9 +53,19 @@ async function loadPageData() {
}
pageCode.value = code;
if (builtinPages[code]) {
pageName.value = '控制中心';
pageConfig.value = '';
loading.value = false;
return;
}
loading.value = true;
try {
const { getPageByCodeApi } = await import(
'#/api/online-dev/page-manager'
);
const page = await getPageByCodeApi(code);
pageName.value = page.name;
pageConfig.value =
@@ -78,7 +95,8 @@ watch(
<template>
<ElScrollbar class="rounded-[8px] py-3">
<div v-loading="loading" class="h-[calc(100vh-120px)] rounded-[8px] px-3">
<DashboardRenderer v-if="pageConfig" :config="pageConfig" />
<component :is="currentBuiltinPage" v-if="currentBuiltinPage" />
<DashboardRenderer v-else-if="pageConfig" :config="pageConfig" />
<ElEmpty v-else-if="!loading" description="暂无页面配置" />
</div>
</ElScrollbar>