新增车次大修改

This commit is contained in:
ljx 2024-06-11 10:57:30 +08:00
parent 6ece4a8bfd
commit 2bad6201fa
1 changed files with 172 additions and 193 deletions

View File

@ -60,106 +60,50 @@
<div class="right-line"></div> <div class="right-line"></div>
</div> </div>
<div v-if="formOptions.data.is_oil == 1"> <div v-if="formOptions.data.is_oil == 1">
<vxe-form :data="formOptions.data.oil_consumption" :title-width="formOptions.titleWidth" <vxe-form :data="formOptions.data.oil_consumption" :title-width="formOptions.titleWidth" :rules="formOptions2.formRules"
:title-align="formOptions.titleAlign"> :title-align="formOptions.titleAlign" ref="xForm2">
<vxe-form-item v-for="(item,index) in formOptions2.items" :title="item.title" :field="item.field" :span="item.span" :key="index" :item-render="item.itemRender"> <vxe-form-item v-for="(item,index) in formOptions2.items" :title="item.title" :field="item.field" :span="item.span" :key="index" :item-render="item.itemRender">
</vxe-form-item> </vxe-form-item>
</vxe-form> </vxe-form>
</div> </div>
</div>
<div class="mk-toolbar" v-if="isEdit">
</div> </div>
<div class="tablebox" > <div class="tablebox" >
<div class="Htitle" style="margin-bottom: 20px;"> <div class="Htitle" style="margin-bottom: 20px;">
<div class="left-line"></div> <div class="left-line"></div>
<p class="Htitle-p">维修信息</p> <p class="Htitle-p">维修信息</p>
<div style="padding-right: 10px;"><vxe-button size="small" @click="addItem('maintenance')" status="primary" content="新增维修信息"></vxe-button></div>
<div class="right-line"></div> <div class="right-line"></div>
</div> </div>
<vxe-table border show-overflow keep-source ref="xTable1" :data="formOptions.data.maintenance" <div v-for="(item,index) in formOptions.data.maintenance" :key="'maintenance'+index">
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false }"> <vxe-form :data="item" :title-width="formOptions.titleWidth" :title-align="formOptions.titleAlign" :items="maintenanceOptions.items" @submit="deleteItem('maintenance',index)">
<vxe-column width="60"> </vxe-form>
<template #default="{ row }"> </div>
<div style="font-size: 18px;">
<a @click.stop="pageAdd(row,'maintenance','xTable1')" title="新增" style="margin-right: 5px;">
<a-icon type="plus-circle" />
</a>
<a @click.stop="pageDelete(row,'maintenance','xTable1')" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="maintenance_date" title="日期" :edit-render="{ name: '$input',props: { type: 'date' }}"></vxe-column>
<vxe-column field="maintenance_name" title="维修项目" :params="editorMaintenance" :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="maintenance_price" title="维修金额" formatter="formatNumber" :edit-render="{ name: '$input',props: { type: 'number' } }"></vxe-column>
<vxe-column field="maintenance_description" title="维修内容" :edit-render="{ name: '$input' }"></vxe-column>
</vxe-table>
</div> </div>
<div class="tablebox"> <div class="tablebox">
<div class="Htitle" style="margin-bottom: 20px;"> <div class="Htitle" style="margin-bottom: 20px;">
<div class="left-line"></div> <div class="left-line"></div>
<p class="Htitle-p">轮胎更换信息</p> <p class="Htitle-p">轮胎更换信息</p>
<div style="padding-right: 10px;"><vxe-button size="small" @click="addItem('tire')" status="primary" content="新增其他费用"></vxe-button></div>
<div class="right-line"></div> <div class="right-line"></div>
</div> </div>
<vxe-table border show-overflow keep-source ref="xTable2" :data="formOptions.data.tire" <div v-for="(item,index) in formOptions.data.tire" :key="'tire'+index">
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false }"> <vxe-form :data="item" :title-width="formOptions.titleWidth" :title-align="formOptions.titleAlign" :items="tireOptions.items" @submit="deleteItem('tire',index)">
<vxe-column width="60"> </vxe-form>
<template #default="{ row }"> </div>
<div style="font-size: 18px;">
<a @click.stop="pageAdd(row,'tire','xTable2')" title="新增" style="margin-right: 5px;">
<a-icon type="plus-circle" />
</a>
<a @click.stop="pageDelete(row,'tire','xTable2')" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="tire_date" title="轮胎更换日期" :edit-render="{ name: '$input',props: { type: 'date' }}"></vxe-column>
<vxe-column field="tire_type" title="轮胎更换类型" :edit-render="{ name: '$select',options:[{ value: '更换', label: '更换' },{ value: '补胎', label: '补胎' }],events: { change:valuechange } }"></vxe-column>
<vxe-column field="old_tire_number" title="旧轮胎胎号" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="tire_number" title="新轮胎胎号" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="tire_brand" title="轮胎品牌" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="tire_price" title="轮胎更换费用金额" formatter="formatNumber" :edit-render="{ name: '$input',props: { type: 'number' } }"></vxe-column>
<vxe-column field="tire_remark" title="备注" :edit-render="{ name: '$input' }"></vxe-column>
</vxe-table>
</div> </div>
<div class="tablebox" v-if="!formOptions.data.id">
<div class="tablebox" v-if="!formOptions.data.id">
<div class="Htitle" style="margin-bottom: 20px;"> <div class="Htitle" style="margin-bottom: 20px;">
<div class="left-line"></div> <div class="left-line"></div>
<p class="Htitle-p">其他费用</p> <p class="Htitle-p">其他费用</p>
<div style="padding-right: 10px;"><vxe-button size="small" @click="addItem('other_expenses_log')" status="primary" content="新增其他费用"></vxe-button></div>
<div class="right-line"></div> <div class="right-line"></div>
</div> </div>
<vxe-table border show-overflow keep-source ref="xTable" :data="formOptions.data.other_expenses_log" <div v-for="(item,index) in formOptions.data.other_expenses_log" :key="'other_expenses_log'+index">
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, }"> <vxe-form :data="item" :title-width="formOptions.titleWidth" :title-align="formOptions.titleAlign" :items="otherExpensesLogOptions.items" @submit="deleteItem('other_expenses_log',index)">
<vxe-column width="60"> </vxe-form>
<template #default="{ row }"> </div>
<div style="font-size: 18px;">
<a @click.stop="pageAdd(row,'other_expenses_log','xTable')" title="新增" style="margin-right: 5px;">
<a-icon type="plus-circle" />
</a>
<a @click.stop="pageDelete(row,'other_expenses_log','xTable')" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="other_expenses_date" title="日期" :edit-render="{ name: '$input',props: { type: 'date' }}"></vxe-column>
<vxe-column field="other_expenses_name" title="费用项目名称" :params="editorOther" :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="other_expenses_amount" title="费用金额" formatter="formatNumber" :edit-render="{ name: '$input',props: { type: 'number' } }"></vxe-column>
<vxe-column field="other_expenses_remark" title="备注" :edit-render="{ name: '$input' }"></vxe-column>
</vxe-table>
</div> </div>
<vxe-form :data="formOptions.data" ref="xForm2" :title-width="formOptions.titleWidth" <vxe-form :data="formOptions.data" :title-width="formOptions.titleWidth"
:title-align="formOptions.titleAlign" :rules="formOptions.rules" titleColon> :title-align="formOptions.titleAlign" :rules="formOptions.rules" titleColon>
<!-- =========================== 自定义区域 Start ======================= --> <!-- =========================== 自定义区域 Start ======================= -->
<vxe-form-item v-for="(item,index) in formOptions3.items" :title="item.title" :field="item.field" :span="item.span" :key="index" :item-render="item.itemRender"> <vxe-form-item v-for="(item,index) in formOptions3.items" :title="item.title" :field="item.field" :span="item.span" :key="index" :item-render="item.itemRender">
@ -234,36 +178,6 @@ export default {
keyName: 'id', keyName: 'id',
// //
isEdit: false, isEdit: false,
editorOther: {
name: "OtherExpenses",
modelName: "OtherExpenses",
listdataFieldName:'OtherExpenses',
columns: [
{ field: 'name', title: '名称' },
{ field: 'code', title: '编号' }
],
dataType:'string',
placeholder: "请输入名称或者编号",
searchFieldNames: ['name'],
textField: 'name',
freeChange: true,
dataUrl: `${BASE_URL.BASE_URL}/Maintenance/v1/other/expenses/list`
},
editorMaintenance: {
name: "Maintenance",
modelName: "Maintenance",
listdataFieldName:'Maintenance',
columns: [
{ field: 'name', title: '名称' },
{ field: 'code', title: '编号' }
],
dataType:'string',
placeholder: "请输入名称或者编号",
searchFieldNames: ['name'],
textField: 'name',
freeChange: true,
dataUrl: `${BASE_URL.BASE_URL}/Maintenance/v1/maintenance/list`
},
// //
formOptions: { formOptions: {
data: { data: {
@ -323,23 +237,9 @@ export default {
oil_consumption_remark:null, oil_consumption_remark:null,
oil_consumption_date:null, oil_consumption_date:null,
}, },
other_expenses_log:[{ other_expenses_log:[],
other_expenses_amount:null, maintenance:[],
other_expenses_name: "", tire:[],
other_expenses_remark: ""
}],
maintenance:[{
maintenance_price:null,
maintenance_name: "",
maintenance_remark: ""
}],
tire:[{
old_tire_number:null,
tire_number:'',
tire_brand:'',
tire_price:null,
tire_remark:''
}],
train_number:[], train_number:[],
is_customer_settlement:0, // is_customer_settlement:0, //
is_supplier_settlement:0, // is_supplier_settlement:0, //
@ -680,6 +580,12 @@ export default {
] ]
}, },
formOptions2:{ formOptions2:{
formRules:{
oil_consumption_number:[ { required: true, message: '请输入油耗数量'}],
oil_consumption_price:[ { required: true, message: '请输入油耗单价'}],
oil_consumption_total_price:[ { required: true, message: '请输入油耗总价'}],
oil_consumption_date:[ { required: true, message: '请选择加油日期'}],
},
items: [ items: [
{field: "oil_consumption_number", title: '油耗数量', span: 6, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber,blur:this.handleOilTotalPrice } }}, {field: "oil_consumption_number", title: '油耗数量', span: 6, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber,blur:this.handleOilTotalPrice } }},
{field: "oil_consumption_price", title: '油耗单价', span: 6, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber,blur:this.handleOilTotalPrice } }}, {field: "oil_consumption_price", title: '油耗单价', span: 6, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber,blur:this.handleOilTotalPrice } }},
@ -687,7 +593,6 @@ export default {
{ {
field: 'oil_consumption_date', field: 'oil_consumption_date',
dataRule: {type: "timestamp"}, dataRule: {type: "timestamp"},
isNeedOutbound:true,
title: '加油日期', title: '加油日期',
span: 6, span: 6,
itemRender: {name: '$input', props: {type: "date"}} itemRender: {name: '$input', props: {type: "date"}}
@ -794,11 +699,74 @@ export default {
items: [ items: [
{field:'',title:'',span:24,isTitle:true,Htitle:'司机补贴',itemRender:{}},//线 {field:'',title:'',span:24,isTitle:true,Htitle:'司机补贴',itemRender:{}},//线
{field: 'driver_salary', title: '司机工资',isNeedOutbound:true, span: 12, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}}, {field: 'driver_salary', title: '司机工资', span: 12, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'driver_subsidy', title: '补贴金额', span: 12, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}}, {field: 'driver_subsidy', title: '补贴金额', span: 12, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'driver_subsidy_remark', title: '补贴备注', span: 24, itemRender: {name: '$textarea'}}, {field: 'driver_subsidy_remark', title: '补贴备注', span: 24, itemRender: {name: '$textarea'}},
] ]
}, },
maintenanceOptions:{
items: [
{field:'maintenance_date',title:'维修日期',span:6, itemRender:{name:'$input',props:{type:'date'}}},
{field:'maintenance_name',title:'维修项目',span:6,
itemRender: {
name: 'MkFormDataSelector', props: {
params: {
dataType: "string",
valueField: "id",
textField: "name",
listdataFieldName: 'Maintenance',
dataUrl: `${BASE_URL.BASE_URL}/Maintenance/v1/maintenance/list`
}
}
}},
{field:'maintenance_price',title:'维修费',span:4,itemRender:{name:'$input',props:{type:'number'},events:{input:this.handleInputNumber}}},
{field:'maintenance_description',title:'维修内容',span:6,itemRender:{name:'$input'}},
{
align: 'left', span: 2, itemRender: { //
name: '$buttons', children: [{ props: { type: 'submit', content: '删除', status: 'danger' } }]
}
}
]
},
tireOptions:{
items: [
{field:'tire_date',title:'轮胎更换日期',span:4, itemRender:{name:'$input',props:{type:'date'}}},
{field:'tire_type',title:'轮胎更换类型',span:3,itemRender:{ name: '$select', props: {options:[{value:"更换",label:"更换"},{value:"补胎",label:"补胎"}] }}},
{field:'old_tire_number',title:'旧轮胎胎号',span:3,itemRender:{name:'$input',props:{type:'text'}}},
{field:'tire_number',title:'新轮胎胎号',span:3,itemRender:{name:'$input',props:{type:'text'}}},
{field:'tire_brand',title:'轮胎品牌',span:3,itemRender:{name:'$input',props:{type:'text'}}},
{field:'tire_price',title:'轮胎更换费用',span:3,itemRender:{name:'$input',props:{type:'number'}}},
{field:'tire_remark',title:'备注',span:3,itemRender:{name:'$input',props:{type:'text'}}},
{
align: 'left', span: 2, itemRender: { //
name: '$buttons', children: [{ props: { type: 'submit', content: '删除', status: 'danger' } }]
}
}
]
},
otherExpensesLogOptions:{
items: [
{field:'other_expenses_date',title:'日期',span:6,itemRender:{name:'$input',props:{type:'date'}}},
{field:'other_expenses_name',title:'费用项目',span:6,
itemRender: {
name: 'MkFormDataSelector', props: {
params: {
dataType: "string",
valueField: "id",
textField: "name",
listdataFieldName: 'OtherExpenses',
dataUrl: `${BASE_URL.BASE_URL}/Maintenance/v1/other/expenses/list`
}
}
}},
{field:'other_expenses_amount',title:'费用金额',span:4,itemRender:{name:'$input',props:{type:'number'},events:{input:this.handleInputNumber}}},
{field:'other_expenses_remark',title:'费用备注',span:6,itemRender:{name:'$input'}},
{
align: 'left', span: 2, itemRender: { //
name: '$buttons', children: [{ props: { type: 'submit', content: '删除', status: 'danger' } }]
}
}]
},
// //
addModeItems: [], addModeItems: [],
tableData: [ tableData: [
@ -861,28 +829,13 @@ export default {
// =============================== End =============================== // =============================== End ===============================
this.formOptions.data = a.data[this.detailDataFieldName]; this.formOptions.data = a.data[this.detailDataFieldName];
if(!this.formOptions.data.maintenance){ if(!this.formOptions.data.maintenance){
this.formOptions.data.maintenance = [{ this.formOptions.data.maintenance = []
maintenance_price:null,
maintenance_name: "",
maintenance_remark: ""
}]
} }
if(!this.formOptions.data.other_expenses_log){ if(!this.formOptions.data.other_expenses_log){
this.formOptions.data.other_expenses_log = [{ this.formOptions.data.other_expenses_log = []
other_expenses_amount:null,
other_expenses_name: "",
other_expenses_remark: ""
}]
} }
if(!this.formOptions.data.tire){ if(!this.formOptions.data.tire){
this.formatFormData.data.tire=[{ this.formatFormData.data.tire=[]
old_tire_number:'',
tire_number:'',
tire_brand:'',
tire_price:0,
tire_remark:'',
tire_date:''
}]
} }
}).catch((a) => { }).catch((a) => {
@ -997,6 +950,12 @@ export default {
deleteTrainNumber(index){ deleteTrainNumber(index){
this.formOptions.data.train_number.splice(index,1) this.formOptions.data.train_number.splice(index,1)
}, },
addItem(field){
this.formOptions.data[field].push({});
},
deleteItem(field,index){
this.formOptions.data[field].splice(index,1)
},
// //
pageAdd(row,field,table) { pageAdd(row,field,table) {
const $table = this.$refs[table] const $table = this.$refs[table]
@ -1125,34 +1084,13 @@ export default {
// this.formOptions.data.outsourcing_driver_phone // this.formOptions.data.outsourcing_driver_phone
this.formOptions.data.outsourcing_driver_phone = String(this.formOptions.data.outsourcing_driver_phone) this.formOptions.data.outsourcing_driver_phone = String(this.formOptions.data.outsourcing_driver_phone)
// 2018-01-01 // 2018-01-01
this.formOptions.data.oil_consumption.oil_consumption_date = new Date(this.formOptions.data.oil_consumption.oil_consumption_date).getTime() / 1000 // this.formOptions.data.oil_consumption.oil_consumption_date = new Date(this.formOptions.data.oil_consumption.oil_consumption_date).getTime() / 1000
// //
let action = !this.isEdit ? this.actions.create : this.actions.update; let action = !this.isEdit ? this.actions.create : this.actions.update;
// id id // id id
this.formOptions.data.other_expenses_log.forEach(item => {
item.other_expenses_amount = Number(item.other_expenses_amount)
if(item.other_expenses_date){
let date = item.other_expenses_date.replace('-','.')
item.other_expenses_date = new Date(date).getTime() / 1000
}
})
this.formOptions.data.tire.forEach(item => {
item.tire_price = Number(item.tire_price)
if(item.tire_date){
let date = item.tire_date.replace('-','.')
item.tire_date = new Date(date).getTime() / 1000
}
// item.tire_date = new Date(item.tire_date).getTime() / 1000
})
this.formOptions.data.maintenance.forEach(item => {
item.maintenance_price = Number(item.maintenance_price)
if(item.maintenance_date){
let date = item.maintenance_date.replace('-','.')
item.maintenance_date = new Date(date).getTime() / 1000
}
})
// //
if(this.formOptions.data.is_outsourcing == 0){ if(this.formOptions.data.is_outsourcing == 0){
this.formOptions.data.outsourcing_truck_number = null; this.formOptions.data.outsourcing_truck_number = null;
@ -1170,41 +1108,73 @@ export default {
this.formOptions.data.driver_name = null; this.formOptions.data.driver_name = null;
this.formOptions.data.driver_id = null; this.formOptions.data.driver_id = null;
} }
let postdata = Object.assign({}, this.formOptions.data); let postdata = Object.assign({}, this.formOptions.data);
//null
if(postdata.maintenance.length == 1){
if(!postdata.maintenance[0].maintenance_date&& postdata.maintenance[0].maintenance_name == '' && postdata.maintenance[0].maintenance_price == 0){
postdata.maintenance = null
}
}
if(postdata.tire.length == 1){
if(!postdata.tire[0].tire_date && !postdata.tire[0].tire_type&& postdata.tire[0].tire_price == 0){
postdata.tire = null
}
}
if(postdata.other_expenses_log.length == 1){
if(!postdata.other_expenses_log[0].other_expenses_date && postdata.other_expenses_log[0].other_expenses_name == '' && postdata.other_expenses_log[0].other_expenses_amount == 0){
postdata.other_expenses_log = null
}
}
//null
if(postdata.maintenance!= null){
let error = postdata.maintenance.find(item => {
if(!item.maintenance_date || item.maintenance_name == '' || item.maintenance_price == 0){
this.$mk.error("请填写维护费用信息")
return false
}
})
console.log(error)
return error
}
// //
if (this.isEdit) { if (this.isEdit) {
// postdata = { TrainNumber: postdata } // postdata = { TrainNumber: postdata }
} }
// let maintenanceError = true,otherExpensesLogError = true,tireError = true;
postdata.maintenance.forEach(item => {
if(item.maintenance_date && item.maintenance_name && item.maintenance_price){
item.maintenance_price = Number(item.maintenance_price)
if(typeof(item.maintenance_date) == "string"){
let date = item.maintenance_date.replace('-','.')
item.maintenance_date = new Date(date).getTime() / 1000
}
maintenanceError = true
}else{
maintenanceError = false
}
})
postdata.tire.forEach(item => {
if(item.tire_date && item.tire_type && item.tire_number && item.tire_brand && item.tire_price){
item.tire_price = Number(item.tire_price)
if(typeof(item.tire_date) == "string"){
let date = item.tire_date.replace('-','.')
item.tire_date = new Date(date).getTime() / 1000
}
tireError = true
}else{
tireError = false
}
})
postdata.other_expenses_log.forEach(item => {
if(item.other_expenses_name && item.other_expenses_amount && item.other_expenses_date){
item.other_expenses_amount = Number(item.other_expenses_amount)
if(typeof(item.other_expenses_date) == "string"){
let date = item.other_expenses_date.replace('-','.')
item.other_expenses_date = new Date(date).getTime() / 1000
}
otherExpensesLogError = true
}else{
otherExpensesLogError = false
}
})
if(postdata.maintenance.length>0&&!maintenanceError){
this.$mk.error('维护信息日期,项目,维修费用不能为空')
return
}
if(postdata.tire.length>0&&!tireError){
this.$mk.error('轮胎信息日期,类型,胎号,项目,品牌,轮胎更换费用不能为空')
return
}
if(postdata.other_expenses_log.length>0&&!otherExpensesLogError){
this.$mk.error('其他费用信息日期,项目,金额不能为空')
return
}
console.log(postdata)
//
this.$mk.formatFormData({data: postdata.oil_consumption, rules: this.formOptions2.items});
// this.$mk.formatFormData({data: postdata.maintenance, rules: this.maintenanceOptions.items});
// this.$mk.formatFormData({data: postdata.other_expenses_log, rules: this.otherExpensesLogOptions.items});
// this.$mk.formatFormData({data: postdata.tire, rules: this.tireOptions.items});
this.$mk.formatFormData({data: postdata, rules: this.formOptions.items}); this.$mk.formatFormData({data: postdata, rules: this.formOptions.items});
@ -1229,6 +1199,15 @@ export default {
// //
this.$mk.validateForm({form: this.$refs.xForm}).then(() => { // this.$mk.validateForm({form: this.$refs.xForm}).then(() => { //
if(this.formOptions.data.is_oil){
//
this.$refs.xForm2.validate()
let data = this.formOptions.data.oil_consumption;
if(!data.oil_consumption_date || !data.oil_consumption_number || !data.oil_consumption_price){
this.$mk.error("请填写完整加油信息")
return
}
}
save(); // save(); //
}).catch(count => { // }).catch(count => { //
this.$mk.error(`存在${count}项错误,请检查`); this.$mk.error(`存在${count}项错误,请检查`);