# 疫苗接种数据填报 — 功能需求 ## 1. 文档说明 | 项 | 说明 | | --- | --- | | 模块名称 | 疫苗接种数据填报 | | 目标 | 按**村 × 所属年月**填报应免数、实免数;导入 upsert;导出按模板填充 | | 关联系统 | 业务后台;`sys_dept`(乡镇、村) | | 修订依据 | 交接表 `疫苗接种数据填报.xlsx`;运行模板 `vaccination_data_import_template.xlsx` | --- ## 2. 填报粒度 - 一条记录:某一自然年、某一自然月、某一行政村的疫苗接种汇总。 - 保存时由所选村反推所属乡镇。 - 唯一键:所属年份 + 所属月份 + 所属村。 - 导入:存在则更新、不存在则插入(不按年月先删后插)。 - 派生(保存时计算并落库):**免疫率 = (实免数 / 应免数) × 100**,保留 2 位小数(应免数 > 0 且实免数非空;如 98.33;界面/导出展示为 `98.33%`)。 - **约束:实免数 ≤ 应免数**(两者均填写时;保存与导入均硬拦截,不允许超过)。 --- ## 3. 功能范围 | 能力 | 说明 | | --- | --- | | 分页列表 | 筛选:年、月、乡镇、村;列:年、月、乡镇、村、应免数、实免数、免疫率 | | 新增 / 修改 | 选村;新增默认本年本月;免疫率只读预览 | | 详情 | 全部字段含免疫率 | | 删除 | 物理删除 | | Excel 导入 | 表头约 1~4 行;另选年月;免疫率列导入跳过;按唯一键 upsert | | Excel 导出 | 另选年月;乡镇可选(不选则全部);填表人=登录用户;无合计行 | --- ## 4. 权限 `dataModel:vaccinationData:list|query|add|edit|remove|import|export` 菜单组件路径:`dataModel/vaccinationData/index` --- ## 5. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 首版:CRUD + upsert 导入 + 导出 | | 1.1 | 免疫率改为 (实免数/应免数)×100,保留 2 位小数落库 | | 1.2 | 约束:实免数 ≤ 应免数(硬校验) |