feat: 添加部门管理

This commit is contained in:
2025-02-11 04:34:29 +08:00
parent a5f04356ee
commit 74cc990645
97 changed files with 5218 additions and 990 deletions

View File

@@ -1,41 +1,74 @@
import { defineStore } from "pinia";
import { store } from "@/store";
import type { userType } from "../types";
import { routerArrays } from "@/layout/types";
import { router, resetRouter } from "@/router";
import { storageLocal } from "@pureadmin/utils";
import { getLogin, refreshTokenApi } from "@/api/login";
import type { LoginResult } from "@/api/login";
import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
import {
type userType,
store,
router,
resetRouter,
routerArrays,
storageLocal
} from "../utils";
import { type UserResult, getLogin } from "@/api/user";
import { useMultiTagsStoreHook } from "./multiTags";
import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth";
type UserInfo,
type UserToken,
setToken,
removeToken,
userInfoKey,
userTokenKey
} from "@/utils/auth";
export const useUserStore = defineStore({
id: "user",
state: (): userType => ({
// 用户名
username: storageLocal().getItem<DataInfo>(userKey)?.username ?? "",
username: storageLocal().getItem<UserInfo>(userInfoKey)?.username ?? "",
// 页面级别权限
permissions: storageLocal().getItem<DataInfo>(userKey)?.permissions ?? [],
permissions:
storageLocal().getItem<UserInfo>(userInfoKey)?.permissions ?? [],
// 前端生成的验证码(按实际需求替换)
verifyCode: "",
// 判断登录页面显示哪个组件0登录默认、1手机登录、2二维码登录、3注册、4忘记密码,1,2预留暂不开发
currentPage: 0,
/**用户Id */
userId: storageLocal().getItem<DataInfo>(userKey)?.userId ?? "",
/**用户头像 */
avatar: storageLocal().getItem<DataInfo>(userKey)?.avatar ?? "",
avatar: storageLocal().getItem<UserInfo>(userInfoKey)?.avatar ?? "",
/**用户数据库ID */
roles: storageLocal().getItem<DataInfo>(userKey)?.roles ?? [],
id: storageLocal().getItem<UserInfo>(userInfoKey)?.id ?? "",
/**用户Token */
accessToken: storageLocal().getItem<DataInfo>(userKey)?.accessToken ?? "",
accessToken:
storageLocal().getItem<UserToken>(userTokenKey)?.accessToken ?? "",
/**用户刷新Token*/
refreshToken:
storageLocal().getItem<UserToken>(userTokenKey)?.refreshToken ?? "",
/**过期时间 */
expires: storageLocal().getItem<DataInfo>(userKey)?.expires ?? 0,
expires: storageLocal().getItem<UserToken>(userTokenKey)?.expiresTime ?? 0,
// 是否勾选了登录页的免登录
isRemembered: false,
// 登录页的免登录存储几天默认2天
loginDay: 2
loginDay: 2,
/***
* 用户手机号
*/
phone: storageLocal().getItem<UserInfo>(userInfoKey)?.phone ?? "",
/***
* 用户邮箱
*/
email: storageLocal().getItem<UserInfo>(userInfoKey)?.email ?? "",
/***
* 用户昵称
*/
nickname: storageLocal().getItem<UserInfo>(userInfoKey)?.nickname ?? "",
/***
* 用户性别
*/
gender: storageLocal().getItem<UserInfo>(userInfoKey)?.gender ?? 0,
/***
* 用户角色
*/
roles: storageLocal().getItem<UserInfo>(userInfoKey)?.roles ?? [],
/***
* 部门ID
*/
department_id:
storageLocal().getItem<UserInfo>(userInfoKey)?.department_id ?? ""
}),
actions: {
/** 存储用户名 */
@@ -54,22 +87,22 @@ export const useUserStore = defineStore({
SET_CURRENTPAGE(value: number) {
this.currentPage = value;
},
/**存储用户ID */
SET_USETID(value: string) {
this.userId = value;
},
/**存储用户头像 */
SET_AVATAR(value: string) {
this.avatar = value;
},
/**存储用户数据库ID */
SET_ROLES(value: string[]) {
this.roles = value;
SET_ID(value: string) {
this.id = value;
},
/**存储用户Token */
SET_ACCESSTOKEN(value: string) {
this.accessToken = value;
},
/**存储用户刷新Token */
SET_REFRESHTOKEN(value: string) {
this.refreshToken = value;
},
/**存储用户Token过期时间戳 */
SET_EXPIRES(value: number) {
this.expires = value;
@@ -82,15 +115,37 @@ export const useUserStore = defineStore({
SET_LOGINDAY(value: number) {
this.loginDay = Number(value);
},
/** 存储用户手机号 */
SET_PHONE(value: string) {
this.phone = value;
},
/** 存储用户邮箱 */
SET_EMAIL(value: string) {
this.email = value;
},
/** 存储用户昵称 */
SET_NICKNAME(value: string) {
this.nickname = value;
},
/** 存储用户性别 */
SET_GENDER(value: number) {
this.gender = value;
},
/** 存储用户角色 */
SET_ROLES(value: Array<string>) {
this.roles = value;
},
/** 存储用户部门ID */
SET_DEPARTMENT_ID(value: string) {
this.department_id = value;
},
/** 登入 */
async loginByUsername(data: {
username: string;
password: string;
loginDay?: number;
uuid: string;
code: string;
}) {
return new Promise<ResponseResult<UserResult>>((resolve, reject) => {
return new Promise<ResponseResult<LoginResult>>((resolve, reject) => {
getLogin(data)
.then(data => {
if (data.code === 200) {
@@ -107,10 +162,40 @@ export const useUserStore = defineStore({
logOut() {
this.username = "";
this.permissions = [];
this.verifyCode = "";
this.currentPage = 0;
this.avatar = "";
this.id = "";
this.accessToken = "";
this.refreshToken = "";
this.expires = 0;
this.isRemembered = false;
this.loginDay = 2;
this.phone = "";
this.email = "";
this.nickname = "";
this.gender = 0;
this.roles = [];
this.department_id = "";
removeToken();
useMultiTagsStoreHook().handleTags("equal", [...routerArrays]);
resetRouter();
router.push("/login");
},
/** 刷新`token` */
async handRefreshToken(data: { refreshToken: string }) {
return new Promise<ResponseResult<LoginResult>>((resolve, reject) => {
refreshTokenApi(data)
.then(data => {
if (data.code === 200) {
setToken(data.data);
}
resolve(data);
})
.catch(error => {
reject(error);
});
});
}
}
});

View File

@@ -37,15 +37,52 @@ export type setType = {
};
export type userType = {
username?: string;
permissions?: Array<string>;
/**
* 验证码
*/
verifyCode?: string;
/**
* 判断登录页面显示哪个组件0登录默认、1手机登录、2二维码登录、3注册、4忘记密码,1,2预留暂不开发
*/
currentPage?: number;
userId?: string;
avatar?: string;
roles?: Array<string>;
accessToken?: string;
expires?: number;
/**
* 是否记住密码
*/
isRemembered?: boolean;
/**
* 登录天数
*/
loginDay?: number;
/** 用户名 */
username: string;
/** 用户性别 */
gender: number;
/** 用户昵称 */
nickname?: string;
/**用户邮箱 */
email?: string;
/**用户手机号 */
phone?: string;
/**用户角色 */
roles?: Array<string>;
/**用户权限 */
permissions?: Array<string>;
/**用户部门ID */
department_id?: string;
/**用户头像 */
avatar?: string;
/**用户数据库ID */
id?: string;
/**
* 用户Token
*/
accessToken: string;
/**
* 过期时间(时间戳)
*/
expires: number;
/**
* 用于调用刷新accessToken的接口时所需的token
*/
refreshToken: string;
};