|
@@ -17,10 +17,10 @@ export default {
|
|
|
components: {},
|
|
|
data () {
|
|
|
return {
|
|
|
- routes,
|
|
|
- main,
|
|
|
- menu:[],
|
|
|
- tmpRoute:[]
|
|
|
+ routes, // 可否不挂到组件上?
|
|
|
+ main, // 可否不挂到组件上?
|
|
|
+ menu:[], // 适用于此用户的菜单
|
|
|
+ tmpRoute:[] //适用于此用户的所有子菜单项的集合。和menu有冗余。
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -31,6 +31,7 @@ export default {
|
|
|
set: function () {
|
|
|
}
|
|
|
},
|
|
|
+ // 当前url所属的主菜单
|
|
|
belong: {
|
|
|
get: function () {
|
|
|
return this.$route.meta.belong
|
|
@@ -40,6 +41,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
+ // 前端路由变化后,把active的子菜单项保存到store。
|
|
|
'activeIdx':{
|
|
|
immediate:true,
|
|
|
handler: function (newVal) {
|
|
@@ -57,12 +59,15 @@ export default {
|
|
|
let path = {path:`/${item.key}${item.param?`/${item.param.map(tt=>tt.default).join('/')}`:''}`}
|
|
|
this.$router.push(path)
|
|
|
},
|
|
|
+ // mounted时执行。根据后端给的菜单和配置文件里的菜单和用户身份,得到最终菜单保存到本组件,并保存active菜单项到store。
|
|
|
async getResource(){
|
|
|
+ // 从后端拿到该用户有权限的菜单列表。
|
|
|
let result = await this.$http({
|
|
|
method: 'GET',
|
|
|
url: '/sys/resource/getTreePermissions'
|
|
|
})
|
|
|
-
|
|
|
+ // menu.js里配置的routes列表里的每一项,如果在后端给的列表里也有对应项,则二者合并保存到此变量。
|
|
|
+ // 或者那一项是系统管理类型的,且用户是管理员,也保存到此变量。
|
|
|
this.tmpRoute = routes.filter(item => {
|
|
|
let tmp = ''
|
|
|
result.data.forEach(sub=>{
|
|
@@ -73,24 +78,27 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
|
|
|
- if (item.type == "system") {
|
|
|
- if (window.localStorage.getItem("role") == 'sys_admin') {
|
|
|
- tmp = item
|
|
|
- }
|
|
|
- else{
|
|
|
- tmp = ''
|
|
|
- }
|
|
|
+ if (item.type == "system") {
|
|
|
+ if (window.localStorage.getItem("role") == 'sys_admin') {
|
|
|
+ tmp = item
|
|
|
}
|
|
|
+ else{
|
|
|
+ tmp = ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return tmp ? Object.assign(item,tmp) : tmp
|
|
|
});
|
|
|
|
|
|
console.log(this.tmpRoute);
|
|
|
|
|
|
+ // 找出active的那一项并保存到store
|
|
|
let temp = this.tmpRoute.filter(item=>{
|
|
|
return item.key == this.activeIdx
|
|
|
})
|
|
|
this.$store.commit("SetActiveMenu", temp[0]);
|
|
|
|
|
|
+ // menu.js里main加上子菜单数据,去掉没有子菜单的主菜单项,保存到本组件。
|
|
|
this.menu = main.filter(item=>{
|
|
|
let route = []
|
|
|
this.tmpRoute.forEach((sub)=>{
|