<template>
|
<el-form :model="form" ref="formModelRefs" :rules="rules" label-width="100px">
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="设备名称" prop="deviceLedgerId">
|
<el-select v-model="form.deviceLedgerId" @change="setDeviceModel" filterable>
|
<el-option
|
v-for="(item, index) in deviceOptions"
|
:key="index"
|
:label="item.deviceName"
|
:value="item.id"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="规格型号" prop="deviceModel">
|
<el-input
|
v-model="form.deviceModel"
|
placeholder="请输入规格型号"
|
disabled
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="报修日期" prop="repairTime">
|
<el-date-picker
|
v-model="form.repairTime"
|
placeholder="请选择报修日期"
|
format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
type="date"
|
clearable
|
style="width: 100%"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="报修人员" prop="repairName">
|
<el-input v-model="form.repairName" placeholder="请输入报修人员" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row v-if="id">
|
<el-col :span="12">
|
<el-form-item label="报修状态">
|
<el-select v-model="form.status" prop="status">
|
<el-option label="待维修" :value="0"></el-option>
|
<el-option label="完结" :value="1"></el-option>
|
<el-option label="失败" :value="2"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="报修金额" prop="maintenancePrice">
|
<el-input-number
|
style="width: 100%"
|
:min="0"
|
v-model="form.maintenancePrice"
|
placeholder="请输入保修金额"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="审批人员" prop="approverId">
|
<el-select v-model="form.approverId" placeholder="请选择审批人员" clearable>
|
<el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="故障现象" prop="remark">
|
<el-input
|
v-model="form.remark"
|
:rows="2"
|
type="textarea"
|
placeholder="请输入故障现象"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</template>
|
|
<script setup>
|
import {onMounted} from "vue"
|
import dayjs from "dayjs";
|
import useFormData from "@/hooks/useFormData";
|
import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
|
import useUserStore from "@/store/modules/user";
|
import { userListNoPage } from "@/api/system/user.js";
|
|
const { id } = defineProps(["id"])
|
|
defineOptions({
|
name: "设备报修表单",
|
});
|
|
const userStore = useUserStore();
|
const deviceOptions = ref([]);
|
const formModelRefs = ref(null)
|
const userList = ref(null)
|
|
const loadDeviceName = async () => {
|
const { data } = await getDeviceLedger();
|
deviceOptions.value = data;
|
};
|
|
const rules = {
|
deviceLedgerId: [{ required: true, message: "请选择设备名称", trigger: "change" }],
|
repairTime: [{ required: true, message: "请选择报修日期", trigger: "change" }],
|
repairName: [{ required: true, message: "请输入报修人", trigger: "blur" }],
|
remark: [{ required: true, message: "请输入故障现象", trigger: "blur" }],
|
maintenancePrice: [{ required: true, message: "请输入保修金额", trigger: "blur" }],
|
approverId:[{required: true,message: "请选择审批人", trigger: "change"}]
|
};
|
|
// 校验表单是否合规
|
const submitForm = async () => {
|
if (!formModelRefs.value) return false;
|
|
try {
|
await formModelRefs.value.validate();
|
return true; // 表单验证通过
|
} catch (error) {
|
return false; // 表单验证失败
|
}
|
};
|
|
const { form, resetForm } = useFormData({
|
deviceLedgerId: undefined, // 设备Id
|
deviceName: undefined, // 设备名称
|
deviceModel: undefined, // 规格型号
|
repairTime: dayjs().format("YYYY-MM-DD"), // 报修日期,默认当天
|
repairName: userStore.nickName, // 报修人
|
remark: undefined, // 故障现象
|
status: 0, // 报修状态
|
maintenancePrice:0, // 保修金额
|
});
|
|
const setDeviceModel = (id) => {
|
const option = deviceOptions.value.find((item) => item.id === id);
|
form.deviceModel = option.deviceModel;
|
};
|
|
const getForm = () => {
|
return form;
|
};
|
|
const setForm = (data) => {
|
form.deviceLedgerId = data.deviceLedgerId;
|
form.deviceName = data.deviceName;
|
form.deviceModel = data.deviceModel;
|
form.repairTime = data.repairTime;
|
form.repairName = data.repairName;
|
form.remark = data.remark;
|
form.status = data.status;
|
form.maintenancePrice = data.maintenancePrice
|
};
|
|
onMounted(async() => {
|
// loadDeviceName();
|
let userLists = await userListNoPage();
|
userList.value = userLists.data;
|
});
|
|
defineExpose({
|
loadDeviceName,
|
resetForm,
|
getForm,
|
setForm,
|
submitForm
|
});
|
</script>
|
|
<style lang="scss" scoped></style>
|