| | |
| | | |
| | | Vue.use(Router) |
| | | |
| | | /* Layout */ |
| | | import Layout from '@/layout' |
| | | |
| | | /** |
| | | * Note: sub-menu only appear when route children.length >= 1 |
| | | * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html |
| | | * |
| | | * hidden: true if set true, item will not show in the sidebar(default is false) |
| | | * alwaysShow: true if set true, will always show the root menu |
| | | * if not set alwaysShow, when item has more than one children route, |
| | | * it will becomes nested mode, otherwise not show the root menu |
| | | * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb |
| | | * name:'router-name' the name is used by <keep-alive> (must set!!!) |
| | | * meta : { |
| | | roles: ['admin','editor'] control the page roles (you can set multiple roles) |
| | | title: 'title' the name show in sidebar and breadcrumb (recommend set) |
| | | icon: 'svg-name'/'el-icon-x' the icon show in the sidebar |
| | | breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) |
| | | activeMenu: '/example/list' if set path, the sidebar will highlight the path you set |
| | | } |
| | | */ |
| | | |
| | | /** |
| | | * constantRoutes |
| | | * a base page that does not have permission requirements |
| | | * all roles can be accessed |
| | | */ |
| | | function getRoutes() { |
| | | let constantRoutes = [ |
| | | { |
| | |
| | | path: '/', |
| | | component: Layout, |
| | | redirect: '/home', |
| | | // meta: { title: '主页', icon: 'el-icon-s-home' }, |
| | | children: [{ |
| | | path: 'home', |
| | | name: 'Home', |
| | |
| | | path: '/standardLibrary', |
| | | component: Layout, |
| | | redirect: '/standardLibrary/index', |
| | | meta: { title: '标准库', icon: 'el-icon-s-help' }, |
| | | // meta: { title: '标准库', icon: 'el-icon-s-help' }, |
| | | children: [ |
| | | { |
| | | path: 'index', |
| | | name: 'StandardLibrary', |
| | | component: () => import('@/views/standardLibrary/index'), |
| | | meta: { title: '标准库', icon: 'form' } |
| | | meta: { title: '标准库', icon: 'el-icon-s-management' } |
| | | }, |
| | | { |
| | | path: 'specificationDetails/:id', |
| | | name: 'SpecificationDetails', |
| | | // hidden: true, |
| | | component: () => import('@/views/standardLibrary/SpecificationDetails'), |
| | | meta: { title: '产品规格详情', icon: 'form', show: false } |
| | | } |
| | | // { |
| | | // path: 'specificationDetails/:id', |
| | | // name: 'SpecificationDetails', |
| | | // // hidden: true, |
| | | // component: () => import('@/views/standardLibrary/SpecificationDetails'), |
| | | // meta: { title: '产品规格详情', icon: 'form', show: false } |
| | | // } |
| | | ] |
| | | }, |
| | | // { |
| | | // path: '/rawMaterials', |
| | | // component: Layout, |
| | | // redirect: '/rawMaterials/reportForInspection', |
| | | // name: 'rawMaterials', |
| | | // meta: { title: '检验', icon: 'el-icon-s-help' }, |
| | | // children: [ |
| | | // { |
| | | // path: 'reportForInspection', |
| | | // name: 'ReportForInspection', |
| | | // component: () => import('@/views/rawMaterials/reportForInspection/index'), |
| | | // meta: { title: '原材料报检', icon: 'table' }, |
| | | // children: [ |
| | | // // { |
| | | // // path: 'index', |
| | | // // name: 'ReportForInspectionIndex', |
| | | // // // hidden: true, |
| | | // // component: () => import('@/views/rawMaterials/reportForInspection/index'), |
| | | // // meta: { title: '原材料报检', icon: 'table' } |
| | | // // }, |
| | | // { |
| | | // path: 'forInspectionDetail', |
| | | // name: 'ForInspectionDetail', |
| | | // hidden: true, |
| | | // component: () => import('@/views/rawMaterials/reportForInspection/forInspectionDetail'), |
| | | // meta: { title: '新增检验单详情', icon: 'table' } |
| | | // } |
| | | // ] |
| | | // }, |
| | | // { |
| | | // path: 'print', |
| | | // name: 'Print', |
| | | // component: () => import('@/views/rawMaterials/print/index'), |
| | | // meta: { title: '条码打印', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'planAssignments', |
| | | // name: 'PlanAssignments', |
| | | // component: () => import('@/views/rawMaterials/planAssignments/index'), |
| | | // meta: { title: '检验计划分配', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'rawMaterialInspection', |
| | | // name: 'RawMaterialInspection', |
| | | // component: () => import('@/views/rawMaterials/rawMaterialInspection/index'), |
| | | // meta: { title: '原材料检验', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'checkTheReport', |
| | | // name: 'CheckTheReport', |
| | | // component: () => import('@/views/rawMaterials/checkTheReport/index'), |
| | | // meta: { title: '检验报告', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'reportAuditing', |
| | | // name: 'ReportAuditing', |
| | | // component: () => import('@/views/rawMaterials/reportAuditing/index'), |
| | | // meta: { title: '报告审核', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'nonConformanceReview', |
| | | // name: 'NonConformanceReview', |
| | | // component: () => import('@/views/rawMaterials/nonConformanceReview/index'), |
| | | // meta: { title: '不合格反馈', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'nonConformingFeedback', |
| | | // name: 'NonConformingFeedback', |
| | | // component: () => import('@/views/rawMaterials/nonConformingFeedback/index'), |
| | | // meta: { title: '不合格评审', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'passRateStatistics', |
| | | // name: 'PassRateStatistics', |
| | | // component: () => import('@/views/rawMaterials/passRateStatistics/index'), |
| | | // meta: { title: '合格率统计', icon: 'tree' } |
| | | // } |
| | | // ] |
| | | // }, |
| | | { |
| | | path: '/inspectionManagement', |
| | | component: Layout, |
| | | redirect: '/inspectionManagement/commissionInspection', |
| | | name: 'InspectionManagement', |
| | | meta: { title: '报检管理', icon: 'el-icon-s-help' }, |
| | | meta: { title: '报检管理', icon: 'el-icon-s-order' }, |
| | | children: [ |
| | | { |
| | | path: 'commissionInspection', |
| | |
| | | component: Layout, |
| | | redirect: '/experiment/inspectionApplication', |
| | | name: 'Experiment', |
| | | meta: { title: '试验管理', icon: 'el-icon-s-help' }, |
| | | meta: { title: '试验管理', icon: 'el-icon-s-marketing' }, |
| | | children: [ |
| | | { |
| | | path: 'inspectionApplication', |
| | |
| | | meta: { title: '新增检验', icon: 'tree' } |
| | | }, |
| | | { |
| | | path: 'Viewdetails', |
| | | path: 'Viewdetails/:id', |
| | | name: 'Viewdetails', |
| | | hidden: true, |
| | | component: () => import('@/views/experiment/inspectionApplication/Viewdetails/index'), |
| | |
| | | component: () => import('@/views/experiment/reportAuditing/index'), |
| | | meta: { title: '报告审核', icon: 'tree' } |
| | | }, |
| | | { |
| | | path: 'nonConformanceReview', |
| | | name: 'NonConformanceReview', |
| | | component: () => import('@/views/experiment/nonConformanceReview/index'), |
| | | meta: { title: '不合格品反馈', icon: 'tree' } |
| | | }, |
| | | // { |
| | | // path: 'nonConformanceReview', |
| | | // name: 'NonConformanceReview', |
| | | // component: () => import('@/views/experiment/nonConformanceReview/index'), |
| | | // meta: { title: '不合格品反馈', icon: 'tree' } |
| | | // }, |
| | | { |
| | | path: 'nonConformingFeedback', |
| | | name: 'NonConformingFeedback', |
| | |
| | | } |
| | | ] |
| | | }, |
| | | // { |
| | | // path: '/finishedProduct', |
| | | // component: Layout, |
| | | // redirect: '/finishedProduct/reportForInspection', |
| | | // name: 'FinishedProduct', |
| | | // meta: { title: '成品检验', icon: 'el-icon-s-help' }, |
| | | // children: [ |
| | | // { |
| | | // path: 'reportForInspection', |
| | | // name: 'ReportForInspection', |
| | | // component: () => import('@/views/rawMaterials/reportForInspection/index'), |
| | | // meta: { title: '成品送检登记', icon: 'table' } |
| | | // }, |
| | | // { |
| | | // path: 'print', |
| | | // name: 'Print', |
| | | // component: () => import('@/views/rawMaterials/print/index'), |
| | | // meta: { title: '条码打印', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'planAssignments', |
| | | // name: 'PlanAssignments', |
| | | // component: () => import('@/views/rawMaterials/planAssignments/index'), |
| | | // meta: { title: '检验计划分配', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'rawMaterialInspection', |
| | | // name: 'RawMaterialInspection', |
| | | // component: () => import('@/views/rawMaterials/rawMaterialInspection/index'), |
| | | // meta: { title: '成品检验', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'checkTheReport', |
| | | // name: 'CheckTheReport', |
| | | // component: () => import('@/views/rawMaterials/checkTheReport/index'), |
| | | // meta: { title: '检验报告', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'reportAuditing', |
| | | // name: 'ReportAuditing', |
| | | // component: () => import('@/views/rawMaterials/reportAuditing/index'), |
| | | // meta: { title: '报告审核', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'nonConformanceReview', |
| | | // name: 'NonConformanceReview', |
| | | // component: () => import('@/views/rawMaterials/nonConformanceReview/index'), |
| | | // meta: { title: '不合格反馈', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'nonConformingFeedback', |
| | | // name: 'NonConformingFeedback', |
| | | // component: () => import('@/views/rawMaterials/nonConformingFeedback/index'), |
| | | // meta: { title: '不合格评审', icon: 'tree' } |
| | | // }, |
| | | // { |
| | | // path: 'passRateStatistics', |
| | | // name: 'PassRateStatistics', |
| | | // component: () => import('@/views/rawMaterials/passRateStatistics/index'), |
| | | // meta: { title: '合格率统计', icon: 'tree' } |
| | | // } |
| | | // ] |
| | | // }, |
| | | { |
| | | path: '/laboratory', |
| | | component: Layout, |
| | | redirect: '/laboratory/ledger', |
| | | name: 'Laboratory', |
| | | meta: { title: '实验室管理', icon: 'el-icon-s-help' }, |
| | | meta: { title: '实验室管理', icon: 'el-icon-cpu' }, |
| | | children: [ |
| | | { |
| | | path: 'ledger', |
| | |
| | | component: Layout, |
| | | redirect: '/chart/center', |
| | | name: 'Chart', |
| | | meta: { title: '智能图表', icon: 'el-icon-s-help' }, |
| | | meta: { title: '智能图表', icon: 'el-icon-s-data' }, |
| | | children: [ |
| | | { |
| | | path: 'center', |
| | |
| | | component: Layout, |
| | | redirect: '/message/toDo', |
| | | name: 'Message', |
| | | meta: { title: '消息待办', icon: 'el-icon-s-help' }, |
| | | // meta: { title: '消息待办', icon: 'el-icon-s-help' }, |
| | | children: [ |
| | | { |
| | | path: 'toDo', |
| | | name: 'ToDo', |
| | | component: () => import('@/views/message/toDo/index'), |
| | | meta: { title: '我的待办', icon: 'tree' } |
| | | // meta: { title: '消息待办', icon: 'tree' } |
| | | meta: { title: '我的待办', icon: 'el-icon-s-promotion' }, |
| | | }, |
| | | { |
| | | path: 'message', |
| | | name: 'Message', |
| | | // hidden: true, |
| | | component: () => import('@/views/message/message/index'), |
| | | // meta: { title: '我的消息', icon: 'table' } |
| | | }, |
| | | // { |
| | | // path: 'message', |
| | | // name: 'Message', |
| | | // component: () => import('@/views/message/message/index'), |
| | | // }, |
| | | ] |
| | | }, |
| | | { |
| | |
| | | component: Layout, |
| | | redirect: '/personal/myInformation', |
| | | name: 'Personal', |
| | | meta: { title: '个人管理', icon: 'el-icon-s-help' }, |
| | | // meta: { title: '个人管理', icon: 'el-icon-s-help' }, |
| | | children: [ |
| | | { |
| | | path: 'myInformation', |
| | | name: 'MyInformation', |
| | | component: () => import('@/views/personal/myInformation/index'), |
| | | meta: { title: '我的信息', icon: 'table' } |
| | | // meta: { title: '个人管理', icon: 'el-icon-s-help' } |
| | | meta: { title: '我的信息', icon: 'el-icon-user-solid' } |
| | | }, |
| | | { |
| | | path: 'myBusiness', |
| | | name: 'MyBusiness', |
| | | component: () => import('@/views/personal/myBusiness/index'), |
| | | meta: { title: '我的企业', icon: 'tree', show: false } |
| | | } |
| | | // { |
| | | // path: 'myBusiness', |
| | | // name: 'MyBusiness', |
| | | // component: () => import('@/views/personal/myBusiness/index'), |
| | | // meta: { title: '我的企业', icon: 'tree', show: false } |
| | | // } |
| | | ] |
| | | }, |
| | | { |
| | |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/addCommision', |
| | | component: () => import('@/views/inspectionManagement/commissionInspection/addCommision'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/', |
| | | component: Layout, |
| | | redirect: '/home', |
| | | // meta: { title: '主页', icon: 'el-icon-s-home' }, |
| | | children: [{ |
| | | path: 'home', |
| | | name: 'Home', |
| | |
| | | let result = []; |
| | | let obj = {}; |
| | | for (let i = 0; i < tempArr.length; i++) { |
| | | if (!obj[tempArr[i].path]) { |
| | | result.push(tempArr[i]); |
| | | obj[tempArr[i].path] = true; |
| | | }; |
| | | if (!obj[tempArr[i].path]) { |
| | | result.push(tempArr[i]); |
| | | obj[tempArr[i].path] = true; |
| | | }; |
| | | }; |
| | | return result; |
| | | }; |
| | |
| | | |
| | | function createRouter(Routees) { |
| | | if (JSON.parse(sessionStorage.getItem("user")) != undefined && JSON.parse(sessionStorage.getItem("user")) != null) { |
| | | let sessionLayerId=JSON.parse(sessionStorage.getItem("user")).sessionLayerId |
| | | if(sessionLayerId!='f5c8bcb7d5a0fd27e2323280f7e98cad'){ |
| | | let role = JSON.parse(sessionStorage.getItem("user")).role |
| | | let menuFather = baseRouter |
| | | const dataMenuFather = fn3(menuFather) |
| | | role.roleMenuList.forEach((r) => { |
| | | dataMenuFather.push(Routees.filter(item => { |
| | | return item.path === r.menuUrl |
| | | })[0]) |
| | | }) |
| | | let eqChildren = []; |
| | | role.roleMenuList.forEach((r) => { |
| | | let sessionLayerId = JSON.parse(sessionStorage.getItem("user")).sessionLayerId |
| | | if (sessionLayerId != 'c3284d0f94606de1fd2af172aba15bf3') { |
| | | let role = JSON.parse(sessionStorage.getItem("user")).role |
| | | let menuFather = baseRouter |
| | | const dataMenuFather = fn3(menuFather) |
| | | role.roleMenuList.forEach((r) => { |
| | | if(r.menuName!='首页'){ |
| | | dataMenuFather.push(Routees.filter(item => { |
| | | return item.path === r.menuUrl |
| | | })[0]) |
| | | } |
| | | }) |
| | | let eqChildren = []; |
| | | role.roleMenuList.forEach((r) => { |
| | | dataMenuFather.forEach(m => { |
| | | if (r.menuUrl === m.path) { |
| | | r.children.forEach(rc => { |
| | | m.children.forEach(mc => { |
| | | if (mc.meta != undefined) { |
| | | eqChildren.push({ "path": mc.path, "meta": JSON.parse(JSON.stringify(mc.meta)) }) |
| | | delete mc["meta"] |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | let once = [] |
| | | role.roleMenuList.forEach((r) => { |
| | | r.children.forEach(rc => { |
| | | eqChildren.forEach(eq => { |
| | | if (eq != undefined) { |
| | | if (eq.path == rc.menuUrl.split("/")[1]) { |
| | | once.push(eq) |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | }) |
| | | dataMenuFather.forEach(m => { |
| | | if (r.menuUrl === m.path) { |
| | | r.children.forEach(rc => { |
| | | m.children.forEach(mc => { |
| | | if (mc.meta != undefined) { |
| | | eqChildren.push({ "path": mc.path, "meta": JSON.parse(JSON.stringify(mc.meta)) }) |
| | | delete mc["meta"] |
| | | let i = 0 |
| | | if (m.children != undefined) { |
| | | m.children.forEach(mc => { |
| | | once.forEach(eq => { |
| | | if (eq != undefined) { |
| | | if (mc.path == eq.path) { |
| | | if (i === 0) { |
| | | m.redirect = m.path + "/" + eq.path |
| | | } |
| | | i++; |
| | | mc.meta = eq.meta |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | let once = [] |
| | | role.roleMenuList.forEach((r) => { |
| | | r.children.forEach(rc => { |
| | | eqChildren.forEach(eq => { |
| | | if (eq != undefined) { |
| | | if (eq.path == rc.menuUrl.split("/")[1]) { |
| | | once.push(eq) |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | }) |
| | | dataMenuFather.forEach(m => { |
| | | let i = 0 |
| | | if (m.children != undefined) { |
| | | m.children.forEach(mc => { |
| | | once.forEach(eq => { |
| | | if (eq != undefined) { |
| | | if (mc.path == eq.path) { |
| | | if (i === 0) { |
| | | m.redirect = m.path + "/" + eq.path |
| | | } |
| | | i++; |
| | | mc.meta = eq.meta |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | dataMenuFather.push({path: '*', redirect: '/404', hidden: true}) |
| | | dataMenuFather.push() |
| | | Routees = dataMenuFather |
| | | } |
| | | dataMenuFather.push({ path: '*', redirect: '/404', hidden: true }) |
| | | dataMenuFather.push() |
| | | Routees = dataMenuFather |
| | | } |
| | | } else { |
| | | Routees = baseRouter |
| | | } |
| | |
| | | routes: Routees |
| | | }) |
| | | } |
| | | let router = createRouter(getRoutes()) |
| | | let router = createRouter(getRoutes()) |
| | | |
| | | // Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 |
| | | export async function resetRouter() { |
| | | let newRouter = createRouter(getRoutes()) |
| | | router.matcher = newRouter.matcher |
| | | router.matcher = newRouter.matcher |
| | | } |
| | | router.beforeEach(async (to, from, next) => { |
| | | router.beforeEach((to, from, next) => { |
| | | /** |
| | | * 委托新增 放行 |
| | | */ |
| | | if (to.path.indexOf("/addCommision/") === 0) { |
| | | next() |
| | | return |
| | | } |
| | | // 1. 判断是不是登录页面 |
| | | // 是登录页面 |
| | | if (to.path === '/login') { |
| | |
| | | // 不是登录页面 |
| | | // 2. 判断 是否登录过 |
| | | let token = sessionStorage.getItem('user') |
| | | if(token!=null&&token!=undefined){ |
| | | await resetRouter() |
| | | if (token != null && token != undefined) { |
| | | resetRouter() |
| | | } |
| | | token ? next() : next('/login') |
| | | } |