From 7a9847bb2537013d7b4c92d5347e23602ac3009a Mon Sep 17 00:00:00 2001 From: dzq Date: Fri, 11 Apr 2025 11:11:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=99=BB=E5=BD=95):=20=E6=96=B0=E5=A2=9EA?= =?UTF-8?q?B98=E7=99=BB=E5=BD=95=E5=8A=9F=E8=83=BD=E5=8F=8A=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E8=B7=AF=E7=94=B1=E5=92=8C=E7=8A=B6=E6=80=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加了AB98登录页面、路由配置、白名单管理、用户状态存储及API接口,实现了手机验证码登录功能。同时更新了用户信息展示逻辑,确保登录后正确显示用户信息。 --- src/common/apis/ab98/index.ts | 55 +++++++ src/common/apis/ab98/type.ts | 59 ++++++++ src/layout/components/Tabbar.vue | 2 +- src/pages/login/Ab98Login.vue | 168 ++++++++++++++++++++++ src/pages/me/index.vue | 18 ++- src/pages/product/components/checkout.vue | 2 +- src/pinia/stores/ab98-user.ts | 123 ++++++++++++++++ src/router/guard.ts | 10 +- src/router/index.ts | 10 +- src/router/whitelist.ts | 2 +- 10 files changed, 437 insertions(+), 12 deletions(-) create mode 100644 src/common/apis/ab98/index.ts create mode 100644 src/common/apis/ab98/type.ts create mode 100644 src/pages/login/Ab98Login.vue create mode 100644 src/pinia/stores/ab98-user.ts diff --git a/src/common/apis/ab98/index.ts b/src/common/apis/ab98/index.ts new file mode 100644 index 0000000..999be28 --- /dev/null +++ b/src/common/apis/ab98/index.ts @@ -0,0 +1,55 @@ +import { request } from '@/http/axios' +import { + GetTokenParams, + LoginData, + LogoutResponse, + SmsSendResponse, + TokenResponse, + VerifySmsParams, + WechatQrCodeParams +} from './type' + +/** 获取临时令牌 */ +export function getTokenApi(appName: string) { + return request>({ + url: '/api/wx/login/getToken', + method: 'get', + params: { appName } + }) +} + +/** 获取微信登录二维码 */ +export function getWechatQrCodeApi(token: string) { + return request>({ + url: '/api/wx/login/wechat/qrcode', + method: 'get', + params: { token } + }) +} + +/** 发送短信验证码 */ +export function sendSmsApi(token: string, tel: string) { + return request>({ + url: '/api/wx/login/sendSms', + method: 'post', + params: { token, tel } + }) +} + +/** 验证短信验证码 */ +export function verifySmsApi(params: VerifySmsParams) { + return request>({ + url: '/api/wx/login/verifySms', + method: 'post', + params + }) +} + +/** 用户退出登录 */ +export function logoutApi(token: string) { + return request>({ + url: '/api/wx/login/logout', + method: 'post', + params: { token } + }) +} \ No newline at end of file diff --git a/src/common/apis/ab98/type.ts b/src/common/apis/ab98/type.ts new file mode 100644 index 0000000..44d9025 --- /dev/null +++ b/src/common/apis/ab98/type.ts @@ -0,0 +1,59 @@ +/** 令牌响应 */ +export interface TokenResponse { + /** 认证令牌 */ + token: string +} + +/** 退出登录响应 */ +export interface LogoutResponse { + /** 是否成功 */ + success: boolean +} + +/** 短信发送响应 */ +export interface SmsSendResponse { + /** 发送状态 */ + success: boolean + /** 错误信息 */ + message?: string +} + +/** 登录数据 */ +export interface LoginData { + /** 用户头像 */ + face_img: string + /** 登录状态 */ + success: boolean + /** 用户性别 */ + sex: string + /** 用户姓名 */ + name: string + /** 用户ID */ + userid: string + /** 是否已注册 */ + registered: boolean + /** 联系电话 */ + tel: string +} + +/** 获取令牌参数 */ +export type GetTokenParams = { + /** 应用名称 */ + appName: string +} + +/** 微信二维码参数 */ +export type WechatQrCodeParams = { + /** 认证令牌 */ + token: string +} + +/** 短信验证参数 */ +export type VerifySmsParams = { + /** 认证令牌 */ + token: string + /** 手机号码 */ + tel: string + /** 验证码 */ + vcode: string +} \ No newline at end of file diff --git a/src/layout/components/Tabbar.vue b/src/layout/components/Tabbar.vue index 9a4b34f..310439a 100644 --- a/src/layout/components/Tabbar.vue +++ b/src/layout/components/Tabbar.vue @@ -3,7 +3,7 @@ const router = useRouter() const tabbarItemList = computed(() => { const routes = router.getRoutes() - return routes.filter(route => route.meta.layout?.tabbar?.showTabbar) + return routes.filter(route => route.meta.layout?.tabbar?.showTabbar && route.path !== '/cabinet') .map(route => ({ title: route.meta.title, icon: route.meta.layout?.tabbar?.icon, diff --git a/src/pages/login/Ab98Login.vue b/src/pages/login/Ab98Login.vue new file mode 100644 index 0000000..ed12a61 --- /dev/null +++ b/src/pages/login/Ab98Login.vue @@ -0,0 +1,168 @@ + + + + + \ No newline at end of file diff --git a/src/pages/me/index.vue b/src/pages/me/index.vue index 61ece3a..c1e55da 100644 --- a/src/pages/me/index.vue +++ b/src/pages/me/index.vue @@ -1,17 +1,22 @@