import { login, logout } from '@/api/user' import { getSessionId, setSessionId, removeSessionId,getUserName,setUserName,removeUserName ,getAccount,setAccount,removeAccount,getRoleName,removeRoleName,setRoleName,removeBtnIds,getUserId,removeUserId,setUserId } from '@/utils/auth' import { resetRouter } from '@/router' import router from '@/router' import meunUtils from '@/utils/MenuUtils'; import md5 from 'js-md5'; const getDefaultState = () => { return { sessionId: getSessionId(), name: getUserName(), avatar: getAccount(), qyp_btnIds: JSON.parse(localStorage.getItem('qyp_btnIds')) , roleName:getRoleName(), userId:getUserId() } } const state = getDefaultState() const mutations = { RESETQYP_STATE: (state) => { Object.assign(state, getDefaultState()) }, SETQYP_SESSIONID: (state, getSessionId) => { state.getSessionId = getSessionId }, SETQYP_NAME: (state, name) => { state.name = name }, SETQYP_AVATAR: (state, avatar) => { state.avatar = avatar }, SETQYP_bTNIDS: (state, btnIds) => { state.qyp_btnIds = btnIds }, SETQYP_ROLENAME: (state, roleName) => { state.roleName = roleName }, SETQYP_USERID: (state, userId) => { state.userId = userId } } const actions = { // user login login({ commit }, userInfo) { const { username, password } = userInfo; return new Promise((resolve, reject) => { login({ userNo: username.trim(), password: md5(username.trim() + password),sysType:4}).then(({body}) => { let allMenuList = body.roleInfo.powerInfos; // 处理菜单 localStorage.setItem('qyp_routers', JSON.stringify(allMenuList)) localStorage.setItem('qyp_btnIds', JSON.stringify(body.roleInfo.btnInfos)); let tempMenu = allMenuList; let data = tempMenu ? tempMenu : []; let _router = meunUtils(data); router.addRoutes(_router); router.options.routes=_router; commit('SETQYP_bTNIDS', body.roleInfo.btnInfos) commit('SETQYP_ROLENAME', body.roleName) setRoleName(body.roleName) commit('SETQYP_SESSIONID', body.sessionId) setSessionId(body.sessionId) commit('SETQYP_NAME', body.name) setUserName(body.name) commit('SETQYP_AVATAR', body.account) setUserId(body.id) commit('SETQYP_USERID', body.id) setAccount(body.account) resolve(true) }).catch(error => { reject(error) }) }) }, // user logout logout({ commit, state }) { return new Promise((resolve, reject) => { logout().then(() => { removeSessionId() // must remove token first removeUserName() removeAccount() resetRouter() removeRoleName() removeBtnIds() removeUserId(); // dispatch('tagsView/delAllViews', null, { root: true }) localStorage.removeItem("qyp_routers") commit('RESETQYP_STATE') resolve() }).catch(error => { reject(error) }) }) }, // remove token resetToken({ commit }) { return new Promise(resolve => { removeToken() // must remove token first commit('RESETQYP_STATE') resolve() }) } } export default { namespaced: true, state, mutations, actions }