# 设备保养批量新增计划 ## 功能说明 在设备保养-任务记录页"新增计划"中,支持一次多选多台设备、共用一套保养项目/计划保养日期/录入人,一键为所有选中设备各生成一条保养计划,减少重复录入。 ## 涉及页面 - 设备保养(任务记录 tab) - 新增/编辑设备保养计划弹窗(`PlanModal.vue`) ## API | 方法 | 路径 | 说明 | |------|------|------| | POST | /device/maintenance/batchAdd | 批量新增设备保养计划 | **请求参数(body,JSON):** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | deviceIds | Long[] | 是 | 选中的设备台账 id 列表(至少 1 个) | | maintenancePlanTime | datetime | 是 | 计划保养日期(共用) | | createUser | Integer | 是 | 录入人(共用) | | maintenanceItem | String | 否 | 保养项目(共用) | **响应:** `{ "code": 200, "msg": "操作成功" }` ## 前端修改点 ### 1. 新增批量 API(`src/api/equipmentManagement/upkeep.js`) ```js export const batchAddUpkeep = (data) => { return request({ url: "/device/maintenance/batchAdd", method: "post", data, }); }; ``` ### 2. 新增计划弹窗设备下拉改为多选(`Form/PlanModal.vue`) ```html ``` - `form` 中 `deviceLedgerId` 字段替换为数组 `deviceIds: []` - `setDeviceModel` 改为按选中设备集合展示规格型号(逗号连接) - 编辑模式回显:`form.deviceIds = [data.deviceLedgerId]` ### 3. 提交逻辑三分支 ```js const common = { maintenancePlanTime: form.maintenancePlanTime, createUser: form.createUser, maintenanceItem: form.maintenanceItem, }; if (id.value) { // 编辑计划(单设备) await editUpkeep({ id, deviceLedgerId: form.deviceIds[0], ...common, status }); } else if (form.deviceIds.length > 1) { // 批量新增 await batchAddUpkeep({ deviceIds: form.deviceIds, ...common }); } else { // 单设备新增 await addUpkeep({ deviceLedgerId: form.deviceIds[0], ...common }); } ``` ## 后端修改点 - `DeviceMaintenance` 新增 `deviceIds`(非表字段,`@TableField(exist = false)`) - `DeviceMaintenanceController` 新增 `POST /device/maintenance/batchAdd` - `DeviceMaintenanceServiceImpl.batchSaveDeviceRepair`:遍历设备 id,按设备台账填充名称/规格型号,批量 `saveBatch` ## 注意事项 - 批量生成的记录状态默认 `待保养(0)` - 多台设备规格型号不同时,弹窗内规格型号以逗号连接展示(仅展示,提交后按各设备台账重新填充) - 单设备新增、行内"编辑"计划逻辑保持不变