import Utils from '@/lin/util/util' import adminConfig from './admin' import bookConfig from './book' // 引入图书管理路由文件 import pluginsConfig from './plugin' import sysDictConfig from './sys-dict' import emailSettingConfig from './email-setting' import companyConfig from './company' import diaryConfig from './project-work-diary' import projectConfig from './project' import supplierConfig from './supplier' import todoConfig from './my-todo-list' import reportConfig from './report' // eslint-disable-next-line import/no-mutable-exports let homeRouter = [ { title: '首页', type: 'view', name: Symbol('about'), route: '/about', filePath: 'view/about/about.vue', inNav: true, icon: 'iconfont icon-iconset0103', isElementIcon: false, order: 1, }, { title: '日历', type: 'view', name: Symbol('calendar'), route: '/calendar', filePath: 'view/calendar/calendar-list.vue', inNav: true, icon: 'iconfont icon-iconset0103', isElementIcon: false, order: 1, }, { title: '项目看板', type: 'view', name: Symbol('projectBoard'), route: '/project/board', filePath: 'view/project-board/project-board-list.vue', inNav: true, icon: 'iconfont icon-iconset0103', isElementIcon: false, order: 1, }, // { // title: '统计', // type: 'view', // name: Symbol('statistics'), // route: '/statistics', // filePath: 'view/statistics/statistics.vue', // inNav: true, // icon: 'iconfont icon-iconset0103', // isElementIcon: false, // order: 1, // }, { title: '日志管理', type: 'view', name: Symbol('log'), route: '/log', filePath: 'view/log/log.vue', inNav: true, icon: 'iconfont icon-rizhiguanli', isElementIcon: false, order: 2, permission: ['查询所有日志'], }, { title: '个人中心', type: 'view', name: Symbol('center'), route: '/center', filePath: 'view/center/center.vue', inNav: false, icon: 'iconfont icon-rizhiguanli', isElementIcon: false, }, { title: '404', type: 'view', name: Symbol('404'), route: '/404', filePath: 'view/error-page/404.vue', inNav: false, icon: 'iconfont icon-rizhiguanli', isElementIcon: false, }, // bookConfig, sysDictConfig, // emailSettingConfig, companyConfig, projectConfig, supplierConfig, diaryConfig, todoConfig, adminConfig, reportConfig, ] // 接入插件 const plugins = [...pluginsConfig] filterPlugin(homeRouter) // homeRouter = homeRouter.concat(plugins) // 处理顺序 homeRouter = Utils.sortByOrder(homeRouter) deepReduceName(homeRouter) export default homeRouter /** * 筛除已经被添加的插件 */ function filterPlugin(data) { if (plugins.length === 0) { return } if (Array.isArray(data)) { data.forEach(item => { filterPlugin(item) }) } else { const findResult = plugins.findIndex(item => data === item) if (findResult >= 0) { plugins.splice(findResult, 1) } if (data.children) { filterPlugin(data.children) } } } /** * 使用 Symbol 处理 name 字段, 保证唯一性 */ function deepReduceName(target) { if (Array.isArray(target)) { target.forEach(item => { if (typeof item !== 'object') { return } deepReduceName(item) }) return } if (typeof target === 'object') { if (typeof target.name !== 'symbol') { target.name = target.name || Utils.getRandomStr() target.name = Symbol(target.name) } if (Array.isArray(target.children)) { target.children.forEach(item => { if (typeof item !== 'object') { return } deepReduceName(item) }) } } }