diff --git a/urbanLifelineServ/.bin/database/postgres/sql/initDataPermission.sql b/urbanLifelineServ/.bin/database/postgres/sql/initDataPermission.sql index bf545953..706fc597 100644 --- a/urbanLifelineServ/.bin/database/postgres/sql/initDataPermission.sql +++ b/urbanLifelineServ/.bin/database/postgres/sql/initDataPermission.sql @@ -227,7 +227,7 @@ INSERT INTO sys.tb_sys_view ( -- 平台管理后台内部视图(AdminSidebarLayout布局,在platform服务内) ('VIEW-P201', 'view_platform_admin_overview', '数据概览', NULL, '/admin/overview', 'admin/overview/OverviewView.vue', 'DataLine', 1, 'route', NULL, 'platform', 'AdminSidebarLayout', 210, '平台数据概览', 'system', now(), false), -('VIEW-P202', 'view_platform_admin_user', '用户管理', NULL, '/admin/user', 'admin/user/UserView.vue', 'User', 1, +('VIEW-P202', 'view_platform_admin_user', '用户管理', NULL, '/admin/userManagement', 'admin/userManagement/UserManagementView.vue', 'User', 1, 'route', NULL, 'platform', 'AdminSidebarLayout', 220, '平台用户管理', 'system', now(), false), ('VIEW-P203', 'view_platform_admin_knowledge', '知识库', NULL, '/admin/knowledge', 'admin/knowledge/KnowledgeView.vue', 'Document', 1, 'route', NULL, 'platform', 'AdminSidebarLayout', 230, '平台知识库管理', 'system', now(), false), diff --git a/urbanLifelineWeb/packages/bidding/src/layouts/SidebarLayout/SidebarLayout.vue b/urbanLifelineWeb/packages/bidding/src/layouts/SidebarLayout/SidebarLayout.vue index 8c780394..782e93ee 100644 --- a/urbanLifelineWeb/packages/bidding/src/layouts/SidebarLayout/SidebarLayout.vue +++ b/urbanLifelineWeb/packages/bidding/src/layouts/SidebarLayout/SidebarLayout.vue @@ -108,14 +108,7 @@ import { Loading } from '@element-plus/icons-vue' import { ElMessage } from 'element-plus' - -interface MenuItem { - key: string - label: string - icon: string - url?: string - type: 'route' | 'iframe' -} +import type { MenuItem } from 'shared/types' const router = useRouter() const route = useRoute() @@ -227,7 +220,7 @@ const handleMenuClick = (item: MenuItem) => { // 所有菜单都通过路由跳转 if (item.url) { router.push(item.url) - if (item.type === 'iframe') { + if (item.viewType === 'iframe') { iframeLoading.value = true } } diff --git a/urbanLifelineWeb/packages/bidding/src/types/shared.d.ts b/urbanLifelineWeb/packages/bidding/src/types/shared.d.ts index f7e18a36..235e0047 100644 --- a/urbanLifelineWeb/packages/bidding/src/types/shared.d.ts +++ b/urbanLifelineWeb/packages/bidding/src/types/shared.d.ts @@ -95,15 +95,28 @@ declare module 'shared/types' { parentId?: string url?: string component?: string - service?: string iframeUrl?: string icon?: string type?: number + viewType?: string + service?: string layout?: string orderNum?: number description?: string children?: TbSysViewDTO[] } + + // 菜单项类型(扩展 TbSysViewDTO) + export interface MenuItem extends TbSysViewDTO { + key: string + label: string + expanded?: boolean + children?: MenuItem[] + } + + // 菜单工具函数 + export function toMenuItem(view: TbSysViewDTO, expanded?: boolean): MenuItem + export function toMenuItems(views: TbSysViewDTO[], defaultExpanded?: boolean): MenuItem[] } declare module 'shared/utils/route' { diff --git a/urbanLifelineWeb/packages/platform/src/layouts/AdminIframeSidebarLayout/AdminIframeSidebarLayout.vue b/urbanLifelineWeb/packages/platform/src/layouts/AdminIframeSidebarLayout/AdminIframeSidebarLayout.vue index d4ea4c55..94eb7dde 100644 --- a/urbanLifelineWeb/packages/platform/src/layouts/AdminIframeSidebarLayout/AdminIframeSidebarLayout.vue +++ b/urbanLifelineWeb/packages/platform/src/layouts/AdminIframeSidebarLayout/AdminIframeSidebarLayout.vue @@ -96,14 +96,7 @@ import { Back } from '@element-plus/icons-vue' import { ElMessage } from 'element-plus' - -interface MenuItem { - key: string - label: string - icon: string - url?: string - type: 'route' | 'iframe' -} +import type { MenuItem } from 'shared/types' const router = useRouter() const route = useRoute() diff --git a/urbanLifelineWeb/packages/platform/src/layouts/SidebarLayout/SidebarLayout.vue b/urbanLifelineWeb/packages/platform/src/layouts/SidebarLayout/SidebarLayout.vue index 1c6ebb00..be50ef39 100644 --- a/urbanLifelineWeb/packages/platform/src/layouts/SidebarLayout/SidebarLayout.vue +++ b/urbanLifelineWeb/packages/platform/src/layouts/SidebarLayout/SidebarLayout.vue @@ -108,14 +108,7 @@ import { Loading } from '@element-plus/icons-vue' import { ElMessage } from 'element-plus' - -interface MenuItem { - key: string - label: string - icon: string - url?: string - type: 'route' | 'iframe' -} +import type { MenuItem } from 'shared/types' const router = useRouter() const route = useRoute() @@ -228,7 +221,7 @@ const handleMenuClick = (item: MenuItem) => { // 所有菜单都通过路由跳转 if (item.url) { router.push(item.url) - if (item.type === 'iframe') { + if (item.viewType === 'iframe') { iframeLoading.value = true } } diff --git a/urbanLifelineWeb/packages/platform/src/router/dynamicRoute.ts b/urbanLifelineWeb/packages/platform/src/router/dynamicRoute.ts index 585ead6b..f75e2537 100644 --- a/urbanLifelineWeb/packages/platform/src/router/dynamicRoute.ts +++ b/urbanLifelineWeb/packages/platform/src/router/dynamicRoute.ts @@ -18,7 +18,7 @@ import { import type { TbSysViewDTO } from 'shared/types' import type { RouteRecordRaw } from 'vue-router' import router from './index' -import { SidebarLayout, BlankLayout, AdminIframeSidebarLayout } from '@/layouts' +import { SidebarLayout, BlankLayout, AdminIframeSidebarLayout, AdminSidebarLayout } from '@/layouts' // Platform 布局组件映射 const platformLayoutMap: Record Promise> = { @@ -26,7 +26,8 @@ const platformLayoutMap: Record Promise> = { 'BlankLayout': () => Promise.resolve({ default: BlankLayout }), 'NavigationLayout': () => Promise.resolve({ default: SidebarLayout }), 'BasicLayout': () => Promise.resolve({ default: SidebarLayout }), - 'AdminIframeSidebarLayout': () => Promise.resolve({ default: AdminIframeSidebarLayout }) + 'AdminIframeSidebarLayout': () => Promise.resolve({ default: AdminIframeSidebarLayout }), + 'AdminSidebarLayout': () => Promise.resolve({ default: AdminSidebarLayout }) } // 视图组件加载器 diff --git a/urbanLifelineWeb/packages/platform/src/router/index.ts b/urbanLifelineWeb/packages/platform/src/router/index.ts index 5d4a2136..407ab466 100644 --- a/urbanLifelineWeb/packages/platform/src/router/index.ts +++ b/urbanLifelineWeb/packages/platform/src/router/index.ts @@ -16,7 +16,7 @@ const routes: RouteRecordRaw[] = [ ] const router = createRouter({ - history: createWebHistory(), + history: createWebHistory('/platform/'), routes }) diff --git a/urbanLifelineWeb/packages/platform/src/types/shared.d.ts b/urbanLifelineWeb/packages/platform/src/types/shared.d.ts index 6b534714..302292d9 100644 --- a/urbanLifelineWeb/packages/platform/src/types/shared.d.ts +++ b/urbanLifelineWeb/packages/platform/src/types/shared.d.ts @@ -95,15 +95,28 @@ declare module 'shared/types' { parentId?: string url?: string component?: string - service?: string iframeUrl?: string icon?: string type?: number + viewType?: string + service?: string layout?: string orderNum?: number description?: string children?: TbSysViewDTO[] } + + // 菜单项类型(扩展 TbSysViewDTO) + export interface MenuItem extends TbSysViewDTO { + key: string + label: string + expanded?: boolean + children?: MenuItem[] + } + + // 菜单工具函数 + export function toMenuItem(view: TbSysViewDTO, expanded?: boolean): MenuItem + export function toMenuItems(views: TbSysViewDTO[], defaultExpanded?: boolean): MenuItem[] } declare module 'shared/utils/route' { diff --git a/urbanLifelineWeb/packages/platform/vite.config.ts b/urbanLifelineWeb/packages/platform/vite.config.ts index a0282fa1..5fdf19e9 100644 --- a/urbanLifelineWeb/packages/platform/vite.config.ts +++ b/urbanLifelineWeb/packages/platform/vite.config.ts @@ -9,8 +9,8 @@ const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) export default defineConfig({ - // Platform 是根路径应用 - base: '/', + // Platform 应用的基础路径 + base: '/platform/', plugins: [ vue({ diff --git a/urbanLifelineWeb/packages/shared/src/layouts/AdminSidebarLayout/AdminSidebarLayout.vue b/urbanLifelineWeb/packages/shared/src/layouts/AdminSidebarLayout/AdminSidebarLayout.vue index 1d5075a6..80b3cd06 100644 --- a/urbanLifelineWeb/packages/shared/src/layouts/AdminSidebarLayout/AdminSidebarLayout.vue +++ b/urbanLifelineWeb/packages/shared/src/layouts/AdminSidebarLayout/AdminSidebarLayout.vue @@ -4,7 +4,7 @@