国学小程序项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sinology-applet/src/jtools/store/user.js

85 lines
2.1 KiB

1 month ago
import { defineStore } from 'pinia';
import { login, getInfo } from '@/jtools/api/login';
import storage from '@/jtools/storage';
const useUserStore = defineStore({
id: 'user',
state: () => ({
token: storage.get('token'),
isLogin: storage.get('isLogin'), // 是否登陆
userInfo: {}, // 用户信息
sellManId: '', // 分销人id
tabbarList: []
}),
actions: {
login(params) {
return new Promise(async (resolve, reject) => {
let newParams = { ...params };
if (this.sellManId) {
newParams = { ...params, distributionId: this.sellManId };
}
const resp = await login(newParams);
if (resp.code === '0000') {
// 保存登录信息,用于重新登录
this.isLogin = true;
this.token = resp.data.token;
this.userInfo = resp.data;
storage.set('isLogin', true);
storage.set('token', resp.data.token);
storage.set('userInfo', resp.data);
resolve(resp.data);
} else {
reject();
}
});
},
// 登出
logout(force = false) {
return new Promise((resolve, reject) => {
this.resetUserData();
uni.navigateTo({
url: '/pages/me/login'
});
resolve();
});
},
//过期登出
logoutWithoutToken(force = false) {
return new Promise((resolve, reject) => {
this.resetUserData();
resolve();
});
},
setSellManId(id) {
this.sellManId = id;
this.logout();
},
// 获取用户信息
getUserInfo() {
getInfo().then(resp => {
if (resp.code == '0000') {
this.userInfo = resp.data;
storage.set('userInfo', resp.data);
}
});
},
setUserInfo(info) {
this.userInfo = info;
},
resetUserData() {
this.isLogin = false;
this.token = '';
this.userInfo = {};
storage.remove('isLogin');
storage.remove('token');
storage.remove('userInfo');
},
setTabbarList(list) {
this.tabbarList = list;
}
}
});
export default useUserStore;