日期: 2026-10-14
适用角色: 市场专员、地区经理
实现载体: mobile-oa-h5 + /api/mini/market/{specialist|manager}
| 模块 | 筛选 | 列表与详情信息 | 开放动作 | 结果 |
|---|---|---|---|---|
| 预签约订单 | 关键词、订单状态 | 对齐业务日期、协议/客户、地区/医院/专员/经理、采集时间、缴费模式、金额、状态、备注、创建时间及意向金转账 | 新增、编辑、删除、转正式;转账新增、编辑、删除、提交财务、撤回 | 已完成 |
| 协议单 | 来源、协议状态、创建时间、样本采集时间 | 对齐协议、采集、客户、样本接收/运输/质检/生产/入库放行、v1/v2 缴费、意向金、转账、附件,以及储存证/保险/审核/状态记录只读信息 | 新增、编辑、查看、单条删除、移动端逐条授权的批量删除 | 已完成 |
| 缴费信息 | 关键词、缴费方式、缴费进度、应缴日期 | 对齐协议号、客户/样本、合同与应收、全部期次、全部转账、累计实缴、待缴和备注;进度复用 Web 口径 | 查看、登记/编辑/删除待提交转账、提交财务、被退回后撤回 | 已完成 |
| 催缴信息 | 关键词、催缴类型、缴费方式 | 对齐协议/客户/样本、人员、期次、应缴/已缴/欠缴、催缴状态和协议状态;按目标期次提供受限只读详情 | 查看缴费详情、查看关联协议;催缴详情本身不下发写动作 | 已完成 |
| 运费信息 | 关键词、运输方式、来源、创建时间 | 对齐批次、运输方式、金额、范围内关联数、来源、协议号/客户/样本、创建更新信息和备注 | 新增、编辑、关联、取消关联;候选支持来源、关键词和服务端分页,范围外明细和数量不可见 | 已完成 |
两个角色共用上述移动端页面与业务契约,数据差异继续由既有租户隔离、角色数据权限和现场范围控制,不由客户端身份参数决定。
以下能力在市场专员、地区经理移动端均无操作入口,市场路由也不提供对应写接口:
审核记录、状态记录、储存证和保险信息仅作只读展示。“提交财务确认”和“确认中撤回”属于市场发起/撤回流程,仍按需求开放,不等同于财务确认或拒绝。
mobile-oa-h5/src/market/list-filters.js、components/MarketFilterSheet.vue、list-presenter.js。mobile-oa-h5/src/views/market/MarketModuleList.vue、MarketModuleDetail.vue、MarketModuleForm.vue。mobile-oa-h5/src/market/modules/。ProtocolCustomerSearchField.vue、ProtocolSampleTransportPanel.vue、ProtocolSamplePaymentPanel.vue 及对应纯函数模块。mobile-oa-h5/src/market/action-policy.js、mobile-oa-h5/src/api/market.js、backend/app/services/market_support.py。backend/app/api/market_mobile.py、backend/app/services/market_{protocol,payment,freight}.py。| 模块 | Web 权威页面 | 移动展示位置 | 后端来源与安全边界 |
|---|---|---|---|
| 预签约订单 | web-admin/src/views/cell-storage/presign-order/ |
views/market/presign/PresignOrderList.vue、PresignOrderForm.vue、market/modules/presign.js |
market_presign.py;订单、转账和状态写入均锁后复核租户、数据范围和状态 |
| 协议单 | web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue、ProtocolViewDialog.vue |
MarketModuleForm.vue、market/modules/protocol.js、协议客户/样本运输/缴费组件 |
market_protocol.py 复用 Web 详情 bundle;cell/donation 均在 scoped FOR UPDATE 后写入;v1 只读,v2 金额使用 Decimal |
| 缴费信息 | web-admin/src/views/cell-storage/payment-info/ |
market/modules/payment.js、MarketModuleDetail.vue |
market_payment.py + sample_payment_progress.py;转账按 Schedule→Transfer 锁序,Web 财务写入口也改为写前数据权限校验 |
| 催缴信息 | web-admin/src/views/cell-storage/payment-chase/ |
market/modules/payment-chase.js、MarketModuleDetail.vue |
market_payment.py 的 schedule-bound 只读端点;每次重新校验租户、union scope、非作废期次和催缴资格,allowedActions=[] |
| 运费信息 | web-admin/src/views/cell-storage/sample-freight/ |
market/modules/freight.js、MarketModuleForm.vue |
market_freight.py;列表只返回 visibleItemCount,关联/解绑在同一事务内锁定父单、关系和明细并重新校验 scope |
所有移动金额输入和协议金额 DTO 均采用十进制定点字符串/Decimal(18,2),避免 JavaScript Number 和 Python float 造成财务金额精度损失。协议和预签附件与 Web 对齐为单文件 20 MiB,并继续执行扩展名、MIME、魔数、OOXML 结构和暂存附件归属校验。
compileall:通过。orderNum 默认隐藏或既有页面路径未找到,不属于本次五模块改动。git diff --check:通过。./scripts/update-graph.sh backend。自动化测试不能替代真实账号、真实数据和微信 WebView 验收。以下项目尚未在本地自动化环境中宣称通过;发布前需要使用市场专员、地区经理各一个测试账号,在 375px、390px、430px 视口完成: