emis-sapp/store/modules/user.js
2024-10-31 13:13:32 +08:00

99 lines
2.0 KiB
JavaScript

import { USERKEY } from "../actionKey"
import {
setSessionXToken,
getSessionXToken,
setSessionUserInfo,
getSessionUserInfo
} from "@/session"
import * as apiService from "@/common/api"
import { goto } from "@/common/untool"
import { goLogin } from "@/common/componentEventHandle"
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, provider) {
const { token, info } = provider
state.token = token;
state.info = info
},
},
getters: {
// packInfo(state) {
// return state.user
// }
},
actions: {
async [USERKEY.UPDATETOKEN]({
dispatch,
commit,
state,
rootState
}, options) {
let { token } = options
setSessionXToken(token)
commit(USERKEY.LOGIN, token)
},
async [USERKEY.LOGIN]({
dispatch,
commit,
state,
rootState
}, options) {
let token = state.token
const resLgn = await apiService.loginByApp(options)
token = resLgn.token
dispatch(USERKEY.UPDATETOKEN, { token })
},
async [USERKEY.LOGOUT]({
dispatch,
commit,
state,
rootState
}, options) {
let info = { logout: true }
let token = ''
setSessionUserInfo(info)
setSessionXToken(token)
commit(USERKEY.LOGOUT, { info, token })
},
async [USERKEY.GETUSERINFO]({
dispatch,
commit,
state,
rootState
}, options) {
if(!state.token) {
console.log('缺少token')
setTimeout(()=> {
goLogin()
}, 200)
return
}
const resInfo = await apiService.getInfoByApp()
const { userld, nickName } = resInfo.user
const kefuRes = await apiService.getOnlineKefuH5Url({ userld, nickName })
const info = {
...resInfo.user,
roles: resInfo.user,
permissions: resInfo.permissions,
kefuH5Url: kefuRes.data,
}
commit(USERKEY.GETUSERINFO, info)
},
}
}