feat: 添加部门管理
This commit is contained in:
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user