Files
tools-web/src/store/modules/user.ts
T
2024-03-06 16:55:48 +08:00

105 lines
2.9 KiB
TypeScript

import { defineStore } from 'pinia'
import { login, register, sendCodeEmail, userInfo, logout, sendForgetCodeEmail, forget} from '@/api/user'
import type { LoginReqData, RegisterReqData, sendCodeEmailReq, ForgetReqData } from '@/api/user/type'
export const useUserStore = defineStore('user', {
//用来存放变量
state: () => ({
token: localStorage.getItem('TOKEN'),//token
username: '',
avatar: '',
email: '',
}),
//方法
actions: {
//获取登录状态
isLogin() {
let flag = false;
if (this.token != null && this.token != undefined && this.token != '') {
flag = true;
}
return flag;
},
//login
async login(data: LoginReqData) {
//发送请求
const result: any = await login(data)
if (result.code == 200) {
//仓库存储token
this.token = result.data.token
//本地存储token
localStorage.setItem('TOKEN', result.data.token)
return result.message
} else {
return Promise.reject(new Error(result.message))
}
},
//logout
async logout() {
//发送请求
const result: any = await logout()
if (result.code == 200) {
//本地存储token
localStorage.setItem('TOKEN', '')
return result.message
} else {
return Promise.reject(new Error(result.message))
}
},
//register
async register(data: RegisterReqData) {
//发送请求
const result: any = await register(data)
if (result.code == 200) {
return result.message
} else {
return Promise.reject(new Error(result.message))
}
},
//forget
async forget(data: ForgetReqData) {
//发送请求
const result: any = await forget(data)
if (result.code == 200) {
return result.message
} else {
return Promise.reject(new Error(result.message))
}
},
//register - send code email
async sendCodeEmail(data: sendCodeEmailReq) {
//发送请求
const result: any = await sendCodeEmail(data)
if (result.code == 200) {
return result.message
} else {
return Promise.reject(new Error(result.message))
}
},
//forget - send code email
async sendForgetCodeEmail(data: sendCodeEmailReq) {
//发送请求
const result: any = await sendForgetCodeEmail(data)
if (result.code == 200) {
return result.message
} else {
return Promise.reject(new Error(result.message))
}
},
//获取用户信息
async userInfo() {
if (!this.isLogin()) {
return
}
//发送请求
const result: any = await userInfo()
if (result.code == 200) {
this.username = result.data.nick_name
this.avatar = result.data.avatar
this.email = result.data.email
return result.message
} else {
return Promise.reject(new Error(result.message))
}
}
}
})