miniprogram → sqxp-wx)前提:以 miniprogram 为唯一标准;不新增源端没有的功能与入口;不删减源端已有的交互、校验、分页、空态与样式结构(除非源端本身已废弃且可举证)。
配套文档:差异登记表见 docs/sqxp-wx-client-vs-miniprogram-diff.md。
采用 「源页整体替换 + 工程适配层」,而不是在现有简化页上零散打补丁:
miniprogram/src/pages/client/<页>.vue 的 template + script + style 整体迁为 sqxp-wx 对应路径文件。sqxp-wx 统一使用 request + parseResponseJson(res),替换源中仍写 res.data 且未解析的用法。van-* 处,在 sqxp-wx 用 uni 原生组件 + 样式 做出 同等布局与交互(不引入新业务能力)。按顺序完成,可在「首页大改」前并行:
| 序号 | 工作项 | 说明 |
|---|---|---|
| A1 | 迁入 static/data/china-region-cascader.json |
与源路径一致或约定 @/static/data/...,供 address/edit 多列省市区与源一致。 |
| A2 | 迁入 api/reviewApi.js(由 reviewApi.ts 转写) |
与源 同 URL、同方法、同参数;评价相关页只调此模块,避免复制粘贴分叉。 |
| A3 | 迁入 utils/avatar.js、utils/service-contact.js |
与 profile 头像、联系客服行为一致。 |
| A4 | 扩展 config/api.js |
导出与源 API_URL 中 客户页已使用 的常量(如 CLIENT_DASHBOARD),保持路径字符串与源一致。 |
| A5 | phone-dial-inline 视觉对齐 |
在不引入 Vant 的前提下,按源 scss 调整字号、间距、点击区,使与源截图一致。 |
原则:被多页依赖的基础体验优先;首页体量最大,单独作为一大里程碑。
| 阶段 | 建议顺序 | 理由 |
|---|---|---|
| P0 | address/edit → address/address → address/select |
下单、购物车、确认订单均依赖地址;且源与目标差异最大之一在 省市区组件。 |
| P1 | home/home |
客户主入口;源含分类侧栏、多接口组合,完成后其它页的「从首页进」路径才与源一致。 |
| P2 | cart/cart |
与首页、确认订单、商品浮层强耦合;需与源的 分页列表、地址展示、浮层关闭刷新 一致。 |
| P3 | order/create/create |
依赖购物车与地址;源使用 Vant 按钮与布局,需整体替换适配。 |
| P4 | order/order → order/pay/pay → order/detail/detail |
列表 → 支付 → 详情链路;detail 已与源较接近,可做 终态 diff 扫尾。 |
| P5 | product/view → product/detail |
商品详情与兼容跳转页与源对齐。 |
| P6 | review/list → review/create |
依赖 reviewApi 与商品信息参数,适合在 A2 完成后整体替换。 |
| P7 | profile/profile |
依赖 A3、A4;并按源菜单删除目标多出的入口(如 profile 内「我的发票」若源无则移除)。 |
| P8 | invoice/invoice、settlement/settlement、refund/refund |
在 P7 菜单与源一致后,再保证各页 内部 与源一致;避免菜单与源矛盾。 |
对每一页执行:
miniprogram 该页 commit 或文件哈希,迁移中源若变更需 conscious merge。<template> 层级、关键 class、条件渲染块与 v-for 与源 同序(便于 diff 样式)。onLoad / onShow / onMounted、分页参数、错误处理、二次确认弹窗与源一致;仅替换 request 使用方式。lang="scss" 至目标(需在 sqxp-wx 构建链支持 scss;若暂不支持,则逐块转为等价 plain CSS,禁止随意合并为单行导致层级丢失)。| 源(示例) | 目标方向 |
|---|---|
van-button |
button + 与源相同的 class 尺寸、圆角、disabled 样式 |
van-icon |
text/小图标字体/本地 png(语义与点击区域与源一致) |
其它 van-* |
逐项查源文档用法,用 uni 内置或 view 模拟,禁止借机加字段或加步骤 |
在完全对齐阶段应执行(具体以源为准):
profile 的菜单项、顺序、联系客服 行一致;移除源 profile 中不存在的菜单入口。sqxp-wx 执行 grep 查找仅目标存在的 navigateTo/菜单 文案,与源交叉比对,删除「迁移过程临时加」的入口。| 风险 | 缓解 |
|---|---|
sqxp-wx 根工程含大量 hello-uniapp 示例页 |
与客户迁移无关;不要误改示例路由;客户页 PR 保持范围清晰。 |
| 请求返回结构平台差异 | 坚持 parseResponseJson;对分页字段 list/total/totalPages 与源页保持同一解析分支。 |
| 双人并行改同一页 | 按上表阶段 + 单页 SOP 串行或严格文件级分工。 |
满足以下可视为「客户小程序迁移完毕」:
docs/sqxp-wx-client-vs-miniprogram-diff.md 中 所有「重大/较大差异」行均已关闭(或经产品书面签字接受差异——当前任务未授权接受差异)。components/client/* + phone-dial-inline + 本节 A1–A5 所列公共模块,均完成 源侧对照验收。| 阶段 | 内容 | 粗估(人日) |
|---|---|---|
| P0 基础设施 | A1–A5 | 1–2 |
| P1 首页 | home 整体替换 + 联调 |
3–6 |
| P2–P3 购物车与确认订单 | cart + create |
2–4 |
| P4 订单链路 | order + pay + detail 扫尾 |
1–3 |
| P5–P6 商品与评价 | view + detail + review |
2–4 |
| P7–P8 个人中心与发票/结算/退款 | 含菜单收敛 | 1–2 |
| 回归与修缺陷 | 全链路真机 | 2–3 |
合计粗估:约 12–24 人日(随熟悉度与源变更浮动)。
每完成一页:在 docs/sqxp-wx-client-vs-miniprogram-diff.md 对应行更新状态(可后续加「状态」列:未开始/进行中/已对齐),避免文档与代码再次脱节。