<template>
|
<FormDialog
|
v-model="visible"
|
title="报修审批"
|
width="800px"
|
@confirm="handleSubmit"
|
@cancel="handleClose"
|
@close="handleClose"
|
>
|
<el-descriptions :column="2" border>
|
<el-descriptions-item label="设备名称">
|
{{ detail.deviceName || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="规格型号">
|
{{ detail.deviceModel || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="报修日期">
|
{{ detail.repairTime || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="报修人">
|
{{ detail.repairName || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="审批人">
|
{{ detail.auditName || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="当前状态">
|
{{ statusText(detail.status) }}
|
</el-descriptions-item>
|
<el-descriptions-item label="故障现象" :span="2">
|
{{ detail.remark || "-" }}
|
</el-descriptions-item>
|
</el-descriptions>
|
<div style="margin-top: 16px">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form-item label="审批结果" prop="decision">
|
<el-radio-group v-model="form.decision">
|
<el-radio :value="0">通过</el-radio>
|
<el-radio :value="3">不通过</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-form>
|
</div>
|
</FormDialog>
|
</template>
|
|
<script setup>
|
import { nextTick, ref } from "vue";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
import FormDialog from "@/components/Dialog/FormDialog.vue";
|
import { editRepair, getRepairById } from "@/api/equipmentManagement/repair";
|
|
defineOptions({
|
name: "报修审批弹窗",
|
});
|
|
const emits = defineEmits(["ok"]);
|
|
const visible = ref(false);
|
const loading = ref(false);
|
const id = ref();
|
const detail = ref({});
|
const formRef = ref();
|
const form = ref({
|
decision: undefined, // 0 通过 3 不通过
|
});
|
|
const rules = {
|
decision: [{ required: true, message: "请选择审批结果", trigger: "change" }],
|
};
|
|
const statusText = (status) => {
|
const map = {
|
0: "待维修",
|
1: "完结",
|
2: "待审核",
|
3: "审核不通过",
|
};
|
return map[status] ?? "-";
|
};
|
|
const loadDetail = async (repairId) => {
|
const { data } = await getRepairById(repairId);
|
detail.value = data ?? {};
|
};
|
|
const open = async (repairId) => {
|
id.value = repairId;
|
visible.value = true;
|
await nextTick();
|
await loadDetail(repairId);
|
form.value.decision = undefined;
|
};
|
|
const handleClose = () => {
|
visible.value = false;
|
id.value = undefined;
|
detail.value = {};
|
form.value.decision = undefined;
|
};
|
|
const updateStatus = async (status) => {
|
loading.value = true;
|
try {
|
const { code } = await editRepair({ id: id.value, status });
|
if (code === 200) {
|
ElMessage.success("审批成功");
|
emits("ok");
|
handleClose();
|
}
|
} finally {
|
loading.value = false;
|
}
|
};
|
|
const handleSubmit = async () => {
|
if (detail.value?.status !== 2) {
|
ElMessage.warning("仅待审核状态可审批");
|
return;
|
}
|
await formRef.value?.validate(async (valid) => {
|
if (!valid) return;
|
const isApprove = form.value.decision === 0;
|
ElMessageBox.confirm(`确认审批${isApprove ? "通过" : "不通过"}?`, "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
}).then(() => updateStatus(form.value.decision));
|
});
|
};
|
|
defineExpose({ open });
|
</script>
|
|
<style scoped></style>
|