/* * @Author: shuishen 1109946754@qq.com * @Date: 2022-12-27 09:33:01 * @LastEditors: shuishen 1109946754@qq.com * @LastEditTime: 2023-07-12 09:40:00 * @FilePath: \srs-police-affairs\src\store\modules\user.js * @Description: * * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. */ import { loginByUsername, logout } from "@/api/login/login"; import { Message } from "element-ui"; import md5 from "js-md5"; import * as auth from "@/utils/auth"; import { setStore, getStore } from "@/utils/store"; import { refreshToken, getButtons } from "@/api/user"; import { validatenull } from "@/utils/validate"; const user = { state: { tenantId: getStore({ name: "tenantId" }) || "", userInfo: getStore({ name: "userInfo" }) || [], permission: getStore({ name: 'permission' }) || {}, token: getStore({ name: "token" }) || "", refreshToken: getStore({ name: "refreshToken" }) || "", }, actions: { //根据用户名登录 LoginByUsername({ commit }, loginForm) { return new Promise((resolve, reject) => { loginByUsername( loginForm.tenantId, loginForm.username, md5(loginForm.password), loginForm.type, loginForm.key, loginForm.code ) .then((res) => { const data = res.data; if (res.status != 200) { Message({ message: "系统异常,请联系管理员", type: "error", }); reject(res); } else { if (data.error_description) { Message({ message: data.error_description, type: "error", }); reject(res); } else { commit("SET_TOKEN", data.access_token); commit("SET_USER_INFO", data); commit("SET_REFRESH_TOKEN", data.refresh_token); commit("SET_TENANT_ID", data.tenant_id); resolve(); } } }) .catch((error) => { reject(error); }); }); }, //登出 LogOut({ commit }) { return new Promise((resolve, reject) => { logout() .then(() => { commit("SET_TOKEN", ""); auth.removeToken(); auth.removeUserInfo(); auth.removeRefreshToken(); resolve(); }) .catch((error) => { reject(error); }); }); }, //刷新token refreshToken({ state, commit }, userInfo) { return new Promise((resolve, reject) => { refreshToken( state.refreshToken, state.tenantId, !validatenull(userInfo) ? userInfo.deptId : state.userInfo.dept_id, !validatenull(userInfo) ? userInfo.roleId : state.userInfo.role_id ) .then((res) => { const data = res.data; commit("SET_TOKEN", data.access_token); commit("SET_REFRESH_TOKEN", data.refresh_token); commit("SET_USER_INFO", data); resolve(); }) .catch((error) => { reject(error); }); }); }, //获取系统按钮 GetButtons({ commit }) { return new Promise((resolve) => { getButtons().then((res) => { const data = res.data.data; commit("SET_PERMISSION", data); resolve(); }); }); }, }, mutations: { SET_TOKEN: (state, token) => { auth.setToken(token); state.token = token; setStore({ name: "store-token", content: state.token }); }, SET_USER_INFO: (state, userInfo) => { state.userInfo = userInfo; auth.setUserInfo(state.userInfo); setStore({ name: "userInfo", content: state.userInfo }); }, SET_REFRESH_TOKEN: (state, refreshToken) => { auth.setRefreshToken(refreshToken); state.refreshToken = refreshToken; setStore({ name: "refreshToken", content: state.refreshToken }); }, SET_TENANT_ID: (state, tenantId) => { state.tenantId = tenantId; setStore({ name: "tenantId", content: state.tenantId }); }, SET_PERMISSION: (state, permission) => { let result = []; function getCode(list) { list.forEach((ele) => { if (typeof ele === "object") { const chiildren = ele.children; const code = ele.code; if (chiildren) { getCode(chiildren); } else { result.push(code); } } }); } getCode(permission); state.permission = {}; result.forEach((ele) => { state.permission[ele] = true; }); setStore({ name: "permission", content: state.permission }); }, }, }; export default user;