牦牛存栏数据填报 — 前端技术方案
依据:同目录 牦牛存栏数据填报功能需求.md、牦牛存栏数据填报技术方案.md;布局对齐 dataModel/grassland/index.vue(双 el-card + 分页表格);字段 小驼峰。
1. 页面与路由
| 项 |
说明 |
| Vue 路径 |
ruoyi-ui/src/views/dataModel/yakHerdInventory/index.vue |
| 组件名 |
YakHerdInventory |
| 菜单配置 |
组件路径:dataModel/yakHerdInventory/index |
| 权限前缀 |
dataModel:yakHerdInventory:list\|query\|add\|edit\|remove\|import\|export |
2. API 模块
| 项 |
说明 |
| 文件 |
ruoyi-ui/src/api/dataModel/yakHerdInventory.js |
| Base |
/dataModel/yakHerdInventory |
| 方法 |
HTTP |
说明 |
listYakHerdInventory |
GET |
/list 分页列表 |
getYakHerdInventory |
GET |
/{id} 详情 |
addYakHerdInventory |
POST |
/ 新增 |
updateYakHerdInventory |
PUT |
/ 修改 |
delYakHerdInventory |
DELETE |
/{ids} 删除 |
listYakHerdInventoryYearOptions |
GET |
/yearOptions |
listYakHerdInventoryMonthOptions |
GET |
/monthOptions |
listYakHerdInventoryTownOptions |
GET |
/townOptions |
listYakHerdInventoryVillageTree |
GET |
/villageTree 县→乡镇→村 |
importYakHerdInventory |
POST |
/importData(file + statYear + statMonth) |
exportYakHerdInventory |
GET |
/export(statYear + statMonth,blob) |
模板下载:downloadYakHerdInventoryTemplate()(GET + blob),勿用若依全局 this.download()(固定 POST)。
3. 页面结构
- 筛选区:所属年份、所属月份、所属乡镇、所属村(Treeselect);搜索、重置、新增、导入、导出。
- 列表区:所属年份、所属月份、所属乡镇、所属村、村居数、牧户数、存栏数、公牛/母牛存栏数;空值展示
—。
- 操作列:查看、修改、删除。
- 新增/编辑弹窗:年份、月份、所属村(必填);明细录入字段(
INPUT_COUNT_FIELDS);不展示派生合计;新增默认当前年月。
- 查看弹窗:全字段只读(含派生合计、审计信息)。
- 导入弹窗:选填报年月(默认当前)→ 上传
.xlsx → 展示 insert/fail/warn。
- 导出弹窗:选所属年月(默认当前)、可选所属乡镇(与列表一致,可清空;不选则全部乡镇)→ 下载
{年}年{月}月牦牛存栏数据.xlsx。
4. 业务规则(前端)
| 规则 |
实现 |
| 年份 / 月份 |
/yearOptions、/monthOptions;展示 {month}月 |
| 村树 |
/villageTree;vue-treeselect:disable-branch-nodes、append-to-body |
| 列表筛选 |
statYear、statMonth、townDeptId、villageDeptId;进入页不默认年月 |
| 提交体 |
传 villageDeptId 与明细;不传乡镇(后端反推) |
| 派生字段 |
仅详情 DERIVED_COUNT_FIELDS 展示 |
| 唯一性 |
同年同月同村重复由后端拦截 |
| 导入 |
FormData 含年月;成功后 $alert 摘要 |
| 删除 |
$modal.confirm 后删除 |
录入字段(INPUT_COUNT_FIELDS):villageCount、herdsmanHouseholdCount、breedingBullCount、bullCastratedCount、cowYoungCount、cowAdultCount、milkingCowCount、fertileCowCount、sheepTotal、milkingSheepCount、insuredYakCount。
派生字段(DERIVED_COUNT_FIELDS):bullTotal、cowTotal、dairyTotal、yakTotal、grandTotal、yakSheepTotal。
5. 国际化
| 项 |
说明 |
| 语言包 |
dataModel.yakHerdInventory、dataModel.common |
| 文件 |
lang/zh/dataModel.js、lang/bo/dataModel.js |
| Mixin |
dataModelLocaleMixin,dmNs = 'yakHerdInventory' |
6. 联调说明
- 部署后端并执行
sql/biz_yak_herd_inventory.sql(或村唯一键迁移脚本)。
- 菜单组件
dataModel/yakHerdInventory/index。
- 验证:村树选村、CRUD、导入全量覆盖、导出合计行、详情含派生字段、双语。
7. 文件清单
| 类型 |
路径 |
| 页面 |
ruoyi-ui/src/views/dataModel/yakHerdInventory/index.vue |
| API |
ruoyi-ui/src/api/dataModel/yakHerdInventory.js |
| Mixin |
ruoyi-ui/src/mixins/dataModelLocaleMixin.js |
| i18n |
ruoyi-ui/src/lang/zh/dataModel.js、lang/bo/dataModel.js |
8. 修订记录
| 版本 |
说明 |
| 1.0 |
初版:列表/CRUD/详情/导入;汉藏 i18n |
| 1.1 |
按年月填报:列表月份筛选;导入/导出 |
| 1.2 |
按村填报:Treeselect 村树;列表乡镇+村;表单仅明细;详情含派生合计;字段对齐新模板 |