first commit
This commit is contained in:
274
src/config/project.ts
Normal file
274
src/config/project.ts
Normal file
@@ -0,0 +1,274 @@
|
||||
/**
|
||||
* 项目配置系统 - 框架版
|
||||
*
|
||||
* 该文件用于配置管理后台的框架模块
|
||||
* - 系统管理
|
||||
* - 财务管理
|
||||
* - 平台管理
|
||||
*/
|
||||
|
||||
import type { Component } from 'vue'
|
||||
import {
|
||||
PayCircleOutlined,
|
||||
SettingOutlined,
|
||||
AppstoreOutlined
|
||||
} from '@ant-design/icons-vue'
|
||||
|
||||
// 项目标识类型
|
||||
export type ProjectId = 'framework' | 'default'
|
||||
|
||||
// 当前项目配置
|
||||
export const CURRENT_PROJECT: ProjectId = 'framework'
|
||||
|
||||
// 菜单项类型
|
||||
export interface MenuItem {
|
||||
key: string
|
||||
label: string
|
||||
icon?: Component
|
||||
path?: string
|
||||
children?: MenuItem[]
|
||||
}
|
||||
|
||||
// 模块类型
|
||||
export type ModuleType = 'framework'
|
||||
|
||||
// 模块配置
|
||||
export interface ModuleConfig {
|
||||
id: string
|
||||
name: string
|
||||
type: ModuleType
|
||||
icon?: Component
|
||||
menus: MenuItem[]
|
||||
routes: RouteConfig[]
|
||||
}
|
||||
|
||||
// 路由配置
|
||||
export interface RouteConfig {
|
||||
path: string
|
||||
name: string
|
||||
component: string
|
||||
title: string
|
||||
}
|
||||
|
||||
// ==================== 框架模块 ====================
|
||||
|
||||
// 系统管理模块
|
||||
export const systemModule: ModuleConfig = {
|
||||
id: 'system',
|
||||
name: '系统管理',
|
||||
type: 'framework',
|
||||
icon: SettingOutlined,
|
||||
menus: [
|
||||
{
|
||||
key: 'system',
|
||||
label: '系统管理',
|
||||
children: [
|
||||
{ key: 'settings', label: '系统设置', path: '/settings' },
|
||||
{ key: 'dict', label: '字典管理', path: '/settings/dict' },
|
||||
{ key: 'city', label: '城市管理', path: '/settings/city' },
|
||||
{ key: 'approval-flow', label: '审批流程', path: '/system/approval' },
|
||||
{ key: 'approval-instances', label: '审批记录', path: '/system/approval-instances' }
|
||||
]
|
||||
}
|
||||
],
|
||||
routes: [
|
||||
{ path: 'settings', name: 'Settings', component: '@/views/settings/index.vue', title: '系统设置' },
|
||||
{ path: 'settings/dict', name: 'Dict', component: '@/views/settings/dict/index.vue', title: '字典管理' },
|
||||
{ path: 'settings/city', name: 'City', component: '@/views/settings/city/index.vue', title: '城市管理' },
|
||||
{ path: 'system/approval', name: 'ApprovalFlow', component: '@/views/system/approval/index.vue', title: '审批流程' },
|
||||
{ path: 'system/approval-instances', name: 'ApprovalInstances', component: '@/views/system/approval-instances/index.vue', title: '审批记录' }
|
||||
]
|
||||
}
|
||||
|
||||
// 财务管理模块
|
||||
export const financeModule: ModuleConfig = {
|
||||
id: 'finance',
|
||||
name: '财务管理',
|
||||
type: 'framework',
|
||||
icon: PayCircleOutlined,
|
||||
menus: [
|
||||
{
|
||||
key: 'finance',
|
||||
label: '财务管理',
|
||||
children: [
|
||||
{ key: 'finance-overview', label: '财务总览', path: '/finance/overview' },
|
||||
{ key: 'income', label: '收入管理', path: '/finance/income' },
|
||||
{ key: 'expense', label: '支出管理', path: '/finance/expense' },
|
||||
{ key: 'reimbursement', label: '报销管理', path: '/finance/reimbursement' },
|
||||
{ key: 'settlement', label: '结算管理', path: '/finance/settlement' },
|
||||
{ key: 'invoice', label: '发票管理', path: '/finance/invoice' },
|
||||
{ key: 'finance-accounts', label: '账户管理', path: '/finance/accounts' },
|
||||
{ key: 'budget', label: '预算管理', path: '/finance/budget' },
|
||||
{ key: 'finance-reports', label: '财务报表', path: '/finance/reports' },
|
||||
{ key: 'finance-import', label: '数据导入', path: '/finance/import' },
|
||||
{ key: 'advanced-reports', label: '高级报表', path: '/finance/advanced-reports' },
|
||||
]
|
||||
}
|
||||
],
|
||||
routes: [
|
||||
{ path: 'finance/overview', name: 'FinanceOverview', component: '@/views/finance/overview/index.vue', title: '财务总览' },
|
||||
{ path: 'finance/income', name: 'Income', component: '@/views/finance/income/index.vue', title: '收入管理' },
|
||||
{ path: 'finance/expense', name: 'Expense', component: '@/views/finance/expense/index.vue', title: '支出管理' },
|
||||
{ path: 'finance/reimbursement', name: 'Reimbursement', component: '@/views/finance/reimbursement/index.vue', title: '报销管理' },
|
||||
{ path: 'finance/settlement', name: 'Settlement', component: '@/views/finance/settlement/index.vue', title: '结算管理' },
|
||||
{ path: 'finance/invoice', name: 'Invoice', component: '@/views/finance/invoice/index.vue', title: '发票管理' },
|
||||
{ path: 'finance/accounts', name: 'FinanceAccounts', component: '@/views/finance/accounts/index.vue', title: '账户管理' },
|
||||
{ path: 'finance/budget', name: 'Budget', component: '@/views/finance/budget/index.vue', title: '预算管理' },
|
||||
{ path: 'finance/reports', name: 'FinanceReports', component: '@/views/finance/reports/index.vue', title: '财务报表' },
|
||||
{ path: 'finance/import', name: 'FinanceImport', component: '@/views/finance/import/index.vue', title: '数据导入' },
|
||||
{ path: 'finance/advanced-reports', name: 'AdvancedReports', component: '@/views/finance/advanced-reports/index.vue', title: '高级报表' },
|
||||
]
|
||||
}
|
||||
|
||||
// 平台管理模块
|
||||
export const platformModule: ModuleConfig = {
|
||||
id: 'platform',
|
||||
name: '平台管理',
|
||||
type: 'framework',
|
||||
icon: AppstoreOutlined,
|
||||
menus: [
|
||||
{
|
||||
key: 'platform',
|
||||
label: '平台管理',
|
||||
children: [
|
||||
{ key: 'platform-projects', label: '项目管理', path: '/platform/projects' },
|
||||
{ key: 'platform-menus', label: '菜单管理', path: '/platform/menus' },
|
||||
{ key: 'platform-certificates', label: '证书管理', path: '/platform/certificates' }
|
||||
]
|
||||
}
|
||||
],
|
||||
routes: [
|
||||
{ path: 'platform/projects', name: 'PlatformProjects', component: '@/views/platform/projects/index.vue', title: '项目管理' },
|
||||
{ path: 'platform/menus', name: 'PlatformMenus', component: '@/views/platform/menus/index.vue', title: '菜单管理' },
|
||||
{ path: 'platform/certificates', name: 'PlatformCertificates', component: '@/views/platform/certificates/index.vue', title: '证书管理' }
|
||||
]
|
||||
}
|
||||
|
||||
// 所有框架模块
|
||||
export const frameworkModules: ModuleConfig[] = [
|
||||
financeModule,
|
||||
platformModule,
|
||||
systemModule
|
||||
]
|
||||
|
||||
// ==================== 项目配置 ====================
|
||||
|
||||
export interface ProjectConfig {
|
||||
id: ProjectId
|
||||
name: string
|
||||
logo: string
|
||||
shortName: string
|
||||
description: string
|
||||
modules: ModuleConfig[]
|
||||
}
|
||||
|
||||
// 框架项目配置
|
||||
export const frameworkProject: ProjectConfig = {
|
||||
id: 'framework',
|
||||
name: '管理后台框架',
|
||||
logo: '管',
|
||||
shortName: '管理',
|
||||
description: '通用管理后台框架',
|
||||
modules: frameworkModules
|
||||
}
|
||||
|
||||
// 所有项目配置
|
||||
export const projectConfigs: Record<ProjectId, ProjectConfig> = {
|
||||
framework: frameworkProject,
|
||||
default: frameworkProject
|
||||
}
|
||||
|
||||
// ==================== 工具函数 ====================
|
||||
|
||||
/**
|
||||
* 获取当前项目配置
|
||||
*/
|
||||
export function getCurrentProject(): ProjectConfig {
|
||||
return projectConfigs[CURRENT_PROJECT] || projectConfigs.default
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前项目的所有模块
|
||||
*/
|
||||
export function getAllModules(): ModuleConfig[] {
|
||||
return frameworkModules
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前项目的菜单配置
|
||||
*/
|
||||
export function getMenuConfig(): MenuItem[] {
|
||||
const modules = getAllModules()
|
||||
const menus: MenuItem[] = []
|
||||
|
||||
modules.forEach(module => {
|
||||
module.menus.forEach(menu => {
|
||||
if (!menu.children) {
|
||||
menus.push({
|
||||
...menu,
|
||||
icon: module.icon
|
||||
})
|
||||
} else {
|
||||
menus.push({
|
||||
...menu,
|
||||
icon: module.icon
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
return menus
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单项到路由的映射
|
||||
*/
|
||||
export function getMenuRouteMap(): Record<string, string> {
|
||||
const modules = getAllModules()
|
||||
const map: Record<string, string> = {}
|
||||
|
||||
modules.forEach(module => {
|
||||
module.menus.forEach(menu => {
|
||||
if (menu.path) {
|
||||
map[menu.key] = menu.path
|
||||
}
|
||||
if (menu.children) {
|
||||
menu.children.forEach(child => {
|
||||
if (child.path) {
|
||||
map[child.key] = child.path
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
return map
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有路由配置
|
||||
*/
|
||||
export function getRouteConfigs(): RouteConfig[] {
|
||||
const modules = getAllModules()
|
||||
const routes: RouteConfig[] = []
|
||||
|
||||
modules.forEach(module => {
|
||||
routes.push(...module.routes)
|
||||
})
|
||||
|
||||
return routes
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取业务模块菜单(框架版无业务模块)
|
||||
*/
|
||||
export function getBusinessMenus(): MenuItem[] {
|
||||
return []
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取框架模块菜单
|
||||
*/
|
||||
export function getFrameworkMenus(): MenuItem[] {
|
||||
return getMenuConfig()
|
||||
}
|
||||
Reference in New Issue
Block a user