From 8b7c2fbf4f758b270a3c93b6cb3de2d4351e044a Mon Sep 17 00:00:00 2001 From: jqtmviyu Date: Sat, 19 Apr 2025 12:52:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20:sparkles:=20store=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E4=BF=A1=E6=81=AF=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/modules/member.ts | 21 +++++++++++++++- src/types/member.d.ts | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 src/types/member.d.ts diff --git a/src/stores/modules/member.ts b/src/stores/modules/member.ts index 3b133e6..963e1d6 100644 --- a/src/stores/modules/member.ts +++ b/src/stores/modules/member.ts @@ -1,3 +1,4 @@ +import type { LoginResult } from '@/types/member' import { defineStore } from 'pinia' import { ref } from 'vue' @@ -5,7 +6,25 @@ import { ref } from 'vue' export const useMemberStore = defineStore( 'member', () => { - return {} + // 会员信息 + const profile = ref() + + // 保存会员信息,登录时使用 + const setProfile = (val: LoginResult) => { + profile.value = val + } + + // 清理会员信息,退出时使用 + const clearProfile = () => { + profile.value = undefined + } + + // 记得 return + return { + profile, + setProfile, + clearProfile, + } }, { // 网页端配置 diff --git a/src/types/member.d.ts b/src/types/member.d.ts new file mode 100644 index 0000000..a2780fe --- /dev/null +++ b/src/types/member.d.ts @@ -0,0 +1,46 @@ +/** 通用的用户信息 */ +type BaseProfile = { + /** 用户ID */ + id: number + /** 头像 */ + avatar: string + /** 账户名 */ + account: string + /** 昵称 */ + nickname?: string +} + +/** 小程序登录 登录用户信息 */ +export type LoginResult = BaseProfile & { + /** 手机号 */ + mobile: string + /** 登录凭证 */ + token: string +} + +/** 个人信息 用户详情信息 */ +export type ProfileDetail = BaseProfile & { + /** 性别 */ + gender?: Gender + /** 生日 */ + birthday?: string + /** 省市区 */ + fullLocation?: string + /** 职业 */ + profession?: string +} +/** 性别 */ +export type Gender = '女' | '男' + +/** 个人信息 修改请求体参数 */ +export type ProfileParams = Pick< + ProfileDetail, + 'nickname' | 'gender' | 'birthday' | 'profession' +> & { + /** 省份编码 */ + provinceCode?: string + /** 城市编码 */ + cityCode?: string + /** 区/县编码 */ + countyCode?: string +}