# 养殖大户数据填报 — 前端技术方案 > 依据:同目录功能需求、技术方案;交互对齐家庭牧场村级填报;字段 **小驼峰**。 --- ## 1. 页面与路由 | 项 | 说明 | | --- | --- | | **Vue 路径** | `ruoyi-ui/src/views/dataModel/largeLivestockFarmer/index.vue` | | **组件名** | `LargeLivestockFarmer` | | **菜单配置** | 组件路径:`dataModel/largeLivestockFarmer/index` | | **权限前缀** | `dataModel:largeLivestockFarmer:list\|query\|add\|edit\|remove\|import\|export` | --- ## 2. API 模块 | 项 | 说明 | | --- | --- | | **文件** | `ruoyi-ui/src/api/dataModel/largeLivestockFarmer.js` | | **Base** | `/dataModel/largeLivestockFarmer` | CRUD、`yearOptions` / `monthOptions` / `townOptions` / `villageTree`、导入 `importData`、模板 `importTemplate`、导出 `export`(可选 `townDeptId`)与家庭牧场模块同构;模板/导出均为 **GET + blob**。 | 方法 | 路径 | 说明 | | --- | --- | --- | | `listLargeLivestockFarmer` | GET `/list` | 分页;筛选年、月、乡镇、企业名称 | | `getLargeLivestockFarmer` | GET `/{id}` | 详情 | | `addLargeLivestockFarmer` | POST `/` | 新增 | | `updateLargeLivestockFarmer` | PUT `/` | 修改 | | `delLargeLivestockFarmer` | DELETE `/{ids}` | 删除 | | `listLargeLivestockFarmerYearOptions` | GET `/yearOptions` | 年份下拉 | | `listLargeLivestockFarmerMonthOptions` | GET `/monthOptions` | 月份下拉 | | `listLargeLivestockFarmerTownOptions` | GET `/townOptions` | 乡镇下拉 | | `listLargeLivestockFarmerVillageTree` | GET `/villageTree` | 县→乡镇→村树 | | `importLargeLivestockFarmer` | POST `/importData` | FormData:`file` + `statYear` + `statMonth` | | `downloadLargeLivestockFarmerTemplate` | GET `/importTemplate` | 模板 blob | | `exportLargeLivestockFarmer` | GET `/export` | 参数:`statYear`、`statMonth`、可选 `townDeptId` | --- ## 3. 页面结构 1. **筛选**:年、月、乡镇、企业名称(无村筛选,与需求一致)。 2. **列表**:年、月、乡镇、村、企业、法人、类型、注册资本、成立时间、牛存栏、牛出栏、草场面积(`grasslandAreaSubtotal`)、操作。 3. **新增/编辑**:选村(可搜索,标签「乡镇 / 村」);企业类型默认「个体工商户」、销售渠道默认「其他」;成立时间 `el-date-picker`(`yyyy-MM-dd`);补助资金年份 `type="year"`(`yyyy`);派生字段只读展示。 4. **详情**:全部字段含派生 + 乡镇只读;数值用 `formatWithUnit` 带单位。 5. **导入**:选年月 → upsert 摘要(insert/update/fail)。 6. **导出**:选年月;所属乡镇与列表共用选项与文案,打开时带入列表当前乡镇,清空=全部。 ### 表单分区 | 分区 | 内容 | | --- | --- | | 基本信息 | 年月、村、企业名称、法人、类型、注册资本、成立时间、劳力人数 | | 存栏与出栏 | 牛/羊存栏与能繁、牛/羊出栏;只读存栏小计 | | 草场与草畜平衡 | 草畜平衡面积、流转面积、核定载畜量、存栏绵羊单位;只读草场面积小计、是否草畜平衡户 | | 经营与补助 | 收入、支出、只读利润;补助年份/是否/金额 | | 其他 | 商标、质量认证、销售渠道、带动人数、工资、备注 | --- ## 4. 业务规则 | 规则 | 实现 | | --- | --- | | 必填 | 年、月、村、企业名称 | | 提交 | 只传 `villageDeptId` 与录入项;乡镇与派生由后端计算 | | 前端只读派生 | 存栏小计、草场面积小计、利润、是否草畜平衡户(与后端公式一致,便于预览) | | 是/否 | `hasSubsidy` / `hasTrademark` / `hasQualityCert` 单选「是」「否」 | | 枚举 | 企业类型、销售渠道与后端 `LargeLivestockFarmerValidation` 一致 | | 不可未来月 | 表单 / 导入 / 导出校验 | | 草畜失衡预警 | 由后端写入 `biz_yak_disease_warning`;前端不单独处理 | ### 枚举取值 - **企业类型**:个体工商户 / 个人独资企业 / 有限责任公司 / 合伙企业 / 其他(默认个体工商户) - **销售渠道**:其他 / 线上销售 / 线下集市 / 企事业单位 / 商超门店(默认其他) ### 派生预览公式(与后端一致) - 存栏小计 = 牛年底存栏 + 羊年底存栏 - 草场面积小计 = 草畜平衡面积 + 流转经营草地面积 - 利润 = 收入 − 支出(任一侧为空则不展示) - 是否草畜平衡户:核定载畜量 ≥ 年底存栏绵羊单位 →「是」,否则「否」(缺一侧则「—」) --- ## 5. 国际化 `dataModel.largeLivestockFarmer`(`lang/zh|bo/dataModel.js`);页面 `dmNs = 'largeLivestockFarmer'`,复用 `dataModelLocaleMixin`(`dmT` / `dmCommon` / `formatWithUnit`)。 --- ## 6. 联调说明 1. 执行 `sql/biz_large_livestock_farmer.sql`。 2. 菜单组件 `dataModel/largeLivestockFarmer/index`,权限见 §1。 3. 验证:默认类型/渠道、派生只读、导出乡镇带入列表筛选、草畜失衡写入疾病预警(后端)。 --- ## 7. 文件清单 | 类型 | 路径 | | --- | --- | | 页面 | `ruoyi-ui/src/views/dataModel/largeLivestockFarmer/index.vue` | | API | `ruoyi-ui/src/api/dataModel/largeLivestockFarmer.js` | | i18n | `lang/zh/dataModel.js`、`lang/bo/dataModel.js` → `largeLivestockFarmer` | | 前端技术方案 | 本文档 | --- ## 8. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版:村×年月×企业;CRUD + 导入 upsert + 导出乡镇与列表联动;对齐家庭牧场前端交互 | | 1.1 | 与需求 1.1 一致:导出所属乡镇打开带入列表筛选、可清空表示全部 |