buhuazhen
4 天以前 6397a0981840576c37eced6e34c924d913ee5373
feat 设备报修添加范围、巡检添加三个状态
已修改3个文件
111 ■■■■ 文件已修改
src/views/equipmentManagement/inspectionManagement/components/uploadFiles.vue 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/repair/Modal/RepairModal.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/repair/index.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/inspectionManagement/components/uploadFiles.vue
@@ -14,7 +14,7 @@
      <div class="exception-section">
        <div class="section-title">是否存在异常?</div>
        <el-radio-group v-model="hasException">
        <el-radio-group v-model="currentHasException">
          <el-radio :value="false">正常</el-radio>
          <el-radio :value="true">存在异常</el-radio>
        </el-radio-group>
@@ -135,11 +135,27 @@
const afterModelValue = ref([]);
const issueModelValue = ref([]);
const currentUploadType = ref("before");
const hasException = ref(null);
const hasExceptionBefore = ref(null);
const hasExceptionAfter = ref(null);
const hasExceptionIssue = ref(null);
const currentTask = ref(null);
const showVideoDialog = ref(false);
const currentVideoFile = ref(null);
// 根据当前 Tab 获取/设置对应的异常状态
const currentHasException = computed({
  get: () => {
    if (currentUploadType.value === "before") return hasExceptionBefore.value;
    if (currentUploadType.value === "after") return hasExceptionAfter.value;
    return hasExceptionIssue.value;
  },
  set: (val) => {
    if (currentUploadType.value === "before") hasExceptionBefore.value = val;
    else if (currentUploadType.value === "after") hasExceptionAfter.value = val;
    else hasExceptionIssue.value = val;
  }
});
const uploadConfig = {
  action: "/file/upload",
@@ -216,7 +232,9 @@
  afterModelValue.value = [];
  issueModelValue.value = [];
  currentUploadType.value = "before";
  hasException.value = null;
  hasExceptionBefore.value = null;
  hasExceptionAfter.value = null;
  hasExceptionIssue.value = null;
  currentTask.value = null;
  uploadProgress.value = 0;
  uploading.value = false;
@@ -243,8 +261,12 @@
    : [];
  currentUploadType.value = "before";
  hasException.value =
    typeof rawTask.hasException === "boolean" ? rawTask.hasException : null;
  hasExceptionBefore.value =
    typeof rawTask.hasExceptionBefore === "boolean" ? rawTask.hasExceptionBefore : null;
  hasExceptionAfter.value =
    typeof rawTask.hasExceptionAfter === "boolean" ? rawTask.hasExceptionAfter : null;
  hasExceptionIssue.value =
    typeof rawTask.hasExceptionIssue === "boolean" ? rawTask.hasExceptionIssue : null;
  uploadFileList.value = [];
  showUploadDialog.value = true;
};
@@ -427,7 +449,9 @@
  return {
    ...rest,
    hasException: hasException.value,
    hasExceptionBefore: hasExceptionBefore.value,
    hasExceptionAfter: hasExceptionAfter.value,
    hasExceptionIssue: hasExceptionIssue.value,
    tempFileIds,
    commonFileListBefore: buildGroupedFiles(beforeModelValue.value),
    commonFileListAfter: buildGroupedFiles(afterModelValue.value),
@@ -436,14 +460,17 @@
};
const submitUpload = async () => {
  if (hasException.value === null) {
    ElMessage.warning("请选择是否存在异常");
  // 只验证当前 Tab 的异常状态
  const currentException = currentHasException.value;
  if (currentException === null) {
    ElMessage.warning(`请选择${getUploadTypeText()}是否存在异常`);
    return;
  }
  const files = buildSubmitFiles();
  if (!files.length) {
    ElMessage.warning("请先上传文件");
  const currentFiles = getCurrentFiles();
  // 只有选择"存在异常"时才需要上传文件
  if (currentException === true && !currentFiles.length) {
    ElMessage.warning(`${getUploadTypeText()}存在异常时请上传图片或视频`);
    return;
  }
src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -38,14 +38,16 @@
            />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="报修日期">
        <el-col :span="24">
          <el-form-item label="报修时间">
            <el-date-picker
              v-model="form.repairTime"
              placeholder="请选择报修日期"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              type="date"
              v-model="form.repairTimeRange"
              type="datetimerange"
              range-separator="至"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
              format="YYYY-MM-DD HH:mm:ss"
              value-format="YYYY-MM-DD HH:mm:ss"
              clearable
              style="width: 100%"
            />
@@ -120,7 +122,7 @@
  deviceName: undefined, // 设备名称
  deviceModel: undefined, // 规格型号
  repairProject: undefined, // 报修项目
  repairTime: dayjs().format("YYYY-MM-DD"), // 报修日期,默认当天
  repairTimeRange: [dayjs().format("YYYY-MM-DD HH:mm:ss"), dayjs().format("YYYY-MM-DD HH:mm:ss")], // 报修时间范围,默认当天
  repairName: userStore.nickName, // 报修人
  remark: undefined, // 故障现象
  status: 0, // 报修状态
@@ -136,7 +138,14 @@
  form.deviceName = data.deviceName;
  form.deviceModel = data.deviceModel;
  form.repairProject = data.repairProject;
  form.repairTime = data.repairTime;
  // 设置时间范围,如果后端返回的是单个时间则范围选择
  if (data.repairTimeStart && data.repairTimeEnd) {
    form.repairTimeRange = [data.repairTimeStart, data.repairTimeEnd];
  } else if (data.repairTime) {
    form.repairTimeRange = [data.repairTime, data.repairTime];
  } else {
    form.repairTimeRange = null;
  }
  form.repairName = data.repairName;
  form.remark = data.remark;
  form.status = data.status;
@@ -145,9 +154,17 @@
const sendForm = async () => {
  loading.value = true;
  try {
    // 将时间范围拆分为开始时间和结束时间
    const submitData = {
      ...form,
      repairTimeStart: form.repairTimeRange?.[0] || null,
      repairTimeEnd: form.repairTimeRange?.[1] || null,
    };
    delete submitData.repairTimeRange;
    const { code } = id.value
      ? await editRepair({ id: unref(id), ...form })
      : await addRepair(form);
      ? await editRepair({ id: unref(id), ...submitData })
      : await addRepair(submitData);
    if (code == 200) {
      ElMessage.success(`${id.value ? "编辑" : "新增"}报修成功`);
      visible.value = false;
src/views/equipmentManagement/repair/index.vue
@@ -102,6 +102,22 @@
          <el-tag v-if="row.status === 1" type="success">完结</el-tag>
          <el-tag v-if="row.status === 0" type="warning">待维修</el-tag>
        </template>
        <template #repairTimeSlot="{ row }">
          <span v-if="row.repairTimeStart || row.repairTimeEnd">
            <template v-if="row.repairTimeStart && row.repairTimeEnd">
              <span v-if="row.repairTimeStart === row.repairTimeEnd">
                {{ dayjs(row.repairTimeStart).format("YYYY-MM-DD HH:mm:ss") }}
              </span>
              <span v-else>
                {{ dayjs(row.repairTimeStart).format("YYYY-MM-DD HH:mm:ss") }} 至 {{ dayjs(row.repairTimeEnd).format("YYYY-MM-DD HH:mm:ss") }}
              </span>
            </template>
            <template v-else>
              {{ row.repairTimeStart ? dayjs(row.repairTimeStart).format("YYYY-MM-DD HH:mm:ss") : dayjs(row.repairTimeEnd).format("YYYY-MM-DD HH:mm:ss") }}
            </template>
          </span>
          <span v-else>-</span>
        </template>
        <template #operation="{ row }">
          <el-button
            type="primary"
@@ -193,10 +209,11 @@
        prop: "repairProject",
      },
      {
        label: "报修日期",
        label: "报修时间",
        align: "center",
        prop: "repairTime",
        formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
        prop: "repairTimeStart",
        dataType: "slot",
        slot: "repairTimeSlot",
      },
      {
        label: "报修人",