gongchunyi
2026-05-15 51081f3acbeef7e5358e20a653c38b0ed3afbe23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<template>
  <FormDialog
    v-model="visible"
    title="验收审批"
    width="520px"
    :loading="loading"
    @confirm="sendForm"
    @cancel="handleCancel"
    @close="handleClose"
  >
    <el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
      <el-form-item label="验收人" prop="acceptanceName">
        <el-input v-model="form.acceptanceName" disabled placeholder="报修时指定的验收人" />
      </el-form-item>
      <el-form-item label="验收时间" prop="acceptanceTime">
        <el-date-picker
          v-model="form.acceptanceTime"
          type="datetime"
          placeholder="请选择验收时间"
          format="YYYY-MM-DD HH:mm:ss"
          value-format="YYYY-MM-DD HH:mm:ss"
          style="width: 100%"
        />
      </el-form-item>
      <el-form-item label="验收备注" prop="acceptanceRemark">
        <el-input
          v-model="form.acceptanceRemark"
          type="textarea"
          :rows="3"
          placeholder="请输入验收备注"
        />
      </el-form-item>
    </el-form>
  </FormDialog>
</template>
 
<script setup>
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { acceptRepair } from "@/api/equipmentManagement/repair";
import useFormData from "@/hooks/useFormData";
import useUserStore from "@/store/modules/user";
import dayjs from "dayjs";
import { ElMessage } from "element-plus";
 
defineOptions({
  name: "设备报修验收弹窗",
});
 
const emits = defineEmits(["ok"]);
 
const repairId = ref();
const visible = ref(false);
const loading = ref(false);
const formRef = ref();
const userStore = useUserStore();
 
const rules = {
  acceptanceName: [{ required: true, message: "验收人不能为空", trigger: "blur" }],
  acceptanceTime: [{ required: true, message: "请选择验收时间", trigger: "change" }],
  acceptanceRemark: [{ required: true, message: "请输入验收备注", trigger: "blur" }],
};
 
const { form, resetForm } = useFormData({
  acceptanceName: undefined,
  acceptanceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
  acceptanceRemark: undefined,
});
 
const setForm = (row) => {
  form.acceptanceName = row.acceptanceName;
  form.acceptanceTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
  form.acceptanceRemark = undefined;
};
 
const sendForm = async () => {
  const valid = await formRef.value?.validate().catch(() => false);
  if (!valid) return;
  if (form.acceptanceName !== userStore.nickName) {
    ElMessage.warning("仅指定的验收人可进行验收");
    return;
  }
  loading.value = true;
  try {
    const { code, msg } = await acceptRepair({
      id: repairId.value,
      acceptanceTime: form.acceptanceTime,
      acceptanceRemark: form.acceptanceRemark,
    });
    if (code === 200) {
      ElMessage.success("验收成功");
      visible.value = false;
      emits("ok");
    } else if (msg) {
      ElMessage.error(msg);
    }
  } finally {
    loading.value = false;
  }
};
 
const handleCancel = () => {
  resetForm();
  visible.value = false;
};
 
const handleClose = () => {
  resetForm();
  visible.value = false;
};
 
const open = async (id, row) => {
  if (!row?.acceptanceName || row.acceptanceName !== userStore.nickName) {
    ElMessage.warning("仅指定的验收人可进行验收");
    return;
  }
  repairId.value = id;
  visible.value = true;
  await nextTick();
  setForm(row);
};
 
defineExpose({
  open,
});
</script>