From e1699c4851f6ca397cd0ad1ff63f32c737654836 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 02 Apr 2025 19:14:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/store/modules/user.js | 785 ++++++++++++++++++++++++++++---------------------------
1 files changed, 394 insertions(+), 391 deletions(-)
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index ee3a48e..16ec216 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,398 +1,401 @@
+import { ELocalStorageKey } from '@/utils/http/enums'
import {
- setToken,
- setRefreshToken,
- removeToken,
- removeRefreshToken,
- getRefreshToken,
-} from '@/utils/auth';
-import { setStore, getStore } from '@/utils/store';
-import { validatenull } from '@/utils/validate';
-import { deepClone } from '@/utils/util';
+ setToken,
+ setRefreshToken,
+ removeToken,
+ removeRefreshToken,
+ getRefreshToken,
+} from '@/utils/auth'
+import { setStore, getStore } from '@/utils/store'
+import { validatenull } from '@/utils/validate'
+import { deepClone } from '@/utils/util'
import {
- loginByUsername,
- loginBySocial,
- loginBySso,
- loginByPhone,
- getUserInfo,
- logout,
- refreshToken,
- getButtons,
- registerUser,
-} from '@/api/user';
-import { getRoutes, getTopMenu } from '@/api/system/menu';
-import { formatPath } from '@/router/avue-router';
-import { ElMessage } from 'element-plus';
-import { encrypt } from '@/utils/sm2';
-import md5 from 'js-md5';
+ loginByUsername,
+ loginBySocial,
+ loginBySso,
+ loginByPhone,
+ getUserInfo,
+ logout,
+ refreshToken,
+ getButtons,
+ registerUser,
+} from '@/api/user'
+import { getRoutes, getTopMenu } from '@/api/system/menu'
+import { formatPath } from '@/router/avue-router'
+import { ElMessage } from 'element-plus'
+import { encrypt } from '@/utils/sm2'
+import md5 from 'js-md5'
const userInfoData = getStore({ name: 'userInfo' }) || {}
const user = {
- state: {
- // 当前选中的请求头
- selectedAreaCode: userInfoData?.detail?.areaCode || '',
- tenantId: getStore({ name: 'tenantId' }) || '',
- userInfo: userInfoData,
- permission: getStore({ name: 'permission' }) || {},
- roles: [],
- menuId: {},
- menu: getStore({ name: 'menu' }) || [],
- menuAll: getStore({ name: 'menuAll' }) || [],
- token: getStore({ name: 'token' }) || '',
- refreshToken: getStore({ name: 'refreshToken' }) || '',
- },
- actions: {
- //根据用户名登录
- LoginByUsername({ commit }, userInfo = {}) {
- return new Promise((resolve, reject) => {
- loginByUsername(
- userInfo.tenantId,
- userInfo.deptId,
- userInfo.roleId,
- userInfo.username,
- md5(userInfo.password),
- userInfo.type,
- userInfo.key,
- userInfo.code
- )
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('SET_USER_INFO', data);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //根据第三方信息登录
- LoginBySocial({ commit }, userInfo) {
- return new Promise((resolve, reject) => {
- loginBySocial(userInfo.tenantId, userInfo.source, userInfo.code, userInfo.state)
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //根据单点信息登录
- LoginBySso({ commit }, userInfo) {
- return new Promise((resolve, reject) => {
- loginBySso(userInfo.state, userInfo.code)
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //根据手机信息登录
- LoginByPhone({ commit }, userInfo) {
- return new Promise((resolve, reject) => {
- loginByPhone(
- userInfo.tenantId,
- encrypt(userInfo.phone),
- userInfo.codeId,
- userInfo.codeValue
- )
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //用户注册
- RegisterUser({ commit }, userInfo = {}) {
- return new Promise((resolve, reject) => {
- registerUser(
- userInfo.tenantId,
- userInfo.name,
- userInfo.account,
- encrypt(userInfo.password),
- userInfo.phone,
- userInfo.email
- ).then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- reject(data.error_description);
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- });
- });
- },
- GetUserInfo({ commit }) {
- return new Promise((resolve, reject) => {
- getUserInfo()
- .then(res => {
- const data = res.data.data;
- commit('SET_ROLES', data.roles);
- resolve(data);
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //刷新token
- RefreshToken({ state, commit }, userInfo) {
- return new Promise((resolve, reject) => {
- refreshToken(
- getRefreshToken(),
- 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);
- });
- });
- },
- // 登出
- LogOut({ commit }) {
- return new Promise((resolve, reject) => {
- logout()
- .then(() => {
- commit('SET_TOKEN', '');
- commit('SET_MENU_ALL_NULL', []);
- commit('SET_MENU', []);
- commit('SET_ROLES', []);
- commit('DEL_ALL_TAG', []);
- commit('CLEAR_LOCK');
- removeToken();
- removeRefreshToken();
- removeToken();
- resolve();
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- //注销session
- FedLogOut({ commit }) {
- return new Promise(resolve => {
- commit('SET_TOKEN', '');
- commit('SET_MENU_ALL_NULL', []);
- commit('SET_MENU', []);
- commit('SET_ROLES', []);
- commit('DEL_ALL_TAG', []);
- commit('CLEAR_LOCK');
- removeToken();
- removeRefreshToken();
- removeToken();
- resolve();
- });
- },
- GetTopMenu() {
- return new Promise(resolve => {
- getTopMenu().then(res => {
- const data = res.data.data || [];
- resolve(data);
- });
- });
- },
- GetMenu({ commit, dispatch }, tenantId) {
- return new Promise(resolve => {
- getRoutes(tenantId).then(res => {
- const data = res.data.data;
- let menu = deepClone(data);
- menu.forEach(ele => formatPath(ele, true));
- commit('SET_MENU', menu);
- commit('SET_MENU_ALL', menu);
- dispatch('GetButtons');
- resolve(menu);
- });
- });
- },
- GetButtons({ commit }) {
- return new Promise(resolve => {
- getButtons().then(res => {
- const data = res.data.data;
- commit('SET_PERMISSION', data);
- resolve();
- });
- });
- },
- },
- mutations: {
- setSelectedAreaCode:(state, code) =>{
- state.selectedAreaCode = code
- },
- SET_TOKEN: (state, token) => {
- setToken(token);
- state.token = token;
- setStore({ name: 'token', content: state.token });
- },
- SET_REFRESH_TOKEN: (state, refreshToken) => {
- setRefreshToken(refreshToken);
- state.refreshToken = refreshToken;
- setStore({ name: 'refreshToken', content: state.refreshToken });
- },
- SET_MENU_ID(state, menuId) {
- state.menuId = menuId;
- },
- SET_TENANT_ID: (state, tenantId) => {
- state.tenantId = tenantId;
- setStore({ name: 'tenantId', content: state.tenantId });
- },
- SET_USER_INFO: (state, userInfo) => {
- if (validatenull(userInfo.user_id) && validatenull(userInfo.account)) {
- state.userInfo = { user_name: 'unauth', role_name: 'unauth', authority: 'unauth' };
- } else {
- if (validatenull(userInfo.avatar)) {
- userInfo.avatar = '/img/bg/img-logo.png';
- }
- if (!validatenull(userInfo.role_name)) {
- userInfo.roleName = userInfo.role_name;
- userInfo.authority = userInfo.role_name;
- }
- if (!validatenull(userInfo.user_id)) {
- userInfo.userId = userInfo.user_id;
- }
- if (!validatenull(userInfo.user_name)) {
- userInfo.userName = userInfo.user_name;
- }
- if (!validatenull(userInfo.tenant_id)) {
- userInfo.tenantId = userInfo.tenant_id;
- }
- if (!validatenull(userInfo.dept_id)) {
- userInfo.deptId = userInfo.dept_id;
- }
- if (!validatenull(userInfo.role_id)) {
- userInfo.roleId = userInfo.role_id;
- }
- if (!validatenull(userInfo.oauth_id)) {
- userInfo.oauthId = userInfo.oauth_id;
- }
- userInfo.selectedAreaCode = userInfo?.detail?.areaCode || '';
- state.userInfo = userInfo;
- }
- setStore({ name: 'userInfo', content: state.userInfo });
- },
- SET_MENU_ALL: (state, menuAll) => {
- let menu = state.menuAll;
- menuAll.forEach(ele => {
- let index = menu.findIndex(item => item.path === ele.path);
- if (index === -1) {
- menu.push(ele);
- } else {
- menu[index] = ele;
- }
- });
- state.menuAll = menu;
- setStore({ name: 'menuAll', content: state.menuAll });
- },
- SET_MENU_ALL_NULL: state => {
- state.menuAll = [];
- setStore({ name: 'menuAll', content: state.menuAll });
- },
- SET_MENU: (state, menu) => {
- state.menu = menu;
- setStore({ name: 'menu', content: state.menu });
- },
- SET_ROLES: (state, roles) => {
- state.roles = roles;
- },
- SET_PERMISSION: (state, permission) => {
- let result = [];
+ state: {
+ // 当前选中的请求头
+ selectedAreaCode: userInfoData?.detail?.areaCode || '',
+ tenantId: getStore({ name: 'tenantId' }) || '',
+ userInfo: userInfoData,
+ permission: getStore({ name: 'permission' }) || {},
+ roles: [],
+ menuId: {},
+ menu: getStore({ name: 'menu' }) || [],
+ menuAll: getStore({ name: 'menuAll' }) || [],
+ token: getStore({ name: 'token' }) || '',
+ refreshToken: getStore({ name: 'refreshToken' }) || '',
+ },
+ actions: {
+ //根据用户名登录
+ LoginByUsername({ commit }, userInfo = {}) {
+ return new Promise((resolve, reject) => {
+ loginByUsername(
+ userInfo.tenantId,
+ userInfo.deptId,
+ userInfo.roleId,
+ userInfo.username,
+ md5(userInfo.password),
+ userInfo.type,
+ userInfo.key,
+ userInfo.code
+ )
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('SET_USER_INFO', data)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //根据第三方信息登录
+ LoginBySocial({ commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ loginBySocial(userInfo.tenantId, userInfo.source, userInfo.code, userInfo.state)
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //根据单点信息登录
+ LoginBySso({ commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ loginBySso(userInfo.state, userInfo.code)
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //根据手机信息登录
+ LoginByPhone({ commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ loginByPhone(
+ userInfo.tenantId,
+ encrypt(userInfo.phone),
+ userInfo.codeId,
+ userInfo.codeValue
+ )
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //用户注册
+ RegisterUser({ commit }, userInfo = {}) {
+ return new Promise((resolve, reject) => {
+ registerUser(
+ userInfo.tenantId,
+ userInfo.name,
+ userInfo.account,
+ encrypt(userInfo.password),
+ userInfo.phone,
+ userInfo.email
+ ).then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ reject(data.error_description)
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ })
+ },
+ GetUserInfo({ commit }) {
+ return new Promise((resolve, reject) => {
+ getUserInfo()
+ .then(res => {
+ const data = res.data.data
+ commit('SET_ROLES', data.roles)
+ resolve(data)
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //刷新token
+ RefreshToken({ state, commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ refreshToken(
+ getRefreshToken(),
+ 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)
+ })
+ })
+ },
+ // 登出
+ LogOut({ commit }) {
+ return new Promise((resolve, reject) => {
+ logout()
+ .then(() => {
+ commit('SET_TOKEN', '')
+ commit('SET_MENU_ALL_NULL', [])
+ commit('SET_MENU', [])
+ commit('SET_ROLES', [])
+ commit('DEL_ALL_TAG', [])
+ commit('CLEAR_LOCK')
+ removeToken()
+ removeRefreshToken()
+ removeToken()
+ resolve()
+ })
+ .catch(error => {
+ reject(error)
+ })
+ })
+ },
+ //注销session
+ FedLogOut({ commit }) {
+ return new Promise(resolve => {
+ commit('SET_TOKEN', '')
+ commit('SET_MENU_ALL_NULL', [])
+ commit('SET_MENU', [])
+ commit('SET_ROLES', [])
+ commit('DEL_ALL_TAG', [])
+ commit('CLEAR_LOCK')
+ removeToken()
+ removeRefreshToken()
+ removeToken()
+ resolve()
+ })
+ },
+ GetTopMenu() {
+ return new Promise(resolve => {
+ getTopMenu().then(res => {
+ const data = res.data.data || []
+ resolve(data)
+ })
+ })
+ },
+ GetMenu({ commit, dispatch }, tenantId) {
+ return new Promise(resolve => {
+ getRoutes(tenantId).then(res => {
+ const data = res.data.data
+ let menu = deepClone(data)
+ menu.forEach(ele => formatPath(ele, true))
+ commit('SET_MENU', menu)
+ commit('SET_MENU_ALL', menu)
+ dispatch('GetButtons')
+ resolve(menu)
+ })
+ })
+ },
+ GetButtons({ commit }) {
+ return new Promise(resolve => {
+ getButtons().then(res => {
+ const data = res.data.data
+ commit('SET_PERMISSION', data)
+ resolve()
+ })
+ })
+ },
+ },
+ mutations: {
+ setSelectedAreaCode: (state, code) => {
+ state.selectedAreaCode = code
+ },
+ SET_TOKEN: (state, token) => {
+ setToken(token)
+ state.token = token
+ setStore({ name: 'token', content: state.token })
+ console.log('顶顶顶111', token)
+ window.localStorage.setItem(ELocalStorageKey.Token, token)
+ },
+ SET_REFRESH_TOKEN: (state, refreshToken) => {
+ setRefreshToken(refreshToken)
+ state.refreshToken = refreshToken
+ setStore({ name: 'refreshToken', content: state.refreshToken })
+ },
+ SET_MENU_ID(state, menuId) {
+ state.menuId = menuId
+ },
+ SET_TENANT_ID: (state, tenantId) => {
+ state.tenantId = tenantId
+ setStore({ name: 'tenantId', content: state.tenantId })
+ },
+ SET_USER_INFO: (state, userInfo) => {
+ if (validatenull(userInfo.user_id) && validatenull(userInfo.account)) {
+ state.userInfo = { user_name: 'unauth', role_name: 'unauth', authority: 'unauth' }
+ } else {
+ if (validatenull(userInfo.avatar)) {
+ userInfo.avatar = '/img/bg/img-logo.png'
+ }
+ if (!validatenull(userInfo.role_name)) {
+ userInfo.roleName = userInfo.role_name
+ userInfo.authority = userInfo.role_name
+ }
+ if (!validatenull(userInfo.user_id)) {
+ userInfo.userId = userInfo.user_id
+ }
+ if (!validatenull(userInfo.user_name)) {
+ userInfo.userName = userInfo.user_name
+ }
+ if (!validatenull(userInfo.tenant_id)) {
+ userInfo.tenantId = userInfo.tenant_id
+ }
+ if (!validatenull(userInfo.dept_id)) {
+ userInfo.deptId = userInfo.dept_id
+ }
+ if (!validatenull(userInfo.role_id)) {
+ userInfo.roleId = userInfo.role_id
+ }
+ if (!validatenull(userInfo.oauth_id)) {
+ userInfo.oauthId = userInfo.oauth_id
+ }
+ userInfo.selectedAreaCode = userInfo?.detail?.areaCode || ''
+ state.userInfo = userInfo
+ }
+ setStore({ name: 'userInfo', content: state.userInfo })
+ },
+ SET_MENU_ALL: (state, menuAll) => {
+ let menu = state.menuAll
+ menuAll.forEach(ele => {
+ let index = menu.findIndex(item => item.path === ele.path)
+ if (index === -1) {
+ menu.push(ele)
+ } else {
+ menu[index] = ele
+ }
+ })
+ state.menuAll = menu
+ setStore({ name: 'menuAll', content: state.menuAll })
+ },
+ SET_MENU_ALL_NULL: state => {
+ state.menuAll = []
+ setStore({ name: 'menuAll', content: state.menuAll })
+ },
+ SET_MENU: (state, menu) => {
+ state.menu = menu
+ setStore({ name: 'menu', content: state.menu })
+ },
+ SET_ROLES: (state, roles) => {
+ state.roles = roles
+ },
+ SET_PERMISSION: (state, permission) => {
+ let result = []
- function getCode(list) {
- list.forEach(ele => {
- if (typeof ele === 'object') {
- const children = ele.children;
- const code = ele.code;
- if (children && children.length > 0) {
- getCode(children);
- } else {
- result.push(code);
- }
- }
- });
- }
+ function getCode(list) {
+ list.forEach(ele => {
+ if (typeof ele === 'object') {
+ const children = ele.children
+ const code = ele.code
+ if (children && children.length > 0) {
+ getCode(children)
+ } else {
+ result.push(code)
+ }
+ }
+ })
+ }
- getCode(permission);
- state.permission = {};
- result.forEach(ele => {
- state.permission[ele] = true;
- });
- setStore({ name: 'permission', content: state.permission, type: 'session' });
- },
- },
-};
-export default user;
+ getCode(permission)
+ state.permission = {}
+ result.forEach(ele => {
+ state.permission[ele] = true
+ })
+ setStore({ name: 'permission', content: state.permission, type: 'session' })
+ },
+ },
+}
+export default user
--
Gitblit v1.9.3