lanan-system-vue/src/views/base/carmain/CarMainForm.vue
2024-08-09 08:16:23 +08:00

245 lines
9.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="60%" v-dialogDrag append-to-body>
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="100px">
<el-row :gutter="2">
<el-col :span="11">
<el-form-item label="发动机号码" prop="engineNumber">
<el-input v-model="formData.engineNumber" placeholder="请输入发动机号码" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="车架号" prop="vin">
<el-input v-model="formData.vin" placeholder="请输入车架号" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="2">
<el-col :span="11">
<el-form-item label="车牌号" prop="licenseNumber">
<el-input v-model="formData.licenseNumber" placeholder="请输入车牌号" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="品牌型号" prop="brandAndModel">
<CarBrandSelector v-model="formData.brandAndModel" ref="brandForm" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="2">
<el-col :span="11">
<el-form-item label="保养日期" prop="maintenanceDate">
<el-date-picker clearable v-model="formData.maintenanceDate" type="date" value-format="timestamp"
placeholder="选择保养日期" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="保养里程" prop="maintenanceMileage">
<el-input v-model="formData.maintenanceMileage" placeholder="请输入保养里程" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="2">
<el-col :span="11">
<el-form-item label="年检日期" prop="inspectionDate">
<el-date-picker clearable v-model="formData.inspectionDate" type="date" value-format="timestamp"
placeholder="选择年检日期" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="保险日期" prop="insuranceDate">
<el-date-picker clearable v-model="formData.insuranceDate" type="date" value-format="timestamp"
placeholder="选择保险日期" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="2">
<el-col :span="11">
<el-form-item label="车辆注册日期" prop="carRegisterDate" label-width="auto">
<el-date-picker clearable v-model="formData.carRegisterDate" type="date" value-format="timestamp"
placeholder="选择车辆注册日期" />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="二级维护时间" prop="checkDate">
<el-date-picker clearable v-model="formData.checkDate" type="date" value-format="timestamp"
placeholder="选择二级维护时间" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="2">
<el-col :span="11">
<el-form-item label="车辆类别" prop="carCategory">
<el-select v-model="formData.carCategory" placeholder="请选择车辆类别">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.DICT_CAR_CATEGORY)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="车辆性质" prop="carNature">
<el-select v-model="formData.carNature" placeholder="请选择车辆性质">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.DICT_CAR_NATURE)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="2">
<el-col :span="11">
<el-form-item label="最近办理业务" prop="recentlyHandledBusiness">
<el-select v-model="formData.recentlyHandledBusiness" placeholder="请选择业务类别">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.DICT_CUS_BUSI_TYPE)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="最近业务时间" prop="recentlyHandleBusinessTime" >
<el-date-picker clearable v-model="formData.recentlyHandleBusinessTime" type="date"
value-format="timestamp" placeholder="选择最近办理业务的时间" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="1">
<el-col :span="22">
<el-form-item label="行驶证图片">
<ImageUpload v-model="formData.carLicenseImg" :limit="1" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import * as CarMainApi from '@/api/base/carmain';
import ImageUpload from '@/components/ImageUpload';
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import CarBrandSelector from '@/layout/components/CarBrandSelector';
export default {
name: "CarMainForm",
components: {
ImageUpload,
CarBrandSelector,
},
data() {
return {
tesst: ["5d8eb726839bbe64a4f405e0cce29274", "7c8493517c4eaa0f0c56f40f0626e8d2"],
// 弹出层标题
dialogTitle: "",
// 是否显示弹出层
dialogVisible: false,
// 表单的加载中1修改时的数据加载2提交的按钮禁用
formLoading: false,
// 表单参数
formData: {
id: undefined,
engineNumber: undefined,
vin: undefined,
licenseNumber: undefined,
brandAndModel: [],
maintenanceDate: undefined,
maintenanceMileage: undefined,
inspectionDate: undefined,
insuranceDate: undefined,
checkDate: undefined,
carBrand: undefined,
carNature: undefined,
carRegisterDate: undefined,
carLicenseImg: undefined,
},
// 表单校验
formRules: {
engineNumber: [{ required: true, message: '发动机号码不能为空', trigger: 'blur' }],
vin: [{ required: true, message: '车架号不能为空', trigger: 'blur' }],
licenseNumber: [{ required: true, message: '车牌号不能为空', trigger: 'blur' }],
inspectionDate: [{ required: true, message: '年检日期不能为空', trigger: 'blur' }],
carBrand: [{ required: true, message: '车辆品牌不能为空', trigger: 'blur' }],
carNature: [{ required: true, message: '车辆性质不能为空', trigger: 'blur' }],
carRegisterDate: [{ required: true, message: '车辆注册日期不能为空', trigger: 'blur' }],
brandAndModel: [{ required: true, message: '品牌型号不能为空', trigger: 'blur' }],
},
};
},
methods: {
/** 打开弹窗 */
async open(id) {
this.dialogVisible = true;
this.reset();
// 修改时,设置数据
if (id) {
this.formLoading = true;
try {
const res = await CarMainApi.getCarMain(id);
this.formData = res.data;
this.title = "修改车辆信息";
} finally {
this.formLoading = false;
}
}
this.title = "新增车辆信息";
},
/** 提交按钮 */
async submitForm() {
// 校验主表
// await this.$refs["formRef"].validate();
this.formLoading = true;
try {
const data = this.formData;
// 修改的提交
if (data.id) {
await CarMainApi.updateCarMain(data);
this.$modal.msgSuccess("修改成功");
this.dialogVisible = false;
this.$emit('success');
return;
}
// 添加的提交
await CarMainApi.createCarMain(data);
this.$modal.msgSuccess("新增成功");
this.dialogVisible = false;
this.$emit('success');
} finally {
this.formLoading = false;
}
},
/** 表单重置 */
reset() {
this.formData = {
id: undefined,
engineNumber: undefined,
vin: undefined,
licenseNumber: undefined,
brandAndModel: [],
maintenanceDate: undefined,
maintenanceMileage: undefined,
inspectionDate: undefined,
insuranceDate: undefined,
checkDate: undefined,
carBrand: undefined,
carNature: undefined,
carRegisterDate: undefined,
carLicenseImg: undefined,
};
this.resetForm("formRef");
}
}
};
</script>