Browse Source

新增配载计划修改

fix_bug_pro20231227
qb 1 year ago
parent
commit
2508d5489a
  1. 67
      src/api/distribution/AddVehicleStowage.js
  2. 18
      src/api/waybill/orderPackageListDetails.js
  3. 2
      src/option/distribution/VehicleStowage.js
  4. 1
      src/option/distribution/addVehicleStowage.js
  5. 1
      src/utils/util.js
  6. 680
      src/views/distribution/artery/AddVehicleStowage.vue
  7. 28
      src/views/distribution/artery/VehicleStowage.vue
  8. 154
      src/views/waybill/orderPackageListDetails.vue

67
src/api/distribution/AddVehicleStowage.js

@ -76,3 +76,70 @@ export const postFindCarrierByName = data => {
data,
});
};
/**
* 查询编辑配载计划详情
*/
export const postSelectEditDetailByLoadId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/selectEditDetailByLoadId',
method: 'post',
data,
});
};
/**
* 查询已添加在调度池的订单
*/
export const postFindUseOrderList = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/findUseOrderList',
method: 'post',
data,
});
};
/**
* 移除在调度池的订单
*/
export const postRemoveCarsOrderByCarsOrderId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/removeCarsOrderByCarsOrderId',
method: 'post',
data,
});
};
/**
* 修改计划数量
*/
export const postUpdatePlanNumByCarsOrderId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/updatePlanNumByCarsOrderId',
method: 'post',
data,
});
};
/**
* 新增调度池订单
*/
export const postAddOrderToFinalNodeId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/addOrderToFinalNodeId',
method: 'post',
data,
});
};
/**
* 新增调度池订单
*/
export const postUpdateCarsLoadBasicData = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/updateCarsLoadBasicData',
method: 'post',
data,
});
};
//

18
src/api/waybill/orderPackageListDetails.js

@ -1,7 +1,7 @@
import request from '@/axios';
/**
* 获取暂存单列表数据
* 查看包明细
* @param {number} current
* @param {number} size
* @param {*} params
@ -18,3 +18,19 @@ export const getopenOrderFindAdvanceDetailList = (page, params) => {
});
};
/**
* 直接入库
* @param {number} current
* @param {number} size
* @param {*} params
* @returns
*/
export const getopenOrderIncomingPackage = data => {
return request({
url: '/api/logpm-trunkline/api/incoming/incomingPackage',
method: 'post',
data,
});
};
//

2
src/option/distribution/VehicleStowage.js

@ -32,7 +32,7 @@ export const columnList = [
values: '',
width: '250',
checkarr: [],
fixed: false,
fixed: true,
sortable: true,
},
{

1
src/option/distribution/addVehicleStowage.js

@ -158,6 +158,7 @@ export const columnList = [
values: '',
width: 55,
fixed: true,
isshowSummary: true,
},
{
prop: 'createTime',

1
src/utils/util.js

@ -589,6 +589,7 @@ export function computeNumber(a, type, b) {
* @param {any} value 传入值, 判断该值是否为数字
*/
export const isNumer = value => {
// if (typeof value !== 'number' || typeof value !== 'string') return false;
const _value = Number(value);
if (_value !== _value) return false;
return true;

680
src/views/distribution/artery/AddVehicleStowage.vue

@ -23,7 +23,7 @@
</div>
<!-- 控件 -->
<div>
<div v-if="Number(details.pageType) === 1">
<!-- 删除节点 -->
<el-button icon="Delete" v-if="index !== 0" @click="handleDelNode(index)" />
<!-- 新增节点 -->
@ -47,7 +47,7 @@
@change="val => destinationWarehouseNameChange(val, index)"
:remote-method="remoteMethod"
:loading="details.loadingObj.loading"
:disabled="index === 0"
:disabled="Number(details.pageType) !== 1 || index === 0"
>
<el-option
v-for="val in details.options"
@ -135,7 +135,11 @@
<!-- 装车方式 -->
<div class="form_row_item">
<el-form-item inline label="装车方式" prop="loadingType">
<el-radio-group v-model="form.loadingType" class="ml-4">
<el-radio-group
v-model="form.loadingType"
:disabled="Number(details.pageType) !== 1"
class="ml-4"
>
<el-radio label="1" size="large">手动装车(后台)</el-radio>
<el-radio label="2" size="large">扫描装车</el-radio>
</el-radio-group>
@ -225,7 +229,10 @@
:precision="2"
:min="0"
:step="1"
:disabled="slotProps.scope.row.blackList.includes(slotProps.scope.column.property)"
:disabled="
Number(details.pageType) === 2 ||
slotProps.scope.row.blackList.includes(slotProps.scope.column.property)
"
@input="handleComputedNum"
v-model="slotProps.scope.row[slotProps.scope.column.property]"
/>
@ -324,6 +331,10 @@
</tablecmt>
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<div class="total_row" style="margin-top: 0">
选中: {{ details.selectionList.length }}
</div>
<!-- 分页模块 -->
<el-pagination
style="zoom: 0.9"
@ -413,6 +424,8 @@
<el-button icon="el-icon-search" @click="searchHide" circle></el-button>
</div>
</div>
<!-- 列表 -->
<tablecmt
class="columnList"
ref="newColumnListNode"
@ -423,10 +436,8 @@
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '计划数'">
<!-- <el-text size="small" text @click="handleEditplanNum(slotProps.scope)">{{
slotProps.scope.row.planNum
}}</el-text> -->
<el-input-number
v-if="Number(details.pageType) === 1"
v-model="slotProps.scope.row.planNum"
controls-position="right"
:precision="0"
@ -434,9 +445,22 @@
:max="slotProps.scope.row.stockNum"
:step="1"
/>
<el-text
size="small"
v-else
text
@click="handleEditplanNum(slotProps.scope, item)"
>{{ slotProps.scope.row.planNum }}</el-text
>
</template>
</template>
</tablecmt>
<div class="total_row">
<span> 选中: {{ item.selectionList.length }} </span>
<span> {{ item.lineCarsOrderList.length }} </span>
</div>
</div>
</template>
</div>
@ -445,6 +469,8 @@
<!-- 页面底部占位 -->
<div class="footer"></div>
<div class="button-container">
<el-button class="submitButton" @click="back"> 关闭 </el-button>
<el-button
class="submitButton"
icon="Promotion"
@ -454,14 +480,58 @@
>
提交
</el-button>
<el-button class="submitButton" icon="Close" type="primary" @click="back"> 关闭 </el-button>
</div>
</div>
</basic-container>
<!-- 包内产品 -->
<el-dialog
title="修改计划数量"
v-model="details.popUpShow.editPlanNumberVisited"
width="40%"
append-to-body
class="packageDetailColumnListVisited"
>
<div class="edit_title">订单号: {{ details.editInfo.orderCode }}</div>
<div class="flex-c-sb edit_row">
<div class="flex1">
<span>当前在库数</span>
{{ details.editInfo.stockNum }}
</div>
<div class="flex1">
<span>已装车数量</span>
{{ details.editInfo.realNum }}
</div>
</div>
<el-form>
<el-form-item label="计划数量:" label-width="100px">
<el-input-number
controls-position="right"
:min="0"
:precision="0"
:max="details.editInfo.stockNum"
class="editInput"
v-model="details.editInfo.enterPlanNum"
style="flex: 1; text-align: left !important"
/>
</el-form-item>
</el-form>
<div class="flex-c-c">
<el-button>取消</el-button>
<el-button
type="primary"
:loading="btnLoadingObj.editPlanNumBtn"
icon="Promotion"
@click="handleSubmitEdit"
>
提交
</el-button>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { ref, reactive, toRefs, computed, onMounted, nextTick, onActivated, watch } from 'vue';
import functions from '@/utils/functions';
import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
@ -480,6 +550,12 @@ import {
postFindCarListByName,
postFindDriverListByName,
postSaveNew,
postSelectEditDetailByLoadId,
postFindUseOrderList,
postRemoveCarsOrderByCarsOrderId,
postUpdatePlanNumByCarsOrderId,
postAddOrderToFinalNodeId,
postUpdateCarsLoadBasicData,
} from '@/api/distribution/AddVehicleStowage';
import { useRouter, useRoute } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
@ -576,29 +652,16 @@ const details = reactive<any>({
},
/** 弹出层显示 */
popUpShow: {
/** 装车详情 */
truckLoadingDetailVisited: false,
/** 零担补录 */
zeroAdditionalRecordingVisited: false,
/** 对比报表 */
comparativeStatementPopUp: false,
/** 修改计划数量 */
editPlanNumberVisited: false,
},
/** 列表Dom节点 */
listNode: '',
form: { loadingType: '2' },
/** 零担补录信息 */
zeroAdditionalRecordingInfo: {
oldPage: {
pageSize: 30,
pageNum: 1,
total: 0,
},
},
/** 全屏 */
fullscreenObj: {
/** 装车明细 */
truckLoadingDetailPopUp: false,
comparativeStatementPopUp: false,
},
/** 匹配 */
rules: {
@ -644,24 +707,25 @@ const details = reactive<any>({
],
},
/** 页面信息 */
pageInfo: {},
pageInfo: {
startWarehouseInfo: {},
},
/** 目的仓 */
options: [],
/** 车牌号 */
carListByName: [],
/** 司机 */
driverListByName: [],
/** 当前页面类型 -- 1: 新增; 2: 编辑; 3: 零担补录 */
/** 当前页面类型 -- 1: 新增; 2: 编辑; 3: 节点费用 */
pageType: 1,
/** 编辑&节点费用下的loadId */
loadId: '',
/** 编辑模式下当前仓的位置索引 */
warehouseIndex: computed(() => {
if (Number(details.pageType) === 1) return 0;
else if (Number(details.pageType) === 2) return 0;
}),
warehouseIndex: 0,
/** 步骤条激活位置 */
active: computed(() => {
if (Number(details.pageType) === 1) return details.nodeInfoData.length;
else if (Number(details.pageType) === 2) return 0;
else if (Number(details.pageType) === 2) return details.warehouseIndex;
}),
/** 被选中的orderCode组成的list */
orderCodeList: [],
@ -672,6 +736,8 @@ const details = reactive<any>({
const btnLoadingObj = reactive({
/** 提交按钮 */
submitBtn: false,
/** 修改计划数量 */
editPlanNumBtn: false,
});
const {
search,
@ -758,28 +824,122 @@ const handleEditForbidden = (_arr: []) => {
return [_firstChild, ..._otherList];
};
/** 请求运单数据 */
const initOriginWarehouseOrder = async (params = {}) => {
try {
details.loadingObj.oldListLoading = true;
const submitData = {
...details.page,
loadId: details.pageInfo.startWarehouseInfo.warehouseId,
orderCodes: details.orderCodeList,
...details.query,
...params,
};
if (submitData.orderCodes.length === 0) delete submitData.orderCodes;
const res = await postFindAllOrderList(submitData);
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.oldListLoading = false;
}
};
/** 请求添加在调度池中的数据 */
const initDispatchOrder = async item => {
try {
//
item.loading = true;
const submitData = {
loadId: details.loadId,
finalNodeId: item.nodeId,
};
const res = await postFindUseOrderList(submitData);
const { code, data } = res.data;
if (code !== 200) return;
item.lineCarsOrderList = data;
} catch (error) {
} finally {
//
item.loading = false;
}
};
/** 请求页面数据 */
const onLoad = async () => {
const res = await postloadFindLoadInitData();
const { code, data } = res.data;
if (code !== 200) return;
details.pageInfo = data;
console.log('data.startWarehouseInfo.nodeName :>> ', data.startWarehouseInfo.nodeName);
details.nodeInfoData = [
{
nodeName: data.startWarehouseInfo.warehouseName,
nodeId: data.startWarehouseInfo.warehouseId,
linkMan: data.startWarehouseInfo.linkMan,
linkPhone: data.startWarehouseInfo.linkMobile,
linkAddress: data.startWarehouseInfo.linkAddress,
},
];
details.nodeInfoData = handleEditForbidden(details.nodeInfoData);
console.log('details.nodeInfoData :>> ', details.nodeInfoData);
details.form.startWarehouseName = data.startWarehouseInfo.warehouseName;
details.form.startWarehouseId = data.startWarehouseInfo.warehouseId;
//
details.loadId = $route.query.loadId;
details.pageType = $route.query.type;
//
if (Number(details.pageType) === 1) {
details.form = {};
const res = await postloadFindLoadInitData();
const { code, data } = res.data;
if (code !== 200) return;
details.pageInfo = data;
console.log('data.startWarehouseInfo.nodeName :>> ', data.startWarehouseInfo.nodeName);
details.nodeInfoData = [
{
nodeName: data.startWarehouseInfo.warehouseName,
nodeId: data.startWarehouseInfo.warehouseId,
linkMan: data.startWarehouseInfo.linkMan,
linkPhone: data.startWarehouseInfo.linkMobile,
linkAddress: data.startWarehouseInfo.linkAddress,
},
];
details.nodeInfoData = handleEditForbidden(details.nodeInfoData);
console.log('details.nodeInfoData :>> ', details.nodeInfoData);
details.form.startWarehouseName = data.startWarehouseInfo.warehouseName;
details.form.startWarehouseId = data.startWarehouseInfo.warehouseId;
}
//
else if (Number(details.pageType) === 2) {
console.log('222 :>> ', 222);
const res = await postSelectEditDetailByLoadId({ loadId: details.loadId });
console.log('res :>> ', res);
const { code, data } = res.data;
details.nodeInfoData = handleEditForbidden(
data.allCarsLineList.map((val, index) => {
if (val.nodeName === data.warehouseName) {
//
details.warehouseIndex = index;
}
//
val.query = {};
//
val.selectionList = [];
//
val.lineCarsOrderList = [];
val.filterData = [];
val.loading = false;
val.selectionChange = (list, index) => {
details.nodeInfoData[index].selectionList = list;
console.log('list :>> ', list);
};
initDispatchOrder(val);
return val;
})
);
details.form = data.carsLoadEntity;
details.pageInfo.loadType = data.loadType;
details.pageInfo.chargeType = data.chargeType;
details.pageInfo.startWarehouseInfo.warehouseId = data.carsLoadEntity.startWarehouseId;
details.pageInfo.startWarehouseInfo.warehouseName = data.carsLoadEntity.startWarehouseName;
//
initOriginWarehouseOrder();
//
setTabelHeight();
}
};
//
onLoad();
/** 查询仓库 */
@ -802,31 +962,6 @@ const destinationWarehouseNameChange = (val, index) => {
details.nodeInfoData[index].linkAddress = _value.linkAddress;
};
/** 请求运单数据 */
const initOriginWarehouseOrder = async (params = {}) => {
try {
details.loadingObj.oldListLoading = true;
const submitData = {
...details.page,
loadId: details.pageInfo.startWarehouseInfo.warehouseId,
orderCodes: details.orderCodeList,
...details.query,
...params,
};
if (submitData.orderCodes.length === 0) delete submitData.orderCodes;
const res = await postFindAllOrderList(submitData);
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.oldListLoading = false;
}
};
/** 搜索 */
const searchChange = () => {
initOriginWarehouseOrder();
@ -925,32 +1060,6 @@ const beforeClose = done => {
details.view = false;
};
/**
* 是否开启床车明细全屏
* @params(_type) 开启或关闭
*/
const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
let _node = '';
if (_name) _node = document.querySelectorAll(`.${_name} .maboxhi`);
console.log('_node :>> ', _node);
switch (_name) {
case 'comparativeStatementPopUp':
details.fullscreenObj.comparativeStatementPopUp =
!details.fullscreenObj.comparativeStatementPopUp;
break;
default:
details.fullscreenObj[_name] = !details.fullscreenObj[_name];
if (_type === 'close') {
if (_node) setNodeHeight(_node, '500px');
} else {
if (_node) setNodeHeight(_node);
}
break;
}
};
/** 司机改变时 1: 主驾 2: 副驾 */
const handleNameChange = (type: number) => {
const findValue = type === 1 ? form.value.driverName : form.value.name;
@ -997,6 +1106,7 @@ const handleComputedNum = () => {
const _key = nodeInfokeys[index];
//
if (!isNumer(item[_key])) item[_key] = 0;
else item[_key] = Number(item[_key]);
_totalNum = computeNumber(_totalNum, '+', item[_key]).result;
}
}
@ -1048,7 +1158,7 @@ const handleDelNode = (index: number) => {
};
/** 加入调度池 */
const handleAddWaybill = (index: number) => {
const handleAddWaybill = async (index: number) => {
const _node = details.nodeInfoData[index];
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
@ -1058,51 +1168,96 @@ const handleAddWaybill = (index: number) => {
}
console.log('_node :>> ', _node);
//
if (Number(details.pageType) === 1) {
for (let item of details.selectionList) {
item.planNum = item.stockNum;
item.loadingNum = 0;
_node.lineCarsOrderList.push(item);
}
for (let item of details.selectionList) {
item.planNum = item.stockNum;
item.loadingNum = 0;
_node.lineCarsOrderList.push(item);
details.orderCodeList = [
...new Set([
...details.orderCodeList,
...details.selectionList.map(val => val.orderCode + ',' + val.waybillNo),
]),
];
console.log('details.orderCodeList :>> ', details.orderCodeList);
const orderCodes = details.selectionList.map(val => val.orderCode);
clearSelectionList();
details.page.pageNum = 1;
initOriginWarehouseOrder();
}
details.orderCodeList = [
...new Set([
...details.orderCodeList,
...details.selectionList.map(val => val.orderCode + ',' + val.waybillNo),
]),
];
console.log('details.orderCodeList :>> ', details.orderCodeList);
const orderCodes = details.selectionList.map(val => val.orderCode);
clearSelectionList();
details.page.pageNum = 1;
initOriginWarehouseOrder();
//
else if (Number(details.pageType) === 2) {
console.log('_node :>> ', _node);
const submitData = {
loadId: details.loadId,
carsOrderList: details.selectionList.map(val => {
return {
nodeId: details.pageInfo.startWarehouseInfo.warehouseId,
nodeName: details.pageInfo.startWarehouseInfo.warehouseName,
orderCode: val.orderCode,
waybillNo: val.waybillNo,
totalNum: val.stockNum,
planNum: val.stockNum,
type: 1,
finalNodeId: _node.nodeId,
};
}),
};
const res = await postAddOrderToFinalNodeId(submitData);
const { code, data } = res.data;
if (code !== 200) return;
ElMessage.success('移除成功');
initDispatchOrder(_node);
initOriginWarehouseOrder();
}
// postAddOrderToFinalNodeId
};
/** 移除调度池 */
const handleRemoveWaybill = (index: number) => {
const handleRemoveWaybill = async (index: number) => {
const _node = details.nodeInfoData[index];
console.log('details.nodeInfoData[index] :>> ', details.nodeInfoData[index]);
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
type: 'warning',
message: '未选择目的仓或目的仓信息异常',
//
if (Number(details.pageType) === 1) {
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
type: 'warning',
message: '未选择目的仓或目的仓信息异常',
});
}
console.log('_node :>> ', _node);
//
_node.lineCarsOrderList = _node.lineCarsOrderList.filter((val, index) => {
const _flag = !_node.selectionList.includes(val);
if (!_flag) {
const _code = val.orderCode + ',' + val.waybillNo;
const _index = details.orderCodeList.indexOf(_code);
// +
details.orderCodeList.splice(_index, 1);
}
return _flag;
});
clearSelectionList();
initOriginWarehouseOrder();
}
//
else if (Number(details.pageType) === 2) {
console.log('_node :>> ', _node);
const submitData = {
carsOrderId: _node.selectionList.map(val => val.carsOrderId).join(','),
};
const res = await postRemoveCarsOrderByCarsOrderId(submitData);
const { code, data } = res.data;
if (code !== 200) return;
ElMessage.success('移除成功');
initDispatchOrder(_node);
initOriginWarehouseOrder();
}
console.log('_node :>> ', _node);
//
_node.lineCarsOrderList = _node.lineCarsOrderList.filter((val, index) => {
const _flag = !_node.selectionList.includes(val);
if (!_flag) {
const _code = val.orderCode + ',' + val.waybillNo;
const _index = details.orderCodeList.indexOf(_code);
// +
details.orderCodeList.splice(_index, 1);
}
return _flag;
});
clearSelectionList();
initOriginWarehouseOrder();
};
/** 查询司机信息 */
@ -1128,7 +1283,39 @@ const remoteMethodCar = async val => {
};
/** 修改计划数 */
const handleEditplanNum = row => {};
const handleEditplanNum = ({ row }, item) => {
console.log('row :>> ', row);
details.editInfo = row;
details.editInfo.enterPlanNum = Number(row.planNum);
details.editInfo.item = item;
console.log('details.editInfo :>> ', details.editInfo);
details.popUpShow.editPlanNumberVisited = true;
};
/** 提交修改计划数量 */
const handleSubmitEdit = async () => {
try {
btnLoadingObj.editPlanNumBtn = true;
const submitData = {
carsOrderId: details.editInfo.carsOrderId,
planNum: details.editInfo.enterPlanNum,
};
const res = await postUpdatePlanNumByCarsOrderId(submitData);
const { code } = res.data;
if (code !== 200) return;
ElMessage.success('修改成功');
initDispatchOrder(details.editInfo.item);
details.popUpShow.editPlanNumberVisited = false;
} catch (error) {
console.log('error :>> ', error);
} finally {
// loading
btnLoadingObj.editPlanNumBtn = false;
}
};
/** 关闭页面 */
const back = () => {
@ -1136,6 +1323,107 @@ const back = () => {
$router.back('-1');
};
/** 新增提交 */
const addSubmit = async () => {
try {
btnLoadingObj.submitBtn = true;
const _warehouseIds = [];
const _warehouseNames = [];
const _flag = details.nodeInfoData.every((value, index) => {
_warehouseNames.push(value.nodeName);
if (index === 0) return true;
_warehouseIds.push(value.nodeId);
return value.nodeName && value.nodeId;
});
if (!_flag) {
return ElMessage({
type: 'warning',
message: '节点信息有误',
});
}
const submitData = {
...form.value,
carsLoadLineList: JSON.parse(JSON.stringify(details.nodeInfoData)),
};
//
submitData.endWarehouseIds = _warehouseIds.join(',');
submitData.endWarehouseNames = _warehouseNames.slice(1).join(',');
submitData.carsLineName = _warehouseNames.join('->');
let _lineCarsOrderList = [];
submitData.carsLoadLineList.forEach((val, i) => {
val.nodeType = '1';
val.sort = i + 1;
delete val.blackList;
if (i === 0) return;
//
delete val.query;
delete val.selectionList;
delete val.loading;
delete val.data;
delete val.filterData;
_lineCarsOrderList = [
..._lineCarsOrderList,
...val.lineCarsOrderList.map(value => {
value.nodeId = submitData.startWarehouseId;
value.nodeName = submitData.startWarehouseName;
value.finalNodeId = val.nodeId;
value.totalNum = 20;
return value;
}),
];
delete val.lineCarsOrderList;
});
submitData.carsLoadLineList[0].lineCarsOrderList = _lineCarsOrderList;
console.log('submitData :>> ', submitData);
const res = await postSaveNew(submitData);
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage({
message: msg,
type: 'success',
});
back();
console.log('res :>> ', res);
} catch (error) {
} finally {
btnLoadingObj.submitBtn = false;
}
};
/** 修改提交 */
const editSubmit = async () => {
try {
btnLoadingObj.submitBtn = false;
const submitData = { loadId: details.loadId, ...details.form };
console.log('details.form :>> ', details.form);
console.log('submitData :>> ', submitData);
const res = await postUpdateCarsLoadBasicData(submitData);
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage({
message: msg,
type: 'success',
});
back();
// console.log('res :>> ', res);
} catch (error) {
console.log('error :>> ', error);
} finally {
btnLoadingObj.submitBtn = false;
}
};
/** 提交 */
const handleSubmit = (formEl: FormInstance | undefined) => {
if (btnLoadingObj.submitBtn) return;
@ -1143,82 +1431,19 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
console.log('111 :>> ', 111);
formEl.validate(async (valid, fields) => {
if (valid) {
try {
btnLoadingObj.submitBtn = true;
const _warehouseIds = [];
const _warehouseNames = [];
const _flag = details.nodeInfoData.every((value, index) => {
_warehouseNames.push(value.nodeName);
if (index === 0) return true;
_warehouseIds.push(value.nodeId);
return value.nodeName && value.nodeId;
});
if (!_flag) {
return ElMessage({
type: 'warning',
message: '节点信息有误',
});
}
const submitData = {
...form.value,
carsLoadLineList: JSON.parse(JSON.stringify(details.nodeInfoData)),
};
//
submitData.endWarehouseIds = _warehouseIds.join(',');
submitData.endWarehouseNames = _warehouseNames.slice(1).join(',');
submitData.carsLineName = _warehouseNames.join('->');
let _lineCarsOrderList = [];
submitData.carsLoadLineList.forEach((val, i) => {
val.nodeType = '1';
val.sort = i + 1;
delete val.blackList;
if (i === 0) return;
//
delete val.query;
delete val.selectionList;
delete val.loading;
delete val.data;
delete val.filterData;
_lineCarsOrderList = [
..._lineCarsOrderList,
...val.lineCarsOrderList.map(value => {
value.nodeId = submitData.startWarehouseId;
value.nodeName = submitData.startWarehouseName;
value.finalNodeId = val.nodeId;
value.totalNum = 20;
return value;
}),
];
delete val.lineCarsOrderList;
});
submitData.carsLoadLineList[0].lineCarsOrderList = _lineCarsOrderList;
console.log('submitData :>> ', submitData);
const res = await postSaveNew(submitData);
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage({
message: msg,
type: 'success',
});
back();
console.log('res :>> ', res);
} catch (error) {
} finally {
btnLoadingObj.submitBtn = false;
}
//
if (Number(details.pageType) === 1) addSubmit();
//
else if (Number(details.pageType) === 2) editSubmit();
} else {
console.log('error submit!', fields);
}
});
};
watch($route, () => {
onLoad();
});
</script>
<style scoped lang="scss">
@ -1317,6 +1542,19 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
--el-color-success: #1a3061;
}
:deep(.el-step__title.is-process) {
font-weight: bold;
--el-text-color-primary: #60df54;
}
:deep(.el-step__head.is-process) {
--el-text-color-primary: #60df54;
}
:deep(.el-step__title.is-process .count_icon) {
background: #60df54;
}
.count_icon {
--width: 25px;
margin-right: 20px;
@ -1383,4 +1621,30 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
) {
--el-color-danger: #f00;
}
//
:deep(.editInput .el-input__inner) {
text-align: left !important;
}
//
.edit_title {
font-size: 18px;
font-weight: bold;
}
.edit_row {
margin: 20px 0;
.flex1 {
flex: 1;
}
}
//
.total_row {
margin-top: 5px;
zoom: 0.9;
color: var(--el-color-primary);
}
</style>

28
src/views/distribution/artery/VehicleStowage.vue

@ -113,7 +113,9 @@
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '批次号'">
<el-text @click="handleGoWaybill(slotProps.scope)">123</el-text>
<el-text @click="handleGoWaybill(slotProps.scope)">{{
slotProps.scope.row.carsNo
}}</el-text>
</template>
<template v-if="slotProps.scope.column.label === '路线'">
@ -160,12 +162,14 @@
<!-- <el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)">
零担补录
</el-text> -->
<el-text @click="handleShowTruckLoadingDetails(slotProps.scope)">装车明细</el-text>
<el-text>编辑</el-text>
<el-text>数据同步</el-text>
<el-text>批量装车</el-text>
<el-text>手动装车</el-text>
<el-text>节点费用</el-text>
<el-button type="text" @click="handleShowTruckLoadingDetails(slotProps.scope)"
>装车明细</el-button
>
<el-button type="text" :disabled="false" @click="handleEditStowage(slotProps.scope)">编辑</el-button>
<!-- <el-button type="text">数据同步</el-button> -->
<el-button type="text">批量装车</el-button>
<el-button type="text">手动装车</el-button>
<el-button type="text">节点费用</el-button>
</template>
</template>
</tablecmt>
@ -799,7 +803,7 @@ const handleShowTruckLoadingDetails = ({ row }) => {
name: row.carsNo + '--' + '装车明细',
},
});
// details.popUpShow.truckLoadingDetailVisited = true;
// nextTick(() => {
@ -850,6 +854,14 @@ const handleAdd = () => {
});
};
/** 编辑配载信息 */
const handleEditStowage = ({ row }) => {
$router.push({
path: '/distribution/artery/AddVehicleStowage',
query: { name: '编辑配载', type: 2, loadId: row.id },
});
};
/** 前往配载详情 */
const handleGoWaybill = ({ row }) => {
console.log('row :>> ', row);

154
src/views/waybill/orderPackageListDetails.vue

@ -6,11 +6,11 @@
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="el-fr-d" label-width="100px">
<el-form-item label="是否入库">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
<el-input v-model="query.trainNumber" placeholder="是否入库" clearable></el-input>
</el-form-item>
<el-form-item label="是否干仓配">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
<el-input v-model="query.trainNumber" placeholder="是否干仓配" clearable></el-input>
</el-form-item>
<el-form-item label="运单号">
@ -18,10 +18,17 @@
</el-form-item>
<el-form-item label="订单自编号">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
<el-input
v-model="query.trainNumber"
placeholder="请输入订单自编号"
clearable
></el-input>
</el-form-item>
<el-form-item label="订单来源">
<el-input v-model="query.trainNumber" placeholder="请输入订单来源" clearable></el-input>
</el-form-item>
<el-form-item label="一级品类">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
@ -101,6 +108,9 @@
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<el-button type="primary" icon="Printer" @click="editClientInfo">批量打印</el-button>
<el-button type="primary" icon="Position" @click="handleBatchPutInStorage"
>批量入库</el-button
>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
@ -132,7 +142,11 @@
<el-button type="text" @click="handleShowFlowNode(slotProps.scope)">
流转节点
</el-button>
<el-button type="text" @click="handlePutInStorage(slotProps.scope)">
<el-button
type="text"
v-if="Number(slotProps.scope.row.packageStatus) === 0"
@click="handlePutInStorage(slotProps.scope)"
>
直接入库
</el-button>
<el-button type="text" @click="printOrder(slotProps.scope)"> 查看二维码 </el-button>
@ -151,7 +165,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:current-page="page.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -216,7 +230,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="details.packageListPage.currentPage"
:current-page="details.packageListPage.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="details.packageListPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -278,7 +292,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="details.packageListPage.currentPage"
:current-page="details.packageListPage.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="details.packageListPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -321,7 +335,10 @@ import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { getopenOrderFindAdvanceDetailList } from '@/api/waybill/orderPackageListDetails';
import {
getopenOrderFindAdvanceDetailList,
getopenOrderIncomingPackage,
} from '@/api/waybill/orderPackageListDetails';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
import {
@ -381,11 +398,11 @@ const details = reactive<any>({
/** 包明细表头 */
packageListColumnList,
/** 包明细数据 */
packageListData: [{}],
packageListData: [],
/** 包内产品表头 */
packageDetailColumnList,
/** 包内产品数据 */
packageDetailData: [{}],
packageDetailData: [],
/** 流转节点表头 */
flowNodeColumnList,
/** 流转节点数据 */
@ -402,13 +419,13 @@ const details = reactive<any>({
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
/** 包明细分页参数 */
packageListPage: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
@ -462,12 +479,12 @@ onMounted(() => {
});
/** 请求页面数据 */
const onLoad = async (page: any, params = {}) => {
const onLoad = async (params = {}) => {
try {
details.loadingObj.packageListLoading = true;
//
const res = await getopenOrderFindAdvanceDetailList(page, {
const res = await getopenOrderFindAdvanceDetailList(details.page, {
...details.query,
...params,
advanceId: id,
@ -482,19 +499,24 @@ const onLoad = async (page: any, params = {}) => {
}
};
onLoad(details.page);
const initPage = () => {
details.page.pageNum = 1;
onLoad();
};
initPage();
/** 搜索 */
const searchChange = () => {
onLoad(details.page);
initPage();
};
/** 清空表单 */
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.currentPage = 1;
onLoad(details.page);
details.page.pageNum = 1;
initPage();
};
/** 展开列表控件 */
@ -526,7 +548,7 @@ const searchHide = () => {
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
details.query[row.prop] = index;
onLoad(details.page);
initPage();
};
/** 表格表头时间选择 */
@ -539,7 +561,7 @@ const timesc = (index, row) => {
if (!index) {
delete details.query[row.prop];
}
onLoad(details.page);
initPage();
};
/** 表格表头输入框搜索 */
@ -553,7 +575,7 @@ const selectsc = (index, row) => {
details.query['certificateType'] = index;
if (!index) delete details.query['certificateType'];
}
onLoad(details.page);
initPage();
};
/** 表格表头复选框选择 */
@ -564,7 +586,7 @@ const selectionChange = (list: any) => {
/** 每页数量改变执行的回调 */
const sizeChange = (pageSize: number) => {
details.page.pageSize = pageSize;
onLoad(details.page);
initPage();
};
/** 页码改变执行的回调 */
@ -626,36 +648,6 @@ const editClientInfo = () => {
details.popUpShow.editClientInfoVisible = true;
};
/** 批量删除 */
const handleDelete = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/** 批量发车 */
const handleDepart = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/** 批量冻结 */
const handleFreeze = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/**
* 是否开启全屏
* @params(_type) 开启或关闭
@ -702,7 +694,7 @@ const printOrder = ({ row }) => {
});
};
/** 单列查看包条码 */
/** 批量查看包条码 */
const batchPrintOrder = ({ row }) => {
let qr = {
ids: row.id,
@ -723,13 +715,65 @@ const printTemplate = () => {
};
/** 入库 */
const handlePutInStorage = row => {
const handlePutInStorage = ({ row }) => {
console.log('row :>> ', row);
ElMessageBox.confirm('确认直接入库吗?', '警告', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
const submitData = {
orderPackageCode: row.orderPackageCode,
/** 直接入库 */
incomingType: '3',
};
const res = await getopenOrderIncomingPackage(submitData);
const { code } = res.data;
if (code !== 200) return;
initPage();
ElMessage({
type: 'success',
message: '入库成功',
});
})
.catch(() => {});
};
/** 批量入库 */
const handleBatchPutInStorage = () => {
if (details.selectionList.length === 0) return ElMessage.error('最少选择一条数据');
let orderPackageCodes = [];
const _flag = details.selectionList.every(val => {
if (Number(val.packageStatus) === 1) {
return false;
}
orderPackageCodes.push(val.orderPackageCode);
return true;
});
if (!_flag) return ElMessage.error('请选择未入库的数据');
ElMessageBox.confirm('确认直接入库吗?', '警告', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
.then(async () => {
const submitData = {
orderPackageCode: orderPackageCodes.join(','),
/** 直接入库 */
incomingType: '3',
};
const res = await getopenOrderIncomingPackage(submitData);
const { code } = res.data;
if (code !== 200) return;
initPage();
ElMessage({
type: 'success',
message: '入库成功',

Loading…
Cancel
Save