feat: add function of async router and async menu; 🌟

新增:异步路由和菜单功能;
This commit is contained in:
iczer
2020-07-29 11:08:01 +08:00
parent a4764d880d
commit bfb0358217
36 changed files with 614 additions and 450 deletions

View File

@@ -1,36 +1,73 @@
import PouchDB from 'pouchdb'
let db = new PouchDB('adminDb')
export default {
namespaced: true,
state: {
user: {
name: '',
avatar: '',
position: '',
address: ''
user: undefined,
permissions: [],
roles: [],
routesConfig: []
},
getters: {
user: state => {
if (!state.user) {
try {
const user = localStorage.getItem(process.env.VUE_APP_USER_KEY)
state.user = JSON.parse(user)
} catch (e) {
console.error(e)
}
}
return state.user
},
permissions: state => {
if (!state.permissions || state.permissions.length === 0) {
try {
const permissions = localStorage.getItem(process.env.VUE_APP_PERMISSIONS_KEY)
state.permissions = JSON.parse(permissions)
} catch (e) {
console.error(e.message)
}
}
return state.permissions
},
roles: state => {
if (!state.roles || state.roles.length === 0) {
try {
const roles = localStorage.getItem(process.env.VUE_APP_ROLES_KEY)
state.roles = JSON.parse(roles)
} catch (e) {
console.error(e.message)
}
}
return state.roles
},
routesConfig: state => {
if (!state.routesConfig || state.routesConfig.length === 0) {
try {
const routesConfig = localStorage.getItem(process.env.VUE_APP_ROUTES_KEY)
state.routesConfig = eval(routesConfig) ? JSON.parse(routesConfig) : state.routesConfig
} catch (e) {
console.error(e.message)
}
}
return state.routesConfig
}
},
mutations: {
setUser (state, user) {
state.user = user
db.get('currUser').then(doc => {
db.put({
_id: 'currUser',
_rev: doc._rev,
user: user
})
}).catch(e => {
if (e.status === 404) {
db.put({
_id: 'currUser',
user: user
})
} else {
throw e
}
})
localStorage.setItem(process.env.VUE_APP_USER_KEY, JSON.stringify(user))
},
setPermissions(state, permissions) {
state.permissions = permissions
localStorage.setItem(process.env.VUE_APP_PERMISSIONS_KEY, JSON.stringify(permissions))
},
setRoles(state, roles) {
state.roles = roles
localStorage.setItem(process.env.VUE_APP_ROLES_KEY, JSON.stringify(roles))
},
setRoutesConfig(state, routesConfig) {
state.routesConfig = routesConfig
localStorage.setItem(process.env.VUE_APP_ROUTES_KEY, JSON.stringify(routesConfig))
}
}
}

View File

@@ -8,6 +8,7 @@ export default {
palettes: ADMIN.palettes,
dustbins: [],
pageMinHeight: 0,
menuData: [],
...config,
},
mutations: {
@@ -46,6 +47,12 @@ export default {
},
correctPageMinHeight(state, minHeight) {
state.pageMinHeight += minHeight
},
setMenuData(state, menuData) {
state.menuData = menuData
},
setAsyncRoutes(state, asyncRoutes) {
state.asyncRoutes = asyncRoutes
}
}
}