Files
shanxia2.0/docs/web-admin-mp-webview-modules.md

86 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 小程序 WebView 模块接入
后续管理端业务进入微信小程序时,**只加 H5 路由与工作台入口**,不要再复制鉴权、登录注入或第二个 `web-view` 页。
接入约束见本文「已有骨架」与「新模块 5 步」。已落地:运输计划 `/#/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 业务页」。参考实现:`web-admin/src/views/m/crm/customer/index.vue`、`web-admin/src/views/m/crm/product/index.vue`。
## 已有骨架(不要新建)
| 层 | 路径 |
|----|------|
| 小程序壳 | `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 加密