diff --git a/apps/miniprogram/src/components/ErrorBoundary/index.tsx b/apps/miniprogram/src/components/ErrorBoundary/index.tsx index 5eb5262..81bc751 100644 --- a/apps/miniprogram/src/components/ErrorBoundary/index.tsx +++ b/apps/miniprogram/src/components/ErrorBoundary/index.tsx @@ -8,20 +8,24 @@ interface Props { interface State { hasError: boolean; + retryCount: number; } +const MAX_RETRIES = 3; + export default class ErrorBoundary extends Component { constructor(props: Props) { super(props); - this.state = { hasError: false }; + this.state = { hasError: false, retryCount: 0 }; } - static getDerivedStateFromError(): State { + static getDerivedStateFromError(): Partial { return { hasError: true }; } componentDidCatch(error: Error, info: React.ErrorInfo) { console.error('[ErrorBoundary]', error, info.componentStack); + this.setState((prev) => ({ retryCount: prev.retryCount + 1 })); } handleRetry = () => { @@ -30,19 +34,24 @@ export default class ErrorBoundary extends Component { render() { if (this.state.hasError) { + const exceeded = this.state.retryCount >= MAX_RETRIES; return ( ! 页面出了点问题 - 请返回重试 - - 重新加载 - + + {exceeded ? '请重启小程序' : '请返回重试'} + + {!exceeded && ( + + 重新加载 + + )} ); } diff --git a/apps/miniprogram/src/components/Loading/index.scss b/apps/miniprogram/src/components/Loading/index.scss index a930605..62f7316 100644 --- a/apps/miniprogram/src/components/Loading/index.scss +++ b/apps/miniprogram/src/components/Loading/index.scss @@ -28,3 +28,12 @@ font-size: var(--tk-font-body-sm); color: var(--tk-text-secondary); } + +.loading-state--end { + padding: 24px 0; + + .loading-state-text { + color: var(--tk-text-tertiary); + font-size: var(--tk-caption); + } +} diff --git a/apps/miniprogram/src/components/Loading/index.tsx b/apps/miniprogram/src/components/Loading/index.tsx index d84d71f..95f1dc7 100644 --- a/apps/miniprogram/src/components/Loading/index.tsx +++ b/apps/miniprogram/src/components/Loading/index.tsx @@ -7,9 +7,10 @@ interface LoadingProps { } export default React.memo(function Loading({ text = '加载中...' }: LoadingProps) { + const isListEnd = text !== '加载中...' && !text.includes('加载'); return ( - - + + {!isListEnd && } {text} ); diff --git a/apps/miniprogram/src/pages/appointment/create/index.tsx b/apps/miniprogram/src/pages/appointment/create/index.tsx index b5c1824..ad8ed48 100644 --- a/apps/miniprogram/src/pages/appointment/create/index.tsx +++ b/apps/miniprogram/src/pages/appointment/create/index.tsx @@ -272,6 +272,7 @@ export default function AppointmentCreate() { className='form-input' placeholder='请简要描述症状' value={reason} + maxlength={200} onInput={(e) => setReason(e.detail.value)} /> diff --git a/apps/miniprogram/src/pages/index/index.tsx b/apps/miniprogram/src/pages/index/index.tsx index 8dbd68b..24b4f95 100644 --- a/apps/miniprogram/src/pages/index/index.tsx +++ b/apps/miniprogram/src/pages/index/index.tsx @@ -130,7 +130,7 @@ function GuestHome({ modeClass }: { modeClass: string }) { 健康资讯 Taro.switchTab({ url: '/pages/health/index' })} + onClick={() => safeNavigateTo('/pages/article/index')} > 查看全部 › diff --git a/apps/miniprogram/src/pages/login/index.tsx b/apps/miniprogram/src/pages/login/index.tsx index 322c583..f43ec59 100644 --- a/apps/miniprogram/src/pages/login/index.tsx +++ b/apps/miniprogram/src/pages/login/index.tsx @@ -6,7 +6,7 @@ import { useAuthStore } from '../../stores/auth'; import './index.scss'; const IS_DEV = process.env.NODE_ENV !== 'production'; -const IS_SIMULATOR = typeof __wxConfig !== 'undefined' && (__wxConfig as any).envVersion !== 'release'; +const IS_SIMULATOR = typeof __wxConfig !== 'undefined' && (__wxConfig as any).envVersion === 'develop'; export default function Login() { const [username, setUsername] = useState(''); @@ -158,7 +158,7 @@ export default function Login() {