import { getUserInfo, removeSessionID, setUserInfo } from '@/utils/auth'; import { user } from '@/store/mutation-types'; import { resetRouter } from '@/router'; import { login, updateLanguageType, GetLoginInfoByAccessCode } from '@/api/user'; const getDefaultSate = () => { const { session_id, user_code, user_real_name, user_type, user_name } = getUserInfo(); return { session_id: session_id, user_code: user_code, user_real_name: user_real_name, user_type: user_type, user_name: user_name, language_type: localStorage.getItem('language_type') || '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 } ) => { 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; localStorage.setItem('language_type', language_type); }, [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 => { setUserInfo(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 => { setUserInfo(response); commit(user.SET_USER_INFO, response); reslove(); }) .catch(error => { reject(error); }); }); }, // 用户退出 signOut({ commit }) { return new Promise(resolve => { removeSessionID(); 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 => { removeSessionID(); commit(user.RESET_STATE); reslove(); }); } }; export default { namespaced: true, state, mutations, actions };