UNPKG

infly-libs

Version:

工具组件库

167 lines (151 loc) 4.16 kB
import Uts from "../../module/Uts.js"; import TokenService from "../../module/TokenService.js"; const CONFIG = { router: {}, settings: {}, login: () => Promise.resolve(), getInfo: () => Promise.resolve(), resetRouter: () => {} }; function init(config = {}) { const { settings } = config || {}; if (Uts.notEmptyObject(settings)) { TokenService.init(settings); } if (Uts.notEmptyObject(config)) { Uts.mergeObjectWithReference(CONFIG, config); } } const getDefaultState = () => { return { token: TokenService.getToken(), name: "", avatar: "", user: { id: "", email: "", header: "", level_id: "", level_name: "", is_active_str: "", mobile: "", nickname: "", role: "", username: "", company: "", affiliation: { province: "", city: "", district: "" }, dimensionality_choices: [], merchant_set: [], merchantinfo: {}, map_key: "" }, chatToken: TokenService.getChatToken() // 商家端聊天管理token }; }; const userModule = { namespaced: true, state: () => getDefaultState(), mutations: { RESET_STATE: (state) => { Uts.mergeObjectWithReference(state, getDefaultState()); }, SET_USER: (state, user) => (state.user = user), SET_TOKEN: (state, token) => { state.token = token; TokenService.setToken(token); }, SET_NAME: (state, name) => { state.name = name; }, SET_AVATAR: (state, avatar) => { state.avatar = avatar; }, SET_MAPKEY: (state, mapKey) => { Uts.storage.set("mapKey", mapKey); }, //邮惠权益商家端聊天管理的登录凭证 SET_CHAT_TOKEN: (state, token) => { state.chatToken = token; TokenService.setChatToken(token); } }, actions: { login({ commit }, userInfo) { const { mobile, sms_code } = userInfo; return new Promise((resolve, reject) => { CONFIG.login({ mobile: mobile, sms_code: sms_code }) .then((response) => { commit("SET_TOKEN", response.token); resolve(); }) .catch((error) => { reject(error); }); }); }, getInfo({ commit, state }) { return new Promise((resolve, reject) => { CONFIG.getInfo(state.token) .then((response) => { if (!response) { reject("验证失败,请重新登录。"); } const { name, header, map_key, merchantinfo } = response; const { service_token } = merchantinfo || {}; commit("SET_USER", response); commit("SET_NAME", name); commit("SET_AVATAR", header); commit("SET_MAPKEY", map_key); if (service_token) { commit("SET_CHAT_TOKEN", service_token); } resolve(response); }) .catch((error) => { reject(error); }); }); }, logout({ commit, state }) { return new Promise((resolve, reject) => { TokenService.removeAllTokens(); commit("RESET_STATE"); commit("SET_MAPKEY", ""); if (CONFIG.router) { Uts.isFunction(CONFIG.router.push) && CONFIG.router.push("/login"); Uts.isFunction(CONFIG.router.resetRouter) && CONFIG.router.resetRouter(); } if (TokenService.getUrlToken()) { TokenService.removeUrlToken(); } resolve(); }); }, resetToken({ commit }) { return new Promise((resolve) => { commit("SET_TOKEN", ""); commit("SET_MAPKEY", ""); commit("RESET_STATE"); resolve(); }); }, refreshToken({ commit }, { token }) { return new Promise((resolve, reject) => { commit("SET_TOKEN", token); resolve(); }); } } }; export default { ...userModule, init };