From 93c66e1f14109cd63cb801e513c4d31487e7c3cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 30 Jun 2026 17:03:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(pay):=20=E4=BC=98=E5=8C=96=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E5=8F=B7=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=E5=B9=B6?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=94=AF=E4=BB=98=E7=BB=84=E4=BB=B6=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优先从小程序码 scene 参数读取 subscriptionNo,提升参数兼容性 - 对 scene 参数进行解码,避免编码引起的问题 - 移除支付组件价格显示处的固定颜色设置,增强样式灵活性 --- .workbuddy/memory/2026-06-30.md | 29 +++++++++++++++++++++++++++++ src/passport/pay/index.tsx | 6 ++++-- 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 .workbuddy/memory/2026-06-30.md diff --git a/.workbuddy/memory/2026-06-30.md b/.workbuddy/memory/2026-06-30.md new file mode 100644 index 0000000..b4c3d15 --- /dev/null +++ b/.workbuddy/memory/2026-06-30.md @@ -0,0 +1,29 @@ + +## 修复 WXSS 不兼容的 .\!visible CSS 选择器 + +- **问题**: Tailwind JIT 引擎把 JS 代码 `if (!visible)` 误识别为 `!visible` important 修饰符类名,生成 `.\!visible` CSS 选择器,WXSS 不支持反斜杠转义的 `!` +- **修复**: 创建 PostCSS 插件 `postcss-remove-tailwind-important.js` 移除所有 `.\!xxx` 选择器 +- **配置**: 更新 `postcss.config.js` 引入该插件(使用函数引用方式,非字符串模块名) +- **验证**: 构建通过,`.\!visible` 从输出中移除,`.visible` 保留 +- **注意**: 项目中实际无人使用 Tailwind 的 `!` 修饰符类名,安全移除。将来若需使用,需创建对应 WXSS 兼容类名 + +## 替换项目中不兼容 WXSS 的 space-x/y-* 类名 + +- **问题**: `space-y-*` / `space-x-*` 依赖 `:not()` + `~` + CSS 变量 + 嵌套 calc(),WXSS 不兼容 +- **修复**: + - 源码中将所有 `space-y-*` 替换为 `flex flex-col gap-*` + - 注释中的 `space-y-*` 也一并替换,防止 Tailwind JIT 误扫描生成 + - 扩展 PostCSS 插件为 `postcss-remove-wxss-incompatible.js`,一并移除 `space-*` 和 `divide-*` 规则 + - 删除旧的 `postcss-remove-tailwind-important.js` 文件 +- **涉及文件**: dealer/qrcode/index.tsx, dealer/invite-stats/index.tsx, components/QRScanModal.tsx +- **验证**: 构建通过,所有不兼容选择器已从输出中移除 + +## 审查并修复剪切板接口合规问题 + +- **问题**: 用户截图显示「复制成功」与系统「内容已复制」重复 Toast,担心违反 5.15.4 剪切板接口滥用规范 +- **审查结果**: + - 所有复制操作均为用户点击触发,无 `getClipboardData` 自动读取 + - 无复制后强制跳转或中断业务流程 + - 当前实现基本合规,主要问题是重复 Toast 影响体验 +- **修复**: 更新 `src/utils/common.ts` 中的 `copyText` 函数,小程序端不再显示自定义「复制成功」Toast,由系统自带提示替代 +- **验证**: weapp 构建通过 diff --git a/src/passport/pay/index.tsx b/src/passport/pay/index.tsx index 26cedf2..64d5a51 100644 --- a/src/passport/pay/index.tsx +++ b/src/passport/pay/index.tsx @@ -39,10 +39,13 @@ const PayPage: React.FC = () => { const [paid, setPaid] = useState(false) // 从页面参数中获取 subscriptionNo + // 小程序码 scene 会作为 query.scene 传入,需解码 const getSubscriptionNo = useCallback(() => { const instance = Taro.getCurrentInstance() const params = instance?.router?.params || {} - return params.subscriptionNo || '' + // 优先读取 scene(小程序码参数),再读取 subscriptionNo(普通链接参数) + const scene = params.scene ? decodeURIComponent(params.scene) : '' + return scene || params.subscriptionNo || '' }, []) // 获取订阅详情 @@ -234,7 +237,6 @@ const PayPage: React.FC = () => { price={detail?.payPrice} size="large" thousands - color="#e53e3e" />