创建车次

This commit is contained in:
ljx 2024-03-19 14:41:50 +08:00
parent 3b88ecc5ba
commit d45c3e80fe
3 changed files with 9374 additions and 9282 deletions

View File

@ -238,7 +238,6 @@ export default {
}); });
} }
} }
return this.$mk.getPagedData({ return this.$mk.getPagedData({
url: this.actions.getList, url: this.actions.getList,
useBigInt: true, useBigInt: true,
@ -421,12 +420,13 @@ export default {
this.$emit('input', e.row[params.showField]); this.$emit('input', e.row[params.showField]);
} }
} else { } else {
this.$emit('input', [e.row.ID, e.row[textField]]); this.$emit('input', [e.row.id, e.row[textField]]);
} }
if (params.onDataChanged) { if (params.onDataChanged) {
params.onDataChanged({value: [e.row.ID, e.row[textField]], data: e.row}) console.log(e)
params.onDataChanged({value: [e.row.id, e.row[textField]], data: e.row})
} }
this.$refs.xDown.hidePanel() this.$refs.xDown.hidePanel()
}, },

View File

@ -1,37 +1,156 @@
<template> <template>
<page-layout :desc="desc"> <!-- <page-layout :desc="desc"> -->
<div class="page-body"> <div class="page-body">
<vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth" <vxe-form :data="formOptions.data" ref="xForm" :title-width="formOptions.titleWidth"
:title-align="formOptions.titleAlign" :rules="formOptions.rules" :items="formOptions.items" titleColon> :title-align="formOptions.titleAlign" :rules="formOptions.rules" titleColon>
<!-- =========================== 自定义区域 Start ======================= --> <!-- =========================== 自定义区域 Start ======================= -->
<vxe-form-item v-for="(item,index) in formOptions.items" :title="item.title" :field="item.field" :span="item.span" :key="index" :item-render="item.itemRender" :visible="isShow(item)">
<div v-if="item.isTitle" class="Htitle">
<div class="left-line"></div>
<p class="Htitle-p">
{{ item.Htitle }}
</p>
<div class="right-line"></div>
</div>
</vxe-form-item>
<!-- =========================== 自定义区域 End ======================= --> <!-- =========================== 自定义区域 End ======================= -->
</vxe-form> </vxe-form>
<div class="mk-toolbar" v-if="isEdit"> <div class="mk-toolbar" v-if="isEdit">
</div> </div>
<div class="tablebox" v-if="formOptions.data.is_repair == 1">
<div class="Htitle" style="margin-bottom: 20px;">
<div class="left-line"></div>
<p class="Htitle-p">维修信息</p>
<div class="right-line"></div>
</div>
<vxe-table border show-overflow keep-source ref="xTable1" :data="tableData"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false }">
<vxe-column width="60">
<template #default="{ row }">
<div style="font-size: 18px;">
<a @click.stop="pageAdd(row)" title="新增" style="margin-right: 5px;">
<a-icon type="plus-circle" />
</a>
<a @click.stop="pageDelete(row)" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="name" title="维修项目" :edit-render="{ name: '$input',props: { type: 'number' }}"></vxe-column>
<vxe-column field="name2" title="维修金额" formatter="formatNumber" :edit-render="{ name: '$input',props: { type: 'number' } }"></vxe-column>
<vxe-column field="age" title="维修内容" :edit-render="{ name: '$input' }"></vxe-column>
</vxe-table>
</div>
<div class="tablebox" v-if="formOptions.data.is_change_tire == 1">
<div class="Htitle" style="margin-bottom: 20px;">
<div class="left-line"></div>
<p class="Htitle-p">轮胎更换信息</p>
<div class="right-line"></div>
</div>
<vxe-table border show-overflow keep-source ref="xTable2" :data="tableData"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false }">
<vxe-column width="60">
<template #default="{ row }">
<div style="font-size: 18px;">
<a @click.stop="pageAdd(row)" title="新增" style="margin-right: 5px;">
<a-icon type="plus-circle" />
</a>
<a @click.stop="pageDelete(row)" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="name" title="旧轮胎胎号" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="name1" title="新轮胎胎号" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="name2" title="轮胎品牌" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="sex" title="轮胎更换费用金额" :edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column>
<vxe-column field="age" title="备注" :edit-render="{ name: '$input' }"></vxe-column>
</vxe-table>
</div>
<div class="tablebox" v-if="formOptions.data.is_oil == 1">
<div class="Htitle" style="margin-bottom: 20px;">
<div class="left-line"></div>
<p class="Htitle-p">加油信息</p>
<div class="right-line"></div>
</div>
<vxe-table border show-overflow keep-source ref="xTable3" :data="tableData"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, }">
<vxe-column width="60">
<template #default="{ row }">
<div style="font-size: 18px;">
<a @click.stop="pageAdd(row)" title="新增" style="margin-right: 5px;">
<a-icon type="plus-circle" />
</a>
<a @click.stop="pageDelete(row)" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="name" title="加油数量" :edit-render="{ name: '$input',props: { type: 'number' }}"></vxe-column>
<vxe-column field="name1" title="油费单价" formatter="formatNumber" :edit-render="{ name: '$input',props: { type: 'number' } }"></vxe-column>
<vxe-column field="name2" title="油费总价" :edit-render="{ name: '$input',props: { type: 'number' } }"></vxe-column>
<vxe-column field="age" title="备注" :edit-render="{ name: '$input' }"></vxe-column>
</vxe-table>
</div>
<div class="tablebox">
<div class="Htitle" style="margin-bottom: 20px;">
<div class="left-line"></div>
<p class="Htitle-p">其他费用</p>
<div class="right-line"></div>
</div>
<vxe-table border show-overflow keep-source ref="xTable" :data="formOptions.data.other_expenses_log"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, }">
<vxe-column width="60">
<template #default="{ row }">
<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_name" title="费用项目名称" :edit-render="{ name: '$input'}"></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 class="footerbar"> <div class="footerbar">
<a-button type="primary" @click="ok">确定</a-button> <a-button type="primary" @click="ok">确定</a-button>
<a-button @click="cancel">取消</a-button> <a-button @click="cancel">取消</a-button>
</div> </div>
</div> </div>
</page-layout> <!-- </page-layout> -->
</template> </template>
<script> <script>
import BASE_URL from '@/services/Middle/transport/TrainNumber/api.js'; import BASE_URL from '@/services/Middle/transport/TrainNumber/api.js';
import PageLayout from '@/layouts/PageLayout' // import PageLayout from '@/layouts/PageLayout'
export default { export default {
name: 'TrainNumberUpdate', name: 'TrainNumberUpdate',
i18n: require('./i18n'), i18n: require('./i18n'),
components: {PageLayout}, // components: {PageLayout},
props: { props: {
pageMode: { pageMode: {
type: String, type: String,
@ -89,14 +208,15 @@ export default {
outsourcing_driver_name: "", outsourcing_driver_name: "",
outsourcing_driver_phone: "", outsourcing_driver_phone: "",
is_need_outbound: 0, is_need_outbound: 0,
truck_id: 0, truck_name: null,
driver_id: 0, truck_id: null,
driver_id: null,
outbound_date: new Date(2100, 1, 1).getTime() / 10000, outbound_date: new Date(2100, 1, 1).getTime() / 10000,
return_date: new Date(2100, 1, 1).getTime() / 10000, return_date: new Date(2100, 1, 1).getTime() / 10000,
end_mileage: 0, end_mileage: 0,
driver_subsidy_remark: "", driver_subsidy_remark: "",
is_change_tire: 0, is_change_tire: 0,
tire_id: 0, tire_id: null,
is_repair: 0, is_repair: 0,
repair_id: 0, repair_id: 0,
is_oil: 0, is_oil: 0,
@ -116,11 +236,15 @@ export default {
customer_warehousing_tonnage: 0, customer_warehousing_tonnage: 0,
driver_salary: 0, driver_salary: 0,
driver_subsidy: 0, driver_subsidy: 0,
other_expenses_log:[{
other_expenses_amount:null,
other_expenses_name: "",
other_expenses_remark: ""
}],
// =============================== End =============================== // =============================== End ===============================
}, },
// //
titleWidth: 100, titleWidth: 125,
// //
titleAlign: 'right', titleAlign: 'right',
@ -246,36 +370,33 @@ export default {
// //
items: [ items: [
// =============================== Start =============================== // =============================== Start ===============================
{field:'',title:'',span:24,isTitle:true,Htitle:'车辆信息',itemRender:{}},//线
{field: 'code', title: '车次单号', span: 12, itemRender: {name: '$input'}}, {field: 'is_outsourcing', title: '是否委外', span: 3, itemRender: { name: '$switch', props: { openLabel: '是', openValue: 1, closeValue: 0, closeLabel: '否' } }},
{field: 'custom_id', title: '客户id', span: 12, itemRender: {name: '$input'}}, {field: 'outsourcing_truck_number',isOutsourcing:true, title: '委外车牌号', span: 7, itemRender: {name: '$input'}},
{field: 'custom_name', title: '客户名称', span: 12, itemRender: {name: '$input'}}, {field: 'outsourcing_driver_name',isOutsourcing:true, title: '委外司机姓名', span: 7, itemRender: {name: '$input'}},
{field: 'supplier_id', title: '供应商id', span: 12, itemRender: {name: '$input'}},
{field: 'supplier_name', title: '客户名称', span: 12, itemRender: {name: '$input'}},
{field: 'soil_quality_material_id', title: '物料品名id', span: 12, itemRender: {name: '$input'}},
{field: 'outbound_soil_quality_material_id', title: '出库物料土质id', span: 12, itemRender: {name: '$input'}},
{
field: 'warehousing_soil_quality_material_id',
title: '入库物料土质id',
span: 12,
itemRender: {name: '$input'}
},
{field: 'outbound_remark', title: '出车备注', span: 12, itemRender: {name: '$input'}},
{field: 'is_outsourcing', title: '是否委外', span: 12, itemRender: {name: '$input'}},
{field: 'outsourcing_truck_number', title: '委外车牌号', span: 12, itemRender: {name: '$input'}},
{field: 'outsourcing_driver_name', title: '委外司机姓名', span: 12, itemRender: {name: '$input'}},
{ {
field: 'outsourcing_driver_phone', field: 'outsourcing_driver_phone',
isOutsourcing:true,
title: '委外司机手机号', title: '委外司机手机号',
span: 12, span: 7,
itemRender: {name: '$input', props: {type: "number"}} itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}
}, },
{field: 'is_need_outbound', title: '是否需要出车', span: 12, itemRender: {name: '$input'}}, {field: 'truck_name', title: '选择车辆', span: 6, itemRender: {
{field: 'truck_id', title: '车辆id', span: 12, itemRender: {name: '$input'}}, name: 'MkFormDataSelector', props: {
{field: 'driver_id', title: '司机id', span: 12, itemRender: {name: '$input'}}, params: {
{ dataType: "string",
title: '司机', span: 12, valueField: "id",
field: 'driver_id', textField: "name",
listdataFieldName: 'Truck',
dataUrl: `${BASE_URL.BASE_URL}/Truck/v1/truck/list`,
onDataChanged: ({value,data}) => {
console.log(value,data)
this.formOptions.data.truck_id = data.id;
}
}
}
}},
{ field: 'driver_id',title: '司机', span: 6,
dataRule: { dataRule: {
fromField: "id", fromField: "id",
saveField: "driver_id" saveField: "driver_id"
@ -290,63 +411,141 @@ export default {
dataUrl: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/list`, dataUrl: `${BASE_URL.BASE_URL}/MesStaff/v1/mes/staff/list`,
onDataChanged: ({data}) => { onDataChanged: ({data}) => {
console.log(data) console.log(data)
this.pageOptions.formOptions.data.warehouse_mobile = data.phone; this.formOptions.data.warehouse_mobile = data.phone;
} }
} }
} }
} }
}, },
{field: 'driver_salary', title: '司机工资', span: 6, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'is_need_outbound', title: '是否需要出车', span: 6, itemRender: { name: '$switch', props: { openLabel: '是', openValue: 1, closeValue: 0, closeLabel: '否' } }},
{ {
field: 'outbound_date', field: 'outbound_date',
dataRule: {type: "timestamp"}, dataRule: {type: "timestamp"},
isNeedOutbound:true,
title: '出车日期', title: '出车日期',
span: 12, span: 6,
itemRender: {name: '$input', props: {type: "date"}} itemRender: {name: '$input', props: {type: "date"}}
}, },
{ {
field: 'return_date', field: 'return_date',
dataRule: {type: "timestamp"}, dataRule: {type: "timestamp"},
isNeedOutbound:true,
title: '回车日期', title: '回车日期',
span: 12, span: 6,
itemRender: {name: '$input', props: {type: "date"}} itemRender: {name: '$input', props: {type: "date"}}
}, },
{field: 'end_mileage', title: '结束公里数', span: 12, itemRender: {name: '$input', props: {type: "number"}}}, {field: 'end_mileage',isNeedOutbound:true, title: '结束公里数', span: 6, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'driver_subsidy_remark', title: '司机补贴备注', span: 12, itemRender: {name: '$input'}}, {field: 'outbound_mileage',isNeedOutbound:true,title: '出车公里数',span: 6,itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'is_change_tire', title: '是否更换轮胎', span: 12, itemRender: {name: '$input'}}, {field:'',title:'',span:24,isTitle:true,Htitle:'基础信息',itemRender:{}},//线
{field: 'other_id', title: '其他费用id', span: 12, itemRender: {name: '$input'}}, {field: 'code', title: '车次单号', span: 6, itemRender: {name: '$input'}},
{ {field: 'custom_name', title: '选择客户', span: 6, itemRender: {
field: 'outbound_mileage', name: 'MkFormDataSelector', props: {
title: '出车公里数', params: {
span: 12, dataType: "string",
itemRender: {name: '$input', props: {type: "number"}} valueField: "id",
}, textField: "name",
{field: 'unit_price', title: '单价', span: 12, itemRender: {name: '$input', props: {type: "number"}}}, listdataFieldName: 'Custom',
{field: 'total_price', title: '总价', span: 12, itemRender: {name: '$input', props: {type: "number"}}}, dataUrl: `${BASE_URL.BASE_URL}/Custom/v1/custom/list`,
{ actionParams:{
field: 'supplier_outbound_tonnage', search_rules: [
title: '供应商出库吨位', {
span: 12, "column": "type",
itemRender: {name: '$input', props: {type: "number"}} "mode": "=",
}, "value": "0"
{ }
field: 'customer_warehousing_tonnage', ],
title: '客户入库吨位', },
span: 12, onDataChanged: ({value,data}) => {
itemRender: {name: '$input', props: {type: "number"}} console.log(value,data)
}, this.formOptions.data.custom_id = data.id;
{field: 'driver_salary', title: '司机工资', span: 12, itemRender: {name: '$input', props: {type: "number"}}}, }
{field: 'driver_subsidy', title: '司机补贴', span: 12, itemRender: {name: '$input', props: {type: "number"}}}, }
{field: 'income', title: '收入', span: 8, itemRender: {name: '$input', props: {type: "number"}}}, }
{field: 'cost', title: '成本', span: 8, itemRender: {name: '$input', props: {type: "number"}}}, }},
{field: 'profit', title: '利润', span: 8, itemRender: {name: '$input', props: {type: "number"}}}, {field: 'supplier_name', title: '选择供应商', span: 6, itemRender: {
name: 'MkFormDataSelector', props: {
params: {
dataType: "string",
valueField: "id",
textField: "name",
listdataFieldName: 'Custom',
actionParams:{
search_rules: [
{
"column": "type",
"mode": "=",
"value": "1"
}
],
},
dataUrl: `${BASE_URL.BASE_URL}/Custom/v1/custom/list`,
onDataChanged: ({value,data}) => {
console.log(value,data)
this.formOptions.data.supplier_id = data.id;
}
}
}
}},
{field: 'soil_quality_material', title: '选择物料', span: 6, itemRender: {
name: 'MkFormDataSelector', props: {
params: {
dataType: "string",
valueField: "id",
textField: "name",
listdataFieldName: 'SoilQualityMaterial',
// actionParams:{
// search_rules: [
// {
// "column": "type",
// "mode": "=",
// "value": "1"
// }
// ],
// },
dataUrl: `${BASE_URL.BASE_URL}/SoilQualityMaterial/v1/soil/quality/material/list`,
onDataChanged: ({value,data}) => {
console.log(value,data)
this.formOptions.data.soil_quality_material_id = data.id;
}
}
}
}},
{field:'',title:'',span:24,isTitle:true,Htitle:'吨位消息',itemRender:{}},//线
{field: 'supplier_outbound_tonnage',title: '供应商出库吨位',span: 4,itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'outbound_soil_quality_material_id', title: '出库物料土质', span: 4, itemRender: {name: '$input'}},
{field: 'customer_warehousing_tonnage',title: '客户入库吨位',span: 4,itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'warehousing_soil_quality_material_id',title: '入库物料土质',span: 4, itemRender: {name: '$input'}},
{field: 'unit_price', title: '单价', span: 4, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber } }},
{field: 'total_price', title: '总价', span: 4, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'outbound_remark', title: '出车备注', span: 24, itemRender: {name: '$input'}},
{field:'',title:'',span:24,isTitle:true,Htitle:'司机补贴',itemRender:{}},//线
{field: 'driver_subsidy', title: '补贴金额', span: 6, itemRender: {name: '$input', props: {type: "number"}, events: { input: this.handleInputNumber }}},
{field: 'driver_subsidy_remark', title: '补贴备注', span: 18, itemRender: {name: '$input'}},
// {field: 'is_repair', title: '', span: 6,itemRender: { name: '$switch', props: { openLabel: '', openValue: 1, closeValue: 0, closeLabel: '' } }},
// {field: 'is_change_tire', title: '', span: 6,itemRender: { name: '$switch', props: { openLabel: '', openValue: 1, closeValue: 0, closeLabel: '' } }},
// {field: 'is_oil', title: '', span: 6,itemRender: { name: '$switch', props: { openLabel: '', openValue: 1, closeValue: 0, closeLabel: '' } }},
// {field: 'other_id', title: 'id', span: 12, itemRender: {name: '$input'}},
// {field: 'income', title: '', span: 8, itemRender: {name: '$input', props: {type: "number"}}},
// {field: 'cost', title: '', span: 8, itemRender: {name: '$input', props: {type: "number"}}},
// {field: 'profit', title: '', span: 8, itemRender: {name: '$input', props: {type: "number"}}},
// =============================== End =============================== // =============================== End ===============================
] ]
}, },
// //
addModeItems: [], addModeItems: [],
tableData: [
{}
]
}; };
@ -361,9 +560,9 @@ export default {
}, },
computed: { computed: {
// desc() { desc() {
// return this.$t('editPageDesc') return this.$t('editPageDesc')
// } }
}, },
@ -403,6 +602,13 @@ export default {
// =============================== End =============================== // =============================== End ===============================
this.formOptions.data = a.data[this.detailDataFieldName]; this.formOptions.data = a.data[this.detailDataFieldName];
if(!this.formOptions.data.other_expenses_log){
this.formOptions.data.other_expenses_log = [{
other_expenses_amount:null,
other_expenses_name: "",
other_expenses_remark: ""
}]
}
}).catch((a) => { }).catch((a) => {
this.$mk.error(a.data.msg); this.$mk.error(a.data.msg);
}); });
@ -450,7 +656,53 @@ export default {
// //
this.$openPage('/TrainNumber/TrainNumberList') this.$openPage('/TrainNumber/TrainNumberList')
}, },
isShow(item){
if(!item.isOutsourcing && !item.isNeedOutbound){
return true
}
if(item.isOutsourcing && this.formOptions.data.is_outsourcing == 1){
return true
}
if(item.isNeedOutbound && this.formOptions.data.is_need_outbound == 1){
return true
}else{
return false
}
},
//
pageAdd(row,field,table) {
const $table = this.$refs[table]
const record = {
}
if (row) {
this.formOptions.data[field].splice($table.getRowSeq(row), 0, record);
} else {
this.formOptions.data[field].push(record)
}
},
pageDelete(row,field,table) {
const $table = this.$refs[table];
if (this.formOptions.data[field].length == 1) {
this.$mk.error("至少保留一行");
return;
}
if (row.ID) {
this.deletedDetailsData.push({
Status: 'deleted',
ID: row.ID
})
}
this.formOptions.data[field].splice($table.getRowSeq(row) - 1, 1);
},
handleInputNumber(e){
if(e.field){
this.formOptions.data[e.field] = Number(this.formOptions.data[e.field])
}else{
return
}
},
// //
ok() { ok() {
@ -460,6 +712,12 @@ export default {
// //
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 => {
console.log(item)
item.other_expenses_amount = Number(item.other_expenses_amount)
})
let postdata = Object.assign({}, this.formOptions.data); let postdata = Object.assign({}, this.formOptions.data);
// //
if (this.isEdit) { if (this.isEdit) {
@ -487,7 +745,6 @@ export default {
}; };
// //
this.$mk.validateForm({form: this.$refs.xForm}).then(() => { // this.$mk.validateForm({form: this.$refs.xForm}).then(() => { //
save(); // save(); //
@ -540,4 +797,19 @@ export default {
height: 80px; height: 80px;
} }
} }
.Htitle{
font-weight: bold;
font-size: 16px;
color: #122ed1;
display: flex;
align-items: center;
width: 100%;
padding-left: 10px;
.Htitle-p{margin-bottom: 0;margin: 0 10px;}
.left-line{width: 40px;height: 1px;background-color:#122ed1;}
.right-line{flex-grow: 1;height: 1px;background-color:#122ed1;}
}
.tablebox{
padding: 10px 0;
}
</style> </style>

18228
yarn.lock

File diff suppressed because it is too large Load Diff