fix: use ai admin dashboard home
This commit is contained in:
@@ -38,10 +38,6 @@ const widgetComponents: Record<
|
|||||||
'announcement-list': defineAsyncComponent(
|
'announcement-list': defineAsyncComponent(
|
||||||
() => import('./widgets/AnnouncementList.vue'),
|
() => import('./widgets/AnnouncementList.vue'),
|
||||||
),
|
),
|
||||||
'approval-center': defineAsyncComponent(
|
|
||||||
() => import('./widgets/ApprovalCenter.vue'),
|
|
||||||
),
|
|
||||||
'my-apps': defineAsyncComponent(() => import('./widgets/MyApps.vue')),
|
|
||||||
'notice-list': defineAsyncComponent(() => import('./widgets/NoticeList.vue')),
|
'notice-list': defineAsyncComponent(() => import('./widgets/NoticeList.vue')),
|
||||||
'quick-links': defineAsyncComponent(() => import('./widgets/QuickLinks.vue')),
|
'quick-links': defineAsyncComponent(() => import('./widgets/QuickLinks.vue')),
|
||||||
'server-monitor': defineAsyncComponent(
|
'server-monitor': defineAsyncComponent(
|
||||||
|
|||||||
@@ -0,0 +1,246 @@
|
|||||||
|
import type { DashboardConfig } from '#/components/dashboard-design';
|
||||||
|
|
||||||
|
const AI_AGENT_HOME_CODE = 'main_home';
|
||||||
|
|
||||||
|
const widgetStyle = {
|
||||||
|
backgroundColor: '',
|
||||||
|
borderColor: '',
|
||||||
|
borderRadius: 8,
|
||||||
|
borderStyle: 'solid',
|
||||||
|
borderWidth: 0,
|
||||||
|
padding: 16,
|
||||||
|
shadowBlur: 4,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
||||||
|
shadowEnabled: true,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowOffsetY: 1,
|
||||||
|
titleAlign: 'left',
|
||||||
|
titleColor: '',
|
||||||
|
titleFontSize: 14,
|
||||||
|
titleFontWeight: 'normal',
|
||||||
|
titleShow: true,
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
const aiAgentAdminHomeConfig: DashboardConfig = {
|
||||||
|
id: 'ai-agent-admin-main-home',
|
||||||
|
name: '控制中心',
|
||||||
|
columns: 12,
|
||||||
|
rowHeight: 68,
|
||||||
|
margin: [12, 12],
|
||||||
|
backgroundColor: '',
|
||||||
|
widgets: [
|
||||||
|
{
|
||||||
|
id: 'welcome',
|
||||||
|
i: 'welcome',
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
w: 9,
|
||||||
|
h: 2,
|
||||||
|
minW: 4,
|
||||||
|
minH: 2,
|
||||||
|
type: 'welcome-card',
|
||||||
|
title: '欢迎回来',
|
||||||
|
props: {
|
||||||
|
title: '欢迎回来',
|
||||||
|
subtitle: '聚焦智能体协作、流程编排、知识库和基础权限治理',
|
||||||
|
showTime: true,
|
||||||
|
showWeather: false,
|
||||||
|
},
|
||||||
|
style: widgetStyle,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'weather',
|
||||||
|
i: 'weather',
|
||||||
|
x: 9,
|
||||||
|
y: 0,
|
||||||
|
w: 3,
|
||||||
|
h: 2,
|
||||||
|
minW: 2,
|
||||||
|
minH: 2,
|
||||||
|
type: 'weather',
|
||||||
|
title: '今日天气',
|
||||||
|
props: {
|
||||||
|
title: '今日天气',
|
||||||
|
cityName: '北京',
|
||||||
|
latitude: 39.9042,
|
||||||
|
longitude: 116.4074,
|
||||||
|
autoLocate: false,
|
||||||
|
refreshInterval: 30,
|
||||||
|
},
|
||||||
|
style: widgetStyle,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ai-collaboration',
|
||||||
|
i: 'ai-collaboration',
|
||||||
|
x: 0,
|
||||||
|
y: 2,
|
||||||
|
w: 7,
|
||||||
|
h: 3,
|
||||||
|
minW: 6,
|
||||||
|
minH: 2,
|
||||||
|
type: 'quick-links',
|
||||||
|
title: 'AI 协作',
|
||||||
|
props: {
|
||||||
|
title: 'AI 协作',
|
||||||
|
columns: 4,
|
||||||
|
rows: 2,
|
||||||
|
menus: [
|
||||||
|
{
|
||||||
|
id: 'ai-agent',
|
||||||
|
title: '智能体',
|
||||||
|
icon: 'lucide:square-user',
|
||||||
|
path: '/ai-platform/agent',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ai-workflow',
|
||||||
|
title: '流程编排',
|
||||||
|
icon: 'lucide:workflow',
|
||||||
|
path: '/ai-platform/workflow',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ai-workflow-runs',
|
||||||
|
title: '执行历史',
|
||||||
|
icon: 'lucide:history',
|
||||||
|
path: '/ai-platform/workflow-runs',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ai-knowledge',
|
||||||
|
title: '知识库',
|
||||||
|
icon: 'lucide:library-big',
|
||||||
|
path: '/ai-platform/knowledge-base',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ai-model',
|
||||||
|
title: '模型配置',
|
||||||
|
icon: 'lucide:settings',
|
||||||
|
path: '/ai-platform/model',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'codex-agent',
|
||||||
|
title: 'Codex 助手',
|
||||||
|
icon: 'lucide:code-2',
|
||||||
|
path: '/agent-chat/codex',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
style: widgetStyle,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'base-admin',
|
||||||
|
i: 'base-admin',
|
||||||
|
x: 7,
|
||||||
|
y: 2,
|
||||||
|
w: 5,
|
||||||
|
h: 3,
|
||||||
|
minW: 4,
|
||||||
|
minH: 2,
|
||||||
|
type: 'quick-links',
|
||||||
|
title: '基础管理',
|
||||||
|
props: {
|
||||||
|
title: '基础管理',
|
||||||
|
columns: 3,
|
||||||
|
rows: 2,
|
||||||
|
menus: [
|
||||||
|
{
|
||||||
|
id: 'system-user',
|
||||||
|
title: '用户管理',
|
||||||
|
icon: 'lucide:users',
|
||||||
|
path: '/system/user',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'system-role',
|
||||||
|
title: '角色管理',
|
||||||
|
icon: 'lucide:shield-check',
|
||||||
|
path: '/system/role',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'system-permission',
|
||||||
|
title: '权限管理',
|
||||||
|
icon: 'lucide:key-round',
|
||||||
|
path: '/system/new-permission',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'system-menu',
|
||||||
|
title: '菜单管理',
|
||||||
|
icon: 'lucide:menu',
|
||||||
|
path: '/system/menu',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'announcement',
|
||||||
|
title: '公告管理',
|
||||||
|
icon: 'lucide:megaphone',
|
||||||
|
path: '/message/announcement',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'message',
|
||||||
|
title: '消息中心',
|
||||||
|
icon: 'lucide:bell',
|
||||||
|
path: '/message/list',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
style: widgetStyle,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'announcement-list',
|
||||||
|
i: 'announcement-list',
|
||||||
|
x: 0,
|
||||||
|
y: 5,
|
||||||
|
w: 4,
|
||||||
|
h: 4,
|
||||||
|
minW: 3,
|
||||||
|
minH: 3,
|
||||||
|
type: 'announcement-list',
|
||||||
|
title: '最新公告',
|
||||||
|
props: {
|
||||||
|
title: '最新公告',
|
||||||
|
limit: 6,
|
||||||
|
},
|
||||||
|
style: widgetStyle,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'notice-list',
|
||||||
|
i: 'notice-list',
|
||||||
|
x: 4,
|
||||||
|
y: 5,
|
||||||
|
w: 4,
|
||||||
|
h: 4,
|
||||||
|
minW: 3,
|
||||||
|
minH: 3,
|
||||||
|
type: 'notice-list',
|
||||||
|
title: '消息通知',
|
||||||
|
props: {
|
||||||
|
title: '消息通知',
|
||||||
|
limit: 6,
|
||||||
|
},
|
||||||
|
style: widgetStyle,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'server-monitor',
|
||||||
|
i: 'server-monitor',
|
||||||
|
x: 8,
|
||||||
|
y: 5,
|
||||||
|
w: 4,
|
||||||
|
h: 4,
|
||||||
|
minW: 4,
|
||||||
|
minH: 3,
|
||||||
|
type: 'server-monitor',
|
||||||
|
title: '运行监控',
|
||||||
|
props: {
|
||||||
|
title: '运行监控',
|
||||||
|
refreshInterval: 5000,
|
||||||
|
},
|
||||||
|
style: widgetStyle,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
function isAiAgentAdminHomeCode(code: string) {
|
||||||
|
return code === AI_AGENT_HOME_CODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createAiAgentAdminHomeConfig() {
|
||||||
|
return JSON.parse(JSON.stringify(aiAgentAdminHomeConfig)) as DashboardConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
export { createAiAgentAdminHomeConfig, isAiAgentAdminHomeCode };
|
||||||
@@ -7,6 +7,11 @@ import { ElEmpty, ElMessage, ElScrollbar } from 'element-plus';
|
|||||||
import { getPageByCodeApi } from '#/api/online-dev/page-manager';
|
import { getPageByCodeApi } from '#/api/online-dev/page-manager';
|
||||||
import DashboardRenderer from '#/components/dashboard-design/DashboardRenderer.vue';
|
import DashboardRenderer from '#/components/dashboard-design/DashboardRenderer.vue';
|
||||||
|
|
||||||
|
import {
|
||||||
|
createAiAgentAdminHomeConfig,
|
||||||
|
isAiAgentAdminHomeCode,
|
||||||
|
} from './ai-agent-home-config';
|
||||||
|
|
||||||
defineOptions({ name: 'PageRender' });
|
defineOptions({ name: 'PageRender' });
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
@@ -44,6 +49,13 @@ async function loadPageData() {
|
|||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (isAiAgentAdminHomeCode(code)) {
|
||||||
|
const config = createAiAgentAdminHomeConfig();
|
||||||
|
pageName.value = config.name;
|
||||||
|
pageConfig.value = JSON.stringify(config);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const page = await getPageByCodeApi(code);
|
const page = await getPageByCodeApi(code);
|
||||||
pageName.value = page.name;
|
pageName.value = page.name;
|
||||||
pageConfig.value =
|
pageConfig.value =
|
||||||
|
|||||||
Reference in New Issue
Block a user