src/views/equipmentManagement/upkeep/Form/formDia.vue
@@ -11,8 +11,19 @@
      <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
         <el-row>
            <el-col :span="12">
               <el-form-item label="设备名称" prop="taskId">
                  <el-select v-model="form.taskId" @change="setDeviceModel" filterable>
               <el-form-item label="任务名称" prop="taskName">
                  <el-input v-model="form.taskName" placeholder="请输入任务名称" clearable />
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="设备名称" prop="deviceIds">
                  <el-select
                     v-model="form.deviceIds"
                     multiple
                     filterable
                     placeholder="请选择设备"
                     @change="handleDeviceChange"
                  >
                     <el-option
                        v-for="(item, index) in deviceOptions"
                        :key="index"
@@ -22,17 +33,7 @@
                  </el-select>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="规格型号">
                  <el-input
                     v-model="form.deviceModel"
                     placeholder="请输入规格型号"
                     disabled
                  />
               </el-form-item>
            </el-col>
         </el-row>
         <el-row>
            <el-col :span="12">
               <el-form-item label="录入人" prop="inspector">
                  <el-select
@@ -151,7 +152,8 @@
const data = reactive({
   form: {
      taskId: undefined,
      taskName: undefined,
      deviceIds: [],
      taskName: "",
      // 录入人:单选一个用户 id
      inspector: undefined,
      remarks: '',
@@ -163,7 +165,8 @@
      registrationDate: ''
   },
   rules: {
      taskId: [{ required: true, message: "请选择设备", trigger: "change" },],
      deviceIds: [{ required: true, message: "请选择设备", trigger: "change" }],
      taskName: [{ required: true, message: "请输入任务名称", trigger: "blur" }],
      inspector: [{ required: true, message: "请选择录入人", trigger: "blur" },],
      registrationDate: [{ required: true, message: "请选择登记时间", trigger: "change" }]
   }
@@ -176,14 +179,32 @@
   deviceOptions.value = data;
};
// 选择设备时,回填设备名称(taskName)和规格型号(deviceModel)
const setDeviceModel = (id) => {
   const option = deviceOptions.value.find((item) => item.id === id);
   if (option) {
      form.value.taskId = option.id;
      form.value.taskName = option.deviceName;
      form.value.deviceModel = option.deviceModel;
const normalizeIdList = (val) => {
   if (!val) return []
   if (Array.isArray(val)) return val
   if (typeof val === 'string') {
      const s = val.trim()
      // JSON 字符串:"[1,2,3]"
      if (s.startsWith('[') && s.endsWith(']')) {
         try {
            const arr = JSON.parse(s)
            return Array.isArray(arr) ? arr : []
         } catch {
            return []
         }
      }
      // 逗号分隔:"1,2,3"
      return s.split(',').map(v => v.trim()).filter(Boolean)
   }
   return []
}
// 选择设备时,顺带回填规格型号(多选时取第一个设备的规格型号)
const handleDeviceChange = () => {
   const selectedIds = form.value.deviceIds || []
   const firstId = Array.isArray(selectedIds) ? selectedIds[0] : undefined
   const firstDevice = deviceOptions.value.find(d => String(d.id) === String(firstId))
   form.value.deviceModel = firstDevice?.deviceModel || firstDevice?.model || form.value.deviceModel
}
// 打开弹框
@@ -203,16 +224,19 @@
   await loadDeviceName();
   
   if (type === 'edit' && row) {
      form.value = { ...row }
      form.value = { ...form.value, ...row }
      // 编辑时用接口返回的 registrantId 回显录入人
      if (row.registrantId) {
         form.value.inspector = row.registrantId
      }
      // 如果有设备ID,自动设置设备信息
      if (form.value.taskId) {
         setDeviceModel(form.value.taskId);
      }
      // 编辑回显:deviceIds 可能是 JSON 字符串 / 逗号分隔 / 数组
      const ids = normalizeIdList(row.deviceIds ?? row.taskIds)
      form.value.deviceIds = ids.map(v => {
         const n = Number(v)
         return Number.isNaN(n) ? v : n
      })
      handleDeviceChange()
   } else if (type === 'add') {
      // 新增时设置登记日期为当天
      form.value.registrationDate = getCurrentDate();
@@ -236,8 +260,8 @@
   // 重置表单数据确保设备信息正确重置
   form.value = {
      taskId: undefined,
      taskName: undefined,
      inspector: undefined,
      deviceIds: [],
      taskName: "",
      inspector: undefined,
      remarks: '',
      frequencyType: '',
@@ -255,6 +279,8 @@
      if (valid) {
         try {
            const payload = { ...form.value }
            // 后端要求:deviceIds 以 JSON.stringify([1,2,3]) 形式传参
            payload.deviceIds = JSON.stringify(form.value.deviceIds || [])
            // 不再向后端传保养人字段,仅使用接口要求的 registrant / registrantId
            // 根据选择的"录入人"设置 registrant / registrantId
            if (payload.inspector) {
@@ -268,6 +294,7 @@
            }
            delete payload.inspector
            delete payload.inspectorIds
            delete payload.taskIds
            
            if (payload.frequencyType === 'WEEKLY') {
               let frequencyDetail = ''