# 畜牧医疗资源管理 — 前端技术方案 > 依据:`畜牧医疗资源管理功能需求.md`、`畜牧医疗资源管理技术方案.md`;布局对齐 `commonProsperity/project/index.vue`(双 `el-card`、发布/下架);Tab 组织对齐 `policy/projectSubsidy/index.vue`;字段 **小驼峰**。 --- ## 1. 页面与路由 | 项 | 说明 | | --- | --- | | **Vue 路径** | `ruoyi-ui/src/views/diseaseTreatment/medicalResource/index.vue` | | **组件名** | `DiseaseTreatmentMedicalResource` | | **菜单配置** | 组件路径:`diseaseTreatment/medicalResource/index`(「牧业疫病诊疗服务」目录下,手工配置) | | **权限前缀** | `diseaseTreatment:medicalResource:list\|query\|add\|edit\|remove\|publish\|offline\|assignAccount` | --- ## 2. API 模块 | 项 | 说明 | | --- | --- | | **文件** | `ruoyi-ui/src/api/diseaseTreatment/medicalResource.js` | | **Base** | `/diseaseTreatment/medicalResource` | | 方法 | HTTP | 说明 | | --- | --- | --- | | `listMedicalResource` | GET | `/list`,Query:`pageNum`、`pageSize`(默认 20)、`resourceType`(必填)、`resourceName`、`publishStatus`(0/1/2) | | `getMedicalResource` | GET | `/{id}` | | `addMedicalResource` | POST | `/` | | `updateMedicalResource` | PUT | `/` | | `delMedicalResource` | DELETE | `/{ids}` | | `publishMedicalResource` | POST | `/publish/{id}` | | `offlineMedicalResource` | POST | `/offline/{id}` | | `assignAccountMedicalResource` | POST | `/assignAccount/{id}` | --- ## 3. 页面结构 1. **Tab 区**:`el-tabs type="border-card"` 四个 Tab(兽医 / 团队 / 机构 / 设备),切换即改 `resourceType` 并刷新列表。 2. **筛选区**:资源类型下拉(与 Tab 联动)、资源名称模糊、发布状态三态;搜索、重置、新增。 3. **列表区**:按当前 Tab 展示差异化列;发布状态用 `displayPublishStatus`;操作列按钮显隐用后端 `canEdit` / `canPublish` / `canOffline` / `canDelete` / `canAssignAccount`。 4. **新增/编辑弹窗**:先选资源类型(编辑时禁用);按类型 `v-if` 动态字段;单图上传 `/common/upload` → `photoFileUrl`、`photoFilePath`。 5. **查看弹窗**:只读全字段;未发布/已下架且 `canEdit` 时可从查看进入编辑。 --- ## 4. 业务规则(前端) | 规则 | 实现 | | --- | --- | | Tab ↔ 类型 | `vet→004001`、`team→004002`、`org→004003`、`equipment→004004`;下拉选项来自 `listInformationCategoryChildren(parentCode=004, categoryType=6)` | | 列表筛选 `publishStatus` | `0` 未发布 / `1` 已发布 / `2` 已下架(与后端 Query 一致) | | 多选提交 | `consultModesList`、`serviceWeekdaysList` 数组提交,后端编码入库 | | 服务时段 | 两个 `el-time-select`,校验结束 ≥ 开始 | | 手机号 | `PHONE_REG = /^1[3-9]\d{9}$/` | | 照片 | jpg/jpeg/png,≤10MB,必填 | | 分配账号 | 仅兽医/机构 Tab 列表展示「账号分配」列;按钮 `canAssignAccount` | | 资源类型 | 新增默认当前 Tab 类型;编辑不可改 | **资源类型接口** | 方法 | 说明 | | --- | --- | | `listInformationCategoryChildren` | GET `/category/informationCategory/children?parentCode=004&categoryType=6`;`data[]` 项 `code`、`name` | **其它枚举(页面内)** | 常量 | 值 | | --- | --- | | 定点/上门/在线接诊 | `consultMode = 1/2/3` | | 诊所/医院 | `orgLevel = 1/2` | | 周一至周日 | `weekday = 1~7` | 存量 `tinyint` 资源类型(1~4)在 `normalizeResourceType` 中映射为 `004001`~`004004`。 --- ## 5. 国际化 | 项 | 说明 | | --- | --- | | **语言包** | `diseaseTreatment.medicalResource`(`lang/zh/diseaseTreatment.js`、`lang/bo/diseaseTreatment.js`) | | **Mixin** | `diseaseTreatmentLocaleMixin`,`dtNs = 'medicalResource'`,方法 `dtT` / `dtCommon` | | **注册** | `lang/zh-CN.js`、`lang/bo.js` 引入 `diseaseTreatment` | --- ## 6. 联调说明 1. 部署 `BizMedicalResourceController` 及 `biz_medical_resource` 表。 2. 菜单组件 `diseaseTreatment/medicalResource/index`,权限与后端 §6 一致。 3. 验证:四 Tab 列表、三态筛选、四类动态表单新增/编辑、发布/下架、兽医/机构分配账号、已发布不可编辑、双语切换。 --- ## 7. 文件清单 | 类型 | 路径 | | --- | --- | | 页面 | `ruoyi-ui/src/views/diseaseTreatment/medicalResource/index.vue` | | API | `ruoyi-ui/src/api/diseaseTreatment/medicalResource.js` | | Mixin | `ruoyi-ui/src/mixins/diseaseTreatmentLocaleMixin.js` | | i18n | `ruoyi-ui/src/lang/zh/diseaseTreatment.js`、`lang/bo/diseaseTreatment.js` | --- ## 8. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版:四 Tab 分库列表、动态表单、发布/下架/分配账号、汉藏 i18n |