Files
x_admin/x_admin_app/stores/user.ts
2024-06-07 15:45:15 +08:00

80 lines
1.9 KiB
TypeScript

import { defineStore } from "pinia";
import { logout, getInfo } from "@/api/user";
import { getLocalStorage, removeLocalStorage } from "@/utils/storage";
export const useUserStore = defineStore("user", {
state: () => {
return {
nickname: "",
username: "",
avatar: "",
userInfo: {},
menu: [],
auth: [],
};
},
// 也可以这样定义
// state: () => ({ count: 0 })
actions: {
// get user info
getInfo() {
return new Promise((resolve, reject) => {
let token = getLocalStorage("token");
if (!token) {
return reject(new Error("需要登录"));
}
getInfo(token)
.then((res) => {
if (res.code === 200) {
const { data } = res;
this.nickname = data.user.nickname;
this.username = data.user.username;
this.avatar = data.user.avatar ||"";
// this.menu = data.menu;
// this.auth = data.auth;
this.userInfo = data.user;
resolve(data);
} else {
reject(new Error(res.message));
}
// addRoutes(result.menu);
})
.catch((error) => {
reject(error);
});
});
},
// user logout
logout() {
return new Promise((resolve, reject) => {
logout()
.then(() => {
// resetRouter();
this.resetToken();
resolve(true);
})
.catch((error) => {
reject(error);
});
});
},
// remove token
resetToken() {
return new Promise((resolve) => {
// this.token = "";
this.nickname = '';
this.username = "";
this.avatar = "";
removeLocalStorage("token");
resolve(true);
});
},
},
});