# 合作社发展数据填报 — 前端技术方案 > 依据:同目录 `合作社发展数据填报功能需求.md`、`合作社发展数据填报技术方案.md`;交互对齐存栏/出栏填报(双 `el-card` + 分页表格);字段 **小驼峰**。 --- ## 1. 页面与路由 | 项 | 说明 | | --- | --- | | **Vue 路径** | `ruoyi-ui/src/views/dataModel/cooperativeDevelopment/index.vue` | | **组件名** | `CooperativeDevelopment` | | **菜单配置** | 组件路径:`dataModel/cooperativeDevelopment/index` | | **权限前缀** | `dataModel:cooperativeDevelopment:list\|query\|add\|edit\|remove\|import\|export` | --- ## 2. API 模块 | 项 | 说明 | | --- | --- | | **文件** | `ruoyi-ui/src/api/dataModel/cooperativeDevelopment.js` | | **Base** | `/dataModel/cooperativeDevelopment` | | 方法 | HTTP | 说明 | | --- | --- | --- | | `listCooperativeDevelopment` | GET | `/list` 分页列表 | | `getCooperativeDevelopment` | GET | `/{id}` 详情 | | `addCooperativeDevelopment` | POST | `/` 新增 | | `updateCooperativeDevelopment` | PUT | `/` 修改 | | `delCooperativeDevelopment` | DELETE | `/{ids}` 删除 | | `listCooperativeDevelopmentYearOptions` | GET | `/yearOptions` | | `listCooperativeDevelopmentMonthOptions` | GET | `/monthOptions` | | `listCooperativeDevelopmentTownOptions` | GET | `/townOptions` | | `listCooperativeDevelopmentVillageTree` | GET | `/villageTree` 县→乡镇→村 | | `importCooperativeDevelopment` | POST | `/importData`(`file` + `statYear` + `statMonth`) | | `exportCooperativeDevelopment` | GET | `/export`(`statYear` + `statMonth`,可选 `townDeptId`,`blob`) | | `downloadCooperativeDevelopmentTemplate` | GET | `/importTemplate`(`blob`) | 模板下载与导出均用 **GET + `blob`**,勿用若依全局 `this.download()`(固定 POST)。 --- ## 3. 页面结构 1. **筛选区**:所属年份、所属月份、所属乡镇、所属村(可搜索)、合作社名称;搜索、重置、新增、导入、导出。 2. **列表区**(列顺序):所属年份、所属月份、所属村、所属乡镇、合作社名称、法定代表人、成立时间、注册资本、截止年底总资产、总收入、亏损、牛存栏、牛出栏、操作;空值展示 `—`。 3. **操作列**:查看、修改、删除。 4. **新增/编辑弹窗**:年份、月份、所属村、合作社名称(必填);分区录入见 §4;**牲畜入股小计**只读(牛入股+羊入股);新增默认当前年月。 5. **查看弹窗**:全部明细只读(含乡镇反推结果、牲畜入股小计、经营范围/模式/运营情况)。 6. **导入弹窗**:选填报年月(默认当前)→ 上传 `.xlsx` → `$alert` 展示 insert/update/fail/warn。 7. **导出弹窗**:选所属年月(默认当前)、可选所属乡镇(可清空;不选则全部)→ 下载 `{年}年{月}月合作社发展数据.xlsx`。 --- ## 4. 业务规则(前端) | 规则 | 实现 | | --- | --- | | 年份 / 月份 | `/yearOptions`、`/monthOptions`;展示 `{month}月`;不可选未来月 | | 村选项 | `/villageTree` 拍平为「乡镇 / 村」下拉;`el-select` + `filterable` 支持搜索 | | 列表筛选 | `statYear`、`statMonth`、`townDeptId`、`villageDeptId`、`cooperativeName`;进入页不默认年月 | | 提交体 | 传 `villageDeptId`、合作社名称及明细;**不传**乡镇(后端反推) | | 唯一性 | 同年同月同村同合作社名称重复由后端拦截 | | 牲畜入股小计 | 前端只读展示 `cattleShareCount + sheepShareCount`;保存时以后端重算为准 | | 经营范围 | `el-checkbox-group` → 提交逗号分隔字符串(与后端枚举一致) | | 经营模式 / 运营情况 | `el-radio-group` 单选,取值与后端标签一致 | | 导入 | `FormData` 含年月;按唯一键 upsert,摘要含新增/更新条数 | | 导出 | 可选 `townDeptId`;导出文件不含合计行(后端保证) | | 删除 | `$modal.confirm` 后物理删除 | ### 4.1 表单分区与字段 | 分区 | 字段(小驼峰) | | --- | --- | | 基本信息 | `statYear`、`statMonth`、`villageDeptId`、`cooperativeName`、`legalRepresentative`、`establishDate`(`el-date-picker`,`yyyy-MM-dd`)、`registeredCapital`、`yearEndTotalAssets` | | 入社与入股 | `memberHouseholdCount`、`memberPopulationCount`、`povertyMonitorCount`、`cattleShareCount`、`sheepShareCount`、**`livestockShareTotal`(只读)**、`grasslandShareArea`、`laborShareCount`、`cashShareAmount`、`otherShareAmount` | | 效益情况 | `totalIncome`、`netIncome`、`cashDividend`、`inKindDividend`、`revolvingFund`、`lossAmount` | | 就业与存出栏 | `collegeGraduateCount`、`collegeGraduateWage`、`farmerTransferEmploymentCount`、`farmerTransferWage`、`cattleInventoryCount`、`cattleOutboundCount`、`sheepInventoryCount`、`sheepOutboundCount` | | 产品认证与培训 | `trademarkProductCount`、`qualityCertProductCount`、`trainingManageCount`、`trainingSkillCount`、`trainingOtherCount` | | 经营情况 | `businessScope`(多选)、`businessModel`(单选)、`operationStatus`(单选)、`remark` | ### 4.2 枚举取值(与 Excel / 后端一致) | 类型 | 取值 | | --- | --- | | 主要经营范围 | 养殖业、种养结合、农产品加工、农机服务、劳务输出、建筑工程、旅游服务、运输、特色产品制作及销售、其他 | | 经营模式分类 | 整村合作社、股份合作社、联合合作社、多种经营合作社、公司型合作社、其它 | | 运营情况 | 规范、一般、差 | --- ## 5. 国际化 | 项 | 说明 | | --- | --- | | **语言包** | `dataModel.cooperativeDevelopment`、`dataModel.common` | | **文件** | `lang/zh/dataModel.js`、`lang/bo/dataModel.js` | | **Mixin** | `dataModelLocaleMixin`,`dmNs = 'cooperativeDevelopment'` | 文案键覆盖筛选/列表/表单分区/导入导出/校验提示;单位含户、人、头、个、万元、万亩。 --- ## 6. 联调说明 1. 部署后端并执行 `sql/biz_cooperative_development.sql`。 2. 菜单组件配置为 `dataModel/cooperativeDevelopment/index`,权限见 §1。 3. 验证:村下拉可搜索;新增只选村且乡镇回填;同年同月同村同名拦截;导入 upsert 摘要;导出可选乡镇且无合计行;详情含全部明细;汉藏切换。 --- ## 7. 文件清单 | 类型 | 路径 | | --- | --- | | 页面 | `ruoyi-ui/src/views/dataModel/cooperativeDevelopment/index.vue` | | API | `ruoyi-ui/src/api/dataModel/cooperativeDevelopment.js` | | Mixin | `ruoyi-ui/src/mixins/dataModelLocaleMixin.js` | | i18n | `ruoyi-ui/src/lang/zh/dataModel.js`、`lang/bo/dataModel.js` | --- ## 8. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版:村×合作社×年月;列表/CRUD/详情/导入 upsert/导出可选乡镇;经营范围多选与模式/运营单选;汉藏 i18n | | 1.1 | 与实现对齐:村选项为拍平可搜索 `el-select`(非 Treeselect);牲畜入股小计表单只读展示 |