iot-gateway_fontend/src/store/modules/user/index.ts
Kven d94cbe2aee feat(user): 添加用户角色切换功能并调整导航栏布局
- 在 user store 中添加 switchRole action用于切换用户角色
- 在导航栏中加入角色切换功能,允许用户在管理员和经理角色之间切换
- 优化导航栏布局,暂时注释掉公告通知按钮- 更新 API 调用,添加新的 switchRole 函数
2025-02-06 14:08:24 +08:00

158 lines
3.2 KiB
TypeScript

import { defineStore } from 'pinia';
import {
login as userLogin,
logout as userLogout,
getUserInfo,
LoginData,
me,
queryUserList,
enabled,
remove,
create,
register,
UserRecord,
update,
userDetail,
deptAudit,
code,
switchRole
} from '@/api/user';
import { setToken, clearToken } from '@/utils/auth';
import { removeRouteListener } from '@/utils/route-listener';
import { UserState } from './types';
import useAppStore from '../app';
const useUserStore = defineStore('user', {
state: (): UserState => ({
id: undefined,
username: undefined,
nickName: undefined,
avatar: undefined,
email: undefined,
phone: undefined,
address: undefined,
createAt: undefined,
remark: undefined,
role: undefined,
roles: undefined,
permissions: [],
authorities: [],
}),
getters: {
userInfo(state: UserState): UserState {
return { ...state };
},
},
actions: {
// 用户切换角色
async switchRole(role: number) {
const res = await switchRole(role);
this.resetInfo();
// this.setInfo(res.data.user);
// // 检查并存储新的 Token
// if (res.data.token) {
// setToken(res.data.token);
// }
window.location.reload();
},
// Set user's information
setInfo(partial: Partial<UserState>) {
this.$patch(partial);
},
// Reset user's information
resetInfo() {
this.$reset();
},
async info() {
const res = await me();
// res.data.user.permissions = res.data.permissions;
// res.data.user.authorities = res.data.authorities;
this.setInfo(res.data.user);
},
// Get user's crsf
async me() {
return me();
},
// Login
async login(loginForm: LoginData, token: string) {
try {
setToken(token);
// await userLogin(loginForm);
const res = await userLogin(loginForm);
this.setInfo(res.data.user);
} catch (err) {
clearToken();
throw err;
}
},
// Get user's List
async getUserList(data: any) {
return queryUserList(data);
},
// Change user'status
async enabledUser(id: string) {
return enabled(id);
},
// Remove user
async removeUser(id: string) {
return remove(id);
},
// Create user
async createUser(data: UserRecord) {
return create(data);
},
// register user
async registerUser(data: UserRecord) {
return register(data);
},
// Update user
async updateUser(data: UserRecord) {
return update(data);
},
async getUserDetail(id: string) {
return userDetail(id);
},
async getDeptAudit(deptId: string, roleId: string) {
return deptAudit(deptId, roleId);
},
async getCode(params: string) {
return code(params);
},
logoutCallBack() {
const appStore = useAppStore();
this.resetInfo();
clearToken();
removeRouteListener();
appStore.clearServerMenu();
},
// Logout
async logout() {
try {
await userLogout();
} finally {
this.logoutCallBack();
}
},
},
persist: true,
});
export default useUserStore;