<template>
|
<el-dialog v-model="visible" :title="modalOptions.title" direction="ltr">
|
<el-form :model="form" :rules="rules" label-width="110px" ref="formRef">
|
<el-form-item label="实际保养人" prop="maintenanceActuallyName">
|
<el-input
|
v-model="form.maintenanceActuallyName"
|
placeholder="请输入实际保养人"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="实际保养日期" prop="maintenanceActuallyTime">
|
<el-date-picker
|
v-model="form.maintenanceActuallyTime"
|
placeholder="请选择实际保养日期"
|
format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
type="datetime"
|
clearable
|
style="width: 100%"
|
/>
|
</el-form-item>
|
<el-form-item label="保养结果" prop="maintenanceResult">
|
<el-select v-model="form.maintenanceResult" placeholder="请选择保养结果">
|
<el-option label="完好" :value="1"></el-option>
|
<el-option label="维修" :value="0"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="本次保养金额" prop="maintenancePrice">
|
<el-input-number v-model="form.maintenancePrice" :min="0" :precision="2" style="width: 100%" />
|
</el-form-item>
|
</el-form>
|
<template #footer>
|
<el-button type="primary" @click="sendForm" :loading="loading">
|
{{ modalOptions.confirmText }}
|
</el-button>
|
<el-button @click="closeModal">{{ modalOptions.cancelText }}</el-button>
|
</template>
|
</el-dialog>
|
</template>
|
|
<script setup>
|
import { ref, nextTick } from "vue";
|
import { useModal } from "@/hooks/useModal";
|
import useFormData from "@/hooks/useFormData";
|
import useUserStore from "@/store/modules/user";
|
import dayjs from "dayjs";
|
import { addMaintenance } from "@/api/equipmentManagement/upkeep";
|
|
defineOptions({
|
name: "保养模态框",
|
});
|
|
const emits = defineEmits(["ok"]);
|
|
const {
|
id,
|
visible,
|
loading,
|
openModal,
|
modalOptions,
|
handleConfirm,
|
closeModal,
|
} = useModal({ title: "设备保养" });
|
|
/**
|
* @desc 保存保养
|
*/
|
const userStore = useUserStore();
|
const formRef = ref();
|
const { form, resetForm } = useFormData({
|
maintenanceActuallyName: undefined, // 实际保养人
|
maintenanceActuallyTime: undefined, // 实际保养日期
|
maintenanceResult: undefined, // 保养结果
|
maintenancePrice: undefined, // 保养金额
|
});
|
|
const rules = {
|
maintenanceActuallyName: [
|
{ required: true, message: "请输入实际保养人", trigger: "blur" },
|
],
|
maintenanceActuallyTime: [
|
{ required: true, message: "请选择实际保养日期", trigger: "change" },
|
],
|
maintenanceResult: [
|
{ required: true, message: "请选择保养结果", trigger: "change" },
|
],
|
maintenancePrice: [
|
{ required: true, message: "请输入本次保养金额", trigger: "change" },
|
],
|
};
|
|
const sendForm = async () => {
|
await formRef.value.validate(async (valid) => {
|
if (!valid) return;
|
const { code } = await addMaintenance({ id: id.value, ...form });
|
if (code == 200) {
|
emits("ok");
|
resetForm();
|
closeModal();
|
}
|
});
|
};
|
|
const open = async (id, row) => {
|
openModal(id);
|
await nextTick();
|
if (!row) {
|
resetForm();
|
form.maintenanceActuallyName = userStore.nickName;
|
return;
|
}
|
form.maintenanceActuallyName = row.maintenanceActuallyName ?? userStore.nickName;
|
form.maintenanceActuallyTime = row.maintenanceActuallyTime
|
? dayjs(row.maintenanceActuallyTime).format("YYYY-MM-DD HH:mm:ss")
|
: undefined;
|
form.maintenanceResult = row.maintenanceResult;
|
form.maintenancePrice = row.maintenancePrice;
|
};
|
defineExpose({
|
open,
|
});
|
</script>
|
|
<style lang="scss" scoped></style>
|