gongchunyi
7 天以前 a7a9f53ef126659f664f5cbfe4eb10bebdfc4a6a
src/views/equipmentManagement/inspectionManagement/components/formDia.vue
@@ -23,11 +23,29 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="巡检验收人" prop="inspectionAcceptor">
              <el-select v-model="form.inspectionAcceptor" placeholder="请选择" clearable>
                <el-option v-for="item in userList" :label="item.nickName" :value="item.userId" :key="item.userId"/>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="备注" prop="remarks">
              <el-input v-model="form.remarks" placeholder="请输入备注" type="textarea" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="任务状态" prop="isActive">
              <el-switch
                v-model="form.isActive"
                :active-value="1"
                :inactive-value="0"
                active-text="启用"
                inactive-text="停用"
              />
            </el-form-item>
          </el-col>
        </el-row>
@@ -100,7 +118,7 @@
</template>
<script setup>
import {reactive, ref} from "vue";
import {reactive, ref, getCurrentInstance, toRefs} from "vue";
import useUserStore from '@/store/modules/user'
import {addOrEditTimingTask} from "@/api/inspectionManagement/index.js";
import {userListNoPageByTenantId} from "@/api/system/user.js";
@@ -118,16 +136,76 @@
    taskName: undefined,
    inspector: '',
    inspectorIds: '',
    inspectionAcceptor: undefined,
    inspectionAcceptorId: undefined,
    remarks: '',
    frequencyType: '',
    frequencyDetail: '',
    week: '',
    time: ''
    time: '',
    isActive: 1  // 默认启用
  },
  rules: {
    taskId: [{ required: true, message: "请选择设备", trigger: "change" },],
    inspector: [{ required: true, message: "请输入巡检人", trigger: "blur" },],
  }
   rules: {
      taskId: [{ required: true, message: "请选择设备", trigger: "change" },],
      inspector: [{ required: true, message: "请输入巡检人", trigger: "blur" },],
      inspectionAcceptor: [{ required: true, message: "请选择巡检验收人", trigger: "change" },],
      dateStr: [{ required: true, message: "请选择登记时间", trigger: "change" }],
      frequencyType: [{ required: true, message: "请选择任务频率", trigger: "change" }],
      frequencyDetail: [
         {
            required: true,
            message: "请选择日期",
            trigger: "change",
            validator: (rule, value, callback) => {
               if (!form.value.frequencyType) {
                  callback()
                  return
               }
               if (form.value.frequencyType === 'WEEKLY') {
                  if (!form.value.week || !form.value.time) {
                     callback(new Error("请选择日期和时间"))
                  } else {
                     callback()
                  }
               } else {
                  if (!value) {
                     callback(new Error("请选择日期"))
                  } else {
                     callback()
                  }
               }
            }
         }
      ],
      week: [
         {
            required: true,
            message: "请选择星期",
            trigger: "change",
            validator: (rule, value, callback) => {
               if (form.value.frequencyType === 'WEEKLY' && !value) {
                  callback(new Error("请选择星期"))
               } else {
                  callback()
               }
            }
         }
      ],
      time: [
         {
            required: true,
            message: "请选择时间",
            trigger: "change",
            validator: (rule, value, callback) => {
               if (form.value.frequencyType === 'WEEKLY' && !value) {
                  callback(new Error("请选择时间"))
               } else {
                  callback()
               }
            }
         }
      ]
   }
})
const { form, rules } = toRefs(data)
const userList = ref([])
@@ -161,9 +239,39 @@
  await loadDeviceName();
  
  if (type === 'edit' && row) {
    form.value = {...row}
    form.value.inspector = form.value.inspectorIds.split(',').map(Number)
    form.value = {
      ...data.form,  // 先复制默认表单
      ...row,        // 再覆盖 row 中的值
    }
    // 确保 inspectorIds 存在才进行 split
    if (form.value.inspectorIds) {
      form.value.inspector = form.value.inspectorIds.split(',').map(Number)
    } else {
      form.value.inspector = []
    }
    // 确保验收入ID和姓名正确回显
    if (form.value.inspectionAcceptorId) {
      form.value.inspectionAcceptor = form.value.inspectionAcceptorId
    }
    // 确保 isActive 有值,默认启用
    if (form.value.isActive === undefined || form.value.isActive === null) {
      form.value.isActive = 1
    }
    if (row.frequencyDetail) {
      if (row.frequencyType === 'WEEKLY') {
        const parts = row.frequencyDetail.split(',')
        if (parts.length === 2) {
          form.value.week = parts[0]
          form.value.time = parts[1]
        }
      } else if (row.frequencyType === 'DAILY') {
        form.value.frequencyDetail = row.frequencyDetail
      } else {
        form.value.frequencyDetail = row.frequencyDetail
      }
    }
    // 如果有设备ID,自动设置设备信息
    if (form.value.taskId) {
      setDeviceModel(form.value.taskId);
@@ -189,11 +297,14 @@
    taskName: undefined,
    inspector: '',
    inspectorIds: '',
    inspectionAcceptor: undefined,
    inspectionAcceptorId: undefined,
    remarks: '',
    frequencyType: '',
    frequencyDetail: '',
    week: '',
    time: ''
    time: '',
    isActive: 1  // 默认启用
  }
}
@@ -202,18 +313,30 @@
  proxy.$refs["formRef"].validate(async valid => {
    if (valid) {
      try {
        form.value.inspectorIds = form.value.inspector.join(',')
        delete form.value.inspector
        // 确保 inspector 是数组才进行 join
        if (form.value.inspector && Array.isArray(form.value.inspector)) {
          form.value.inspectorIds = form.value.inspector.join(',')
          delete form.value.inspector
        }
        // 处理验收入
        if (form.value.inspectionAcceptor) {
          const selectedUser = userList.value.find(u => u.userId === form.value.inspectionAcceptor)
          if (selectedUser) {
            form.value.inspectionAcceptorId = form.value.inspectionAcceptor
            form.value.inspectionAcceptor = selectedUser.nickName
          }
        }
        if (form.value.frequencyType === 'WEEKLY') {
          let frequencyDetail = ''
          frequencyDetail = form.value.week + ',' + form.value.time
          form.value.frequencyDetail = frequencyDetail
        }
        let res = await userStore.getInfo()
        form.value.registrantId = res.user.userId
        await addOrEditTimingTask(form.value)
        cancel()
        proxy.$modal.msgSuccess('提交成功')