- 引入 addShopStoreUser 接口用于新增门店店员记录 - 新增 clerkStoreId 和 clerkTenantId 状态,保存当前审核店员的门店和租户信息 - 在审核通过后调用 addShopStoreUser,添加申请人为当前门店店员 - 保证只有当 clerkStoreId 存在时才执行新增操作 - 更新工作记录文档,补充审核通过流程中新添加的店员记录步骤 - 保持原有升级开发者逻辑和接口调用不变
3.3 KiB
2026-07-23
扫码进入小程序后支付页空白 bug
现象:用户从 web 端订单详情生成 QR 码 → 微信扫码进入小程序 → passport/pay 页面只显示卡片标题"确认支付"、"支付金额"标签、底部提示文案,商品名称/价格类型/价格/分隔线/取消按钮/立即支付按钮全部缺失,无法继续支付流程。
根因:@nutui/nutui-react-taro@2.7.4 的 Cell / Price / Divider / Button 内部用 React.createElement("div", ...),而 dist/base.wxml 里只有 <view> / <text> / <button> 模板没有 <div>。这些组件在 weapp 中"空壳化"。截图里只显示纯 Text/View 和图标(来自 @nutui/icons-react-taro 的 SVG),没有显示的内容全部是 nutui-react-taro 组件。
修复:只改 src/passport/pay/index.tsx 一个文件,把 4 个 nutui 组件换成 Taro 原生 / 项目自定义组件:
import { Button, Cell, Price, Divider } from '@nutui/nutui-react-taro'→import { Button } from '@tarojs/components'+import Price from '@/components/common/Price'<Cell>→<View>+<Text>自绘(用flex justify-between px-4 py-3 border-b border-gray-100)<Price size="large" thousands>→<Price size="large">(项目自定义组件)<Divider>→border-b border-gray-100替代<Button type="primary" block>→<Button className="bg-blue-500 text-white rounded-full">(className 控制颜色)- error/paid/loading 三个分支里的
<Button type="primary">也一并替换
验证:
npm run build:weapp→Compiled successfully in 14.45sdist/passport/pay/index.js里nut-cell|nut-button|nut-divider|nut-price全部为 0;按钮编译成l.zx(Taro Button 局部变量名)- 文件最终 413 行,diff 集中在 import + 渲染区,逻辑(数据获取、JSAPI 支付、状态判断 payStatus vs status)没动
遗留:项目其它页面(passport/{login,forget,register,setting,unified-qr,qr-login}、pages/order/、pages/booking/、components/common/{FixedButton,EmptyState}、components/QRLoginScanner)也用了 nutui Button/Checkbox/Input/Card/Tabs/Tag 等。如果以后用户反馈"按钮/输入框看不到或不可点",按同样模式替换即可。这次没改,避免一次改动面太大。
vip-review 审核通过补充:添加 shop_store_user 记录
背景:之前实现的 src/pages/user/vip-review/index.tsx 审核通过只调了 updateShopDealerApply + setUserDeveloper,漏了"给申请人加一条门店店员记录"。用户 2026-07-23 指出"审核通过的操作,还是要添加一条记录到 shopStoreUser,可能之前理解错了",要求补上。
修改(仅前端一个文件):
- import 增加
addShopStoreUser(来自@/api/shop/shopStoreUser)。 - 新增 state
clerkStoreId/clerkTenantId,在getMyClerk()成功后写入(店员记录自带storeId/tenantId)。 handleApprove在setUserDeveloper之后调addShopStoreUser({ userId, storeId: clerkStoreId, tenantId: clerkTenantId, isDelete: 0, comments: '开发者审核通过自动添加' }),仅当clerkStoreId存在时执行。
依赖:后端 POST /shop/shop-store-user(ShopStoreUserController.save,需 shop:shopStoreUser:save 权限,店员已有);tenantId 复用审核店员的租户,避免前端另取。