You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fu-hsi-web/src/store/modules/user.js

147 lines
3.7 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import Vue from 'vue'
import { getUserInfo, login } from '@/api/base/user'
import {
getAccessToken,
removeAccessToken,
setAccessToken
} from '@/utils/accessToken'
// import { resetRouter } from '@/router'
import { title, tokenName } from '@/config'
import { resetRouter } from '@/router'
const state = () => ({
accessToken: getAccessToken(),
username: '',
name: '-',
cardId: '',
userId: null,
unitId: null,
unitLevel: null,
endTime: null,
avatar: null,
adminFlag: '',
caseId: "",
permissions: []
})
const getters = {
accessToken: (state) => state.accessToken,
username: (state) => state.username,
name: (state) => state.name,
phone: (state) => state.phone,
avatar: (state) => state.avatar,
cardId: (state) => state.cardId,
userId: (state) => state.userId,
unitId: (state) => state.unitId,
adminFlag: (state) => state.adminFlag,
permissions: (state) => state.permissions,
caseId: (state) => state.caseId
}
const mutations = {
setAccessToken(state, accessToken) {
state.accessToken = accessToken
setAccessToken(accessToken)
},
setUserId(state, userId) {
state.userId = userId
},
setCardId(state, cardId) {
state.cardId = cardId
},
setUnitId(state, unitId) {
state.unitId = unitId
},
setUsername(state, username) {
state.username = username
},
setAdminFlag(state, adminFlag) {
state.adminFlag = adminFlag
},
setName(state, name) {
state.name = name
},
setPhone(state, phone) {
state.phone = phone
},
setAvatar(state, avatar) {
state.avatar = avatar
},
setEndTime(state, endTime) {
state.endTime = endTime
},
setPermissions(state, permissions) {
state.permissions = permissions
},
setConversationId(state, conversationId) {
state.conversationId = conversationId
}
}
const actions = {
setPermissions({ commit }, permissions) {
commit('setPermissions', permissions)
},
setCaseId({ commit }, conversationId) {
commit('setConversationId', conversationId)
},
async login({ commit }, userInfo) {
const { userAccount, password } = userInfo
const { data } = await login({
userAccount,
password: password
})
const { userName } = data
const accessToken = data.token
if (accessToken) {
commit('setAccessToken', accessToken)
const hour = new Date().getHours()
const thisTime =
hour < 8
? '早上好'
: hour <= 11
? '上午好'
: hour <= 13
? '中午好'
: hour < 18
? '下午好'
: '晚上好'
Vue.prototype.$baseNotify(`欢迎登录${userName}`, `${thisTime}`)
} else {
Vue.prototype.$baseMessage(
`登录接口异常,未正确返回${tokenName}...`,
'error'
)
}
},
async getUserInfo({ commit }) {
const { data } = await getUserInfo()
if (!data) {
Vue.prototype.$baseMessage('验证失败,请重新登录...', 'error')
return false
}
console.log(data, 'userData')
const { permission, userName, headPicId, adminFlag } = data
if (userName) {
commit('setUsername', userName)
commit('setAdminFlag', adminFlag)
commit('setAvatar', headPicId)
commit('setPermissions', permission.length > 0 ? permission : ['p_home'])
return permission
} else {
Vue.prototype.$baseMessage('用户信息接口异常', 'error')
return false
}
},
async logout({ dispatch }) {
await dispatch('resetAccessToken')
await resetRouter()
},
resetAccessToken({ commit }) {
commit('setPermissions', [])
commit('setAccessToken', '')
localStorage.removeItem('validData')
removeAccessToken()
}
}
export default { state, getters, mutations, actions }