牦牛出栏数据填报 — 前端技术方案
依据:同目录 牦牛出栏数据填报功能需求.md、牦牛出栏数据填报技术方案.md;布局对齐 dataModel/yakHerdInventory/index.vue(双 el-card + 分页表格);字段 小驼峰。
1. 页面与路由
| 项 |
说明 |
| Vue 路径 |
ruoyi-ui/src/views/dataModel/yakOutboundReport/index.vue |
| 组件名 |
YakOutboundReport |
| 菜单配置 |
组件路径:dataModel/yakOutboundReport/index(「产业数据模型及服务」目录下) |
| 权限前缀 |
dataModel:yakOutboundReport:list\|query\|add\|edit\|remove\|import\|export |
2. API 模块
| 项 |
说明 |
| 文件 |
ruoyi-ui/src/api/dataModel/yakOutboundReport.js |
| Base |
/dataModel/yakOutboundReport |
| 方法 |
HTTP |
说明 |
listYakOutboundReport |
GET |
/list 分页列表 |
getYakOutboundReport |
GET |
/{id} 详情 |
addYakOutboundReport |
POST |
/ 新增 |
updateYakOutboundReport |
PUT |
/ 修改 |
delYakOutboundReport |
DELETE |
/{ids} 删除 |
listYakOutboundReportYearOptions |
GET |
/yearOptions 可选年份 |
listYakOutboundReportTownOptions |
GET |
/townOptions 乡镇下拉 |
importYakOutboundReport |
POST |
/importData(multipart/form-data:file + statYear) |
downloadYakOutboundReportTemplate |
GET |
/importTemplate 空白模板(responseType: 'blob') |
exportYakOutboundReport |
GET |
/export?statYear= 按年份导出(responseType: 'blob') |
模板下载、按年导出均使用 GET + responseType: 'blob',勿用若依全局 this.download()(固定 POST)。
3. 页面结构
- 筛选区:所属年份(
yearOptions)、所属乡镇(townOptions);搜索、重置、新增、导入、导出。
- 列表区:所属年份、所属乡镇、农牧户户数、农牧户人数、牦牛出栏数、自食情况(牛);空值展示
—。
- 操作列:查看、修改、删除。
- 新增/编辑弹窗:年份/乡镇必填;出栏及自食指标选填,
el-input-number(:min="0" :precision="0");备注选填。表单分四块:基本信息、农牧户情况、出栏情况、自食情况。
- 查看弹窗:只读展示需求 §5.5 六字段(年份、乡镇、农牧户户数、农牧户人数、牦牛出栏数、自食牛头数);可跳转编辑。
- 导入弹窗:先选「填报年份」→ 上传
.xlsx → 展示 insert/update/fail 及 fail/warn 明细。
- 导出弹窗:选择「所属年份」→
GET /export 下载 {statYear}年牦牛出栏数据.xlsx。
4. 业务规则(前端)
| 规则 |
实现 |
| 年份范围 |
由 /yearOptions 动态加载(当前年起向前 5 年,共 6 年) |
| 乡镇下拉 |
/townOptions 返回 deptId / deptName |
| 列表筛选 |
statYear、townDeptId 精确匹配 |
| 数量字段 |
选填;填写时须为 ≥ 0 的整数 |
| 单位后缀 |
户、人、头、只、匹(见 i18n unit*) |
| 唯一性 |
同年同乡镇重复新增由后端拦截,前端展示 msg |
| 导入 |
FormData 提交;全局 loading;成功后 $alert 展示摘要与明细 |
| 导出 |
弹框选年;年份须在 yearOptions 内 |
| 删除 |
$modal.confirm 后 delYakOutboundReport(id),物理删除 |
5. 字段映射(表单 / 接口 Body)
| 前端 prop |
说明 |
单位 |
statYear |
所属年份 |
— |
townDeptId |
所属乡镇 |
— |
farmerHouseholdCount |
农牧户户数 |
户 |
farmerPopulationCount |
农牧户人数 |
人 |
yakOutboundCount |
牦牛出栏数 |
头 |
cattleOutboundCount |
黄牛/奶牛/犏牛出栏数 |
头 |
sheepOutboundCount |
绵羊出栏数 |
只 |
goatOutboundCount |
山羊出栏数 |
只 |
horseMuleOutboundCount |
马骡出栏数 |
匹 |
donkeyOutboundCount |
驴出栏数 |
头 |
selfConsumptionCattleCount |
自食牛头数 |
头 |
selfConsumptionSheepCount |
自食绵羊只数 |
只 |
selfConsumptionGoatCount |
自食山羊只数 |
只 |
remark |
备注 |
— |
6. 国际化
| 项 |
说明 |
| 语言包 |
dataModel.yakOutboundReport、dataModel.common |
| 文件 |
lang/zh/dataModel.js、lang/bo/dataModel.js |
| Mixin |
dataModelLocaleMixin,dmNs = 'yakOutboundReport',dmT / dmCommon |
| 注册 |
已随 dataModel 模块在 lang/zh-CN.js、lang/bo.js 引入 |
7. 联调说明
- 部署后端
BizYakOutboundReportController 及 biz_yak_outbound_report 表。
- 菜单组件
dataModel/yakOutboundReport/index,权限与后端 §5 一致。
- 执行
sql/biz_yak_outbound_report.sql(及乡镇 sys_dept 数据)。
- 验证:年份/乡镇筛选、CRUD、导入模板下载、导入结果反馈、按年导出、双语切换。
- 导入联调:选填报年份 → 上传
牲畜数据.xlsx 第 6 Sheet 格式文件;对照 failMessages / warnMessages。
8. 文件清单
| 类型 |
路径 |
| 页面 |
ruoyi-ui/src/views/dataModel/yakOutboundReport/index.vue |
| API |
ruoyi-ui/src/api/dataModel/yakOutboundReport.js |
| Mixin |
ruoyi-ui/src/mixins/dataModelLocaleMixin.js |
| i18n |
ruoyi-ui/src/lang/zh/dataModel.js、lang/bo/dataModel.js |
9. 修订记录
| 版本 |
说明 |
| 1.0 |
初版:列表/CRUD/详情/导入/模板下载/按年导出;汉藏 i18n;对齐功能需求 v1.1 |