<template>
|
<FormDialog
|
v-model="visible"
|
title="定时任务审批"
|
width="800px"
|
@confirm="handleSubmit"
|
@cancel="handleClose"
|
@close="handleClose"
|
>
|
<el-descriptions :column="2" border>
|
<el-descriptions-item label="任务名称">
|
{{ detail.taskName || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="规格型号">
|
{{ detail.deviceModel || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="频次">
|
{{ frequencyText(detail.frequencyType) }}
|
</el-descriptions-item>
|
<el-descriptions-item label="开始日期与时间">
|
{{ detail.frequencyDetail || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="登记人">
|
{{ detail.registrant || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="登记日期">
|
{{ detail.registrationDate || "-" }}
|
</el-descriptions-item>
|
<el-descriptions-item label="当前状态">
|
{{ statusText(detail.status) }}
|
</el-descriptions-item>
|
<el-descriptions-item label="备注" :span="2">
|
{{ detail.remarks || "-" }}
|
</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 label="审核通过">审核通过</el-radio>
|
<el-radio label="审核不通过">审核不通过</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 { deviceMaintenanceTaskEdit } from "@/api/equipmentManagement/upkeep";
|
|
defineOptions({
|
name: "定时任务审批弹窗",
|
});
|
|
const emits = defineEmits(["ok"]);
|
|
const visible = ref(false);
|
const loading = ref(false);
|
const detail = ref({});
|
const formRef = ref();
|
const form = ref({
|
decision: undefined, // 审核通过 / 审核不通过
|
});
|
|
const rules = {
|
decision: [{ required: true, message: "请选择审批结果", trigger: "change" }],
|
};
|
|
const statusText = (status) => status || "-";
|
|
const frequencyText = (type) => {
|
const map = {
|
DAILY: "每日",
|
WEEKLY: "每周",
|
MONTHLY: "每月",
|
QUARTERLY: "季度",
|
};
|
return map[type] ?? "-";
|
};
|
|
const open = async (row) => {
|
detail.value = { ...(row || {}) };
|
visible.value = true;
|
await nextTick();
|
form.value.decision = undefined;
|
};
|
|
const handleClose = () => {
|
visible.value = false;
|
detail.value = {};
|
form.value.decision = undefined;
|
};
|
|
const updateStatus = async (status) => {
|
loading.value = true;
|
try {
|
const payload = { ...(detail.value || {}), status };
|
const { code } = await deviceMaintenanceTaskEdit(payload);
|
if (code === 200) {
|
ElMessage.success("审批成功");
|
emits("ok");
|
handleClose();
|
}
|
} finally {
|
loading.value = false;
|
}
|
};
|
|
const handleSubmit = async () => {
|
if (detail.value?.status === "审核通过") {
|
ElMessage.warning("审核通过后不可再次审批");
|
return;
|
}
|
await formRef.value?.validate(async (valid) => {
|
if (!valid) return;
|
const isApprove = form.value.decision === "审核通过";
|
ElMessageBox.confirm(
|
`确认审批${isApprove ? "通过" : "不通过"}?`,
|
"提示",
|
{
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
}
|
).then(() => updateStatus(form.value.decision));
|
});
|
};
|
|
defineExpose({ open });
|
</script>
|
|
<style scoped></style>
|