# 风险因子权重 — 前端技术方案 > 依据:`doc/疾病检测与上报/风险因子设置/风险因子设置功能需求.md`、`风险因子设置技术方案.md`;页面为**单例配置**(非列表 CRUD);请求/响应字段 **小驼峰**。 --- ## 1. 页面与路由 | 项 | 说明 | | --- | --- | | **Vue 路径** | `ruoyi-ui/src/views/diseaseDetection/riskFactorWeight/index.vue` | | **组件名** | `RiskFactorWeight` | | **菜单配置** | 组件路径:`diseaseDetection/riskFactorWeight/index` | | **权限标识** | `diseaseDetection:riskFactorWeight:query`(进入/查询)、`diseaseDetection:riskFactorWeight:edit`(保存) | 菜单 SQL:`sql/sys_menu_industry_and_disease.sql`(menu_id `2113`~`21132`)或 `sql/biz_risk_factor_weight.sql`。 --- ## 2. API 模块 | 项 | 说明 | | --- | --- | | **文件** | `ruoyi-ui/src/api/diseaseDetection/riskFactorWeight.js` | | **Base** | `/diseaseDetection/riskFactorWeight` | | 方法 | HTTP | 路径 | 说明 | | --- | --- | --- | --- | | `getRiskFactorWeight` | GET | `/` | 获取当前五项权重及 `updateBy`、`updateTime` | | `updateRiskFactorWeight` | PUT | `/` | 保存;Body 含五项权重字段 | **Body 字段**:`breedingDensityWeight`、`trafficMobilityWeight`、`quarantineIntensityWeight`、`meteorologicalSuitabilityWeight`、`pastDiseaseLevelWeight`。 --- ## 3. 页面结构 单张 `el-card`(无筛选区、无表格): 1. 五项固定因子,每项 `el-input-number`(`min=0`,`precision=4`,`step=0.01`),右侧提示「正数」。 2. **当前合计**实时汇总,提示「权重之和 = 1」;合计与 1 偏差超过 `0.0001` 时标红并禁用保存。 3. 展示最后修改人、修改时间(有数据时)。 4. **保存**按钮:`v-hasPermi` 绑定 `edit`;提交前表单校验每项为正数。 **不提供**:分页列表、新增、删除、导出。 --- ## 4. 校验规则 | 规则 | 前端 | 后端(联调) | | --- | --- | --- | | 每项必填且 > 0 | `el-form` 规则 + `validatePositiveWeight` | 同左 | | 五项之和 = 1 | 容差 `0.0001`,不合规禁用保存并 `msgError` | 同左 | 无记录时 GET 返回 `data: null`,前端默认每项 `0.2`。 --- ## 5. 国际化 | 项 | 说明 | | --- | --- | | **语言包** | `diseaseDetection.riskFactorWeight`(`lang/zh`、`lang/bo` 的 `diseaseDetection.js`) | | **Mixin** | `diseaseDetectionLocaleMixin`,`data.ddNs = 'riskFactorWeight'` | --- ## 6. 联调说明 1. 执行 `sql/biz_risk_factor_weight.sql` 建表及初始数据。 2. 后端实现 `BizRiskFactorWeightController`(GET/PUT,见风险因子设置技术方案 §3)。 3. 配置菜单 `2113` 并为角色勾选 `query`、`edit`。 4. 验证:修改五项使合计≠1 时无法保存;保存后刷新合计为 1;`updateTime` 更新。 --- ## 7. 文件清单 | 类型 | 路径 | | --- | --- | | 页面 | `ruoyi-ui/src/views/diseaseDetection/riskFactorWeight/index.vue` | | API | `ruoyi-ui/src/api/diseaseDetection/riskFactorWeight.js` | | i18n | `ruoyi-ui/src/lang/zh/diseaseDetection.js`、`lang/bo/diseaseDetection.js` | | 菜单 | `sql/sys_menu_industry_and_disease.sql`、`sql/biz_risk_factor_weight.sql` |