infly-libs
Version:
工具组件库
167 lines (151 loc) • 4.16 kB
JavaScript
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
};