cankao-h5/src/stores/user/index.ts

119 lines
2.5 KiB
TypeScript
Raw Normal View History

import { login } from "@/api";
import { Session } from "@/utils/storage";
import { defineStore } from "pinia";
import { computed, ref } from "vue";
type IUserInfos = {
id?: string;
phone: string;
name?: string;
auth: string[];
role: string[];
};
const storeSetup = () => {
const token = ref(Session.get("token"));
const userInfos = ref<IUserInfos>({
phone: "",
name: "",
auth: [],
role: [],
});
const setUserInfos = (payload: Partial<IUserInfos>) => {
userInfos.value = { ...userInfos.value, ...payload };
Session.set("userInfos", userInfos.value);
};
const getUserInfos = () => {
if (Session.get("userInfos")) {
userInfos.value = Session.get("userInfos");
}
return userInfos.value;
};
// 设置 token
const setToken = (payload: string) => {
token.value = payload;
Session.set("token", payload);
};
// 获取 token
const getToken = () => {
return token.value;
};
// 登录状态
const isLogin = computed(() => {
return !!token.value;
});
// 登录
const onLogin = async (data: any, callback: Function) => {
uni.showLoading({
title: "登录中",
mask: true,
});
try {
const params = {
phone: data.phone,
smsCode: data.code,
};
// const result = await login(params);
// mock
const result = await new Promise((resolve) => {
setTimeout(() => {
resolve({
code: 200,
data: {
token: "123456",
phone: "123456",
auth: ["menu1", "menu2", "menu3", 'menu4', 'menu5'],
role: ["role1"],
},
});
}, 1000);
});
console.log("output >>>>> result", result.code);
uni.hideLoading();
if (result.code === 200) {
window.aplus_queue.push({
action: "aplus.record",
arguments: [
"login",
"CLK",
{
phone: data.phone,
},
],
});
setToken(result.data.token);
setUserInfos({ ...result.data });
uni.showToast({
title: "登录成功",
icon: "success",
});
} else {
uni.showToast({
title: result.msg,
icon: "error",
});
}
callback && callback(result);
} catch (error) {
uni.hideLoading();
console.log(error, "<=== error");
}
};
return { isLogin, userInfos, getToken, onLogin, getUserInfos };
};
export const useUserStore = defineStore("user", storeSetup);