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 }