From 98f433b37e306417c1b493f50efc7d53a95c2d95 Mon Sep 17 00:00:00 2001 From: "277151821@qq.com" <277151821@qq.com> Date: Fri, 15 Mar 2024 11:12:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E9=99=A9=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspect_annually/index.vue | 9 +- src/views/mechanical_files/insure/add.vue | 416 ++++++++++++++++++ .../insure/components/export_excel.vue | 135 ++++++ src/views/mechanical_files/insure/edit.vue | 416 ++++++++++++++++++ src/views/mechanical_files/insure/index.vue | 276 ++++++++++++ src/views/mechanical_files/insure/view.vue | 141 ++++++ 6 files changed, 1391 insertions(+), 2 deletions(-) create mode 100644 src/views/mechanical_files/insure/add.vue create mode 100644 src/views/mechanical_files/insure/components/export_excel.vue create mode 100644 src/views/mechanical_files/insure/edit.vue create mode 100644 src/views/mechanical_files/insure/index.vue create mode 100644 src/views/mechanical_files/insure/view.vue diff --git a/src/views/mechanical_files/inspect_annually/index.vue b/src/views/mechanical_files/inspect_annually/index.vue index 264746f..8d35f26 100644 --- a/src/views/mechanical_files/inspect_annually/index.vue +++ b/src/views/mechanical_files/inspect_annually/index.vue @@ -99,7 +99,11 @@ </template> </el-table-column> <el-table-column prop="NUM" label="编号" width="150"/> - <el-table-column prop="VEHICLE_MODEL" label="运营车型" width="150"/> + <el-table-column prop="VEHICLE_MODEL" label="运营车型" width="150"> + <template #default="{ row }"> + {{translationStatus(row.VEHICLE_MODEL,OPERATING_VEHICLE_TYPE_LIST)}} + </template> + </el-table-column> <el-table-column prop="PLATE_NUMBER" label="车牌号" width="150"/> <el-table-column prop="CAR_OWNERS" label="车主业户" width="150"/> <el-table-column prop="TELEPHONE" label="联系电话" width="150"/> @@ -123,6 +127,7 @@ </el-table-column> <el-table-column prop="ARCHIVES_TYPE" label="档案状态" width="150"/> <el-table-column prop="CREATTIME" label="创建时间" width="150"/> + <el-table-column prop="OPERATTIME" label="修改时间" width="150"/> <el-table-column label="操作" width="250"> <template #default="{ row }"> <el-button @@ -184,7 +189,7 @@ <script setup> import { useRouter } from "vue-router"; - import { serialNumber } from "@/assets/js/utils"; + import { serialNumber ,translationStatus} from "@/assets/js/utils"; import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js"; import useListData from "@/assets/js/useListData.js"; import { getInspectAnnuallyList ,setInspectAnnuallyDelete,setInspectAnnuallyEdit2} from "@/request/mechanical_files.js"; diff --git a/src/views/mechanical_files/insure/add.vue b/src/views/mechanical_files/insure/add.vue new file mode 100644 index 0000000..89a8294 --- /dev/null +++ b/src/views/mechanical_files/insure/add.vue @@ -0,0 +1,416 @@ +<template> + <layout-card> + <el-form ref="formRef" :rules="rules" :model="form" label-width="140px"> + <el-row :gutter="20"> + <el-col :span="24"> + <el-divider content-position="left">车辆选择</el-divider> + </el-col> + <el-col :span="12"> + <el-form-item label="保险车型" prop="VEHICLE_MODEL"> + <el-select v-model="form.VEHICLE_MODEL" @change="getVehicle"> + <el-option + v-for="item in OPERATING_VEHICLE_TYPE_LIST" + :key="item.ID" + :label="item.NAME" + :value="item.ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险车辆" prop="VEHICLE"> + <el-select v-model="form.VEHICLE" @change="getBusInfo"> + <el-option + v-for="item in data.vehicleList" + :key="item.ID" + :label="item.PLATE_NUMBER" + :value="item.ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-divider content-position="left">基本信息</el-divider> + </el-col> + <el-col :span="12"> + <el-form-item label="行驶证照片" prop="DRIVING_LICENSE_IMG"> + <layout-upload + v-model:file-list="data.busInfo.DRIVING_LICENSE_IMG" + list-type="picture-card" + accept=".jpg,.jpeg,.png" + delete-to-server + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车牌号" prop="PLATE_NUMBER"> + <el-input v-model="data.busInfo.PLATE_NUMBER" disabled /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车架号" prop="VIN"> + <el-input v-model="data.busInfo.VIN" disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车辆类型" prop="TRAILER_TYPE"> + <el-input v-model="data.busInfo.TRAILER_TYPE" disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车主/业户" prop="CAR_OWNERS "> + <el-input v-model="data.busInfo.CAR_OWNERS " disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车主电话" prop="CAR_OWNERS_TEL"> + <el-input v-model="data.busInfo.CAR_OWNERS_TEL" disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="初登日期" prop="INITIAL_REGISTRATION_DATE"> + <el-date-picker + v-model="data.busInfo.INITIAL_REGISTRATION_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="所属区域" prop="COMPANY_AREA"> + <el-input v-model="data.busInfo.COMPANY_AREA" disabled/> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-divider content-position="left">投保信息</el-divider> + </el-col> + <el-col :span="12"> + <el-form-item label="编号" prop="NUM"> + <el-input v-model="form.NUM" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车主业户" prop="CAR_OWNERS"> + <el-input v-model="form.CAR_OWNERS" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="联系电话" prop="TELEPHONE"> + <el-input v-model="form.TELEPHONE" maxlength="11" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="登记人" prop="REGISTRANT"> + <el-input v-model="form.REGISTRANT" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险公司" prop="INSURANCE_COMPANY"> + <el-select v-model="form.INSURANCE_COMPANY"> + <el-option + v-for="item in insuranceCompanyList" + :key="item.DICTIONARIES_ID" + :label="item.NAME" + :value="item.DICTIONARIES_ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险项目" prop="INSURANCE_COVERAGE"> + <el-input v-model="form.INSURANCE_COVERAGE" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="办理日期" prop="PROCESSING_DATE"> + <el-date-picker + v-model="form.PROCESSING_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="生效日期" prop="EFFECTIVE_DATE"> + <el-date-picker + v-model="form.EFFECTIVE_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + @change="getDueDate" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="到期日期" prop="DUE_DATE"> + <el-date-picker + v-model="form.DUE_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险全费" prop="ALL_FEES"> + <el-input v-model="form.ALL_FEES" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="净费实收" prop="ACTUAL_COLLECTION"> + <el-input v-model="form.ACTUAL_COLLECTION" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="提醒天数" prop="REMINDER_DAYS"> + <el-input v-model.number="form.REMINDER_DAYS" maxlength="50" show-word-limit @change="getRemiderDate"/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="提醒日期" prop="REMINDER_DATE"> + <el-date-picker + v-model="form.REMINDER_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="提醒状态" prop="REMINDER_STATUS"> + <el-switch + v-model="form.REMINDER_STATUS" + inline-prompt + active-text="开" + inactive-text="关" + active-value="1" + inactive-value="0" + /> + </el-form-item> + </el-col> + + <el-col :span="12"> + <el-form-item label="附件上传" prop="ATTACHMENT_UPLOAD"> + <layout-upload + v-model:file-list="form.ATTACHMENT_UPLOAD" + accept=".pdf" + :limit="99" + delete-to-server + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险资料" prop="INSUREINFO"> + <layout-upload + v-model:file-list="form.INSUREINFO" + list-type="picture-card" + accept=".jpg,.jpeg,.png" + :limit="99" + delete-to-server + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="备注" prop="NOTES"> + <el-input + v-model="form.NOTES" + type="textarea" + :autosize="{ minRows: 3 }" + maxlength="250" show-word-limit + /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div class="mt-10 tc"> + <el-button type="primary" @click="fnSubmit">保存</el-button> + </div> + </layout-card> +</template> + +<script setup> + import LayoutUpload from "@/components/upload/index.vue"; + import { ref ,reactive} from "vue"; + import { debounce } from "throttle-debounce"; + import {getInsureView, setInsureAdd ,setInsureEdit,getTrailerList} from "@/request/mechanical_files.js"; + import {OPERATING_VEHICLE_TYPE_LIST} from "@/assets/js/constant.js" + import {layoutFnGetInsuranceCompany} from "@/assets/js/data_dictionary.js" + import { setUploadImg } from "@/request/api.js"; + import { ElMessage } from "element-plus"; + import { useRoute, useRouter, } from "vue-router"; + import useFormValidate from "@/assets/js/useFormValidate.js"; + import { addingPrefixToFile ,timeTransformation,subtractDaysFromDate} from "@/assets/js/utils.js"; + const route = useRoute(); + const router = useRouter(); + const INSURE_ID = route.query.INSURE_ID + const insuranceCompanyList = await layoutFnGetInsuranceCompany() + const formRef = ref(null); + const form = ref({ + VEHICLE_MODEL : '', + VEHICLE : '', + NUM : '', + CAR_OWNERS : '', + TELEPHONE : '', + REGISTRANT : '', + INSURANCE_COMPANY : '', + INSURANCE_COVERAGE : '', + PROCESSING_DATE : '', + EFFECTIVE_DATE : '', + DUE_DATE : '', + ALL_FEES : '', + ACTUAL_COLLECTION : '', + REMINDER_DAYS : '', + REMINDER_DATE : '', + REMINDER_STATUS : '0', + ATTACHMENT_UPLOAD : [], + INSUREINFO : [], + NOTES : '', + }); + const data = reactive({ + vehicleList: [], + busInfo:{ + DRIVING_LICENSE_IMG : [], + PLATE_NUMBER : '', + VIN : '', + TRAILER_TYPE : '', + CAR_OWNERS : '', + CAR_OWNERS_TEL : '', + INITIAL_REGISTRATION_DATE : '', + COMPANY_AREA:'', + } + }); + const rules = { + VEHICLE_MODEL: [{ required: true, message: "请输入", trigger: "blur" }], + VEHICLE: [{ required: true, message: "请输入", trigger: "blur" }], + CAR_OWNERS: [{ required: true, message: "请输入", trigger: "blur" }], + TELEPHONE: [ + { required: true, message: "请输入", trigger: "blur" }, + { min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" }, + { + pattern: + /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/, + message: "请输入正确的手机号码", + }, + ], + INSURANCE_COMPANY: [{ required: true, message: "请输入", trigger: "blur" }], + INSURANCE_COVERAGE: [{ required: true, message: "请输入", trigger: "blur" }], + REGISTRANT: [{ required: true, message: "请输入", trigger: "blur" }], + PROCESSING_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + EFFECTIVE_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + DUE_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + REMINDER_DAYS: [{ required: true, message: "请输入", trigger: "blur" }], + REMINDER_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + } + const getVehicle = async (event) =>{ + const resData = await getTrailerList({TRAFFIC_TYPE:event}) + data.vehicleList = resData.list + form.value.VEHICLE = '' + data.busInfo.DRIVING_LICENSE_IMG = [] + data.busInfo.PLATE_NUMBER = '' + data.busInfo.VIN = '' + data.busInfo.TRAILER_TYPE = '' + data.busInfo.CAR_OWNERS = '' + data.busInfo.CAR_OWNERS_TEL = '' + data.busInfo.INITIAL_REGISTRATION_DATE = '' + data.busInfo.DRIVING_LICENSE_IMG = addingPrefixToFile( + [] + ); + } + const fnBusChange = async (event) => { + const resData = await getTrailerList({ID:event}) + data.busInfo = resData.list[0] + data.busInfo.DRIVING_LICENSE_IMG = addingPrefixToFile( + resData.drivingLicenseImgs + ); + }; + const getBusInfo = (val)=>{ + console.log(val) + if(val){ + fnBusChange(val) + }else { + data.busInfo.DRIVING_LICENSE_IMG = [] + data.busInfo.PLATE_NUMBER = '' + data.busInfo.VIN = '' + data.busInfo.TRAILER_TYPE = '' + data.busInfo.CAR_OWNERS = '' + data.busInfo.CAR_OWNERS_TEL = '' + data.busInfo.INITIAL_REGISTRATION_DATE = '' + data.busInfo.COMPANY_AREA = '' + data.busInfo.DRIVING_LICENSE_IMG = addingPrefixToFile( + [] + ); + } + } + const getDueDate = (val)=>{ + if(val){ + form.value.DUE_DATE = timeTransformation(val,12) + if(form.value.REMINDER_DAYS){ + form.value.REMINDER_DATE = subtractDaysFromDate(form.value.DUE_DATE,form.value.REMINDER_DAYS) + } + }else { + form.value.DUE_DATE = '' + form.value.REMINDER_DATE = '' + } + } + const getRemiderDate = (val)=>{ + if(val){ + if(form.value.DUE_DATE){ + form.value.REMINDER_DATE = subtractDaysFromDate(form.value.DUE_DATE,val) + } + }else { + form.value.REMINDER_DATE = '' + } + } + const fnGetData = async () => { + if (!INSURE_ID) return; + const resData = await getInsureView({ INSURE_ID }); + form.value = resData.pd; + const listData = await getTrailerList({TRAFFIC_TYPE:form.value.VEHICLE_MODEL}) + data.vehicleList = listData.list + fnBusChange(form.value.VEHICLE) + form.value.ATTACHMENT_UPLOAD = addingPrefixToFile( + resData.attachmentUploadImgs + ); + form.value.INSUREINFO = addingPrefixToFile( + resData.insureinfoImgs + ); + }; + fnGetData(); + + const fnSubmit = debounce( + 1000, + async () => { + await useFormValidate(formRef); + const resData = !INSURE_ID + ? await setInsureAdd({ ...form.value }) + : await setInsureEdit({ ...form.value ,INSURE_ID:INSURE_ID}); + const currentId =resData.pd.INSURE_ID + for (let i = 0; i < form.value.ATTACHMENT_UPLOAD.length; i++) { + if (form.value.ATTACHMENT_UPLOAD[i].raw) + await fnUploadImage(currentId, form.value.ATTACHMENT_UPLOAD[i].raw, 129); + } + for (let i = 0; i < form.value.INSUREINFO.length; i++) { + if (form.value.INSUREINFO[i].raw) + await fnUploadImage(currentId, form.value.INSUREINFO[i].raw, 125); + } + ElMessage.success("保存成功"); + router.back(); + }, + { atBegin: true } + ); + const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => { + const formData = new FormData(); + formData.append("FOREIGN_KEY", HIDDEN_ID); + formData.append("TYPE", TYPE); + formData.append("FFILE", FFILE); + await setUploadImg(formData); + }; +</script> + +<style scoped lang="scss"></style> diff --git a/src/views/mechanical_files/insure/components/export_excel.vue b/src/views/mechanical_files/insure/components/export_excel.vue new file mode 100644 index 0000000..f2388fa --- /dev/null +++ b/src/views/mechanical_files/insure/components/export_excel.vue @@ -0,0 +1,135 @@ +<template> + <el-dialog v-model="visible" title="导出" :on-close="fnClose"> + <el-checkbox + :indeterminate="isIndeterminate" + v-model="checkAll" + @change="fnCheckAllChange" + > + 全选 + </el-checkbox> + <el-checkbox v-model="havePicture"> + 导出带图片的excel(最多10条) + </el-checkbox> + <el-divider /> + <el-checkbox-group v-model="checkOptions" @change="fnCheckedChange"> + <el-row> + <el-col v-for="(item, index) in options" :span="4" :key="index"> + <el-checkbox :label="item" :value="item" /> + </el-col> + </el-row> + </el-checkbox-group> + <template #footer> + <el-button @click="fnClose">取 消</el-button> + <el-button type="primary" @click="fnSubmit">导 出</el-button> + </template> + </el-dialog> +</template> + +<script setup> +import { useVModel } from "@vueuse/core"; +import { ref } from "vue"; +import { debounce } from "throttle-debounce"; +import { ElMessage } from "element-plus"; +import useDownloadBlob from "@/assets/js/useDownloadBlob.js"; +import QS from "qs"; + +const props = defineProps({ + visible: { + type: Boolean, + required: true, + default: false, + }, + searchForm: { + type: Object, + required: true, + default: () => {}, + }, + ids: { + type: Array, + required: true, + default: () => [], + }, +}); +const emits = defineEmits(["update:visible"]); +const visible = useVModel(props, "visible", emits); +const options = [ + "自编号", + "车牌号", + "车架号", + "挂车类型", + "营运证号", + "运输企业", + "归属部门", + "车主/业户", + "车主电话", + "联系人", + "联系电话", + "初登日期", + "发证日期", + "到期日期", + "挂车品牌", + "挂车型号", + "核定总质量", + "核定载质量", + "容积/体积", + "备注", + "挂车照片", + "行驶证照片", + "运营证照片", + "挂车资料", +]; +const checkAll = ref(true); +const isIndeterminate = ref(false); +const checkOptions = ref(options); +const havePicture = ref(false); +const fnCheckAllChange = (val) => { + checkOptions.value = val ? options : []; + isIndeterminate.value = false; +}; +const fnCheckedChange = (value) => { + const checkedCount = value.length; + checkAll.value = checkedCount === options.length; + isIndeterminate.value = checkedCount > 0 && checkedCount < options.length; +}; +const fnClose = () => { + visible.value = false; + checkOptions.value = options; + isIndeterminate.value = false; + checkAll.value = true; + havePicture.value = false; +}; +const fnSubmit = debounce( + 1000, + () => { + let data = { + havePicture: havePicture.value ? "1" : "0", + options: JSON.stringify(checkOptions.value), + }; + if (havePicture.value) { + const ids = props.ids; + if (ids.length === 0) { + ElMessage.warning("请选择要导出的数据"); + return; + } + if (ids.length > 10) { + ElMessage.warning("选择的数据超过10条"); + return; + } + data = { + ...data, FREIGHTTRAILER_IDs: ids.join(","), + }; + } else { + const searchForm = props.searchForm; + data = { + ...data, + PLATE_NUMBER: searchForm.PLATE_NUMBER, + VIN: searchForm.VIN, + }; + } + useDownloadBlob("/freightTrailer/excel" + "?" + QS.stringify(data)); + }, + { atBegin: true } +); +</script> + +<style scoped lang="scss"></style> diff --git a/src/views/mechanical_files/insure/edit.vue b/src/views/mechanical_files/insure/edit.vue new file mode 100644 index 0000000..89a8294 --- /dev/null +++ b/src/views/mechanical_files/insure/edit.vue @@ -0,0 +1,416 @@ +<template> + <layout-card> + <el-form ref="formRef" :rules="rules" :model="form" label-width="140px"> + <el-row :gutter="20"> + <el-col :span="24"> + <el-divider content-position="left">车辆选择</el-divider> + </el-col> + <el-col :span="12"> + <el-form-item label="保险车型" prop="VEHICLE_MODEL"> + <el-select v-model="form.VEHICLE_MODEL" @change="getVehicle"> + <el-option + v-for="item in OPERATING_VEHICLE_TYPE_LIST" + :key="item.ID" + :label="item.NAME" + :value="item.ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险车辆" prop="VEHICLE"> + <el-select v-model="form.VEHICLE" @change="getBusInfo"> + <el-option + v-for="item in data.vehicleList" + :key="item.ID" + :label="item.PLATE_NUMBER" + :value="item.ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-divider content-position="left">基本信息</el-divider> + </el-col> + <el-col :span="12"> + <el-form-item label="行驶证照片" prop="DRIVING_LICENSE_IMG"> + <layout-upload + v-model:file-list="data.busInfo.DRIVING_LICENSE_IMG" + list-type="picture-card" + accept=".jpg,.jpeg,.png" + delete-to-server + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车牌号" prop="PLATE_NUMBER"> + <el-input v-model="data.busInfo.PLATE_NUMBER" disabled /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车架号" prop="VIN"> + <el-input v-model="data.busInfo.VIN" disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车辆类型" prop="TRAILER_TYPE"> + <el-input v-model="data.busInfo.TRAILER_TYPE" disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车主/业户" prop="CAR_OWNERS "> + <el-input v-model="data.busInfo.CAR_OWNERS " disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车主电话" prop="CAR_OWNERS_TEL"> + <el-input v-model="data.busInfo.CAR_OWNERS_TEL" disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="初登日期" prop="INITIAL_REGISTRATION_DATE"> + <el-date-picker + v-model="data.busInfo.INITIAL_REGISTRATION_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="所属区域" prop="COMPANY_AREA"> + <el-input v-model="data.busInfo.COMPANY_AREA" disabled/> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-divider content-position="left">投保信息</el-divider> + </el-col> + <el-col :span="12"> + <el-form-item label="编号" prop="NUM"> + <el-input v-model="form.NUM" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="车主业户" prop="CAR_OWNERS"> + <el-input v-model="form.CAR_OWNERS" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="联系电话" prop="TELEPHONE"> + <el-input v-model="form.TELEPHONE" maxlength="11" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="登记人" prop="REGISTRANT"> + <el-input v-model="form.REGISTRANT" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险公司" prop="INSURANCE_COMPANY"> + <el-select v-model="form.INSURANCE_COMPANY"> + <el-option + v-for="item in insuranceCompanyList" + :key="item.DICTIONARIES_ID" + :label="item.NAME" + :value="item.DICTIONARIES_ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险项目" prop="INSURANCE_COVERAGE"> + <el-input v-model="form.INSURANCE_COVERAGE" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="办理日期" prop="PROCESSING_DATE"> + <el-date-picker + v-model="form.PROCESSING_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="生效日期" prop="EFFECTIVE_DATE"> + <el-date-picker + v-model="form.EFFECTIVE_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + @change="getDueDate" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="到期日期" prop="DUE_DATE"> + <el-date-picker + v-model="form.DUE_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险全费" prop="ALL_FEES"> + <el-input v-model="form.ALL_FEES" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="净费实收" prop="ACTUAL_COLLECTION"> + <el-input v-model="form.ACTUAL_COLLECTION" maxlength="50" show-word-limit/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="提醒天数" prop="REMINDER_DAYS"> + <el-input v-model.number="form.REMINDER_DAYS" maxlength="50" show-word-limit @change="getRemiderDate"/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="提醒日期" prop="REMINDER_DATE"> + <el-date-picker + v-model="form.REMINDER_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + disabled + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="提醒状态" prop="REMINDER_STATUS"> + <el-switch + v-model="form.REMINDER_STATUS" + inline-prompt + active-text="开" + inactive-text="关" + active-value="1" + inactive-value="0" + /> + </el-form-item> + </el-col> + + <el-col :span="12"> + <el-form-item label="附件上传" prop="ATTACHMENT_UPLOAD"> + <layout-upload + v-model:file-list="form.ATTACHMENT_UPLOAD" + accept=".pdf" + :limit="99" + delete-to-server + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="保险资料" prop="INSUREINFO"> + <layout-upload + v-model:file-list="form.INSUREINFO" + list-type="picture-card" + accept=".jpg,.jpeg,.png" + :limit="99" + delete-to-server + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="备注" prop="NOTES"> + <el-input + v-model="form.NOTES" + type="textarea" + :autosize="{ minRows: 3 }" + maxlength="250" show-word-limit + /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div class="mt-10 tc"> + <el-button type="primary" @click="fnSubmit">保存</el-button> + </div> + </layout-card> +</template> + +<script setup> + import LayoutUpload from "@/components/upload/index.vue"; + import { ref ,reactive} from "vue"; + import { debounce } from "throttle-debounce"; + import {getInsureView, setInsureAdd ,setInsureEdit,getTrailerList} from "@/request/mechanical_files.js"; + import {OPERATING_VEHICLE_TYPE_LIST} from "@/assets/js/constant.js" + import {layoutFnGetInsuranceCompany} from "@/assets/js/data_dictionary.js" + import { setUploadImg } from "@/request/api.js"; + import { ElMessage } from "element-plus"; + import { useRoute, useRouter, } from "vue-router"; + import useFormValidate from "@/assets/js/useFormValidate.js"; + import { addingPrefixToFile ,timeTransformation,subtractDaysFromDate} from "@/assets/js/utils.js"; + const route = useRoute(); + const router = useRouter(); + const INSURE_ID = route.query.INSURE_ID + const insuranceCompanyList = await layoutFnGetInsuranceCompany() + const formRef = ref(null); + const form = ref({ + VEHICLE_MODEL : '', + VEHICLE : '', + NUM : '', + CAR_OWNERS : '', + TELEPHONE : '', + REGISTRANT : '', + INSURANCE_COMPANY : '', + INSURANCE_COVERAGE : '', + PROCESSING_DATE : '', + EFFECTIVE_DATE : '', + DUE_DATE : '', + ALL_FEES : '', + ACTUAL_COLLECTION : '', + REMINDER_DAYS : '', + REMINDER_DATE : '', + REMINDER_STATUS : '0', + ATTACHMENT_UPLOAD : [], + INSUREINFO : [], + NOTES : '', + }); + const data = reactive({ + vehicleList: [], + busInfo:{ + DRIVING_LICENSE_IMG : [], + PLATE_NUMBER : '', + VIN : '', + TRAILER_TYPE : '', + CAR_OWNERS : '', + CAR_OWNERS_TEL : '', + INITIAL_REGISTRATION_DATE : '', + COMPANY_AREA:'', + } + }); + const rules = { + VEHICLE_MODEL: [{ required: true, message: "请输入", trigger: "blur" }], + VEHICLE: [{ required: true, message: "请输入", trigger: "blur" }], + CAR_OWNERS: [{ required: true, message: "请输入", trigger: "blur" }], + TELEPHONE: [ + { required: true, message: "请输入", trigger: "blur" }, + { min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" }, + { + pattern: + /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/, + message: "请输入正确的手机号码", + }, + ], + INSURANCE_COMPANY: [{ required: true, message: "请输入", trigger: "blur" }], + INSURANCE_COVERAGE: [{ required: true, message: "请输入", trigger: "blur" }], + REGISTRANT: [{ required: true, message: "请输入", trigger: "blur" }], + PROCESSING_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + EFFECTIVE_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + DUE_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + REMINDER_DAYS: [{ required: true, message: "请输入", trigger: "blur" }], + REMINDER_DATE: [{ required: true, message: "请输入", trigger: "blur" }], + } + const getVehicle = async (event) =>{ + const resData = await getTrailerList({TRAFFIC_TYPE:event}) + data.vehicleList = resData.list + form.value.VEHICLE = '' + data.busInfo.DRIVING_LICENSE_IMG = [] + data.busInfo.PLATE_NUMBER = '' + data.busInfo.VIN = '' + data.busInfo.TRAILER_TYPE = '' + data.busInfo.CAR_OWNERS = '' + data.busInfo.CAR_OWNERS_TEL = '' + data.busInfo.INITIAL_REGISTRATION_DATE = '' + data.busInfo.DRIVING_LICENSE_IMG = addingPrefixToFile( + [] + ); + } + const fnBusChange = async (event) => { + const resData = await getTrailerList({ID:event}) + data.busInfo = resData.list[0] + data.busInfo.DRIVING_LICENSE_IMG = addingPrefixToFile( + resData.drivingLicenseImgs + ); + }; + const getBusInfo = (val)=>{ + console.log(val) + if(val){ + fnBusChange(val) + }else { + data.busInfo.DRIVING_LICENSE_IMG = [] + data.busInfo.PLATE_NUMBER = '' + data.busInfo.VIN = '' + data.busInfo.TRAILER_TYPE = '' + data.busInfo.CAR_OWNERS = '' + data.busInfo.CAR_OWNERS_TEL = '' + data.busInfo.INITIAL_REGISTRATION_DATE = '' + data.busInfo.COMPANY_AREA = '' + data.busInfo.DRIVING_LICENSE_IMG = addingPrefixToFile( + [] + ); + } + } + const getDueDate = (val)=>{ + if(val){ + form.value.DUE_DATE = timeTransformation(val,12) + if(form.value.REMINDER_DAYS){ + form.value.REMINDER_DATE = subtractDaysFromDate(form.value.DUE_DATE,form.value.REMINDER_DAYS) + } + }else { + form.value.DUE_DATE = '' + form.value.REMINDER_DATE = '' + } + } + const getRemiderDate = (val)=>{ + if(val){ + if(form.value.DUE_DATE){ + form.value.REMINDER_DATE = subtractDaysFromDate(form.value.DUE_DATE,val) + } + }else { + form.value.REMINDER_DATE = '' + } + } + const fnGetData = async () => { + if (!INSURE_ID) return; + const resData = await getInsureView({ INSURE_ID }); + form.value = resData.pd; + const listData = await getTrailerList({TRAFFIC_TYPE:form.value.VEHICLE_MODEL}) + data.vehicleList = listData.list + fnBusChange(form.value.VEHICLE) + form.value.ATTACHMENT_UPLOAD = addingPrefixToFile( + resData.attachmentUploadImgs + ); + form.value.INSUREINFO = addingPrefixToFile( + resData.insureinfoImgs + ); + }; + fnGetData(); + + const fnSubmit = debounce( + 1000, + async () => { + await useFormValidate(formRef); + const resData = !INSURE_ID + ? await setInsureAdd({ ...form.value }) + : await setInsureEdit({ ...form.value ,INSURE_ID:INSURE_ID}); + const currentId =resData.pd.INSURE_ID + for (let i = 0; i < form.value.ATTACHMENT_UPLOAD.length; i++) { + if (form.value.ATTACHMENT_UPLOAD[i].raw) + await fnUploadImage(currentId, form.value.ATTACHMENT_UPLOAD[i].raw, 129); + } + for (let i = 0; i < form.value.INSUREINFO.length; i++) { + if (form.value.INSUREINFO[i].raw) + await fnUploadImage(currentId, form.value.INSUREINFO[i].raw, 125); + } + ElMessage.success("保存成功"); + router.back(); + }, + { atBegin: true } + ); + const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => { + const formData = new FormData(); + formData.append("FOREIGN_KEY", HIDDEN_ID); + formData.append("TYPE", TYPE); + formData.append("FFILE", FFILE); + await setUploadImg(formData); + }; +</script> + +<style scoped lang="scss"></style> diff --git a/src/views/mechanical_files/insure/index.vue b/src/views/mechanical_files/insure/index.vue new file mode 100644 index 0000000..7b2976e --- /dev/null +++ b/src/views/mechanical_files/insure/index.vue @@ -0,0 +1,276 @@ +<template> + <div> + <el-card> + <el-form + :model="searchForm" + label-width="100px" + @submit.prevent="fnResetPaginationTransfer" + > + <el-row> + <el-col :span="6"> + <el-form-item label="车牌号" prop="PLATE_NUMBER"> + <el-input v-model="searchForm.PLATE_NUMBER" /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="车主业户" prop="CAR_OWNERS"> + <el-input v-model="searchForm.CAR_OWNERS" /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="登记人" prop="REGISTRANT"> + <el-input v-model="searchForm.REGISTRANT" /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="到期日期" prop="DUE_DATE"> + <el-date-picker + v-model="searchForm.DUE_DATE" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + type="date" + /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="运营车型" prop="VEHICLE_MODEL"> + <el-select v-model="searchForm.VEHICLE_MODEL"> + <el-option + v-for="item in OPERATING_VEHICLE_TYPE_LIST" + :key="item.ID" + :label="item.NAME" + :value="item.ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="到期状态" prop="DUE_DATE_TYPE"> + <el-select v-model="searchForm.DUE_DATE_TYPE"> + <el-option + v-for="item in DUE_STATUS_LIST" + :key="item.ID" + :label="item.NAME" + :value="item.ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="提醒状态" prop="REMINDER_STATUS"> + <el-select v-model="searchForm.REMINDER_STATUS"> + <el-option + v-for="item in REMINDER_STATUS_LIST" + :key="item.ID" + :label="item.NAME" + :value="item.ID" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="保险年份" prop="PROCESSING_DATE_YEAR"> + <el-date-picker + v-model="searchForm.PROCESSING_DATE_YEAR" + type="year" + value-format="YYYY" + format="YYYY" + /> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item label-width="10px"> + <el-button type="primary" native-type="submit">搜索</el-button> + <el-button native-type="reset" @click="fnResetPaginationTransfer"> + 重置 + </el-button> + </el-form-item> + </el-col> + <el-col :span="2"> + <el-form-item label-width="10px" class="end"> + <el-button @click="fnExport">导出</el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> + </el-card> + <layout-card> + <layout-table + :data="list" + @get-data="fnGetDataTransfer" + v-model:pagination="pagination" + ref="tableRef" + row-key="INSURE_ID" + > + <el-table-column reserve-selection type="selection" width="55" /> + <el-table-column label="序号" width="60"> + <template #default="{ $index }"> + {{ serialNumber(pagination, $index) }} + </template> + </el-table-column> + <el-table-column prop="NUM" label="编号" width="150"/> + <el-table-column prop="VEHICLE_MODEL" label="运营车型" width="150"> + <template #default="{ row }"> + {{translationStatus(row.VEHICLE_MODEL,OPERATING_VEHICLE_TYPE_LIST)}} + </template> + </el-table-column> + <el-table-column prop="PLATE_NUMBER" label="车牌号" width="150"/> + <el-table-column prop="CAR_OWNERS" label="车主业户" width="150"/> + <el-table-column prop="TELEPHONE" label="联系电话" width="150"/> + <el-table-column prop="PROCESSING_DATE_YEAR" label="保险年份" width="150"/> + <el-table-column prop="INSURANCE_COVERAGE" label="保险项目" width="150"/> + <el-table-column prop="PROCESSING_DATE" label="办理日期" width="150"/> + <el-table-column prop="EFFECTIVE_DATE" label="生效日期" width="150"/> + <el-table-column prop="DUE_DATE" label="到期日期" width="150"/> + <el-table-column prop="REGISTRANT" label="登记人" width="150"/> + <!--<el-table-column prop="NULLL" label="经营类型" width="150"/>--> + <!--<el-table-column prop="CONTACTS" label="经营企业" width="150"/>--> + <el-table-column prop="REMINDER_STATUS" label="提醒状态" width="150"> + <template #default="{ row }"> + <span v-if="row.REMINDER_STATUS==='1'">开启</span> + <span v-else-if="row.REMINDER_STATUS==='0'">关闭</span> + </template> + </el-table-column> + <el-table-column prop="DUE_DATE_TYPE" label="到期状态" width="150"> + <template #default="{ row }"> + <span v-if="row.DUE_DATE_TYPE===1">未到期</span> + <span v-else-if="row.DUE_DATE_TYPE===0">已到期</span> + <span v-else-if="row.DUE_DATE_TYPE===2">即将到期</span> + </template> + </el-table-column> + <el-table-column prop="ARCHIVES_TYPE" label="档案状态" width="150"/> + <el-table-column prop="CREATTIME" label="创建时间" width="150"/> + <el-table-column prop="OPERATTIME" label="修改时间" width="150"/> + <el-table-column label="操作" width="250"> + <template #default="{ row }"> + <el-button + type="primary" + text + link + @click="router.push({path: '/mechanical_files/insure/view',query: { INSURE_ID: row.INSURE_ID },})"> + 查看 + </el-button> + <el-button + type="primary" + text + link + @click="router.push({path: '/mechanical_files/insure/edit',query: { INSURE_ID: row.INSURE_ID },})"> + 编辑 + </el-button> + <el-button + type="primary" + text + link + @click="fnDelete(row.INSURE_ID)"> + 删除 + </el-button> + <el-button + v-if="row.REMINDER_STATUS==='0'" + type="primary" + text + link + @click="fnStatusChange(row.INSURE_ID,'1')"> + 开启 + </el-button> + <el-button + v-if="row.REMINDER_STATUS==='1'" + type="primary" + text + link + @click="fnStatusChange(row.INSURE_ID,'0')"> + 关闭 + </el-button> + </template> + </el-table-column> + <template #button> + <el-button + v-if="buttonJurisdiction.add" + type="primary" + @click="router.push({ path: '/mechanical_files/insure/add' })"> + 新增 + </el-button> + </template> + </layout-table> + </layout-card> + <export-excel + v-model:visible="data.exportExcelDialog.visible" + :search-form="searchForm" + :ids="data.exportExcelDialog.ids" + /> + </div> +</template> + +<script setup> + import { useRouter } from "vue-router"; + import { serialNumber ,translationStatus} from "@/assets/js/utils"; + import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js"; + import useListData from "@/assets/js/useListData.js"; + import { getInsureList ,setInsureDelete,setInsureEdit2} from "@/request/mechanical_files.js"; + import ExportExcel from "./components/export_excel.vue"; + import { reactive } from "vue"; + import { debounce } from "throttle-debounce"; + import { ElMessageBox ,ElMessage} from "element-plus"; + import {OPERATING_VEHICLE_TYPE_LIST,DUE_STATUS_LIST,REMINDER_STATUS_LIST} from "@/assets/js/constant.js" + const router = useRouter(); + const data = reactive({ + exportExcelDialog: { + visible: false, + ids: [], + }, + }); + const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } = + useListData(getInsureList); + const fnGetDataTransfer = () => { + fnGetData({ + PLATE_NUMBER: searchForm.value.PLATE_NUMBER, + CAR_OWNERS: searchForm.value.CAR_OWNERS, + REGISTRANT: searchForm.value.REGISTRANT, + DUE_DATE: searchForm.value.DUE_DATE, + VEHICLE_MODEL: searchForm.value.VEHICLE_MODEL, + DUE_DATE_TYPE: searchForm.value.DUE_DATE_TYPE, + REMINDER_STATUS:searchForm.value.REMINDER_STATUS, + PROCESSING_DATE_YEAR:searchForm.PROCESSING_DATE_YEAR + }); + }; + const fnResetPaginationTransfer = () => { + fnResetPagination({ + PLATE_NUMBER: searchForm.value.PLATE_NUMBER, + CAR_OWNERS: searchForm.value.CAR_OWNERS, + REGISTRANT: searchForm.value.REGISTRANT, + DUE_DATE: searchForm.value.DUE_DATE, + VEHICLE_MODEL: searchForm.value.VEHICLE_MODEL, + DUE_DATE_TYPE: searchForm.value.DUE_DATE_TYPE, + REMINDER_STATUS:searchForm.value.REMINDER_STATUS, + PROCESSING_DATE_YEAR:searchForm.value.PROCESSING_DATE_YEAR + }); + }; + const fnDelete = debounce( + 1000, + async (INSURE_ID) => { + await ElMessageBox.confirm("确定要删除吗?", { type: "warning" }); + await setInsureDelete({ INSURE_ID }); + ElMessage.success("删除成功"); + fnResetPaginationTransfer(); + }, + { atBegin: true } + ); + const fnStatusChange = debounce( + 1000, + async (INSURE_ID,REMINDER_STATUS) => { + const msg = REMINDER_STATUS==='0'?'关闭':'开启' + await ElMessageBox.confirm("确定要"+msg+"提醒吗?", { type: "warning" }); + await setInsureEdit2({ INSURE_ID ,REMINDER_STATUS}); + ElMessage.success(msg+"成功"); + fnResetPaginationTransfer(); + }, + { atBegin: true } + ); + const buttonJurisdiction = await useButtonJurisdiction("hidden"); + const fnExport = () => { + const selectionData = tableRef.value.getSelectionRows(); + data.exportExcelDialog.ids = selectionData.map((item) => item.INSURE_ID); + data.exportExcelDialog.visible = true; + }; +</script> + +<style scoped></style> diff --git a/src/views/mechanical_files/insure/view.vue b/src/views/mechanical_files/insure/view.vue new file mode 100644 index 0000000..ccec82b --- /dev/null +++ b/src/views/mechanical_files/insure/view.vue @@ -0,0 +1,141 @@ +<template> + <layout-card> + <div id="printContainer"> + <el-divider content-position="left">{{ data.busInfo.PLATE_NUMBER }}车辆档案</el-divider> + <el-descriptions :column="2" border> + <el-descriptions-item label-class-name="width_200" label="登记编号"> + {{ info.NUM }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="车牌号"> + {{ data.busInfo.PLATE_NUMBER }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="车架号"> + {{ data.busInfo.VIN }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="车辆类型"> + {{ data.busInfo.TRAILER_TYPE }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="车辆品牌"> + {{ data.busInfo.VEHICLE_BRAND }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="车辆型号"> + {{ data.busInfo.VEHICLE_MODEL }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="车主业户"> + {{ data.busInfo.CAR_OWNERS }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="联系电话"> + {{ data.busInfo.CAR_OWNERS_TEL }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="初登日期"> + {{ data.busInfo.INITIAL_REGISTRATION_DATE }} + </el-descriptions-item> + </el-descriptions> + <el-divider content-position="left">年检信息</el-divider> + <el-descriptions :column="2" border> + <el-descriptions-item label-class-name="width_200" label="登记人"> + {{ info.REGISTRANT }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="保险公司"> + {{ info.INSURANCE_COMPANY_NAME }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="保险项目"> + {{ info.INSURANCE_COVERAGE }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="办理日期"> + {{ info.PROCESSING_DATE }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="提醒天数"> + {{ info.REMINDER_DAYS }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="提醒日期"> + {{ info.REMINDER_DATE }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="生效日期"> + {{ info.EFFECTIVE_DATE }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="生效日期"> + {{ info.DUE_DATE }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="保险全费"> + {{ info.ALL_FEES }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="净费实收"> + {{ info.ACTUAL_COLLECTION }} + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="保险资料" span="2"> + <img + v-for="item in info.INSUREINFO" + :key="item.FILEPATH" + v-viewer + :src="item.url" + width="100" + height="100" + alt="" + class="ml-10" + /> + </el-descriptions-item> + <el-descriptions-item label-class-name="width_200" label="备注" span=2> + {{ info.NOTES }} + </el-descriptions-item> + </el-descriptions> + + </div> + <div class="mt-10 tc"> + <el-button v-print="'#printContainer'" type="primary">打印</el-button> + </div> + <div v-html="PRINT_STYLE" /> + </layout-card> +</template> + +<script setup> + import { ref ,reactive} from "vue"; + import { getInsureView, getTrailerList} from "@/request/mechanical_files.js"; + import {layoutFnGetInsuranceCompany} from "@/assets/js/data_dictionary.js" + import { useRoute } from "vue-router"; + import { addingPrefixToFile } from "@/assets/js/utils.js"; + const route = useRoute(); + const INSURE_ID = route.query; + const info = ref({}); + const data = reactive({ + busInfo:{ + NUM:'', + PLATE_NUMBER:'', + VIN:'', + TRAILER_TYPE:'', + VEHICLE_MODEL:'', + VEHICLE_BRAND:'', + CAR_OWNERS:'', + CAR_OWNERS_TEL:'', + INITIAL_REGISTRATION_DATE:'', + } + }); + const insuranceCompanyList = await layoutFnGetInsuranceCompany() + const fnBusChange = async (event) => { + const resData = await getTrailerList({ID:event}) + data.busInfo = resData.list[0] + }; + const fnGetData = async () => { + if (!INSURE_ID) return; + const resData = await getInsureView(INSURE_ID); + info.value = resData.pd; + fnBusChange(resData.pd.VEHICLE) + info.value.INSUREINFO = addingPrefixToFile( + resData.insureinfoImgs + ); + const list = insuranceCompanyList._rawValue + for(let i=0;i<list.length;i++){ + const _item = list[i] + if(info.value.INSURANCE_COMPANY === _item.DICTIONARIES_ID){ + info.value.INSURANCE_COMPANY_NAME = _item.NAME + } + } + }; + fnGetData(); +</script> + +<style lang="scss" scoped> + .width_200{ + width: 200px; + } +</style>