日期:2026-10-07
状态:已确认(2026-10-07)
关联:细胞存储「采集协议单」、科研捐赠「捐赠协议单」;交互对齐「统一样本信息管理」
现状协议单分两处入口:
CellStorageProtocolAudit / protocol-audit):含审核、状态变更、转科研、缴费相关展示等。ResearchDonationAudit / research-donation/audit):结构相近,无缴费;含知情同意书、转细胞存储。两边均为独立库表与 API(2026-05-17 科研捐赠设计方案 C:独立业务 + 共享基础数据),表单与弹窗已部分复用公共组件。
产品希望一个界面、两个来源 Tab,日常从细胞存储进入;科研捐赠侧协议单菜单不再使用。近期「样本信息管理」已按双 Tab 壳页面统一,本需求对齐同一交互模式。
research-donation/audit 仍可进入同一壳页面,并支持 ?tab=research_donation。biz_collection_protocol* 与 biz_research_donation*(及捐赠侧独立表)为单表。| 菜单 | 路由 name | 路径 | 默认 Tab |
|---|---|---|---|
| 细胞存储 → 采集协议单 | CellStorageProtocolAudit |
/market/cell-storage/protocol-audit |
cell_storage |
菜单标题保持「采集协议单」,不改名。
| 路由 name | 路径 | 壳组件行为 |
|---|---|---|
CellStorageProtocolAudit |
…/protocol-audit |
UnifiedProtocolPage,default-source=cell_storage |
ResearchDonationAudit |
…/research-donation/audit |
同一 UnifiedProtocolPage,default-source=research_donation |
query.tab 取值:cell_storage | research_donation。query.tab,与默认 source 一致时可规范化 URL。ResearchDonationList(…/list)与细胞存储「采集协议单录入」CellStorageProtocol(…/protocol)路由可保留且 isHide;日常「新增」由各 Tab 内打开对应 FormDialog,不依赖侧栏录入菜单。前端固定菜单(VITE_ACCESS_MODE=frontend 主路径):
web-admin/src/router/modules/sqxp.tsbackend/app/api/menu.py处理:
meta.isHide: true)。router.push 可用。DB 菜单模式(可选同步):新增迁移脚本,例如
docs/sql/migrations/2026-10-07-hide-research-donation-protocol-menus.sql
对齐 2026-10-06-hide-research-donation-sample-info-menu.sql:
visible = '0'(id / perms / path+parent 条件)。sqxp.ts + menu.py。细胞存储「采集协议单」保持可见。
biz:cellStorageProtocolAudit:list(以及该页既有按钮级权限:新增/审核/状态变更等,仍按细胞存储协议侧配置)。biz:researchDonation* 裁剪 Tab。require_admin_or_super_admin,细粒度菜单码主要挡前端路由。biz:researchDonation* 校验:改为接受「持有细胞存储采集协议单对应权限」即可操作捐赠读写;或与产品确认后放宽为与 admin 门禁一致。不要求用户再单独挂捐赠菜单权限才能用捐赠 Tab。web-admin/src/views/cell-storage/protocol-audit/UnifiedProtocolPage.vuepanel-pill-tabs panel-pill-tabs--lg(与统一样本信息一致)
细胞存储 / 科研捐赠activeSource:cell_storage | research_donationroute.query.tab;建议仅激活当前 Tab 的列表请求(避免双 Tab 同时拉数)。cell-storage/protocol-audit/index.vue →<UnifiedProtocolPage default-source="cell_storage" />query.tab 重定向:payment-info / storage-cert 等 → 缴费信息或样本信息,逻辑继续放在该薄页或壳内 onMounted,避免回归。)research-donation/audit/index.vue → 改为薄包装,引用同一壳,default-source="research_donation"。| Tab | 组件 | 说明 |
|---|---|---|
| 细胞存储 | 现有 ProtocolAuditTab.vue |
筛选、列表/卡片、新增/编辑/审核/状态变更/转科研;尽量少改 |
| 科研捐赠 | 新建 protocol-audit/DonationProtocolTab.vue |
从现 research-donation/audit/index.vue 抽出列表主体;与壳同目录,便于统一页引用 |
捐赠弹窗继续放在 research-donation/list/:
DonationFormDialogDonationViewDialogDonationAuditDialogDonationStatusChangeDialog细胞存储弹窗继续用 protocol/ 下现有组件(ProtocolFormDialog 等)。
page-container → panel → pill tabs → 当前 Tab 的 filter / toolbar / list / pager。fixed="right"、label-position="top"、无遮罩模糊等,沿用现页与 Fresh Mint 规范,不重做视觉。UnifiedProtocolPage
├─ tab=cell_storage → ProtocolAuditTab
│ → collection-protocol / audit APIs
└─ tab=research_donation → DonationProtocolTab
→ research-donation APIs
query.tab 只控制展示,不参与后端筛选参数。| 项 | 路径 / 动作 |
|---|---|
| 新建壳 | protocol-audit/UnifiedProtocolPage.vue |
| 抽出捐赠 Tab | protocol-audit/DonationProtocolTab.vue |
| 薄化路由页 | protocol-audit/index.vue、research-donation/audit/index.vue |
| 隐藏菜单 | sqxp.ts、menu.py;一级科研捐赠无可见子项则隐藏 |
| DB 迁移(可选) | docs/sql/migrations/2026-10-07-hide-research-donation-protocol-menus.sql |
| 权限冒烟 | 仅细胞存储协议权限账号操作捐赠 Tab |
| 图谱 | 前端改动后 ./scripts/update-graph.sh frontend(或 all) |
/#/market/research-donation/audit(及 ?tab=research_donation):统一页 + 捐赠 Tab 激活。query.tab 同步;刷新保持当前 Tab。protocol-audit?tab=storage-cert → 样本信息)仍有效。| 议题 | 结论 |
|---|---|
| 交互形态 | 方案 1:壳页面 + 两个 Tab |
| 侧栏 | 仅保留细胞存储「采集协议单」;隐藏捐赠协议单相关菜单及空的一级「科研捐赠」 |
| 旧链接 | 保留科研捐赠 audit 路由,进统一页,?tab=research_donation |
| Tab 权限 | 方案 B:只认细胞存储采集协议单权限,进页即两 Tab 都可见 |
| 数据模型 | 保持两套表与 API,不合并 |
| 视觉 demo | 不需要 HTML demo |