import { setToken, getToken, removeToken } from '@/utils/auth'; import { user } from '@/store/mutation-types'; import { resetRouter } from '@/router'; import { login, updateLanguageType, GetLoginInfoByAccessCode } from '@/api/user'; const getDefaultSate = () => { const { token, isHas } = getToken(); return { session_id: isHas ? token.session_id : '', user_code: isHas ? token.user_code : '', user_real_name: isHas ? token.user_real_name : '', user_type: isHas ? token.user_type : '', user_name: isHas ? token.user_name : '', image_url: isHas ? token.image_url : '', language_type: isHas ? (token.language_type ? token.language_type : 'ZH') : 'ZH' }; }; const state = getDefaultSate(); const mutations = { [user.RESET_STATE]: state => { Object.assign(state, getDefaultSate()); }, [user.SET_USER_INFO]: ( state, { user_code, user_real_name, user_type, language_type, session_id, image_url } ) => { state.user_code = user_code; state.user_real_name = user_real_name; state.user_type = user_type; state.language_type = language_type; state.session_id = session_id; state.image_url = image_url; state.language_type = language_type || 'ZH'; }, [user.UPDATE_LANGUAGE_TYPE]: (state, language_type) => { localStorage.setItem('language_type', language_type); state.language_type = language_type; } }; const actions = { // 登录 login({ commit }, userInfo) { const { loginForm } = userInfo; return new Promise((reslove, reject) => { login(loginForm) .then(response => { setToken(response); commit(user.SET_USER_INFO, response); reslove(); }) .catch(error => { reject(error); }); }); }, // 根据身份通行码得到用户登录信息 enterSys({ commit }, access_code) { return new Promise((reslove, reject) => { GetLoginInfoByAccessCode(access_code) .then(response => { setToken(response); commit(user.SET_USER_INFO, response); reslove(); }) .catch(error => { reject(error); }); }); }, // 用户退出 signOut({ commit }) { return new Promise(resolve => { removeToken(); resetRouter(); commit(user.RESET_STATE); resolve(); }); }, // 用户更换语言类型 updateLanguageType({ commit }, language_type) { return new Promise((reslove, reject) => { updateLanguageType({ language_type }) .then(() => { commit(user.UPDATE_LANGUAGE_TYPE, language_type); reslove(); }) .catch(error => { reject(error); }); }); }, resetSessionID({ commit }) { return new Promise(reslove => { removeToken(); commit(user.RESET_STATE); reslove(); }); }, resetState({ commit }) { return new Promise(reslove => { commit(user.RESET_STATE); reslove(); }); } }; export default { namespaced: true, state, mutations, actions };