120 lines
3.7 KiB
JavaScript
120 lines
3.7 KiB
JavaScript
import { get, post } from '@/utils/http'
|
|
import router from '@/router'
|
|
import { sortByOrderNum, getWelcomeMenu } from '@/permission'
|
|
import { ElMessage } from 'element-plus' // dependent on utc plugin
|
|
import { storageKey, dbDrilldownTableConfig } from '@/utils/constants'
|
|
import { getConfigVersion } from '@/utils/tools'
|
|
import { api } from '@/utils/api'
|
|
import { db } from '@/indexedDB'
|
|
|
|
const user = {
|
|
state () {
|
|
return {
|
|
menuList: [],
|
|
buttonList: [],
|
|
roleList: [],
|
|
drilldownTableConfigList: []
|
|
}
|
|
},
|
|
mutations: {
|
|
setMenuList (state, menuList) {
|
|
state.menuList = [...menuList]
|
|
},
|
|
setButtonList (state, buttonList) {
|
|
state.buttonList = [...buttonList]
|
|
},
|
|
setRoleList (state, roleList) {
|
|
state.roleList = [...roleList]
|
|
},
|
|
setDrilldownTableList (state, drilldownTableConfigList) {
|
|
state.drilldownTableConfigList = [...drilldownTableConfigList]
|
|
},
|
|
clean (state) {
|
|
state.menuList = []
|
|
state.buttonList = []
|
|
state.roleList = []
|
|
}
|
|
},
|
|
getters: {
|
|
menuList (state) {
|
|
return state.menuList
|
|
},
|
|
buttonList (state) {
|
|
return state.buttonList
|
|
},
|
|
roleList (state) {
|
|
return state.roleList
|
|
},
|
|
drilldownTableConfigList (state) {
|
|
return state.drilldownTableConfigList
|
|
}
|
|
},
|
|
actions: {
|
|
loginSuccess (store, res) {
|
|
post(api.permissions, { token: res.data.token }).then(res2 => {
|
|
const menuList = sortByOrderNum(res2.data.menus)
|
|
store.commit('setMenuList', menuList)
|
|
store.commit('setButtonList', res2.data.buttons)
|
|
store.commit('setRoleList', res2.data.roles)
|
|
|
|
if (res.loginSuccessPath) {
|
|
let tempArr = res.loginSuccessPath.split('?')
|
|
const path = tempArr[0]
|
|
const query = {}
|
|
if (tempArr[1]) {
|
|
tempArr = tempArr[1].split('&')
|
|
tempArr.forEach(t => {
|
|
const firstEqualIndex = t.indexOf('=')
|
|
const key = t.substring(0, firstEqualIndex)
|
|
const value = t.substring(firstEqualIndex + 1)
|
|
query[key] = value
|
|
})
|
|
}
|
|
router.push({
|
|
path: path,
|
|
query: query
|
|
})
|
|
} else {
|
|
const welcomeMenu = getWelcomeMenu(menuList)
|
|
if (welcomeMenu) {
|
|
router.push({
|
|
path: welcomeMenu.route,
|
|
query: {
|
|
t: +new Date()
|
|
}
|
|
})
|
|
} else {
|
|
ElMessage.error('No menu')
|
|
}
|
|
}
|
|
})
|
|
get(api.config, { ckey: 'drill_down_table_config' }).then(async res => {
|
|
if (res.code === 200 && res.page.list && res.page.list.length > 0) {
|
|
// 从接口返回整体配置,再读取用户缓存,将对应条目覆盖,作为使用的配置
|
|
const defaultConfigs = JSON.parse(res.page.list[0].cvalue)
|
|
await db[dbDrilldownTableConfig].put({
|
|
id: 'default',
|
|
version: defaultConfigs.version,
|
|
config: defaultConfigs.config
|
|
})
|
|
const userId = localStorage.getItem(storageKey.userId)
|
|
const oldVersion = await getConfigVersion(userId)
|
|
if (oldVersion !== defaultConfigs.version) {
|
|
db[dbDrilldownTableConfig].delete(userId)
|
|
}
|
|
}
|
|
})
|
|
get(api.config, { ckey: 'link_info' }).then(res => {
|
|
if (res.code === 200 && res.page.list && res.page.list.length > 0) {
|
|
localStorage.setItem(storageKey.linkInfo, res.page.list[0].cvalue)
|
|
}
|
|
})
|
|
},
|
|
logoutSuccess (store, res) {
|
|
localStorage.removeItem(storageKey.username)
|
|
localStorage.removeItem(storageKey.token)
|
|
}
|
|
}
|
|
}
|
|
export default user
|