This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/src/store/modules/user.js

100 lines
2.7 KiB
JavaScript
Raw Normal View History

2021-06-11 10:00:22 +08:00
import { post } from '@/utils/http'
import router from '@/router'
import { sortByOrderNum, getWelcomeMenu } from '@/permission'
2021-06-16 10:02:54 +08:00
import dayjs from 'dayjs'
import utc from 'dayjs/plugin/utc'
import { ElMessage } from 'element-plus' // dependent on utc plugin
2021-06-16 10:02:54 +08:00
dayjs.extend(utc)
2021-06-11 10:00:22 +08:00
2021-06-07 18:35:16 +08:00
const user = {
2021-06-11 10:00:22 +08:00
state () {
2021-06-07 18:35:16 +08:00
return {
menuList: [],
buttonList: [],
roleList: []
}
},
mutations: {
setMenuList (state, menuList) {
state.menuList = [...menuList]
},
setButtonList (state, buttonList) {
state.buttonList = [...buttonList]
},
setRoleList (state, roleList) {
state.roleList = [...roleList]
},
clean (state) {
state.menuList = []
state.buttonList = []
state.roleList = []
}
},
getters: {
menuList (state) {
2021-06-11 10:00:22 +08:00
return state.menuList
2021-06-07 18:35:16 +08:00
},
buttonList (state) {
return state.buttonList
},
roleList (state) {
return state.roleList
}
},
actions: {
loginSuccess (store, res) {
2022-04-13 10:14:36 +08:00
console.info(res)
window.$dayJs.tz.setDefault(res.data.timezone)
2022-01-03 22:46:22 +08:00
localStorage.setItem('cn-token', res.data.token)
2021-06-11 10:00:22 +08:00
localStorage.setItem('cn-sys-name', res.data.systemName)
if (res.systemLogo) {
localStorage.setItem('cn-sys-logo', res.data.systemLogo)
}
localStorage.setItem('cn-sys-timezone', res.data.timezone)
2021-06-23 15:57:34 +08:00
localStorage.setItem('cn-timezone-offset', dayjs.tz().utcOffset() / 60)
localStorage.setItem('cn-timezone-local-offset', dayjs().utcOffset() / 60)
2022-04-13 10:14:36 +08:00
post('/sys/user/permissions', { token: res.data.token }).then(res2 => {
const menuList = sortByOrderNum(res2.data.menus)
2021-06-11 10:00:22 +08:00
store.commit('setMenuList', menuList)
2022-04-13 10:14:36 +08:00
store.commit('setButtonList', res2.data.buttons)
store.commit('setRoleList', res2.data.roles)
2021-06-11 10:00:22 +08:00
2022-04-13 10:14:36 +08:00
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 kv = t.split('=')
query[kv[0]] = kv[1]
})
}
2021-06-11 10:00:22 +08:00
router.push({
2022-04-13 10:14:36 +08:00
path: path,
query: query
2021-06-11 10:00:22 +08:00
})
} else {
2022-04-13 10:14:36 +08:00
const welcomeMenu = getWelcomeMenu(menuList)
if (welcomeMenu) {
router.push({
path: welcomeMenu.route,
query: {
t: +new Date()
}
})
} else {
ElMessage.error('No menu')
}
2021-06-11 10:00:22 +08:00
}
})
2021-06-07 18:35:16 +08:00
},
logoutSuccess (store, res) {
2021-06-11 10:00:22 +08:00
localStorage.removeItem('cn-username')
2022-01-03 22:46:22 +08:00
localStorage.removeItem('cn-username')
localStorage.removeItem('cn-token')
2021-06-07 18:35:16 +08:00
}
}
}
export default user