/* * @Author: shuishen 1109946754@qq.com * @Date: 2022-12-27 09:33:01 * @LastEditors: shuishen 1109946754@qq.com * @LastEditTime: 2023-04-02 12:18:26 * @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 } from '@/api/user' import { validatenull } from '@/utils/validate' const user = { state: { tenantId: getStore({ name: 'tenantId' }) || '', userInfo: getStore({ name: 'userInfo' }) || [], 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) { if (data.error_description) { Message({ message: data.error_description, type: "error", }) reject(res) } else { Message({ message: '系统异常,请联系管理员', 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) }) }) }, }, 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 }) }, } } export default user