依据:docs/中科兴皖需求V0.3.md 菜单 2.2.6~2.2.10;数据模型 docs/sql/zkxw.sql(biz_collection_protocol 及其子表)。
范围:Web 管理端 web-admin + FastAPI backend;租户隔离与既有 /web/admin 响应风格保持一致。
biz_protocol_audit,不修改 biz_collection_protocol.protocol_status。pay_status = jfqrz → yjf。pay_status = tfqrz → ytf;不包含退费发起(不把状态推到 tfqrz)。pay_status = dfj 的分期明细(不包含 jfqrz);逾期定义为应缴日早于当天。/cell-storage/index/index。| 需求编号 | 菜单名称 | path | 组件路径 |
|---|---|---|---|
| 2.2.6 | 采集协议单 | protocol |
views/cell-storage/protocol/index.vue |
| 2.2.7 | 采集协议单审核 | protocol-audit |
views/cell-storage/protocol-audit/index.vue |
| 2.2.8 | 收款确认(财务) | payment-confirm |
views/cell-storage/payment-confirm/index.vue |
| 2.2.9 | 退费确认(财务) | refund-confirm |
views/cell-storage/refund-confirm/index.vue |
| 2.2.10 | 分期缴费用户预警 | installment-warning |
views/cell-storage/installment-warning/index.vue |
web-admin/src/router/modules/sqxp.ts 与 backend/app/api/menu.py 中的静态菜单树,保证 前端路由与后端菜单接口一致(与仓库现有约定相同)。web-admin/src/views/system/unit/index.vue(筛选、工具栏、表格、分页)。label-position="top",.dialog-form-layout,无 backdrop blur;色板遵循 docs/web-admin-ui-spec-fresh-mint.md。| 表名 | 用途 |
|---|---|
biz_collection_protocol |
协议单主表:列表、概要详情 |
biz_protocol_audit |
审核记录:列表、提交审核 |
biz_protocol_payment |
缴费主表:展示缴费模式、合同金额、分期参数(与协议单 1:1) |
biz_protocol_payment_detail |
缴费明细:财务确认列表、状态变更、分期预警 |
可选后续迭代再补:biz_protocol_collection_info、biz_protocol_sample、biz_protocol_party_customer 等。
tenant_no = 当前用户租户、del_flag = 0。tenant_no、create_by / update_by 等公共字段(与现有 CRUD 一致)。create_time DESC(与工程规范一致);预警列表可按 installment_due_date ASC 等业务需求单独约定。/api,路由挂载与现有 basic_info、admin 一致)以下路径均在 /web/admin 下(与现有基础信息管理相同前缀),具体以路由注册为准。
GET .../collection-protocolspage, pageSize, keyword(协议号等), protocolStatus(可选)GET .../collection-protocols/{id}创建/编辑协议单若产品未在本次冻结字段,可:第一版仅只读列表 + 详情,或最小字段新增——以 OpenSpec tasks 为准。
GET .../collection-protocol-auditsauditStatus、keyword 筛选POST .../collection-protocols/{id}/auditauditStatus(shtg | shth), auditRemark(可选)biz_protocol_audit(A1:允许多条);不更新 biz_collection_protocol.protocol_statusauditor_user_id / create_by 使用当前登录用户GET .../protocol-payment-details/receipt-confirmpay_status = jfqrzPOST .../protocol-payment-details/{detailId}/receipt-confirmjfqrzyjf,写入 finance_confirm_attachments(若前端上传)、备注等yjf 则返回业务错误提示GET .../protocol-payment-details/refund-confirmpay_status = tfqrzPOST .../protocol-payment-details/{detailId}/refund-confirmtfqrzytfytf 则返回业务错误提示GET .../protocol-payment-details/installment-warninginstallment_no IS NOT NULL、pay_status = dfjwarningType = warn:today <= due <= today+15天warningType = overdue:due < todaywarningType(warn | overdue | all)、page、pageSizeinstallment_due_date ASC日期计算使用服务器本地日期(YYYYMMDD 字符串与当天对比)。
admin / super_admin 可见(与 Demo 体系一致);若需细分「财务」角色,在 OpenSpec 任务中增加 perms 与角色菜单种子 SQL,不阻塞第一版。tfqrz→ytf,需业务侧在其他模块或后续任务中补齐「发起退费」。finance_confirm_attachments 等与 MinIO 上传组件对齐现有项目用法。openspec new change 创建变更(例如 cell-storage-protocol-modules)。openspec-propose 生成 proposal.md、design.md、tasks.md 及 capabilities 下各 spec.md,与本设计对齐。openspec-apply-change 按 tasks 实现后端 Model、CRUD、路由注册、sqxp.ts + menu.py、五个 Vue 页面及 web-admin/src/api 封装。文档状态:已定稿上述边界(含 A、A1、财务状态、预警 C+1、菜单与路径)。审阅通过后进入 implementation plan(writing-plans)与 OpenSpec 变更落地。