fix(miniprogram): 多角色找茬模式发现并修复 16 个问题
P0 Bug: - 健康 AI 建议幽灵路径 pkg-appointment → appointment/create - 血糖 indicator_type 始终 blood_sugar,不区分空腹/餐后 - 商城订单页 switchTab 跳转非 TabBar 页面 P1 设计系统: - Profile/Index 页 emoji 图标替换为衬线首字 - Profile 硬编码颜色替换为 SCSS 变量 class - alerts/action-inbox 两个页面全面接入设计系统 - ai-report/detail 删除重复 mixin 定义 - ErrorBoundary 添加重试按钮移除 emoji - 新增 $r-xs: 8px 圆角变量 P1 导航/交互: - Profile 补充 4 个缺失菜单(透析/知情同意/用药/活动) - Settings 隐私政策改为跳转实际页面 - 全局启用 enablePullDownRefresh - 首页/健康页添加下拉刷新 - 咨询/消息列表添加分页加载更多 - 医生端患者列表改为上拉加载 - 首页/健康页间距统一为 24px
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
.health-page {
|
||||
min-height: 100vh;
|
||||
background: $bg;
|
||||
padding: 20px 16px 100px;
|
||||
padding: 20px 24px 100px;
|
||||
padding-bottom: calc(100px + env(safe-area-inset-bottom));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { View, Text, Input } from '@tarojs/components';
|
||||
import Taro, { useDidShow } from '@tarojs/taro';
|
||||
import Taro, { useDidShow, usePullDownRefresh } from '@tarojs/taro';
|
||||
import { useHealthStore } from '../../stores/health';
|
||||
import { useAuthStore } from '../../stores/auth';
|
||||
import { inputVitalSign, getTrend, getHealthThresholds, findThreshold, DEFAULT_THRESHOLDS, type HealthThreshold } from '../../services/health';
|
||||
@@ -61,6 +61,12 @@ export default function Health() {
|
||||
getHealthThresholds().then((t) => { if (t.length > 0) setThresholds(t); });
|
||||
});
|
||||
|
||||
usePullDownRefresh(() => {
|
||||
Promise.all([refreshToday(true), loadTrend(activeTab), loadAiSuggestions()]).finally(() => {
|
||||
Taro.stopPullDownRefresh();
|
||||
});
|
||||
});
|
||||
|
||||
const loadAiSuggestions = async () => {
|
||||
try {
|
||||
const items = await listPendingSuggestions();
|
||||
@@ -164,7 +170,8 @@ export default function Health() {
|
||||
case 'blood_sugar': {
|
||||
const val = parseFloat(sugarVal);
|
||||
if (!val) { Taro.showToast({ title: '请填写血糖值', icon: 'none' }); return; }
|
||||
await inputVitalSign(patientId, { indicator_type: 'blood_sugar', value: val });
|
||||
const bsType = sugarPeriod === 'fasting' ? 'blood_sugar_fasting' : 'blood_sugar_postprandial';
|
||||
await inputVitalSign(patientId, { indicator_type: bsType, value: val });
|
||||
setSugarVal('');
|
||||
break;
|
||||
}
|
||||
@@ -201,7 +208,7 @@ export default function Health() {
|
||||
<View className='ai-suggestion-card' onClick={() => {
|
||||
const first = aiSuggestions[0];
|
||||
if (first?.suggestion_type === 'appointment') {
|
||||
Taro.navigateTo({ url: `/pages/pkg-appointment/create/index?patientId=${first.patient_id}` });
|
||||
Taro.navigateTo({ url: `/pages/appointment/create/index` });
|
||||
} else if (first?.suggestion_type === 'followup') {
|
||||
Taro.navigateTo({ url: '/pages/pkg-profile/followups/index' });
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user