refactor: vite.config.ts 类型修复与 Vite 8 迁移适配
- 修复 vite.config.ts 中 command 隐式 any 类型错误 - 修复 proxy 中 path 参数隐式 any 类型错误 - 将无效的 oxc.drop 配置迁移为 Vite 8 原生方式(build.rolldownOptions.output.minify.compress) - 引入 defineConfig + ConfigEnv 提供完整类型推导 - JS 文件迁移为 TypeScript(user.ts, routerGuard.ts 等) - 更新 API 层类型定义
This commit is contained in:
73
src/store/modules/user.ts
Normal file
73
src/store/modules/user.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import { getToken, removeToken, setToken } from "@/utils/auth";
|
||||
import { getInfo, login as doLogin } from "@/api/user";
|
||||
import type { UserInfoVO } from "@/api/user";
|
||||
import { defineStore } from "pinia";
|
||||
import { resetRouter } from "@/router";
|
||||
|
||||
// store 侧用户信息:后端返回结构 + 登录令牌,token 独立维护
|
||||
type UserInfo = Partial<UserInfoVO> & {
|
||||
token?: string | null;
|
||||
};
|
||||
|
||||
export const useUserStore = defineStore("user", {
|
||||
state: (): { userInfo: UserInfo } => ({
|
||||
userInfo: {
|
||||
token: getToken() || "",
|
||||
name: "",
|
||||
profile: {},
|
||||
permissions: [],
|
||||
},
|
||||
}),
|
||||
getters: {
|
||||
userId(): string {
|
||||
return this.userInfo?.profile?.id || "";
|
||||
},
|
||||
name(): string {
|
||||
return this.userInfo?.name || "";
|
||||
},
|
||||
avatar(): string {
|
||||
return this.userInfo?.profile?.avatar || "";
|
||||
},
|
||||
permissions(): string[] {
|
||||
return this.userInfo?.permissions || [];
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
async login(userInfo: Record<string, unknown>) {
|
||||
const res = await doLogin(userInfo);
|
||||
const { token, tokenName } = res.data;
|
||||
this.userInfo.token = token;
|
||||
setToken(token, tokenName);
|
||||
return true;
|
||||
},
|
||||
async getInfo() {
|
||||
const res = await getInfo();
|
||||
const data = res.data;
|
||||
const { name, profile, permissions } = data;
|
||||
|
||||
// 保留当前的 token,避免被覆盖
|
||||
const currentToken = this.userInfo.token || getToken();
|
||||
|
||||
this.userInfo = {
|
||||
token: currentToken,
|
||||
name,
|
||||
profile,
|
||||
permissions,
|
||||
};
|
||||
return data;
|
||||
},
|
||||
// user logout
|
||||
async logout() {
|
||||
await this.resetToken();
|
||||
await resetRouter();
|
||||
return true;
|
||||
},
|
||||
async resetToken() {
|
||||
this.userInfo = {
|
||||
profile: {},
|
||||
permissions: [],
|
||||
};
|
||||
removeToken();
|
||||
},
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user