79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { action, computed, makeObservable, observable } from "mobx";
|
|
import { base } from "@/service/base";
|
|
import BaseStore from "./baseStore";
|
|
import { UserDataType, UserInfos } from "@/model/userModel";
|
|
import { message } from "antd";
|
|
import { UserConfig } from "@/service/user_config";
|
|
|
|
class UserStore extends BaseStore<UserDataType> {
|
|
_userinfo: UserInfos = {}; // 用户信息
|
|
userDetail = {}
|
|
isNeedLogin: boolean = false; // 是否需要登录
|
|
menu = []
|
|
|
|
constructor() {
|
|
super(UserConfig)
|
|
makeObservable(this, {
|
|
logOut: action,
|
|
login: action,
|
|
getMenu: action,
|
|
_userinfo: observable,
|
|
isNeedLogin: observable,
|
|
userDetail: observable,
|
|
openLoginDilog: action,
|
|
userInfo: computed,
|
|
menu: observable,
|
|
})
|
|
}
|
|
|
|
get userInfo(): UserInfos {
|
|
if (!this._userinfo.token) {
|
|
let token = window.localStorage.getItem("token")
|
|
this._userinfo.token = token;
|
|
}
|
|
return this._userinfo;
|
|
}
|
|
logOut() {
|
|
this._userinfo.token = "";
|
|
window.localStorage.clear();
|
|
this.item = "";
|
|
window.location.href = '#/login'
|
|
}
|
|
async login(params: UserInfos) {
|
|
let param = {
|
|
account: params.userName,
|
|
password: params.passWord,
|
|
genre: 1
|
|
}
|
|
try {
|
|
let data = await base.post(UserConfig.LOGINURI, param)
|
|
if (data.code !== 200) {
|
|
message.error(data.msg)
|
|
return false
|
|
}
|
|
window.localStorage.setItem("token", data.data.token ?? "");
|
|
this.getMenu()
|
|
return true
|
|
} catch (error) {
|
|
console.log(error)
|
|
return false
|
|
}
|
|
}
|
|
|
|
openLoginDilog() {
|
|
this.isNeedLogin = true;
|
|
}
|
|
closeLoginDilog() {
|
|
this.isNeedLogin = false;
|
|
}
|
|
|
|
setUserDetaul(data) {
|
|
this.userDetail = data
|
|
}
|
|
async getMenu() {
|
|
let data = await base.get(UserConfig.menu, {})
|
|
console.log(data)
|
|
}
|
|
}
|
|
const userStore = new UserStore();
|
|
export default userStore; |