You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

554 lines
21 KiB

<template>
<div class="app-container">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="handleCreate()">保存</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="dataForm" :model="temp" label-position="right" label-width="190px" class="formadd" :rules="rules">
<div class="title">合格证基础信息</div>
<el-row>
<el-col :span="12">
<el-form-item prop="certificationNo">
<span slot="label">合格证编号</span>
<el-input v-model="temp.certificationNo" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="certificateDate">
<span slot="label">发证日期:</span>
<el-date-picker v-model="temp.certificateDate" type="date" class="addinputw" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期时间"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop="certificateStateValue">
<span slot="label">合格证状态:</span>
<el-select v-model="temp.certificateState" :disabled="dialogStatus == 'add'" class="addinputw" placeholder="请选择合格证状态" @change="getHeGeZheng">
<el-option v-for="item in Situation" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="toCardDate">
<span slot="label">到证日期:</span>
<el-date-picker v-model="temp.toCardDate" type="date" class="addinputw" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期时间"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop="receiveDate">
<span slot="label">借用日期:</span>
<el-date-picker v-model="temp.receiveDate" type="date" class="addinputw" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期时间"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="receiver">
<span slot="label">借用人:</span>
<el-input v-model="temp.receiver" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>-->
<!-- <el-col :span="12">-->
<!-- <el-form-item prop="receiveDate">-->
<!-- <span slot="label">接收日期:</span>-->
<!-- <el-date-picker v-model="temp.acceptDate" type="date" class="addinputw" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期时间"/>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="12">-->
<!-- <el-form-item prop="receiver">-->
<!-- <span slot="label">接收人:</span>-->
<!-- <el-input v-model="temp.acceptName" maxlength="125" placeholder="" class="addinputw" clearable/>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row>
<el-col :span="12">
<el-form-item prop="remarks">
<span slot="label">移交状态:</span>
<el-select v-model="temp.transferStateKey" class="addinputw" clearable placeholder="请选择移交状态" @change="transferStateChange">
<el-option v-for="item in transferState_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="receiver" v-show="temp.certificateState == '0002'">
<span slot="label">公告型号:</span>
<el-input v-model="temp.noticeModel" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item prop="remarks">
<span slot="label">备注:</span>
<span>{{ temp.remarks }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item prop="certificatePhoto">
<span slot="label">合格证照片:</span>
<ImageUpload types="0001" style="float:left;" v-model="temp.certificatePhoto" @fileChange="fileChangeIt"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">合格证详细信息</div>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">车辆制造企业名称:</span>
<el-input v-model="temp.manufacturer" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item>
<span slot="label">车辆品牌:</span>
<el-input v-model="temp.carBrand" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span slot="label">车辆名称:</span>
<el-input v-model="temp.carName" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item>
<span slot="label">车辆型号:</span>
<el-input v-model="temp.carModel" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span slot="label">车架号:</span>
<el-input v-model="temp.vinNo" placeholder="" maxlength="17" clearable class="addinputw"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">车身颜色:</span>
<el-input v-model="temp.carColor" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item>
<span slot="label">底盘型号:</span>
<el-input v-model="temp.chassisModel" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span slot="label">底盘ID:</span>
<el-input v-model="temp.chassisId" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">发动机型号:</span>
<el-input v-model="temp.engineType" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">发动机号:</span>
<el-input v-model="temp.engineNo" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item>
<span slot="label">燃料种类:</span>
<el-input v-model="temp.fuelType" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<span slot="label">排量:</span>
<el-input v-model="temp.displacement" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<span slot="label">功率:</span>
<el-input v-model="temp.power" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">排放标准:</span>
<el-input v-model="temp.emissionStandard" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">轮胎数:</span>
<el-input v-model="temp.tyreNum" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">轴距:</span>
<el-input v-model="temp.wheelbase" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item>
<span slot="label">轴数:</span>
<el-input v-model="temp.axleNum" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span slot="label">转向型式:</span>
<el-input v-model="temp.steeringType" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item>
<span slot="label">总质量:</span>
<el-input v-model="temp.totalWeight" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span slot="label">整备质量:</span>
<el-input v-model="temp.saddleMass" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">驾驶室准乘人数:</span>
<el-input v-model="temp.seatingCapacity" maxlength="125" placeholder="" class="addinputwOne" clearable @keyup.native="temp.seatingCapacity = oninput(temp.seatingCapacity,2)"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">额定载客(人):</span>
<el-input v-model="temp.limitPassenger" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">最高设计车速:</span>
<el-input v-model="temp.speedLimit" maxlength="125" placeholder="" class="addinputwOne" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item>
<span slot="label">车辆制造日期:</span>
<el-date-picker v-model="temp.manufactureDate" type="date" format="yyyy-MM-dd" class="addinputwOne" value-format="yyyy-MM-dd" placeholder="选择日期时间"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item>
<span slot="label">合格印章:</span>
<el-input v-model="temp.qualifySeal" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span slot="label">CGS印章:</span>
<el-input v-model="temp.cgsseal" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-dialog center :visible.sync="dialogVisible" width="50%" :close-on-click-modal="false">
<el-form class="formadd">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="3" class="tleftb">
<span>说明原因</span>
</el-col>
<el-col :span="21">
<el-form-item><el-input v-model="smRemarks" type="textarea" :rows="3" maxlength="125" placeholder="" class="addinputw addinputw_remarks" clearable/></el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" size="small" @click="handleCreate">确 定</el-button>
<el-button size="small" @click="handleQuXiao"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { details, SaveList, Update } from '@/api/cheliang/basevehiclecertificate'
import { typeValues } from '@/api/cheliang/dictcommons'
import ImageUpload from '@/components/uploadFile/ManyImageUpload' // 上传文件
export default {
name: 'PinpaiAdd',
components: { ImageUpload },
data() {
return {
viewTitle: '',
dialogVisible: false,
smRemarks: '',
FormLoading: false,
listLoading: false,
temp: {
createOrgSid: '',
certificateSituation: '',
certificateSituationValue: '',
certificatePhoto: [],
certificateState: '004', // 合格证状态key
certificateStateValue: '正式', // 合格证状态value
noticeModel: '', // 公告型号
smRemarks: '',
carModel: ''
}, // 添加和修改
Situation: [],
transferState_list: [],
dialogFormVisible: false, // 添加修改对话框状态
dialogStatus: '', // 对话框状态
attachTypeYingyezhizhao: [],
rules: {
certificationNo: [
{ required: true, message: '请填写合格证编号', trigger: 'blur' }
],
certificateDate: [
{ required: true, message: '请选择发证日期', trigger: 'blur' }
],
certificateSituation: [
{ required: true, message: '请选择合格证情况', trigger: 'change' }
],
toCardDate: [
{ required: true, message: '请选择到证日期', trigger: 'blur' }
],
certificateState: [
{ required: true, message: '请选择合格证状态', trigger: 'change' }
],
certificateStateValue: [
{ required: true, message: '请选择合格证状态', trigger: 'change' }
]
}
}
},
created() {
this.setDate()
},
methods: {
setDate() {
// 合格证状态
typeValues({ type: 'certificateState' }).then((res) => {
console.log(res)
if (res.code === '200') {
this.Situation = res.data
}
})
// 移交状态
typeValues({ type: 'transferState' }).then((res) => {
console.log(res)
if (res.code === '200') {
this.transferState_list = res.data
}
})
},
showAdd(createOrgSid) {
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.dialogStatus = 'add'
this.viewTitle = '【新增】合格证信息'
this.temp.certificateState = '004'
this.temp.certificateStateValue = '正式'
this.temp.createOrgSid = createOrgSid
},
showEdit(sid, row, createOrgSid) {
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.viewTitle = '【编辑】合格证信息'
this.dialogStatus = 'update'
details(sid).then((resp) => {
if (resp.success) {
const data = resp.data
this.temp = data
this.temp.sid = sid
this.temp.createOrgSid = createOrgSid
}
}).catch(e => {
this.temp = row
})
},
// 输入数字正则
oninput(val, limit = 0) {
val = val.replace(/[^\d.]/g, '') // 保留数字
val = val.replace(/^00/, '0.') // 开头不能有两个0
val = val.replace(/^\./g, '0.') // 开头为小数点转换为0.
val = val.replace(/\.{2,}/g, '.') // 两个以上的小数点转换成一个
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); // 只保留一个小数点
/^0\d+/.test(val) ? val = val.slice(1) : '' // 两位以上数字开头不能为0
const str = '^(\\d+)\\.(\\d{' + limit + '}).*$'
const reg = new RegExp(str)
if (limit === 0) {
// 不需要小数点
val = val.replace(reg, '$1')
} else {
// 通过正则保留小数点后指定的位数
val = val.replace(reg, '$1.$2')
}
return val
},
// 合格证状态
getHeGeZheng(value) {
let bb = null
this.Situation.forEach(e => {
if (e.dictKey === value) {
bb = {
name: e.dictValue,
key: e.dictKey
}
}
})
this.temp.certificateStateValue = bb.name
console.log('value值', this.temp.certificateStateValue)
if (value == '0001') {
this.temp.noticeModel = ''
}
},
// 移交状态
transferStateChange(val) {
if (val) {
const choosetItem = this.transferState_list.filter((item) => item.dictKey === val)
this.temp.transferStateValue = choosetItem[0].dictValue
console.log('name:', this.temp.transferStateValue, 'key:', this.temp.transferStateKey)
}
},
// ----------------------------------方法--------------------
fileChangeIt(files, imgFiles) {
this.temp.certificatePhoto = imgFiles
},
// 提交添加数据
handleCreate() {
if (this.temp.vinNo !== '' && this.temp.vinNo !== null && this.temp.vinNo !== undefined && this.temp.vinNo.length < 17 && this.temp.vinNo.length !== 8) {
this.$message({ showClose: true, type: 'error', message: '请检查车架号的长度应为8位或17位' })
return
}
if (this.temp.certificateStateValue === '正式' && this.temp.carModel === '') {
this.$message({ showClose: true, type: 'error', message: '因合格证状态为正式,则车辆型号不能为空' })
return
}
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.FormLoading = true
if (this.dialogStatus === 'add') {
// this.temp.certificatePhoto = this.attachTypeYingyezhizhao
SaveList(this.temp).then((response) => {
this.FormLoading = false
if (response.success) {
this.dialogFormVisible = false
this.$notify({
title: '提示',
message: '添加成功',
type: 'success',
duration: 2000
})
this.handleReturn('true')
}
})
} else {
// this.temp.certificatePhoto = this.attachTypeYingyezhizhao
this.temp.smRemarks = this.smRemarks
Update(this.temp).then((response) => {
this.FormLoading = false
if (response.success) {
if (response.msg !== '该车架号后八位与车辆台账中车架号不符,请填写说明原因') {
this.dialogFormVisible = false
this.$notify({
title: '提示',
message: '修改成功',
type: 'success',
duration: 2000
})
this.handleReturn('true')
} else {
const tip = response.msg
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.smRemarks = ''
this.dialogVisible = true
})
}
}
})
}
}
})
},
handleQuXiao() {
this.smRemarks = ''
this.dialogVisible = false
},
// 返回
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.temp = {
certificateSituation: '',
certificateSituationValue: '',
certificatePhoto: [],
certificateState: '0002', // 合格证状态key
certificateStateValue: '正式', // 合格证状态value
smRemarks: ''
} // 添加和修改
this.dialogVisible = false
this.smRemarks = ''
this.$emit('doback')
}
}
}
</script>
<style scoped>
.formadd .el-row .el-col /deep/ .el-form-item .addinputw_remarks {
width: 92%;
}
.addinputwOne {
width: 33.5%;
}
</style>