1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import { config } from '@/router'
- import { attach } from '@/constant/view'
- import user from './user'
- import { watch, ref } from 'vue'
- // 所有权限都有的router
- export const MUST_JOIN_NAVS = ['viewLayout', 'login', 'register', 'forget', 'scene', 'organization', 'sceneVisitor']
- // router对应的icon
- const ICON_MAP = {
- estate: 'iconfire_scenes',
- home: 'iconfire_home',
- vrmodel: 'iconfire_scenes',
- camera: 'iconfire_camera',
- dispatch: 'iconfire_management',
- organization: 'el-icon-guide',
- teaching: 'iconfire_study',
- user: 'iconfire_user',
- }
- const getNames = (config) => {
- let names = []
- config.forEach(item => {
- names.push(item.name)
- item.children && names.push(...getNames(item.children))
- })
- return names
- }
- const _getNavs = (items, notJoinNavs) => {
- let ret = []
- for (let i = 0; i < items.length; i++) {
- if (~notJoinNavs.indexOf(items[i].name)) {
- continue
- } else {
- if (items[i].children && items[i].name !== 'organization') {
- ret.push(..._getNavs(items[i].children, notJoinNavs))
- } else if (ICON_MAP[items[i].name]){
- let item = {
- ...items[i],
- icon: ICON_MAP[items[i].name]
- }
- ret.push(item)
- // delete item.component
- }
- }
- }
- return ret
- }
- const getNavs = () => {
-
- let names = getNames(config)
- let showNames = user.value.permission.map(item => item.viewName)
- console.log('showNames',showNames,user.value.permission);
- let notJoinNavs = names.filter(name =>
- ~Object.keys(attach).indexOf(name) || (
- !~showNames.indexOf(name) &&
- !~MUST_JOIN_NAVS.indexOf(name)
- )
- )
- return _getNavs(config, notJoinNavs)
- }
- const navs = ref([])
- watch(
- () => user.value.permission,
- () => navs.value = getNavs()
- )
- setTimeout(() => navs.value = getNavs())
- export default navs
|