优化完成

This commit is contained in:
2026-03-19 15:20:48 +08:00
parent 045b52c98b
commit 74b927af66
5 changed files with 801 additions and 515 deletions

View File

@@ -4,8 +4,8 @@ VITE_APP_TITLE = 一公里配送
# 开发环境配置
VITE_APP_ENV = 'development'
# 若依管理系统/开发环境
VITE_APP_BASE_API = 'http://192.168.1.5:8087'
# 一公里配送/开发环境
VITE_APP_BASE_API = 'http://192.168.1.13:8088'
# VITE_APP_BASE_API = 'http://47.100.212.83:18088'
# VITE_APP_BASE_API = 'http://192.168.1.112:8086'

View File

@@ -4,7 +4,7 @@ VITE_APP_TITLE = 一公里配送
# 生产环境配置
VITE_APP_ENV = 'production'
# 若依管理系统/生产环境
# 一公里配送/生产环境
# VITE_APP_BASE_API = '/prod-api'
VITE_APP_BASE_API = 'http://47.100.212.83:18088'

View File

@@ -4,7 +4,7 @@ VITE_APP_TITLE = 一公里配送
# 生产环境配置
VITE_APP_ENV = 'staging'
# 若依管理系统/生产环境
# 一公里配送/生产环境
VITE_APP_BASE_API = '/stage-api'
# 是否在打包时开启压缩,支持 gzip 和 brotli

View File

@@ -77,8 +77,8 @@ const router = useRouter()
const { proxy } = getCurrentInstance()
const loginForm = ref({
username: "admin",
password: "admin123",
username: "",
password: "",
rememberMe: false,
code: "",
uuid: ""

View File

@@ -2,9 +2,13 @@
<div class="app-container">
<el-splitter>
<el-splitter-panel size="40%">
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="90">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
label-width="90"
>
<el-row>
<el-col :span="10">
<el-form-item label="单据号" prop="billNoCk">
<el-input
@@ -17,26 +21,70 @@
</el-col>
<el-col :span="14">
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button type="primary" icon="Search" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter="10"
class="mb8"
style="justify-content: flex-end; margin-right: 0"
>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="plus"
@click="delieryReceipt()"
:disabled="multipleBill"
>生成配送单</el-button
>
</el-col>
<!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> -->
</el-row>
</el-form>
<el-table v-loading="loading" highlight-current-row :data="billList" @row-dblclick="billClick" >
<el-table-column label="单据号" align="center" prop="billNo" width="200" />
<el-table
v-loading="loading"
highlight-current-row
:data="billList"
ref="billTable"
@row-dblclick="billClick"
@select="handleBillSelectionChange"
@select-all="handleBillSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="单据号"
align="center"
prop="billNo"
width="200"
/>
<el-table-column label="库存状态" align="center">
<template #default="scope">
<span>{{ isChukuFun(scope.row.isDelivery) }}</span>
</template>
</el-table-column>
<el-table-column label="理货员" align="center" prop="operatorName" />
<el-table-column label="出库类型" align="center" prop="operationTypeName" width="150"/>
<el-table-column label="出库时间" align="center" prop="operationTime" width="170">
<el-table-column
label="出库类型"
align="center"
prop="operationTypeName"
width="150"
/>
<el-table-column
label="出库时间"
align="center"
prop="operationTime"
width="170"
>
<template #default="scope">
<span>{{ parseTime(scope.row.operationTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{
parseTime(scope.row.operationTime, "{y}-{m}-{d} {h}:{i}:{s}")
}}</span>
</template>
</el-table-column>
</el-table>
@@ -57,36 +105,102 @@
type="primary"
plain
icon="plus"
size="mini"
@click="delieryReceipt()"
:disabled="multiple"
>生成配送单</el-button>
>生成配送单</el-button
>
</el-col>
</el-row>
<el-table v-loading="detailLoading" show-overflow-tooltip :data="stockList" @selection-change="handleSelectionChange">
<el-table
v-loading="detailLoading"
show-overflow-tooltip
:data="stockList"
ref="detailTable"
@select="handleSelectionChange"
@select-all="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="库存状态" align="center">
<template #default="scope">
<span>{{ isChukuFun(scope.row.bizType) }}</span>
</template>
</el-table-column>
<el-table-column label="项目号" align="center" prop="xmNo" width="150"/>
<el-table-column label="项目描述" align="center" prop="xmMs" width="250"/>
<el-table-column label="物料号" align="center" prop="wlNo" width="100"/>
<el-table-column label="物料描述" align="center" prop="wlMs" width="250"/>
<el-table-column label="供应商名称" align="center" prop="gysMc" width="200"/>
<el-table-column
label="项目号"
align="center"
prop="xmNo"
width="150"
/>
<el-table-column
label="项目描述"
align="center"
prop="xmMs"
width="250"
/>
<el-table-column
label="物料号"
align="center"
prop="wlNo"
width="100"
/>
<el-table-column
label="物料描述"
align="center"
prop="wlMs"
width="250"
/>
<el-table-column
label="供应商名称"
align="center"
prop="gysMc"
width="200"
/>
<el-table-column label="合同单价" align="center" prop="htDj" />
<el-table-column label="订单编号" align="center" prop="sapNo" width="150"/>
<el-table-column
label="订单编号"
align="center"
prop="sapNo"
width="150"
/>
<el-table-column label="计量单位" align="center" prop="dw" />
<el-table-column label="实际出库数量" align="center" prop="realQty" width="120"/>
<el-table-column label="库位码" align="center" prop="pcode" width="120"/>
<el-table-column
label="实际出库数量"
align="center"
prop="realQty"
width="120"
/>
<el-table-column
label="库位码"
align="center"
prop="pcode"
width="120"
/>
<el-table-column label="托盘码" align="center" prop="trayCode" />
<el-table-column label="身份码" align="center" prop="entityId" width="200"/>
<el-table-column
label="身份码"
align="center"
prop="entityId"
width="200"
/>
<!-- <el-table-column label="出库类型" align="center" prop="operationTypeName" width="150"/> -->
<el-table-column label="物资类型" align="center" prop="wlTypeName" width="120"/>
<el-table-column label="所属仓库" align="center" prop="cangkuName" width="150">
<el-table-column
label="物资类型"
align="center"
prop="wlTypeName"
width="120"
/>
<el-table-column
label="所属仓库"
align="center"
prop="cangkuName"
width="150"
>
<template #default="scope">
<span>{{ scope.row.parentWarehouseName }}-{{ scope.row.warehouseName }}</span>
<span
>{{ scope.row.parentWarehouseName }}-{{
scope.row.warehouseName
}}</span
>
</template>
</el-table-column>
<!-- <el-table-column label="操作时间" align="center" prop="operationTime" width="200">
@@ -95,15 +209,26 @@
</template>
</el-table-column> -->
<!-- <el-table-column label="库龄" align="center" prop="stockAge" /> -->
<el-table-column label="备注" align="center" prop="remark" width="200"/>
<el-table-column
label="备注"
align="center"
prop="remark"
width="200"
/>
</el-table>
</el-splitter-panel>
</el-splitter>
<el-dialog title="生成配送单" v-model="dialogPicDetailVisible">
<div class="container">
<div class="billBox"><span>出库单号</span><span>{{ detailQueryParams.billNoCk }}</span></div>
<el-form :model="delieryData" ref="form" :rules="rules" label-width="100">
<div class="billBox">
<span>出库单号</span><span>{{ detailQueryParams.billNoCk }}</span>
</div>
<el-form
:model="delieryData"
ref="form"
:rules="rules"
label-width="100"
>
<el-divider content-position="left">配送信息</el-divider>
<el-row>
<el-col :span="12">
@@ -112,7 +237,6 @@
v-model="delieryData.originName"
placeholder="请输入起点"
clearable
/>
</el-form-item>
</el-col>
@@ -129,8 +253,17 @@
<el-row>
<el-col :span="12">
<el-form-item label="配送人" prop="shipperName">
<el-select v-model="delieryData.shipperName" placeholder="请选择配送人" clearable >
<el-option v-for="dict in personList" :key="dict.userId" :label="dict.userName" :value="dict.userName" />
<el-select
v-model="delieryData.shipperName"
placeholder="请选择配送人"
clearable
>
<el-option
v-for="dict in personList"
:key="dict.userId"
:label="dict.userName"
:value="dict.userName"
/>
</el-select>
</el-form-item>
</el-col>
@@ -178,13 +311,12 @@
</el-col>
<el-col :span="12">
<el-form-item label="配送日期" prop="deliveryDate">
<el-date-picker
v-model="delieryData.deliveryDate"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%;"
style="width: 100%"
/>
</el-form-item>
</el-col>
@@ -193,20 +325,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="重量" prop="deliveryTon">
<el-input
v-model="delieryData.deliveryTon"
/>
<el-input v-model="delieryData.deliveryTon" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="体积" prop="goodsSize">
<el-input
v-model="delieryData.goodsSize"
/>
<el-input v-model="delieryData.goodsSize" />
</el-form-item>
</el-col>
</el-row>
@@ -221,15 +345,26 @@
</el-form-item>
</el-col>
<el-col :span="4" :offset="1">
<el-button type="primary" @click="calculateFun(null)">计算</el-button>
<el-button type="primary" @click="calculateFun(null)"
>计算</el-button
>
</el-col>
</el-row>
<el-divider content-position="left">计算信息</el-divider>
<el-row>
<el-col :span="12">
<el-form-item label="推荐车型" prop="vehicleTypeId">
<el-select v-model="delieryData.vehicleTypeId" placeholder="请选择推荐车型" clearable @change="changeCarType">
<el-option v-for="dict in carTypeList" :key="dict.id" :label="dict.typeName" :value="dict.id" />
<el-form-item label="推荐车型" v-for="(item, index) in delieryData.vehicleTypeNameList" :key="index">
<el-select
v-model="item.vehicleTypeId"
placeholder="请选择推荐车型"
@change="changeCarType($event, index)"
>
<el-option
v-for="dict in carTypeList"
:key="dict.id"
:label="dict.name"
:value="dict.id"
/>
</el-select>
</el-form-item>
</el-col>
@@ -257,10 +392,14 @@
</template>
<script setup name="outWarehouse">
import {listBill,listStock,calculate,addDelivery} from "@/api/outWarehouse/outWarehouse";
import { listType } from "@/api/document/type"
import {
listBill,
listStock,
calculate,
addDelivery,
} from "@/api/outWarehouse/outWarehouse";
import { listType } from "@/api/document/type";
import { listUser } from "@/api/system/user"; //理货员
import { Plus } from '@element-plus/icons-vue'
// let map = null;
@@ -288,20 +427,16 @@
// });
const { proxy } = getCurrentInstance();
const detailLoading = ref(false); //加载列表详情
const showSearch = ref(true);
const total = ref(0); //单据
const personList = ref([]); //理货员下拉数据
const carTypeList = ref([]) //推荐车型下拉数据
const dialogPicDetailVisible = ref(false)
const multiple = ref(true)
const carTypeList = ref([]); //推荐车型下拉数据
const dialogPicDetailVisible = ref(false);
const multiple = ref(true);
const data = reactive({
fileList: [],
@@ -310,64 +445,86 @@
delieryData: {
deliveryTon: 0, //重量
goodsSize: 0, //体积
items:[]
items: [],
vehicleTypeNameList: [{}], //推荐车型列表
},
queryParams: {
},
queryParams: {},
detailQueryParams: {
pageNum: 1,
pageSize: 200,
id: null,
billNoCk:""
billNoCk: "",
},
rules: {
originName: [{ required: true, message: "起点不能为空", trigger: "change" }],
originName: [
{ required: true, message: "起点不能为空", trigger: "change" },
],
destName: [{ required: true, message: "终点不能为空", trigger: "change" }],
shipperName: [{ required: true, message: "配送人不能为空", trigger: "change" }],
shipperPhone: [{ pattern: /^1[3456789]\d{9}$/, message: '请输入有效的电话号码', trigger: 'blur' }],
receiverName: [{ required: true, message: "收货人不能为空", trigger: "change" }],
shipperName: [
{ required: true, message: "配送人不能为空", trigger: "change" },
],
shipperPhone: [
{
pattern: /^1[3456789]\d{9}$/,
message: "请输入有效的电话号码",
trigger: "blur",
},
],
receiverName: [
{ required: true, message: "收货人不能为空", trigger: "change" },
],
receiverPhone: [
{ required: true, message: "收货人电话不能为空", trigger: "change" },
{ pattern: /^1[3456789]\d{9}$/, message: '请输入有效的电话号码', trigger: 'blur' }
{
pattern: /^1[3456789]\d{9}$/,
message: "请输入有效的电话号码",
trigger: "blur",
},
],
deliveryTon: [
{ required: true, message: "重量不能为空", trigger: "change" },
],
deliveryTon: [{ required: true, message: "重量不能为空", trigger: "change" }],
goodsSize: [{ required: true, message: "体积不能为空", trigger: "change" }],
totalKm: [{ required: true, message: "公里数不能为空", trigger: "change" }],
vehicleTypeId: [{ required: true, message: "推荐车型不能为空", trigger: "change" }],
suggestFee: [{ required: true, message: "建议费用不能为空", trigger: "change" }],
deliveryDate:[{ required: true, message: "配送日期不能为空", trigger: "change" }]
suggestFee: [
{ required: true, message: "建议费用不能为空", trigger: "change" },
],
deliveryDate: [
{ required: true, message: "配送日期不能为空", trigger: "change" },
],
},
switchRules: {
toCangku:[{ required: true, message: "目标仓库不能为空", trigger: "change" }],
toPcode:[{ required: true, message: "目标存放位置不能为空", trigger: "change" }],
toCangku: [
{ required: true, message: "目标仓库不能为空", trigger: "change" },
],
toPcode: [
{ required: true, message: "目标存放位置不能为空", trigger: "change" },
],
},
});
const { queryParams, detailQueryParams, delieryData, rules } = toRefs(data);
//生成配送单弹框
function delieryReceipt() {
dialogPicDetailVisible.value = true
dialogPicDetailVisible.value = true;
//理货员下拉数据
listUser().then(response=>{
personList.value = response.rows
})
listUser().then((response) => {
personList.value = response.rows;
});
//车型下拉数据
listType({pageNum:1,pageSize:1000}).then(response => {
carTypeList.value = response.rows
})
listType({ pageNum: 1, pageSize: 1000 }).then((response) => {
// carTypeList.value = response.rows;
});
}
//双击单据,查询明细
function billClick(row) {
stockList.value = row.recordList
stockList.value = row.recordList;
}
function isChukuFun(isChuku) {
// scope.row.isChuku==0?"已入库":(scope.row.isChuku==1?"已出库":"审批中")
return "已出库"
return "已出库";
}
const stockList = ref([]); //明细列表
@@ -376,7 +533,7 @@
/** 查询库存单据主列表 */
function getList() {
loading.value = true;
listBill(queryParams.value).then(response => {
listBill(queryParams.value).then((response) => {
billList.value = response.data;
loading.value = false;
});
@@ -384,6 +541,9 @@
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
multipleBill.value = true;
multiple.value = true
stockList.value = []
getList();
}
@@ -393,146 +553,272 @@
handleQuery();
}
const multipleBill = ref(true);
const billTable = ref(null);
const detailTable = ref(null);
// 多选框选中数据
function handleSelectionChange(selection) {
delieryData.value.deliveryTon = 0
delieryData.value.goodsSize = 0
function handleBillSelectionChange(selectionArr) {
if (!multiple.value) {
proxy.$confirm('此操作将删除右侧勾选, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
detailTable.value.clearSelection();
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
let selection = selectionArr
.flatMap((item) => item.recordList)
if (selection.length > 0) {
for (let i = 0; i < selection.length; i++) {
delieryData.value.deliveryTon += Number(selection[i].weightKg)
delieryData.value.goodsSize += Number(selection[i].volumeM3)
delieryData.value.deliveryTon +=
Number(selection[i].weightKg) * 1000 * selection[i].realQty;
delieryData.value.goodsSize +=
Number(selection[i].volumeM3) * 1000 * selection[i].realQty;
// selection[i].rkInfoId = selection[i].id
selection[i].rkRecordId = selection[i].id
selection[i].rkRecordId = selection[i].id;
}
delieryData.value.items = selection
delieryData.value.items = selection;
// selection.forEach(element => {
// delieryData.value.deliveryTon += Number(element.deliveryTon)
// delieryData.value.goodsSize += Number(element.goodsSize)
// });
} else {
delieryData.value.deliveryTon = 0
delieryData.value.goodsSize = 0
delieryData.value.items = []
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
delieryData.value.items = [];
}
delieryData.value.deliveryTon = delieryData.value.deliveryTon.toFixed(3) / 1000
delieryData.value.goodsSize = delieryData.value.goodsSize.toFixed(3)
delieryData.value.deliveryTon = delieryData.value.deliveryTon / 1000000;
delieryData.value.goodsSize = delieryData.value.goodsSize / 1000;
multiple.value = !selection.length
multipleBill.value = !selectionArr.length;
multiple.value = true
console.log(selectionArr);
proxy.$message({
type: 'success',
message: '删除成功!',
})
})
.catch(() => {
billTable.value.clearSelection();
proxy.$message({
type: 'info',
message: '已取消删除',
})
})
} else {
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
let selection = selectionArr
.flatMap((item) => item.recordList)
if (selection.length > 0) {
for (let i = 0; i < selection.length; i++) {
delieryData.value.deliveryTon +=
Number(selection[i].weightKg) * 1000 * selection[i].realQty;
delieryData.value.goodsSize +=
Number(selection[i].volumeM3) * 1000 * selection[i].realQty;
// selection[i].rkInfoId = selection[i].id
selection[i].rkRecordId = selection[i].id;
}
delieryData.value.items = selection;
// selection.forEach(element => {
// delieryData.value.deliveryTon += Number(element.deliveryTon)
// delieryData.value.goodsSize += Number(element.goodsSize)
// });
} else {
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
delieryData.value.items = [];
}
delieryData.value.deliveryTon = delieryData.value.deliveryTon / 1000000;
delieryData.value.goodsSize = delieryData.value.goodsSize / 1000;
multipleBill.value = !selectionArr.length;
multiple.value = true
console.log(selectionArr);
}
}
function handleSelectionChange(selection) {
console.log(selection);
if (!multipleBill.value) {
proxy.$confirm('此操作将删除左侧勾选, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
billTable.value.clearSelection();
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
if (selection.length > 0) {
for (let i = 0; i < selection.length; i++) {
delieryData.value.deliveryTon +=
Number(selection[i].weightKg) * 1000 * selection[i].realQty;
delieryData.value.goodsSize +=
Number(selection[i].volumeM3) * 1000 * selection[i].realQty;
// selection[i].rkInfoId = selection[i].id
selection[i].rkRecordId = selection[i].id;
}
delieryData.value.items = selection;
// selection.forEach(element => {
// delieryData.value.deliveryTon += Number(element.deliveryTon)
// delieryData.value.goodsSize += Number(element.goodsSize)
// });
} else {
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
delieryData.value.items = [];
}
delieryData.value.deliveryTon = delieryData.value.deliveryTon / 1000000;
delieryData.value.goodsSize = delieryData.value.goodsSize / 1000;
multiple.value = !selection.length;
multipleBill.value = true
console.log(selection);
proxy.$message({
type: 'success',
message: '删除成功!',
})
})
.catch(() => {
detailTable.value.clearSelection();
proxy.$message({
type: 'info',
message: '已取消删除',
})
})
} else {
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
if (selection.length > 0) {
for (let i = 0; i < selection.length; i++) {
delieryData.value.deliveryTon +=
Number(selection[i].weightKg) * 1000 * selection[i].realQty;
delieryData.value.goodsSize +=
Number(selection[i].volumeM3) * 1000 * selection[i].realQty;
// selection[i].rkInfoId = selection[i].id
selection[i].rkRecordId = selection[i].id;
}
delieryData.value.items = selection;
// selection.forEach(element => {
// delieryData.value.deliveryTon += Number(element.deliveryTon)
// delieryData.value.goodsSize += Number(element.goodsSize)
// });
} else {
delieryData.value.deliveryTon = 0;
delieryData.value.goodsSize = 0;
delieryData.value.items = [];
}
delieryData.value.deliveryTon = delieryData.value.deliveryTon / 1000000;
delieryData.value.goodsSize = delieryData.value.goodsSize / 1000;
multiple.value = !selection.length;
multipleBill.value = true
console.log(selection);
}
}
//根据重量、体积、公里数计算车型、费用
function calculateFun(vehicleTypeId){
if(!delieryData.value.deliveryTon || !delieryData.value.goodsSize || !delieryData.value.totalKm){
function calculateFun(id) {
if (
!delieryData.value.deliveryTon ||
!delieryData.value.goodsSize ||
!delieryData.value.totalKm
) {
proxy.$modal.msgWarning("请输入公里数、重量、体积");
return
return;
}
let info = {
weightTon: 0,
volumeM3: 0,
distanceKm: 0,
vehicleTypeId:vehicleTypeId
};
let hasVehicle = delieryData.value.vehicleTypeNameList.every(item => item.vehicleTypeId)
if (hasVehicle) {
info.vehicleTypeId = delieryData.value.vehicleTypeNameList.map(item => item.vehicleTypeId).join(',')
}
info.weightTon = delieryData.value.deliveryTon
info.volumeM3 = delieryData.value.goodsSize
info.distanceKm = delieryData.value.totalKm
if(vehicleTypeId){
info.vehicleTypeId = vehicleTypeId
}
calculate(info).then(response=>{
info.weightTon = delieryData.value.deliveryTon;
info.volumeM3 = delieryData.value.goodsSize;
info.distanceKm = delieryData.value.totalKm;
calculate(info).then((response) => {
// 检查后端是否返回了错误信息
if(response.data.errorMessage) {
// 如果有错误信息,显示给用户,并清空相关字段
proxy.$modal.msgError(response.data.errorMessage);
if(!vehicleTypeId){
delieryData.value.vehicleTypeId = null;
if (response.data.warningMessage) {
proxy.$modal.msgError(response.data.warningMessage);
return;
}
delieryData.value.suggestFee = null;
delieryData.value.vehicleTypeName = null;
} else {
// 没有错误信息,正常处理返回的车型信息
if(!vehicleTypeId){
delieryData.value.vehicleTypeId = response.data.vehicleTypeId;
if (response.data.bestPlan.length > 0 && !id) {
delieryData.value.vehicleTypeNameList = response.data.bestPlan;
}
carTypeList.value = response.data.candidates;
delieryData.value.suggestFee = response.data.suggestFee;
delieryData.value.vehicleTypeName = response.data.vehicleTypeName;
}
// console.log(response)
})
console.log(delieryData.value)
});
}
//切换车型
function changeCarType(id){
if(!delieryData.value.totalKm || !delieryData.value.deliveryTon || !delieryData.value.goodsSize){
function changeCarType(id, index) {
console.log(id, index)
if (
!delieryData.value.totalKm ||
!delieryData.value.deliveryTon ||
!delieryData.value.goodsSize
) {
proxy.$modal.msgWarning("请输入公里数、重量、体积");
return
return;
}
calculateFun(id)
calculateFun(id);
}
// 取消按钮
function cancel() {
dialogPicDetailVisible.value = false
reset()
}
function reset() {
delieryData.value = {
originName: null,
destName: null,
shipperName: null,
shipperPhone: null,
receiverName: null,
receiverPhone: null,
receiverOrgName: null,
deliveryDate: null,
deliveryTon: null,
goodsSize: null,
totalKm: null,
vehicleTypeId: null,
suggestFee: null,
vehicleTypeName: null
}
// this.resetForm("form")
proxy.resetForm("queryRef");
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;
proxy.$refs["form"].resetFields()
dialogPicDetailVisible.value = false;
}
// function reset() {
// }
function submitForm() {
proxy.$refs["form"].validate(valid => {
let hasVehicle = delieryData.value.vehicleTypeNameList.every(item => item.vehicleTypeId)
if (!hasVehicle) {
proxy.$modal.msgWarning('请选择配送车型')
return
}
proxy.$refs["form"].validate((valid) => {
// console.log(delieryData.value)
// return
if (valid) {
addDelivery(delieryData.value).then(response => {
proxy.$modal.msgSuccess("操作成功")
dialogPicDetailVisible.value = false
stockList.value = []
getList()
})
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(',')
addDelivery(obj).then((response) => {
proxy.$modal.msgSuccess("操作成功");
dialogPicDetailVisible.value = false;
stockList.value = [];
getList();
});
}
})
});
}
//数据列表
getList();
</script>
<style scoped>
.el-table .warning-row {