emis-sapp/store/modules/user.js
2024-05-31 18:42:15 +08:00

91 lines
1.6 KiB
JavaScript

import { USERKEY } from "../actionKey"
import {
setSessionXToken,
getSessionXToken,
setSessionUserInfo,
getSessionUserInfo
} from "@/session"
import * as apiService from "@/common/api"
import { goto } from "@/common/untool"
export default {
state: {
info: getSessionUserInfo(),
token: getSessionXToken(),
},
mutations: {
[USERKEY.LOGIN](state, provider) {
const {
token,
info
} = provider
state.token = provider
},
[USERKEY.GETUSERINFO](state, provider) {
state.info = provider
},
[USERKEY.LOGOUT](state) {
state.token = '';
state.info = {}
},
},
getters: {
// packInfo(state) {
// return state.user
// }
},
actions: {
async [USERKEY.LOGIN]({
dispatch,
commit,
state,
rootState
}, options) {
let token = state.token
const resLgn = await apiService.loginByApp(options)
token = resLgn.token
setSessionXToken(token)
commit(USERKEY.LOGIN, token)
},
async [USERKEY.LOGOUT]({
dispatch,
commit,
state,
rootState
}, options) {
setSessionUserInfo({})
setSessionXToken('')
commit(USERKEY.LOGOUT)
},
async [USERKEY.GETUSERINFO]({
dispatch,
commit,
state,
rootState
}, options) {
if(!state.token) {
console.log('缺少token')
// TODO
setTimeout(()=> {
goto("login/login", 2)
}, 200)
return
}
const resInfo = await apiService.getInfoByApp()
const info = {
...resInfo.user,
roles: resInfo.user,
permissions: resInfo.permissions
}
let resQr = await apiService.getStaffQRCodePng()
info.qrCodeImgUrl = resQr?.data?.fileUrl
commit(USERKEY.GETUSERINFO, info)
},
}
}