|
|
@ -4,62 +4,7 @@ import { |
|
|
|
} from '@/router' |
|
|
|
import Layout from '@/layout' |
|
|
|
import { getWebMenu } from '@/api/wms-auth' |
|
|
|
/** |
|
|
|
* 静态路由懒加载 |
|
|
|
* @param view 格式必须为 xxx/xxx 开头不要加斜杠 |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
export const loadView = (view) => { |
|
|
|
return (resolve) => require([`@/views/${view}`], resolve) |
|
|
|
} |
|
|
|
/** |
|
|
|
* 把从后端查询的菜单数据拼装成路由格式的数据 |
|
|
|
* @param routes |
|
|
|
* @param data 后端返回的菜单数据 |
|
|
|
*/ |
|
|
|
export function generaMenu(routes, data) { |
|
|
|
data.forEach(item => { |
|
|
|
const menu = { |
|
|
|
path: item.code, |
|
|
|
component: item.component === '@/layout' ? Layout : loadView(item.component), |
|
|
|
// hidden: item.status === 0, // 状态为0的隐藏
|
|
|
|
children: [], |
|
|
|
name: item.code, |
|
|
|
// meta: item.meta
|
|
|
|
meta: { |
|
|
|
title: item.name, |
|
|
|
icon: item.icon || '', |
|
|
|
roles: item.permission |
|
|
|
}, |
|
|
|
|
|
|
|
} |
|
|
|
// 一级菜单 二级菜单 特定属性
|
|
|
|
if (item.component == '@/layout' || item.component == 'index') { |
|
|
|
menu.alwaysShow = true |
|
|
|
menu.redirect = 'noRedirect' |
|
|
|
} |
|
|
|
if (item.sort < 99) { |
|
|
|
menu.level = 1 |
|
|
|
} else if (item.sort > 99 && item.sort < 9999) { |
|
|
|
menu.level = 2 |
|
|
|
} else { |
|
|
|
menu.level = 3 |
|
|
|
} |
|
|
|
// iframe页面处理
|
|
|
|
// if (item.permission.indexOf('Report') > -1) {
|
|
|
|
// // delete menu.component
|
|
|
|
// menu.iframeComponent = item.component === '@/layout' ? Layout : loadView(item.component)
|
|
|
|
// menu.hasOpen = false // 是否打开过,默认false
|
|
|
|
// }
|
|
|
|
if (item.children && item.children.length > 0) { |
|
|
|
generaMenu(menu.children, item.children) |
|
|
|
} |
|
|
|
// if (item.permission == 'skip' && item.children.length == 0) {
|
|
|
|
// }
|
|
|
|
routes.push(menu) |
|
|
|
}) |
|
|
|
return routes |
|
|
|
} |
|
|
|
import { getDefinitionMenu } from '@/api/wms-interface' |
|
|
|
|
|
|
|
/** |
|
|
|
* Use meta.role to determine if the current user has permission |
|
|
@ -126,33 +71,208 @@ const mutations = { |
|
|
|
} |
|
|
|
} |
|
|
|
// todo-new:有token后使用generateRoutes,去掉下方一行代码
|
|
|
|
state.routes = constantRoutes.concat(asyncRoutes) |
|
|
|
// state.routes = constantRoutes.concat(asyncRoutes)
|
|
|
|
/** |
|
|
|
* 静态路由懒加载 |
|
|
|
* @param view 格式必须为 xxx/xxx 开头不要加斜杠 |
|
|
|
* @returns |
|
|
|
*/ |
|
|
|
export const loadView = (view) => { |
|
|
|
return (resolve) => require([`@/views/menuList/${view}`], resolve) |
|
|
|
} |
|
|
|
/** |
|
|
|
* 把从后端查询的菜单数据拼装成路由格式的数据 |
|
|
|
* @param routes |
|
|
|
* @param data 后端返回的菜单数据 |
|
|
|
*/ |
|
|
|
export function generaMenu(routes, data, first) { |
|
|
|
data.forEach(item => { |
|
|
|
let _item = { |
|
|
|
path: '/'+item.name, |
|
|
|
component: loadView(item.name), |
|
|
|
// hidden: item.status === 0, // 状态为0的隐藏
|
|
|
|
name: item.name, |
|
|
|
// meta: item.meta
|
|
|
|
meta: { |
|
|
|
title: item.title, |
|
|
|
icon: item.icon || '', |
|
|
|
roles: item.permission, |
|
|
|
outerFirst:first |
|
|
|
}, |
|
|
|
} |
|
|
|
let menu = _item |
|
|
|
if(first && item.component == '@/layout'){ |
|
|
|
menu = { |
|
|
|
path: '/', |
|
|
|
component: Layout, |
|
|
|
redirect: '/' + item.name, |
|
|
|
children: [], |
|
|
|
} |
|
|
|
menu.children = [] |
|
|
|
menu.children.push(_item) |
|
|
|
} |
|
|
|
// 一级菜单 二级菜单 特定属性
|
|
|
|
// if (item.component == '@/layout' || item.component == 'index') {
|
|
|
|
// menu.alwaysShow = true
|
|
|
|
// menu.redirect = 'noRedirect'
|
|
|
|
// }
|
|
|
|
// if (item.sort < 99) {
|
|
|
|
// menu.level = 1
|
|
|
|
// } else if (item.sort > 99 && item.sort < 9999) {
|
|
|
|
// menu.level = 2
|
|
|
|
// } else {
|
|
|
|
// menu.level = 3
|
|
|
|
// }
|
|
|
|
// iframe页面处理
|
|
|
|
// if (item.permission.indexOf('Report') > -1) {
|
|
|
|
// // delete menu.component
|
|
|
|
// menu.iframeComponent = item.component === '@/layout' ? Layout : loadView(item.component)
|
|
|
|
// menu.hasOpen = false // 是否打开过,默认false
|
|
|
|
// }
|
|
|
|
if (item.children && item.children.length > 0) { |
|
|
|
generaMenu(menu.children, item.children) |
|
|
|
} |
|
|
|
// if (item.permission == 'skip' && item.children.length == 0) {
|
|
|
|
// }
|
|
|
|
routes.push(menu) |
|
|
|
}) |
|
|
|
return routes |
|
|
|
} |
|
|
|
|
|
|
|
// todo:接口返回的层级菜单,与查重后最终显示的菜单数组做查重及组合处理
|
|
|
|
export function initTreeMenusHandle(tree, list,zh,first) { |
|
|
|
let _res = [] |
|
|
|
tree.forEach(item=>{ |
|
|
|
if(list.indexOf(item.name) >= 0){ |
|
|
|
item.title = zh[item.name] || item.name |
|
|
|
if(first)item.component = '@/layout' |
|
|
|
if (item.children && item.children.length > 0) { |
|
|
|
item.children = initTreeMenusHandle(item.children,list,zh) |
|
|
|
} |
|
|
|
_res.push(item) |
|
|
|
} |
|
|
|
}) |
|
|
|
return _res |
|
|
|
} |
|
|
|
const actions = { |
|
|
|
generateRoutes({ |
|
|
|
getApiColumnsNames({ |
|
|
|
commit |
|
|
|
}, userId) { |
|
|
|
return new Promise(resolve => { |
|
|
|
// let accessedRoutes = asyncRoutes
|
|
|
|
// // accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
|
|
|
|
let accessedRoutes = asyncRoutes |
|
|
|
// accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
|
|
|
|
// let indexVal = 0
|
|
|
|
// let childrenIndex = 0
|
|
|
|
// filterAccessedRoutes(accessedRoutes,indexVal,childrenIndex)
|
|
|
|
// commit('SET_ROUTES', accessedRoutes)
|
|
|
|
// resolve(accessedRoutes)
|
|
|
|
// todo-new:动态路由(等token接口恢复后处理)
|
|
|
|
getWebMenu({userId: userId}).then(res => { |
|
|
|
let accessedRoutes = generaMenu(asyncRoutes, res) |
|
|
|
let indexVal = 0 |
|
|
|
let childrenIndex = 0 |
|
|
|
filterAccessedRoutes(accessedRoutes,indexVal,childrenIndex) |
|
|
|
getDefinitionMenu(true).then(res => { |
|
|
|
let _allConfig = res.auth.grantedPolicies;//所有配置
|
|
|
|
let _zh = res.localization.values[localStorage.getItem('columnsApiNamesZh')]; |
|
|
|
localStorage.setItem("interfaceBoardColumnsNames", JSON.stringify(_zh)); |
|
|
|
let _menuList = []//接口获取所有的菜单
|
|
|
|
for(let item in _allConfig){ |
|
|
|
let point_number = item.split('.').length - 1 |
|
|
|
// 只选择配置项中的数据
|
|
|
|
if(point_number == 1 && item.substring(0,item.indexOf('.')) == localStorage.getItem('columnsApiNamesZh')){ |
|
|
|
_menuList.push(item.substring(item.indexOf('.') + 1,item.length)) |
|
|
|
} |
|
|
|
} |
|
|
|
let _noShowMenus = ['Z.AsnDet']//不显示的菜单
|
|
|
|
// 去掉不显示的菜单后全部显示的菜单
|
|
|
|
let _showMenus = _menuList.filter(item1 => !_noShowMenus.some(item2 => item2 === item1)) |
|
|
|
// 数据模拟,todo:接口获取
|
|
|
|
let _treeMenusAll = [ |
|
|
|
{name:"aaaaaaa"}, |
|
|
|
{name:"ExportCustomUserSetting" |
|
|
|
// ,children:[
|
|
|
|
// {name:'OutgoingDataHistory',children:[
|
|
|
|
// {name:'IncomingData',children:[
|
|
|
|
// {name:'OutgoingDataHistory'},
|
|
|
|
// {name:'IncomingData'},
|
|
|
|
// {name:'333333'},
|
|
|
|
// ]},
|
|
|
|
// {name:'eee1111-bbb',children:[
|
|
|
|
// {name:'ExportCustomUserSetting'},
|
|
|
|
// {name:'MessageReceive'},
|
|
|
|
// ]},
|
|
|
|
// ]},
|
|
|
|
// {name:'eee222'},
|
|
|
|
// {name:'eee333'},
|
|
|
|
// {name:'eee444'},
|
|
|
|
// {name:'eee555'},
|
|
|
|
// ]
|
|
|
|
}, |
|
|
|
{name:"OutgoingDataHistory"}, |
|
|
|
{name:"IncomingData"}, |
|
|
|
{name:"IncomingDataHistory"}, |
|
|
|
{name:"MesProductL7PartsNote"}, |
|
|
|
{name:"MessageReceive"}, |
|
|
|
{name:"OutgoingData"}, |
|
|
|
{name:"AsnDet"}, |
|
|
|
{name:"AsnMstr"}, |
|
|
|
{name:"Bom"}, |
|
|
|
{name:"CustPart"}, |
|
|
|
{name:"Cust"}, |
|
|
|
{name:"Inventory"}, |
|
|
|
{name:"Loc"}, |
|
|
|
{name:"Part"}, |
|
|
|
{name:"PoDet"}, |
|
|
|
{name:"PoMstr"}, |
|
|
|
{name:"PrhHist"}, |
|
|
|
{name:"ProdLine"}, |
|
|
|
{name:"ReceiptDet"}, |
|
|
|
{name:"ReceiptMstr"}, |
|
|
|
{name:"ReturnDet"}, |
|
|
|
{name:"ReturnMstr"}, |
|
|
|
{name:"SodDet"}, |
|
|
|
{name:"VendPart"}, |
|
|
|
{name:"Vend"}, |
|
|
|
] |
|
|
|
|
|
|
|
let _initTreeMenus = [] |
|
|
|
if(_treeMenusAll && _treeMenusAll.length > 0){ |
|
|
|
_initTreeMenus = initTreeMenusHandle(_treeMenusAll,_showMenus,_zh,true) |
|
|
|
}else{ |
|
|
|
_initTreeMenus = _showMenus |
|
|
|
} |
|
|
|
// 最后查重+层级查重后的菜单
|
|
|
|
let _initEndMenus = generaMenu(asyncRoutes, _initTreeMenus,true) |
|
|
|
let accessedRoutes = _initEndMenus |
|
|
|
// let indexVal = 0
|
|
|
|
// let childrenIndex = 0
|
|
|
|
// filterAccessedRoutes(accessedRoutes,indexVal,childrenIndex)
|
|
|
|
commit('SET_ROUTES', accessedRoutes) |
|
|
|
resolve(accessedRoutes) |
|
|
|
}).catch(err => { |
|
|
|
console.log(err) |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
}, |
|
|
|
// generateRoutes({
|
|
|
|
// commit
|
|
|
|
// }, userId) {
|
|
|
|
// return new Promise(resolve => {
|
|
|
|
// // let accessedRoutes = asyncRoutes
|
|
|
|
// // // accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
|
|
|
|
// // let indexVal = 0
|
|
|
|
// // let childrenIndex = 0
|
|
|
|
// // filterAccessedRoutes(accessedRoutes,indexVal,childrenIndex)
|
|
|
|
// // commit('SET_ROUTES', accessedRoutes)
|
|
|
|
// // resolve(accessedRoutes)
|
|
|
|
// // todo-new:动态路由(等token接口恢复后处理)
|
|
|
|
// getWebMenu({userId: userId}).then(res => {
|
|
|
|
// let accessedRoutes = generaMenu(asyncRoutes, res)
|
|
|
|
// let indexVal = 0
|
|
|
|
// let childrenIndex = 0
|
|
|
|
// filterAccessedRoutes(accessedRoutes,indexVal,childrenIndex)
|
|
|
|
// commit('SET_ROUTES', accessedRoutes)
|
|
|
|
// resolve(accessedRoutes)
|
|
|
|
// }).catch(err => {
|
|
|
|
// console.log(err)
|
|
|
|
// })
|
|
|
|
// })
|
|
|
|
// }
|
|
|
|
} |
|
|
|
|
|
|
|
export default { |
|
|
@ -160,4 +280,4 @@ export default { |
|
|
|
state, |
|
|
|
mutations, |
|
|
|
actions |
|
|
|
} |
|
|
|
} |