状态:用户第三次界面校准已在源码中完成并通过审查修复后的浏览器回归;当前总目标还包含 CRM 六页,图谱与全量门禁在总目标收尾统一执行。菜单 SQL 已按用户后续授权在测试库执行;未部署、未进行微信真机验收,生产库未执行。
设计:2026-10-17-mp-webview-pl-plan-cert-design.md。
计划:../plans/2026-10-17-mp-webview-pl-plan-cert.md。
独立移动模块 /m/pl/plan-cert,小程序运输管理工作台 code pl-plan-cert-webview,入口权限 mini:pl:plan-cert:list。Web 页面与既有后端不修改;移除导出,保留已确认设计中的全部移动功能。
| 要求 | 当前证据 / 状态 |
|---|---|
| 复用 H5 WebView、运输工作台入口 | 入口配置及路由测试 3/3 通过;独立规格审查通过 |
| 五个文字 Tab 及默认查询 | model 与浏览器交互通过 |
| 筛选、搜索、日期、分页与完整卡片字段 | 搜索/日期/动态候选项上下文/文本、日期、数字、枚举、合同侧别、排序参数/加载更多失败重试/乱序请求通过;字段完整性由独立规格审查核对 |
| 独立详情、关联合同、运输复制与链接 | /m/pl/plan-cert/:id 直达/刷新/路由 ID 切换通过;普通固定绿顶栏、三 Tab、无票根/Hero;只读合同商机/报价关联及别名补全、金额独立权限、关联计划打开、司机/现场复制、磅单二维码预览均通过 |
| 产品分组证书上传、预览、下载、移除 | 3种证书槽位、最新详情、上传中保存/关闭拦截、失败保留重试、载荷白名单、预览/下载/移除及取消不写入通过 |
| 单条/批量齐备与取消、权限、状态限制 | model 及浏览器批量1成功1失败1跳过、单条取消、权限失败关闭写入口通过 |
| 375/414px 移动样式、附件卡片 | 顶栏、状态 Tab、三栏筛选和列表卡片横向铺满视口;列表/筛选/详情/上传截图及横向溢出断言通过;72×72 缩略图及编辑态下载/删除 44px 命中区互不重叠 |
| 不修改 Web 及共享后端行为 | 8 个关键文件 SHA256 与实施前全部一致 |
| 其他问题只记录 | 见 2026-10-17-mp-pl-plan-cert-existing-issues.md,未修改其中的既有问题 |
| 构建、目标 lint、类型检查、图谱更新 | 本阶段生产构建、目标 ESLint/Stylelint 通过;全量类型检查仍被仓库既有错误阻断且目标路径无诊断;图谱在 CRM 六页完成后统一更新 |
node --test scripts/mp-pl-plan-cert-entry.test.mjs:先3项失败(缺入口/路由/SQL),补齐后3项通过。pnpm exec tsx --test src/views/m/pl/plan-cert/model.test.ts src/views/m/crm/customer/model.test.ts scripts/crm-existing-issues.test.ts:19项通过,其中8项为本次危化证规则、11项为前序客户功能回归。补充的日期上下文、品牌别名及合同补全测试均先失败后通过。node --check miniprogram/config/api.js、node --check miniprogram/config/workbench-menus.js:通过。1 → MINI_PL_ROOT,并检查 SQL 两段 SELECT 的执行计划;当时未执行写语句。后续获用户授权后的实际执行与提交验证见下方记录。node scripts/test-mp-pl-plan-cert.mjs:最终通过并自然退出,152次模拟API调用,无未知接口、无页面脚本异常。覆盖携带 mpTicket 直达详情和刷新、列表跳转、路由 ID 切换、详情内上传与齐备/取消齐备原位刷新;页面与共享组件使用真实代码,仅网络边界替身,不写真实数据库。/tmp/shanxia-plan-cert-e2e/ 下 list-375/414.png、filters-375/414.png、detail-375/414.png、upload-375/414.png、attachment-preview-375.png、feedback-preview-414.png。已人工检查,预览和下载互不覆盖。pnpm build:本次独立详情阶段 fresh 通过(4943 modules,38.13秒);仍有既有组件重名和包体积警告。pnpm exec eslint src/views/m/pl/plan-cert scripts/mp-pl-plan-cert-entry.test.mjs scripts/mp-pl-plan-cert-fixture.mjs scripts/test-mp-pl-plan-cert.mjs、目标 Stylelint 与 Prettier:通过。pnpm exec vue-tsc --noEmit:仍被仓库大量既有错误阻断;过滤输出未发现本目标路径诊断。总目标收尾将重新生成统一基线证据。m.perms = 'pl:plan-cert:list',避免误匹配移动权限字符串。mp-webview.scss。V1.5 工作区,保留全部原有修改;未提交、推送、合并或清理用户文件。docs/sql/migrations/2026-10-17-mini-pl-plan-cert-webview-menus.sql。backend/.env 对应的 47.99.164.66:3306 / shanxia2.0,MySQL 5.7.36;未连接生产库写入。1 → MINI_PL_ROOT 唯一、目标菜单尚不存在、两张目标表均为 InnoDB。sys_menu 255行、sys_role_menu 1375行至本机临时文件 /var/folders/v5/ylmpvkjd4zxcf20pzbys3stc0000gn/T/shanxia-plan-cert-menu-backup-zu0_vlar/before.json,目录权限700、文件权限600。备份不包含数据库密码。329823eb-e3af-49b2-b656-08f2c2a713f3,权限 mini:pl:plan-cert:list),新增5条角色菜单绑定:管理员、销售主管、销售计划员、销售实录员、销售办证员。父级授权原已完整,无需新增。