gaoluyang
2026-02-27 b9e53d7500e3497f8659fc373e6c707071b6dfb7
src/views/equipmentManagement/repair/Modal/MaintainModal.vue
@@ -1,5 +1,12 @@
<template>
  <el-dialog v-model="visible" :title="modalOptions.title" direction="ltr" @close="handleDialogClose">
  <FormDialog
    v-model="visible"
    :title="'设备维修'"
    width="500px"
    @confirm="sendForm"
    @cancel="handleCancel"
    @close="handleClose"
  >
    <el-form :model="form" :rules="rules" label-width="110px" ref="formRef">
      <el-form-item label="维修人" prop="maintenanceName">
        <el-input v-model="form.maintenanceName" placeholder="请输入维修人" />
@@ -7,9 +14,9 @@
      <el-form-item label="维修结果" prop="maintenanceResult">
        <el-input v-model="form.maintenanceResult" placeholder="请输入维修结果" />
      </el-form-item>
      <el-form-item label="本次维修金额" prop="repairPrice">
        <el-input-number v-model="form.repairPrice" :min="0" :precision="2" style="width: 100%" />
      </el-form-item>
         <el-form-item label="本次维修金额" prop="repairPrice">
            <el-input-number v-model="form.repairPrice" :min="0" :precision="2" style="width: 100%" />
         </el-form-item>
      <el-form-item label="维修日期" prop="maintenanceTime">
        <el-date-picker
          v-model="form.maintenanceTime"
@@ -22,22 +29,16 @@
        />
      </el-form-item>
    </el-form>
    <template #footer>
         <el-button type="primary" @click="sendForm" :loading="loading">
            {{ modalOptions.confirmText }}
         </el-button>
      <el-button @click="handleDialogClose">{{ modalOptions.cancelText }}</el-button>
    </template>
  </el-dialog>
  </FormDialog>
</template>
<script setup>
import { ref, nextTick } from "vue";
import { useModal } from "@/hooks/useModal";
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { addMaintain } from "@/api/equipmentManagement/repair";
import useFormData from "@/hooks/useFormData";
import useUserStore from "@/store/modules/user";
import dayjs from "dayjs";
import { addMaintain } from "@/api/equipmentManagement/repair";
import { ElMessage } from "element-plus";
defineOptions({
  name: "维修模态框",
@@ -45,23 +46,19 @@
const emits = defineEmits(["ok"]);
const {
  id,
  visible,
  loading,
  openModal,
  modalOptions,
  handleConfirm,
  closeModal,
} = useModal({ title: "设备维修" });
// 保存报修记录的id
const repairId = ref();
const visible = ref(false);
const loading = ref(false);
const formRef = ref();
const userStore = useUserStore();
const formRef = ref();
const { form, resetForm } = useFormData({
  maintenanceName: undefined, // 维修名称
  maintenanceResult: undefined, // 维修结果
  maintenanceTime: undefined, // 维修日期
  repairPrice: undefined, // 本次维修金额
   repairPrice: undefined, // 维修金额
  status: 0,
});
const rules = {
@@ -74,36 +71,46 @@
const setForm = (data) => {
  form.maintenanceName = data.maintenanceName ?? userStore.nickName;
  form.maintenanceResult = data.maintenanceResult;
  form.repairPrice = data.repairPrice;
  form.maintenanceTime =
    dayjs(data.maintenanceTime).format("YYYY-MM-DD HH:mm:ss") ??
    dayjs().format("YYYY-MM-DD HH:mm:ss");
    data.maintenanceTime
      ? dayjs(data.maintenanceTime).format("YYYY-MM-DD HH:mm:ss")
      : dayjs().format("YYYY-MM-DD HH:mm:ss");
  form.status = 2; // 维修后固定进入待审核(不在界面展示)
};
const sendForm = async () => {
  await formRef.value.validate(async (valid) => {
    if (!valid) return;
    const { code } = await addMaintain({ id: id.value, ...form });
    if (code == 200) {
      emits("ok");
      resetForm();
      closeModal();
    }
  });
   await formRef.value.validate(async (valid) => {
      if (!valid) return;
      loading.value = true;
      try {
         const { code } = await addMaintain({ id: repairId.value, ...form });
         if (code == 200) {
            ElMessage.success("维修成功");
            emits("ok");
            resetForm();
            visible.value = false;
         }
      } finally {
         loading.value = false;
      }
   })
};
const handleCancel = () => {
  resetForm();
  visible.value = false;
};
const handleClose = () => {
  resetForm();
  visible.value = false;
};
const open = async (id, row) => {
  openModal(id);
  repairId.value = id; // 保存报修记录的id
  visible.value = true;
  await nextTick();
  setForm(row);
};
const handleDialogClose = () => {
  resetForm();
  nextTick(() => {
    formRef.value?.clearValidate?.();
  });
  closeModal();
};
defineExpose({