<template>
|
<FormDialog
|
v-model="visible"
|
title="验收审批"
|
width="500px"
|
@confirm="submitForm"
|
@cancel="handleCancel"
|
@close="handleCancel"
|
>
|
<el-form :model="form" :rules="rules" label-width="100px">
|
<!-- 配件使用情况展示 -->
|
<el-form-item label="配件使用明细" v-if="sparePartsDetails.length > 0">
|
<el-table :data="sparePartsDetails" size="small" border style="width: 100%">
|
<el-table-column prop="sparePartName" label="配件名称" />
|
<el-table-column prop="quantity" label="使用数量" width="100" />
|
</el-table>
|
</el-form-item>
|
|
<el-form-item label="验收人" prop="acceptanceName">
|
<el-select
|
v-model="form.acceptanceName"
|
placeholder="请选择验收人"
|
filterable
|
style="width: 100%"
|
>
|
<el-option
|
v-for="item in userList"
|
:key="item.userId"
|
:label="item.nickName"
|
:value="item.nickName"
|
/>
|
</el-select>
|
</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 { ref, reactive } from "vue";
|
import { ElMessage } from "element-plus";
|
import { userListNoPageByTenantId } from "@/api/system/user.js";
|
import { repairAcceptance, getRepairById } from "@/api/equipmentManagement/repair";
|
import dayjs from "dayjs";
|
|
defineOptions({
|
name: "验收审批弹窗",
|
});
|
|
const emits = defineEmits(["ok"]);
|
|
const visible = ref(false);
|
const loading = ref(false);
|
const repairId = ref(null);
|
const userList = ref([]);
|
const sparePartsDetails = ref([]);
|
|
const form = reactive({
|
acceptanceName: undefined,
|
acceptanceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
|
acceptanceRemark: undefined,
|
});
|
|
const rules = {
|
acceptanceName: [
|
{ required: true, message: "请选择验收人", trigger: "change" },
|
],
|
acceptanceTime: [
|
{ required: true, message: "请选择验收时间", trigger: "change" },
|
],
|
acceptanceRemark: [
|
{ required: true, message: "请输入验收备注", trigger: "blur" },
|
],
|
};
|
|
// 加载用户列表
|
const loadUserList = async () => {
|
const { data } = await userListNoPageByTenantId();
|
userList.value = data;
|
};
|
|
// 打开弹窗
|
const open = async (row) => {
|
repairId.value = row.id;
|
visible.value = true;
|
form.acceptanceName = undefined;
|
form.acceptanceTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
|
form.acceptanceRemark = undefined;
|
sparePartsDetails.value = [];
|
try {
|
const { data } = await getRepairById(row.id);
|
if (data && data.sparePartsUseListDetails) {
|
sparePartsDetails.value = data.sparePartsUseListDetails;
|
}
|
} catch(e) {}
|
await loadUserList();
|
};
|
|
// 提交表单
|
const submitForm = async () => {
|
if (!form.acceptanceName) {
|
ElMessage.warning("请选择验收人");
|
return;
|
}
|
if (!form.acceptanceTime) {
|
ElMessage.warning("请选择验收时间");
|
return;
|
}
|
if (!form.acceptanceRemark) {
|
ElMessage.warning("请输入验收备注");
|
return;
|
}
|
|
loading.value = true;
|
try {
|
const { code } = await repairAcceptance({
|
id: repairId.value,
|
acceptanceName: form.acceptanceName,
|
acceptanceTime: form.acceptanceTime,
|
acceptanceRemark: form.acceptanceRemark,
|
});
|
if (code === 200) {
|
ElMessage.success("验收通过");
|
visible.value = false;
|
emits("ok");
|
}
|
} finally {
|
loading.value = false;
|
}
|
};
|
|
const handleCancel = () => {
|
visible.value = false;
|
};
|
|
defineExpose({
|
open,
|
});
|
</script>
|
|
<style lang="scss" scoped></style>
|