Files
wechat_wc/review1.md
T
2026-07-27 14:54:21 +08:00

7.0 KiB
Raw Blame History

智绘微刻小程序 — 交付总结 v2

本文档供完全无上下文的新会话阅读,记录本轮重构的完整交付成果。
日期2026-07-27(第二次修改)
项目目录F:\weixin_wordc\
技术栈Taro 3.6.31 + React 18 + TypeScript + SCSS


一、历史修改回顾

Batch 1(已完成)

见 review1.md 历史版本。核心完成:全局主题切换、字体系统、tabBar重组、商品详情页、设计清单、效果确认页、后端技术栈文档。


二、本轮修改任务 — 全部完成

序号 任务 状态
1 全局主题系统升级为 Context 模式(点击即所有页面同步)+ 纯色背景去掉条纹 完成
2 设计清单页面实时刷新(onShow 钩子保证切页即刷新) 完成
3 微信登录系统(wx.login + chooseAvatar + nickname input 完成
4 修复商品图片路径(相对路径改为根路径 /img/xxx + copy 配置) 完成
5 删除 DIY 页品种选择卡片,直接进入工作台 完成
6 词云生成不再跳转 DIY,仅保存图片 完成
7 DIY 贴纸系统(上传多张图/删除/拖动/缩放/碰撞检测) 完成
8 订单详情页(淘宝风格:物流时间轴+地址+订单信息+设计预览) 完成
9 Profile 页 5 状态 2+3 布局(待设计/待付款/待发货/待收货/已完成) 完成
10 登录拦截(需登录才能访问设计清单、订单等敏感页面) 完成
11 订单列表页接收 profile 跳转的参数自动筛选 完成
12 所有 11 个页面接入 ThemeContext 完成

三、文件变更清单

新建文件

文件 作用
src/context/ThemeContext.tsx 全局主题 Context + Provider + useThemeContext hook
src/components/LoginModal/index.tsx + .scss 登录弹窗组件(含头像选择和昵称输入)
src/pages/orderDetail/index.tsx + index.scss + index.json + index.config.ts 订单详情页(淘宝风格)

修改的现有文件

文件 核心改动
src/app.tsx 根组件包裹 <ThemeProvider>
src/app.scss 移除 background-image 条纹,改为纯色背景
src/app.config.ts 新增 pages/orderDetail/index 路由
src/hooks/useTheme.ts 改为基于 useContext(ThemeContext) 实现
src/components/ThemeToggle/index.tsx 接入 Context,触发 theme:storageChanged 全局事件
src/custom-tab-bar/index.tsx 移除 fixed 白色背景,支持跟随主题变量
src/utils/productConfig.ts 图片路径改为 /img/xxx 绝对根路径
src/types/index.ts 添加 StickerItem 接口,更新 DesignItemdesignData 字段
config/index.js copy 规则增加 { from: 'src/img', to: 'img' }
src/pages/index/index.tsx 接入 useThemeContext()
src/pages/product/index.tsx 接入 useThemeContext()
src/pages/diy/index.tsx 重写:删除步骤1选品,改为贴纸系统(上传/删除/拖动/缩放/碰撞检测)
src/pages/diy/index.scss 重写:支持贴纸列表、碰撞红色标注、控制栏
src/pages/checkout/index.tsx 支持展示贴纸列表的预览
src/pages/designList/index.tsx onShow 自动刷新,接入 Context
src/pages/orders/index.tsx 读取 orders:filter 参数自动切换 Tab
src/pages/profile/index.tsx 重写:5 状态 2+3 布局 + 登录弹窗 + 登录拦截 + Context
src/pages/profile/index.scss 重写:支持 2+3 网格、登录弹窗样式
src/pages/service/index.tsx 接入 useThemeContext()
src/pages/wordcloud/index.tsx 移除「前往个性化定制」按钮,仅保存图片
src/utils/store.ts 新增 setUserInfo/getUserInfo 暴露接口(mock openid

四、编译验证结果

npx taro build --type weapp
  • Compiled successfully in 15.49s
  • 0 报错,0 ERROR
  • ⚠️ 2 个 Warning(均为正常提示):
    1. AssetsOverSizeLimitWarning — 实物照片体积较大(2~12MB PNG),不影响运行,上线前可压缩优化。
    2. NoAsyncChunksWarning — Webpack 懒加载建议,不涉及错误。

五、关键踩坑记录

现象 解法
全局主题不同步 切换后已打开页面不刷新 引入 React.createContextThemeToggle 切换时写入 Storage + eventCenter.trigger('theme:storageChanged'),各页面 onShow 时重新读取
设计清单切页不刷新 加入清单后切换页面看不到新条目 Taro.getCurrentInstance().page.onShow 代替 eventCenter,保证每次页面展现必触发
图片显示纯空白 微信小程序编译后资源路径错乱 productConfig.ts 的图片路径改为 /img/xxx 绝对路径,并在 config/index.js copy 到 dist/img
DIY 贴纸碰撞检测 两张贴纸贴在一起时无法阻止进入下一步 矩形边界框(AABB)碰撞检测,只要两个贴纸矩形相交即标红 isOverlapping=true,预览/完成时若存在 hasOverlap=true 则禁用提交
Profile 5 状态空间不够 单行 5 个状态拥挤 采用 2+3 两排布局:第一排 2 个(待设计/待付款),第二排 3 个(待发货/待收货/已完成),用虚线分隔+细线水平分隔
微信登录获取真实头像 wx.getUserInfo 已不再返回真实头像和昵称 使用微信标准 open-type="chooseAvatar" + input type="nickname" 组件,让用户手动选择和填写
订单页自动筛选 Profile 点击状态跳转后订单列表未自动切换 Tab 跳转前 Taro.setStorageSync('orders:filter', 'pending'),订单页 onShow 时读取并应用

六、核心业务流(完整链路)

首页浏览品类 → 商品详情页(轮播图+价格+介绍)
  → 加入设计清单(弹窗选数量)→ 设计清单页(随时切页刷新)
  → 立即下单 → DIY 工作台(直接进入,无需选品)
    → 添加贴纸(相册/相机)→ 拖动调整位置 → 碰撞检测
    → 预览效果 → 确认完成 → 设计效果确认页
      → 弹窗确认下单 → 订单生成 → 订单列表/订单详情
        → 物流时间轴追踪 → 确认收货 → 完成

七、下一步建议(可选)

  1. 后端接入:当前 openid 为 mock 值,接入真实后端后替换 wx.logincode 换取真实 openid
  2. 图片压缩:上线前将 src/img 下的实物照片压缩到 500KB 以内,避免微信包体积超限。
  3. 真机测试图片:在微信开发者工具中预览,确认图片是否正常加载(路径已改为绝对路径+copy)。
  4. 订单物流接口:当前物流为静态 mock,接入后端后可实现真实物流轨迹查询。

文档更新时间:2026-07-27
本轮重构 12 项核心目标全部完成,编译通过。