Files
screen/src/store/modules/permission.js

72 lines
2.3 KiB
JavaScript
Raw Normal View History

import { constantRoutes } from '@/router'
import { getMenuList } from '@/api/system'
const state = {
routes: [],
addRoutes: []
}
const mutations = {
SET_ROUTES: (state, routes) => {
state.addRoutes = routes
state.routes = constantRoutes.concat(routes)
}
}
const actions = {
generateRoutes({ commit, state }) {
return new Promise(resolve => {
if (state.addRoutes.length > 0) {
resolve(state.addRoutes)
return
}
getMenuList().then(response => {
const menuData = response.data || []
const accessedRoutes = filterAsyncRoutes(menuData)
commit('SET_ROUTES', accessedRoutes)
resolve(accessedRoutes)
}).catch(() => {
commit('SET_ROUTES', [])
resolve([])
})
})
}
}
function filterAsyncRoutes(routes) {
return routes.filter(route => {
if (!route.component || route.component === '') {
2026-05-25 11:41:57 +08:00
route.component = () => import('@/views/screens/acid-rolling/index.vue')
} else if (route.component !== 'Layout') {
route.component = loadComponent(route.component)
}
if (route.children && route.children.length > 0) {
route.children = filterAsyncRoutes(route.children)
}
return true
})
}
function loadComponent(componentPath) {
const path = componentPath.replace(/^\//, '').replace(/\.vue$/, '')
const componentMap = {
'Layout': () => import('@/layout/index.vue'),
'modules/dashboardBig/views/order': () => import('@/modules/dashboardBig/views/order.vue'),
'modules/dashboardBig/views/cost': () => import('@/modules/dashboardBig/views/cost.vue'),
'modules/dashboardBig/views/energy': () => import('@/modules/dashboardBig/views/energy.vue'),
'modules/dashboardBig/views/oee': () => import('@/modules/dashboardBig/views/oee.vue'),
'modules/dashboardBig/views/output': () => import('@/modules/dashboardBig/views/output.vue'),
'modules/dashboardBig/views/stopAnalysis': () => import('@/modules/dashboardBig/views/stopAnalysis.vue'),
2026-06-04 13:24:39 +08:00
'screens/acid-rolling/index': () => import('@/views/screens/acid-rolling/index.vue'),
'screens/scrap-coil/index': () => import('@/views/screens/scrap-coil/index.vue')
}
2026-05-25 11:41:57 +08:00
return componentMap[path] || (() => import('@/views/screens/acid-rolling/index.vue'))
}
export default {
namespaced: true,
state,
mutations,
actions
2026-05-19 17:56:44 +08:00
}