import { login, logout, getUserInfo, getMessage, getContentByMsgId, hasRead, removeReaded, restoreTrash } from '@/api/user' import {setToken, getToken} from '@/libs/util' import {Message} from 'view-design' export default { state: { RealName:'', userName: '', userId: '', defaultworkflow: '', avatorImgPath: '', RateGradeFlag:true, token: getToken(), access: '', hasGetInfo: false, messageUnreadList: [], messageReadedList: [], messageTrashList: [], messageContentStore: {}, current:'' }, mutations: { setAvator(state, avatorPath) { state.avatorImgPath = avatorPath }, setRateGradeFlag(state, RateGradeFlag) { state.RateGradeFlag = RateGradeFlag }, setUserId(state, id) { state.userId = id }, setDefaultworkflow(state, defaultworkflow) { state.defaultworkflow = defaultworkflow }, setUserName(state, name) { state.userName = name }, setRealName(state,RealName){ state.RealName = RealName }, setAccess(state, access) { state.access = access }, setToken(state, token) { state.token = token setToken(token) }, setHasGetInfo(state, status) { state.hasGetInfo = status }, setMessageUnreadList(state, list) { state.messageUnreadList = list }, setMessageReadedList(state, list) { state.messageReadedList = list }, setMessageTrashList(state, list) { state.messageTrashList = list }, updateMessageContentStore(state, {msg_id, content}) { state.messageContentStore[msg_id] = content }, moveMsg(state, {from, to, msg_id}) { const index = state[from].findIndex(_ => _.msg_id === msg_id) const msgItem = state[from].splice(index, 1)[0] msgItem.loading = false state[to].unshift(msgItem) } }, getters: { messageUnreadCount: state => state.messageUnreadList.length, messageReadedCount: state => state.messageReadedList.length, messageTrashCount: state => state.messageTrashList.length }, actions: { // 登录 handleLogin({commit}, {CompanyRemark,userName, password}) { userName = userName.trim() return new Promise((resolve, reject) => { login({ CompanyRemark, userName, password }).then(res => { const data = res.data if (data.Check) { commit('setToken', data.Data) resolve() } else { commit('setToken', '') reject(err) } }).catch(err => { resolve() reject(err) }) }) }, // 退出登录 handleLogOut({state, commit}) { return new Promise((resolve, reject) => { logout(state.token).then(() => { commit('setToken', '') commit('setAccess', []) resolve() }).catch(err => { reject(err) }) // 如果你的退出登录无需请求接口,则可以直接使用下面三行代码而无需使用logout调用接口 // commit('setToken', '') // commit('setAccess', []) // resolve() }) }, // 获取用户相关信息 getUserInfo({state, commit}) { return new Promise((resolve, reject) => { try { getUserInfo(state.token).then(res => { const data = res.data if (data.Check) { let ran = Math.random() commit('setRateGradeFlag', data.Data.defaultrategrade) commit('setAvator', data.Data.avator) commit('setUserName', data.Data.name) commit('setUserId', data.Data.user_id) commit('setDefaultworkflow', data.Data.defaultworkflow) commit('setAccess', data.Data.access) console.log('查看后台返回RealName',data.Data.releName) commit('setRealName',data.Data.releName + ran) localStorage.setItem('RateGradeFlag',data.Data.defaultrategrade) localStorage.setItem('RiskProjectId',data.Data.defaultproj_id) localStorage.setItem('RiskCompanyId',data.Data.company_id) localStorage.setItem('userId',data.Data.user_id) localStorage.setItem('RealName', data.Data.releName) localStorage.setItem('defaultworkflow',data.Data.defaultworkflow) localStorage.setItem('defaultmoneymonitorflag',data.Data.defaultmoneymonitorflag) if (data.Data.access[0] == 'super_admin'){ localStorage.setItem('userType','superAdmin') }else if (data.Data.access[0] == 'company_admin'){ localStorage.setItem('userType','admin') }else{ localStorage.setItem('userType','user') } localStorage.setItem('defaultmode',data.Data.defaultmode) localStorage.setItem('defaultratemode',data.Data.defaultratemode) resolve(data) } else { commit('setToken', '') commit('setAccess', []) resolve() } }).catch(err => { reject(err) }) } catch (error) { reject(error) } }) }, // 获取消息列表,其中包含未读、已读、回收站三个列表 getMessageList({state, commit}) { return new Promise((resolve, reject) => { getMessage().then(res => { const {unread, readed, trash} = res.data commit('setMessageUnreadList', unread.sort((a, b) => new Date(b.create_time) - new Date(a.create_time))) commit('setMessageReadedList', readed.map(_ => { _.loading = false return _ }).sort((a, b) => new Date(b.create_time) - new Date(a.create_time))) commit('setMessageTrashList', trash.map(_ => { _.loading = false return _ }).sort((a, b) => new Date(b.create_time) - new Date(a.create_time))) resolve() }).catch(error => { reject(error) }) }) }, // 根据当前点击的消息的id获取内容 getContentByMsgId({state, commit}, {msg_id}) { return new Promise((resolve, reject) => { let contentItem = state.messageContentStore[msg_id] if (contentItem) { resolve(contentItem) } else { getContentByMsgId(msg_id).then(res => { const content = res.data commit('updateMessageContentStore', {msg_id, content}) resolve(content) }) } }) }, // 把一个未读消息标记为已读 hasRead({commit}, {msg_id}) { return new Promise((resolve, reject) => { hasRead(msg_id).then(() => { commit('moveMsg', { from: 'messageUnreadList', to: 'messageReadedList', msg_id }) resolve() }).catch(error => { reject(error) }) }) }, // 删除一个已读消息到回收站 removeReaded({commit}, {msg_id}) { return new Promise((resolve, reject) => { removeReaded(msg_id).then(() => { commit('moveMsg', { from: 'messageReadedList', to: 'messageTrashList', msg_id }) resolve() }).catch(error => { reject(error) }) }) }, // 还原一个已删除消息到已读消息 restoreTrash({commit}, {msg_id}) { return new Promise((resolve, reject) => { restoreTrash(msg_id).then(() => { commit('moveMsg', { from: 'messageTrashList', to: 'messageReadedList', msg_id }) resolve() }).catch(error => { reject(error) }) }) } } }