Files
shanxia2.0/docs/web-admin-mp-webview-modules.md
2026-10-19 18:27:18 +08:00

6.2 KiB
Raw Permalink Blame History

小程序 WebView 模块接入

后续管理端业务进入微信小程序时,只加 H5 路由与工作台入口,不要再复制鉴权、登录注入或第二个 web-view 页。

权威决策见 docs/superpowers/specs/2026-09-14-mp-webview-transport-plan-design.md。已落地:运输计划 /#/m/pl/plan、CRM 产品 /#/m/crm/product、CRM 报价 /#/m/crm/quote*、CRM 合同 /#/m/crm/contract*、CRM 客户 /#/m/crm/customer。

列表卡 / 确认弹窗视觉标准(扁平折叠卡为全部 /m/** 新标准;旧 expense-card 过渡):见 docs/miniprogram-ui-spec-sanqiang.md §12、OpenSpec「工作台 WebView 业务页」,以及 docs/superpowers/specs/2026-10-18-mp-webview-flat-list-card-standard-design.md。客户/产品列表为参考实现。

已有骨架(不要新建)

层 路径
小程序壳 miniprogram/pages/common/mp-webview.vue(主包已注册)
换票 POST /api/web/auth/mp-webview-ticket(需登录,走加密)→ H5 POST /api/web/auth/mp-webview-exchange(加密排除)
H5 壳 web-admin/src/layouts/MpWebviewShell.vue
路由识别 isMpWebviewPath(/m/ 前缀)、静态路由 meta.isMpWebview
视觉 三墙绿 #0a9f6d(src/styles/mp-webview.scss),不是管理端 Fresh Mint

新模块 5 步

  1. H5 页面:在 web-admin/src/views/m/<module>/ 写列表/详情等;套 MpWebviewShell。桌面弹窗可加 variant="page" 全屏复用,不要重写业务规则。
  2. 静态路由:web-admin/src/router/routes/staticRoutes.ts 增加 /m/...,meta: { isHideTab: true, isMpWebview: true },且必须写在 catch-all 之前。不要挂桌面 index/index 布局。
  3. 工作台入口:miniprogram/config/workbench-menus.js 增加一项;config/api.js 的 WORKBENCH_ROUTE_MAP 指向同一个壳: pages/common/mp-webview?path= + encodeURIComponent('/m/...')。
  4. 双权限:入口菜单用 mini:...;业务 API 仍校验对应 Web perms。角色需同时具备两者(参考 docs/sql/migrations/2026-09-14-mini-pl-plan-webview-menus.sql)。
  5. 发版:微信业务域名已配置时,只发 web-admin 静态资源即可,不必提审小程序。

禁止:每个模块再做一个 web-view 页面、再做一套登录注入、URL 长期带 accessToken、把公开司机/现场 token 页(/#/public/pl/transport/:token)当登录模板。

运输计划对照

  • 列表 /m/pl/plan,详情 /:id,表单 /new /:id/edit /:id/arrange,打印 /:id/print,三方人车 /paste
  • 工作台 code pl-plan-webview,perms mini:pl:plan:manage
  • 与原生现场页 pages/pl/transport-plan/*(mini:pl:transportPlan:list)并存,不要混名

CRM 产品对照

  • 列表 /m/crm/product,详情 /:id,表单 /new /:id/edit,分类 /categories
  • 工作台 code crm-product-webview,perms mini:crm:product:list
  • 业务 API:现有 /web/crm/products/*、/web/crm/product-categories/*
  • 不做:导入/导出/批量上下架

CRM 报价对照

  • 管理列表 /m/crm/quote,审批列表 /m/crm/quote/approval,详情 /:id,表单 /new /:id/edit,版本 /:id/versions
  • 工作台 code crm-quote-webview / crm-quote-approval-webview,perms mini:crm:quote:list / mini:crm:quote:approve
  • 业务 API:现有报价 list/detail/CRUD/submit/invalid/versions/approval;审批人设置仅 get 预填
  • 不做:分享、转合同、生成报价单/PDF、导出、批量提交/审批、审批人设置菜单

CRM 合同对照

  • 管理 /m/crm/contract,审批 /m/crm/contract/approval,详情 /:id,表单 /new /:id/edit
  • 工作台 code crm-contract-webview / crm-contract-approval-webview
  • perms mini:crm:contract:list / mini:crm:contract:approve
  • 支持单条与批量提交/审批;含复制、作废/恢复、上传扫描件
  • 不做:调价函、打印/PDF、导出、执行、续签

CRM 客户管理对照

  • 列表 /m/crm/customer,新增 /new,详情 /:id,编辑 /:id/edit。
  • 工作台 code crm-customer-webview,perms mini:crm:customer:list。
  • 四视图、搜索、字段筛选、日期排序、卡片字段显示、客户增改查及批量删除/放公海。
  • 客户证件、跟进及附件、联系人、开票资料(含快速识别和默认设置)、关联商机/合同、操作日志。
  • 复用已有客户/联系人/开票接口,独立移动组件,Web 客户组件保持不变;不提供导出。
  • 菜单脚本:docs/sql/migrations/2026-10-17-mini-crm-customer-webview-menus.sql。
  • 首次上线需要发布本次含工作台新入口的小程序包、部署 H5 并执行菜单 SQL。之后仅调整 H5 页面可独立部署静态资源。

运输管理危化品证上传对照

  • 列表 /m/pl/plan-cert,详情为独立页面 /m/pl/plan-cert/:id,上传继续使用本模块移动 Bottom Sheet。详情支持直达、刷新和标准返回,不使用票根或顶部记录摘要。
  • 工作台 code pl-plan-cert-webview,入口 perms mini:pl:plan-cert:list;写操作仍分别按 Web pl:plan-cert:upload、pl:plan-cert:ready 显示并检查。
  • 五个文字 Tab:未上传证书(默认)、全部、入库单、出库单、直销单。不提供导出。
  • 复用计划列表/详情、产品证书、齐备接口与附件上传,不新增业务表,不修改桌面页面。
  • 菜单脚本:docs/sql/migrations/2026-10-17-mini-pl-plan-cert-webview-menus.sql;仅新增移动叶子并为已有 Web 列表角色补齐移动根和运输父级。2026-10-17 已按用户授权在测试库执行,生产库未执行;详见危化品证上传交付核验文档。
  • 首次上线需发布含工作台入口的小程序包、部署 H5 并确认后执行上述 SQL;之后仅改 H5 内容可独立发版。

回归清单(通用)

  • ticket 第二次 exchange 失败
  • 换票后列表租户数据与桌面同账号一致
  • 新增草稿、安排、复制、等通知、作废、打印预览、三方人车可走通
  • 401 回小程序登录,不到 /#/auth/login
  • 只发 web-admin:改卡片文案在小程序 WebView 内可见
  • 原生「运输计划单」现场页仍可用
  • 生产加密:exchange 明文、后续计划 API 加密