feat(miniprogram): 初始化 Taro 4 + React 小程序项目
- 手动创建 Taro 4.2 + React 18 + TypeScript 项目骨架 - 配置 webpack5 编译、SCSS 样式、医疗清新主题 - 实现 API 请求层(JWT 自动注入 + token 刷新) - 实现 auth store(微信登录 + 手机号绑定 + 就诊人管理) - 实现登录页(微信一键登录 + 手机号授权绑定) - 实现首页(问候栏 + 今日健康卡片 + 快捷服务 + 即将到来) - 实现我的页面(个人信息 + 功能菜单 + 退出登录) - 健康/预约/资讯占位页 - TabBar 5 个入口:首页/健康/预约/资讯/我的
This commit is contained in:
44
apps/miniprogram/src/services/auth.ts
Normal file
44
apps/miniprogram/src/services/auth.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { api } from './request';
|
||||
|
||||
export interface UserInfo {
|
||||
id: string;
|
||||
name: string;
|
||||
phone: string;
|
||||
avatar?: string;
|
||||
tenant_id: string;
|
||||
}
|
||||
|
||||
export interface LoginResp {
|
||||
bound: boolean;
|
||||
openid: string;
|
||||
token?: {
|
||||
access_token: string;
|
||||
refresh_token: string;
|
||||
expires_in: number;
|
||||
user: { id: string; username: string; display_name?: string; phone?: string; avatar_url?: string };
|
||||
};
|
||||
}
|
||||
|
||||
export interface PatientInfo {
|
||||
id: string;
|
||||
name: string;
|
||||
gender?: string;
|
||||
birthday?: string;
|
||||
relation: string;
|
||||
}
|
||||
|
||||
export async function wechatLogin(code: string): Promise<LoginResp> {
|
||||
return api.post('/auth/wechat/login', { code });
|
||||
}
|
||||
|
||||
export async function wechatBindPhone(openid: string, encryptedData: string, iv: string) {
|
||||
return api.post('/auth/wechat/bind-phone', {
|
||||
openid,
|
||||
encrypted_data: encryptedData,
|
||||
iv,
|
||||
});
|
||||
}
|
||||
|
||||
export async function getPatients() {
|
||||
return api.get<PatientInfo[]>('/health/patients');
|
||||
}
|
||||
Reference in New Issue
Block a user