优化手动创建配送单的功能

This commit is contained in:
2026-03-20 14:57:47 +08:00
parent 20404d715a
commit fc2ba058df

View File

@@ -159,7 +159,7 @@
</el-table> </el-table>
</el-dialog> </el-dialog>
<el-dialog title="添加配送单" v-model="openBill" append-to-body width="80%" :close-on-click-modal="false"> <el-dialog title="添加配送单" v-model="openBill" append-to-body width="80%" @close="cancel" :close-on-click-modal="false">
<div class="container"> <div class="container">
<el-form :model="delieryData" ref="form" :rules="rules" label-width="100"> <el-form :model="delieryData" ref="form" :rules="rules" label-width="100">
<el-divider content-position="left">配送信息</el-divider> <el-divider content-position="left">配送信息</el-divider>
@@ -355,9 +355,9 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="推荐车型" prop="vehicleTypeId"> <el-form-item label="推荐车型" v-for="(item, index) in delieryData.vehicleTypeNameList" :key="index">
<el-select v-model="delieryData.vehicleTypeId" placeholder="请选择推荐车型" clearable @change="changeCarType"> <el-select v-model="item.vehicleTypeId" placeholder="请选择推荐车型" @change="changeCarType($event, index)">
<el-option v-for="dict in carTypeList" :key="dict.id" :label="dict.typeName" :value="dict.id" /> <el-option v-for="dict in carTypeList" :key="dict.id" :label="dict.name" :value="dict.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -388,6 +388,7 @@
import { listOrder,detailOrder,calcTotalWv,calculate,addDelivery } from "@/api/waitDelivery/waitDelivery" import { listOrder,detailOrder,calcTotalWv,calculate,addDelivery } from "@/api/waitDelivery/waitDelivery"
import { listType } from "@/api/document/type" import { listType } from "@/api/document/type"
import {listUser} from "@/api/system/user"; //理货员 import {listUser} from "@/api/system/user"; //理货员
import { ref } from "vue";
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const orderList = ref([]) const orderList = ref([])
@@ -406,7 +407,6 @@ const goodsList = ref([])
const carTypeList = ref([]) //推荐车型下拉数据 const carTypeList = ref([]) //推荐车型下拉数据
const personList = ref([]); //理货员下拉数据 const personList = ref([]); //理货员下拉数据
const data = reactive({ const data = reactive({
form: {},
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
@@ -461,11 +461,12 @@ const data = reactive({
delieryData:{ delieryData:{
deliveryTon:null, //重量 deliveryTon:null, //重量
goodsSize:null, //体积 goodsSize:null, //体积
items:[] items:[],
vehicleTypeNameList:[{}]
}, },
}) })
const { queryParams, form,delieryData,rules } = toRefs(data) const { queryParams,delieryData,rules } = toRefs(data)
/** 查询配送单据主列表 */ /** 查询配送单据主列表 */
function getList() { function getList() {
@@ -535,46 +536,45 @@ function changeQty(){
} }
} }
function calculateFun(vehicleTypeId){ //根据重量、体积、公里数计算车型、费用
if(!delieryData.value.deliveryTon || !delieryData.value.goodsSize || !delieryData.value.totalKm){ function calculateFun(id) {
proxy.$modal.msgWarning("请输入公里数、重量、体积"); if (
return !delieryData.value.deliveryTon ||
} !delieryData.value.goodsSize ||
let info = { !delieryData.value.totalKm
weightTon:0, ) {
volumeM3:0, proxy.$modal.msgWarning("请输入公里数、重量、体积");
distanceKm:0, return;
vehicleTypeId:vehicleTypeId }
} let info = {
info.weightTon = delieryData.value.deliveryTon weightTon: 0,
info.volumeM3 = delieryData.value.goodsSize volumeM3: 0,
info.distanceKm = delieryData.value.totalKm distanceKm: 0,
if(vehicleTypeId){ };
info.vehicleTypeId = vehicleTypeId let hasVehicle = delieryData.value.vehicleTypeNameList.every(item => item.vehicleTypeId)
} if (hasVehicle) {
calculate(info).then(response=>{ info.vehicleTypeId = delieryData.value.vehicleTypeNameList.map(item => item.vehicleTypeId).join(',')
// 检查后端是否返回了错误信息 }
if(response.data.errorMessage) { info.weightTon = delieryData.value.deliveryTon;
// 如果有错误信息,显示给用户,并清空相关字段 info.volumeM3 = delieryData.value.goodsSize;
proxy.$modal.msgError(response.data.errorMessage); info.distanceKm = delieryData.value.totalKm;
if(!vehicleTypeId){ calculate(info).then((response) => {
delieryData.value.vehicleTypeId = null; // 检查后端是否返回了错误信息
} if (response.data.warningMessage) {
delieryData.value.suggestFee = null; proxy.$modal.msgError(response.data.warningMessage);
delieryData.value.vehicleTypeName = null; return;
} else { }
// 没有错误信息,正常处理返回的车型信息 if (response.data.bestPlan.length > 0 && !id) {
if(!vehicleTypeId){ delieryData.value.vehicleTypeNameList = response.data.bestPlan;
delieryData.value.vehicleTypeId = response.data.vehicleTypeId; }
} carTypeList.value = response.data.candidates;
delieryData.value.suggestFee = response.data.suggestFee; delieryData.value.suggestFee = response.data.suggestFee;
delieryData.value.vehicleTypeName = response.data.vehicleTypeName; delieryData.value.vehicleTypeName = response.data.vehicleTypeName;
} console.log(delieryData.value)
// console.log(response) });
})
} }
//切换车型 //切换车型
function changeCarType(id){ function changeCarType(id, index){
if(!delieryData.value.totalKm || !delieryData.value.deliveryTon || !delieryData.value.goodsSize){ if(!delieryData.value.totalKm || !delieryData.value.deliveryTon || !delieryData.value.goodsSize){
proxy.$modal.msgWarning("请输入公里数、重量、体积"); proxy.$modal.msgWarning("请输入公里数、重量、体积");
return return
@@ -584,42 +584,24 @@ function changeCarType(id){
// 取消按钮 // 取消按钮
function cancel() { function cancel() {
delieryData.value.originName = null;
delieryData.value.destName = null;
delieryData.value.shipperName = null;
delieryData.value.shipperPhone = null;
delieryData.value.receiverName = null;
delieryData.value.receiverPhone = null;
delieryData.value.receiverOrgName = null;
delieryData.value.deliveryDate = null;
delieryData.value.totalKm = null;
delieryData.value.vehicleTypeNameList = [{}];
delieryData.value.suggestFee = null;
goodsList.value = []
proxy.$refs["form"].resetFields()
openBill.value = false openBill.value = false
} }
// 表单重置 // 表单重置
function reset() { function reset() {
form.value = {
id: null,
xmMs: null,
xmNo: null,
wlNo: null,
wlMs: null,
realQty: null,
dw: null,
sapNo: null,
gysMc: null,
remark: null,
originName: null,
originLng: null,
originLat: null,
destName: null,
destLng: null,
destLat: null,
deliveryDate: null,
vehiclePlate: null,
shipperName: null,
shipperPhone: null,
receiverName: null,
receiverPhone: null,
receiverOrgName: null,
deliveryTon: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
isDelete: null
}
proxy.resetForm("orderRef") proxy.resetForm("orderRef")
} }
@@ -673,18 +655,26 @@ function statusFun(status){
/** 提交按钮 */ /** 提交按钮 */
function submitForm() { function submitForm() {
let hasVehicle = delieryData.value.vehicleTypeNameList.every(item => item.vehicleTypeId)
if (!hasVehicle) {
proxy.$modal.msgWarning('请选择配送车型')
return
}
proxy.$refs["form"].validate(valid => { proxy.$refs["form"].validate(valid => {
// console.log(delieryData.value) // console.log(delieryData.value)
// return // return
if (valid) { if (valid) {
let obj = JSON.parse(JSON.stringify(delieryData.value))
obj.vehicleTypeName = obj.vehicleTypeNameList.map(item => item.vehicleTypeName).join(',')
obj.vehicleTypeId = obj.vehicleTypeNameList.map(item => item.vehicleTypeId).join(',')
if(goodsList.value.length==0){ if(goodsList.value.length==0){
proxy.$modal.msgWarning("请添加货物信息"); proxy.$modal.msgWarning("请添加货物信息");
return return
} }
delieryData.value.items = goodsList.value obj.items = goodsList.value
// console.log(delieryData.value) // console.log(delieryData.value)
addDelivery(delieryData.value).then(response => { addDelivery(obj).then(response => {
proxy.$modal.msgSuccess("操作成功") proxy.$modal.msgSuccess("操作成功")
openBill.value = false openBill.value = false
getList() getList()
@@ -712,15 +702,14 @@ function handleExport() {
}, `order_${new Date().getTime()}.xlsx`) }, `order_${new Date().getTime()}.xlsx`)
} }
function handleAddBill(){ function handleAddBill(){
delieryData.value ={}
goodsList.value = []
openBill.value = true openBill.value = true
//车型下拉数据 //车型下拉数据
listType({pageNum:1,pageSize:1000}).then(response => { // listType({pageNum:1,pageSize:1000}).then(response => {
carTypeList.value = response.rows // carTypeList.value = response.rows
}) // })
//理货员下拉数据 //理货员下拉数据
listUser().then(response=>{ listUser().then(response=>{
personList.value = response.rows personList.value = response.rows