|
|
@ -37,12 +37,12 @@ |
|
|
:dynamicMenuRoutes="dynamicMenuRoutes"> |
|
|
:dynamicMenuRoutes="dynamicMenuRoutes"> |
|
|
</sub-menu> |
|
|
</sub-menu> |
|
|
|
|
|
|
|
|
<sub-menu |
|
|
|
|
|
v-for="menu in this.favoriteList" |
|
|
|
|
|
:key="menu.menuId" |
|
|
|
|
|
:menu="menu" |
|
|
|
|
|
:dynamicMenuRoutes="dynamicMenuRoutes"> |
|
|
|
|
|
</sub-menu> |
|
|
|
|
|
|
|
|
<sub-menu |
|
|
|
|
|
v-for="menu in this.favoriteList" |
|
|
|
|
|
:key="menu.menuId" |
|
|
|
|
|
:menu="menu" |
|
|
|
|
|
:dynamicMenuRoutes="dynamicMenuRoutes"> |
|
|
|
|
|
</sub-menu> |
|
|
|
|
|
|
|
|
</el-menu> |
|
|
</el-menu> |
|
|
</div> |
|
|
</div> |
|
|
@ -53,6 +53,7 @@ |
|
|
import SubMenu from './main-sidebar-sub-menu' |
|
|
import SubMenu from './main-sidebar-sub-menu' |
|
|
import {isURL} from '@/utils/validate' |
|
|
import {isURL} from '@/utils/validate' |
|
|
import {userFavoriteList} from '@/api/userFavorite.js' |
|
|
import {userFavoriteList} from '@/api/userFavorite.js' |
|
|
|
|
|
import {treeDataTranslate} from '@/utils' |
|
|
|
|
|
|
|
|
export default { |
|
|
export default { |
|
|
data() { |
|
|
data() { |
|
|
@ -61,7 +62,9 @@ export default { |
|
|
search: '', |
|
|
search: '', |
|
|
categoryList: [], |
|
|
categoryList: [], |
|
|
uFavoriteList: [], |
|
|
uFavoriteList: [], |
|
|
favoriteList: [] |
|
|
|
|
|
|
|
|
favoriteList: [], |
|
|
|
|
|
newMenuList: [], |
|
|
|
|
|
list: [] |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
components: { |
|
|
components: { |
|
|
@ -117,81 +120,95 @@ export default { |
|
|
$route: 'routeHandle' |
|
|
$route: 'routeHandle' |
|
|
}, |
|
|
}, |
|
|
created() { |
|
|
created() { |
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId!=73) |
|
|
|
|
|
|
|
|
|
|
|
this.favoriteList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId==73) |
|
|
|
|
|
|
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId != 73) |
|
|
|
|
|
this.favoriteList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId == 73) |
|
|
this.userFavorites() |
|
|
this.userFavorites() |
|
|
this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]') |
|
|
this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]') |
|
|
this.routeHandle(this.$route) |
|
|
this.routeHandle(this.$route) |
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
// 用户收藏夹 |
|
|
// 用户收藏夹 |
|
|
userFavorites(){ |
|
|
|
|
|
|
|
|
userFavorites() { |
|
|
let query = { |
|
|
let query = { |
|
|
userId:this.$store.state.user.id, |
|
|
|
|
|
languageCode:this.$i18n.locale |
|
|
|
|
|
|
|
|
userId: this.$store.state.user.id, |
|
|
|
|
|
languageCode: this.$i18n.locale |
|
|
} |
|
|
} |
|
|
userFavoriteList(query).then(({data})=> { |
|
|
|
|
|
if (data.list.length>0){ |
|
|
|
|
|
|
|
|
userFavoriteList(query).then(({data}) => { |
|
|
|
|
|
if (data.list.length > 0) { |
|
|
this.favoriteList[0].list = data.list |
|
|
this.favoriteList[0].list = data.list |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 更具 当前节点id 获取上级节点 |
|
|
|
|
|
getParent(val, sum) { |
|
|
|
|
|
if (val == 0) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
let parent = this.list.filter(item => item.menuId == val) |
|
|
|
|
|
if (parent.length > 0) { |
|
|
|
|
|
parent[0].list.length = 0 |
|
|
|
|
|
sum.push(parent[0]) |
|
|
|
|
|
this.getParent(parent[0].parentId, sum) |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
// 搜索菜单方式1 start |
|
|
// 搜索菜单方式1 start |
|
|
searchMenu1() { |
|
|
searchMenu1() { |
|
|
|
|
|
|
|
|
if (this.search == "") { |
|
|
if (this.search == "") { |
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]') |
|
|
|
|
|
|
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId != 73) |
|
|
} else { |
|
|
} else { |
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]') |
|
|
|
|
|
|
|
|
let menuPlus = [] |
|
|
|
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId != 73) |
|
|
|
|
|
|
|
|
// this.menuList = this.treeFindPath(this.menuList).filter(this.search) |
|
|
// this.menuList = this.treeFindPath(this.menuList).filter(this.search) |
|
|
|
|
|
// 转换成list |
|
|
|
|
|
this.list = this.treeFindPath(this.menuList) |
|
|
let list = this.treeFindPath(this.menuList) |
|
|
let list = this.treeFindPath(this.menuList) |
|
|
list = this.distinct(list, list); |
|
|
list = this.distinct(list, list); |
|
|
|
|
|
// list中获取菜单 |
|
|
this.menuList = list.filter(item => item.name.indexOf(this.search) != -1) |
|
|
this.menuList = list.filter(item => item.name.indexOf(this.search) != -1) |
|
|
|
|
|
let menuSum = [] |
|
|
|
|
|
for (let data of this.menuList) { |
|
|
|
|
|
menuSum.push(data) |
|
|
|
|
|
this.getParent(data.parentId, menuSum) |
|
|
|
|
|
} |
|
|
|
|
|
menuSum = Array.from(new Set([...menuSum])) |
|
|
|
|
|
|
|
|
|
|
|
if (menuSum.length > 0) { |
|
|
|
|
|
let menuList = menuSum.filter(item => item.parentId == 0); |
|
|
|
|
|
this.menuList=menuList |
|
|
|
|
|
this.treeList(menuList,menuSum) |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
// 树结构菜单转换list |
|
|
|
|
|
|
|
|
// 封装树形结构 |
|
|
|
|
|
treeList(menuList,menuSum) { |
|
|
|
|
|
for (let m1 of menuList) { |
|
|
|
|
|
for (let m2 of menuSum) { |
|
|
|
|
|
if (m1.menuId == m2.parentId){ |
|
|
|
|
|
m1.list.push(m2) |
|
|
|
|
|
this.treeList( m1.list,menuSum) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
// 搜索菜单方式1 树结构菜单转换list |
|
|
treeFindPath(tree, path = []) { |
|
|
treeFindPath(tree, path = []) { |
|
|
if (!tree) return [] |
|
|
if (!tree) return [] |
|
|
for (const data of tree) { |
|
|
for (const data of tree) { |
|
|
path.push(data) |
|
|
path.push(data) |
|
|
if (data.list != null) { |
|
|
|
|
|
path.push(...data.list) |
|
|
|
|
|
delete data.list |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// if (data.list != null) { |
|
|
|
|
|
// path.push(...data.list) |
|
|
|
|
|
// delete data.list |
|
|
|
|
|
// } |
|
|
this.treeFindPath(data.list, path) |
|
|
this.treeFindPath(data.list, path) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return path |
|
|
return path |
|
|
}, |
|
|
}, |
|
|
// 搜索菜单方式1 去重 end |
|
|
|
|
|
|
|
|
// 搜索菜单方式1 去重 |
|
|
distinct(a, b) { |
|
|
distinct(a, b) { |
|
|
return Array.from(new Set([...a, ...b])) |
|
|
return Array.from(new Set([...a, ...b])) |
|
|
}, |
|
|
}, |
|
|
// 搜索菜单方式2 start |
|
|
|
|
|
searchMenu() { |
|
|
|
|
|
if (this.search == "") { |
|
|
|
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]') |
|
|
|
|
|
} else { |
|
|
|
|
|
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]') |
|
|
|
|
|
this.menuList = this.filterTree(this.menuList,this.search) |
|
|
|
|
|
console.log(this.menuList) |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
filterTree (tree = [], map , arr = []) { |
|
|
|
|
|
if (!tree.length) |
|
|
|
|
|
return [] |
|
|
|
|
|
for (let item of tree) { |
|
|
|
|
|
if (map.indexOf(item.name)>-1){ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
continue |
|
|
|
|
|
let node = {...item, list: []} |
|
|
|
|
|
arr.push(node) |
|
|
|
|
|
if (item.list && item.list.length) |
|
|
|
|
|
this.filterTree(item.list, map, node.list) } |
|
|
|
|
|
return arr |
|
|
|
|
|
}, |
|
|
|
|
|
// 路由操作 |
|
|
// 路由操作 |
|
|
routeHandle(route) { |
|
|
routeHandle(route) { |
|
|
if (route.meta.isTab) { |
|
|
if (route.meta.isTab) { |
|
|
@ -222,10 +239,10 @@ export default { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
<style > |
|
|
|
|
|
|
|
|
<style> |
|
|
.menu .el-input__inner { |
|
|
.menu .el-input__inner { |
|
|
background: transparent; |
|
|
background: transparent; |
|
|
width: 100px; |
|
|
|
|
|
|
|
|
width: 195px; |
|
|
font-size: 12px; |
|
|
font-size: 12px; |
|
|
color: #FFFFFF; |
|
|
color: #FFFFFF; |
|
|
border: #0BB2D4; |
|
|
border: #0BB2D4; |
|
|
|