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

11 months ago
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: "",
11 months ago
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
11 months ago
}
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
},
11 months ago
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
11 months ago
}
}
const actions = {
setPermissions({ commit }, permissions) {
commit('setPermissions', permissions)
},
setCaseId({ commit }, conversationId) {
commit('setConversationId', conversationId)
},
11 months ago
async login({ commit }, userInfo) {
const { userAccount, password } = userInfo
11 months ago
const { data } = await login({
userAccount,
password: password
11 months ago
})
const { userName } = data
const accessToken = data.token
11 months ago
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}`)
11 months ago
} 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
11 months ago
if (userName) {
commit('setUsername', userName)
commit('setAdminFlag', adminFlag)
commit('setAvatar', headPicId)
commit('setPermissions', permission.length > 0 ? permission : ['p_home'])
return permission
11 months ago
} 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 }