`)被丢弃。
+
+**症状**:组件位置完全空白 / 按钮不可见 / 价格显示为空。Text/View 与 `@nutui/icons-react-taro` 的图标(Tips/Check/Close/Clock,基于 SVG)渲染正常。
+
+**解决办法**(最小改动):在该页面用 Taro 原生组件替代:
+| nutui(不可用) | Taro 原生 / 项目自定义 |
+|---|---|
+| `import { Button, Cell, Price, Divider } from '@nutui/nutui-react-taro'` | `import { Button } from '@tarojs/components'` + `import Price from '@/components/common/Price'` |
+| `
| ` | `
X{Y}` |
+| `
` | `
`(**用项目自定义 Price**,不用 nutui 的) |
+| `
` | 用 `border-b border-gray-100` 替代 |
+| `
` | `
`(className 控制颜色,`loading` prop 仍然支持) |
+
+**适用范围判断**:项目里其它页面(qr-login、register、passport/forget 等)也用了 nutui 的 Cell/Card/Divider/Button,遇到同类"组件消失"现象时按同样模式替换即可。已修:`src/passport/pay/index.tsx`(2026-07-23,扫码进入小程序后支付页空白的 bug)。
+
+**验证手段**:跑 `npm run build:weapp` 后在 `dist/
/index.js` 里 grep `nut-cell|nut-button|nut-divider|nut-price`,应为 0;grep `l.zx`(Taro Button 在 weapp 编译后的局部变量名)应出现 2 次(取消 + 立即支付)。
+
+**已知的 nutui 组件清单**(按 2026-07-23 grep 结果):`Button` 在 `passport/pay, passport/login/setting/forget/register, pages/order/*, pages/booking/*, components/common/{FixedButton,EmptyState}` 等大量页面;`Cell` 在 `passport/pay, pages/order/order.tsx`;`Divider` 在 `passport/pay, passport/qr-login`;`Price` 在 `passport/pay`。修复顺序建议:pay(已修)→ 视觉影响最大的页面 → 批量。
diff --git a/src/passport/pay/index.tsx b/src/passport/pay/index.tsx
index f6e7dbd..35b1267 100644
--- a/src/passport/pay/index.tsx
+++ b/src/passport/pay/index.tsx
@@ -1,13 +1,13 @@
import React, { useState, useEffect, useCallback } from 'react'
-import { View, Text } from '@tarojs/components'
-import { Button, Cell, Price, Divider } from '@nutui/nutui-react-taro'
-import { Check, Close, Tips, Clock } from '@nutui/icons-react-taro'
+import { View, Text, Button } from '@tarojs/components'
+import { Tips, Check, Close, Clock } from '@nutui/icons-react-taro'
import Taro from '@tarojs/taro'
import { request } from '@/utils/request'
import { getOpenId, loginByOpenId } from '@/api/passport/wx-login'
import type { User } from '@/api/system/user/model'
import { saveStorageByLoginUser } from '@/utils/server'
import { TenantId, WebsopyBaseUrl } from '@/config/app'
+import Price from '@/components/common/Price'
/**
* 小程序支付页面
@@ -312,7 +312,12 @@ const PayPage: React.FC = () => {
获取订单失败
{errorMsg}
-
+
)
@@ -333,7 +338,12 @@ const PayPage: React.FC = () => {
已支付 ¥{Number(detail.payPrice).toFixed(2)}
) : null}
-
+
)
@@ -347,21 +357,26 @@ const PayPage: React.FC = () => {
确认支付
- |
- |
-
-
- 支付金额
-
+ {/* 商品名称 */}
+
+ 商品名称
+ {detail?.productName || '-'}
-
+ {/* 价格类型 */}
+
+ 价格类型
+ {getPriceDesc() || '-'}
+
-
+ {/* 支付金额 */}
+
+ 支付金额
+
+
+
+ {/* 提示 */}
+
支付成功后即可在「已购产品」中使用该应用
@@ -373,18 +388,15 @@ const PayPage: React.FC = () => {