Browse Source

修复部分干线bug

dev-xx
qb 1 year ago
parent
commit
a08149c4b5
  1. 73
      src/views/distribution/artery/VehicleStowage.vue
  2. 19
      src/views/distribution/inventory/BookingNote.vue
  3. 28
      src/views/waybill/TemporaryStorageList.vue
  4. 196
      src/views/waybill/orderDetails.vue

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

@ -350,6 +350,65 @@
</template> </template>
</el-dialog> </el-dialog>
<!-- 配载清单 -->
<!-- 配置装车目的地 -->
<el-dialog
title="配置装车目的地"
v-model="details.popUpShow.listOfLoadedWagons"
width="80%"
:before-close="beforeClose"
append-to-body
:fullscreen="details.fullscreenObj.listOfLoadedWagonsPopUp"
:show-close="false"
class="listOfLoadedWagonsPopUp"
v-loading="details.loadingObj.truckLoadingDetailPopUpTable"
>
<!-- 标题 -- 头部控件区 -->
<template #header="{ close, titleId, titleClass }">
<div class="my-header flex-c-sb">
<div class="fwb" :id="titleId" :class="titleClass">配置装车目的地</div>
<div class="flex-c-c">
<!-- 全屏显示按钮 -->
<el-button type="text" v-if="!details.fullscreenObj.listOfLoadedWagonsPopUp">
<el-icon class="" @click="handleFullScrean('open', 'listOfLoadedWagonsPopUp')"
><FullScreen
/></el-icon>
</el-button>
<el-button type="text" v-else>
<el-icon class="" @click="handleFullScrean('close', 'listOfLoadedWagonsPopUp')"
><CopyDocument
/></el-icon>
</el-button>
<!-- 弹窗关闭按钮 -->
<el-button type="text">
<el-icon class="" @click="close"><Close /></el-icon>
</el-button>
</div>
</div>
</template>
<div v-loading="details.loadingObj.truckLoadingDetailPopUpLoading">
<div
:class="{
dialog_container: true,
fullScreen: details.fullscreenObj.listOfLoadedWagonsPopUp,
}"
></div>
<div class="dialog-footer">
<el-button
icon="el-icon-circle-close"
@click="details.popUpShow.listOfLoadedWagons = false"
>
</el-button>
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit">
</el-button>
</div>
</div>
</el-dialog>
<!-- 列表配置显示 --> <!-- 列表配置显示 -->
<edittablehead <edittablehead
@setcolum="setnewcolum" @setcolum="setnewcolum"
@ -463,6 +522,8 @@ const details = reactive<any>({
comparativeStatementPopUp: false, comparativeStatementPopUp: false,
/** 选择目的地弹窗 */ /** 选择目的地弹窗 */
chooseDestinationVisited: false, chooseDestinationVisited: false,
/** 装载清单 */
listOfLoadedWagons: false,
}, },
/** 列表Dom节点 */ /** 列表Dom节点 */
listNode: '', listNode: '',
@ -472,6 +533,7 @@ const details = reactive<any>({
/** 装车明细 */ /** 装车明细 */
truckLoadingDetailPopUp: false, truckLoadingDetailPopUp: false,
comparativeStatementPopUp: false, comparativeStatementPopUp: false,
listOfLoadedWagonsPopUp: false,
}, },
packageColumnList, packageColumnList,
/** 配置装车目的地数据 */ /** 配置装车目的地数据 */
@ -613,7 +675,7 @@ const onLoad = async (params = {}) => {
const res = await postloadCarsPageList(details.page, { ...details.query, ...params }); const res = await postloadCarsPageList(details.page, { ...details.query, ...params });
const { code, data } = res.data; const { code, data } = res.data;
if (code !== 200) return; if (code !== 200) return;
details.data = data; details.data = data.records;
for (let item of details.data) { for (let item of details.data) {
item.loadStatusName = item.loadStatusName = carStateDictionaries.find( item.loadStatusName = item.loadStatusName = carStateDictionaries.find(
@ -1230,4 +1292,13 @@ const handleManualLoading = ({ row }) => {
margin-left: 5px; margin-left: 5px;
} }
} }
.dialog_container {
max-height: 60vh;
overflow-y: scroll;
&.fullScreen {
max-height: 85vh;
}
}
</style> </style>

19
src/views/distribution/inventory/BookingNote.vue

@ -1480,15 +1480,16 @@ console.log('permission :>> ', permission);
const totalCost = computed(() => { const totalCost = computed(() => {
console.log('details.pageInfo :>> ', details.pageInfo); console.log('details.pageInfo :>> ', details.pageInfo);
// let _num = 0; // let _num = 0;
const _num = computeNumber(0, '+', details.pageInfo.totalFreight || 0) const _num = computeNumber(0, '+', details.query.totalFreight || 0)
.next('+', details.pageInfo.deliveryFee || 0) .next('+', details.query.deliveryFee || 0)
.next('+', details.pageInfo.pickupFee || 0) .next('+', details.query.pickupFee || 0)
.next('+', details.pageInfo.warehouseManagementFee || 0) .next('+', details.query.warehouseManagementFee || 0)
.next('+', details.pageInfo.storageFee || 0) .next('+', details.query.storageFee || 0)
.next('+', details.pageInfo.handlingFee || 0) .next('+', details.query.handlingFee || 0)
.next('+', details.pageInfo.otherFee || 0) .next('+', details.query.otherFee || 0)
.next('+', details.pageInfo.insuranceFee || 0) .next('+', details.query.insuranceFee || 0)
.next('+', details.pageInfo.claimingValue || 0).result; .next('+', details.query.claimingValue || 0).result;
console.log('_num :>> ', _num);
return _num; return _num;
}); });

28
src/views/waybill/TemporaryStorageList.vue

@ -461,7 +461,7 @@ import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
import { columnList } from '@/option/waybill/TemporaryStorageList'; import { columnList } from '@/option/waybill/TemporaryStorageList';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import print from '@/utils/print'; import print from '@/utils/print';
import { ElMessage } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import type { FormInstance, FormRules } from 'element-plus'; import type { FormInstance, FormRules } from 'element-plus';
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import { useStore } from 'vuex'; import { useStore } from 'vuex';
@ -1050,17 +1050,23 @@ const handleDelete = () => {
}); });
} }
const ids = details.selectionList.map(item => item.id); ElMessageBox.confirm('确认删除数据吗?', '提示', {
confirmButtonText: '确认',
postOpenOrderDeletedAdvance({ advanceIds: ids, freezeStatus: '1' }).then(res => { cancelButtonText: '取消',
const { code } = res.data; type: 'warning',
if (code !== 200) return; }).then(() => {
ElMessage({ const ids = details.selectionList.map(item => item.id);
type: 'success',
message: '操作成功', postOpenOrderDeletedAdvance({ advanceIds: ids, freezeStatus: '1' }).then(res => {
const { code } = res.data;
if (code !== 200) return;
ElMessage({
type: 'success',
message: '操作成功',
});
details.page.pageNum = 1;
initOnLoad();
}); });
details.page.pageNum = 1;
initOnLoad();
}); });
}; };

196
src/views/waybill/orderDetails.vue

@ -112,6 +112,7 @@
<!-- 表格 --> <!-- 表格 -->
<!-- 列表模块 --> <!-- 列表模块 -->
<tablecmt <tablecmt
ref="tableNode"
:columnList="details.packageListColumnList" :columnList="details.packageListColumnList"
:tableData="details.data" :tableData="details.data"
:loading="loadingObj.packageListLoading" :loading="loadingObj.packageListLoading"
@ -123,9 +124,7 @@
> >
<template #default="slotProps"> <template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'"> <template v-if="slotProps.scope.column.label === '操作'">
<el-button type="text" @click="handleShowPackageOrderList(slotProps.scope)"> <el-text @click="handleShowPackageOrderList(slotProps.scope)"> 查看详情 </el-text>
查看详情
</el-button>
<!-- <el-button type="text" @click="handleShowFlowNode(slotProps.scope)"> <!-- <el-button type="text" @click="handleShowFlowNode(slotProps.scope)">
在库明细 在库明细
</el-button> --> </el-button> -->
@ -189,11 +188,8 @@ import dayjs from 'dayjs';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
/** 获取字典 */ /** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict'; import { getDictionaryBiz } from '@/api/system/dict';
import { getopenOrderAdvancePageList } from '@/api/waybill/TemporaryStorageList';
import { postFindListByWaybillId } from '@/api/waybill/orderDetails'; import { postFindListByWaybillId } from '@/api/waybill/orderDetails';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util'; import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
import { packageDetailColumnList, flowNodeColumnList } from '@/option/waybill/orderPackageList';
import { packageListColumnList } from '@/option/waybill/orderDetails'; import { packageListColumnList } from '@/option/waybill/orderDetails';
import { useRouter, useRoute } from 'vue-router'; import { useRouter, useRoute } from 'vue-router';
import print from '@/utils/print'; import print from '@/utils/print';
@ -203,6 +199,9 @@ import { ElMessage, ElMessageBox } from 'element-plus';
const $router = useRouter(); const $router = useRouter();
const $route = useRoute(); const $route = useRoute();
//
const tableNode = ref();
const details = reactive<any>({ const details = reactive<any>({
/** 是否开启搜索 */ /** 是否开启搜索 */
search: true, search: true,
@ -240,16 +239,6 @@ const details = reactive<any>({
], ],
/** 时间选择器数据 */ /** 时间选择器数据 */
stockupDate: [], stockupDate: [],
/** 包明细数据 */
packageListData: [{}],
/** 包内产品表头 */
packageDetailColumnList,
/** 包内产品数据 */
packageDetailData: [{}],
/** 流转节点表头 */
flowNodeColumnList,
/** 流转节点数据 */
flowNodeData: [{}],
/** 数据 */ /** 数据 */
data: [], data: [],
/** 包明细表头 */ /** 包明细表头 */
@ -305,14 +294,9 @@ const { search, query, shortcuts, stockupDate, loadingObj, selectionList, drawer
const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList'])); const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList']));
console.log('permission :>> ', permission); console.log('permission :>> ', permission);
onMounted(() => { onMounted(async () => {
const timer = setTimeout(() => { await nextTick();
details.listNode = document.querySelector('.maboxhi'); setNodeHeight(tableNode.value.$el, '');
console.log('details.listNode :>> ', details.listNode);
details.listNode.style.transition = 'all .5s ease-out';
console.log('details.listNode :>> ', details.listNode);
clearTimeout(timer);
}, 100);
}); });
/** 请求页面数据 */ /** 请求页面数据 */
@ -349,7 +333,7 @@ const showdrawer = (_flag?: boolean) => {
const searchHide = () => { const searchHide = () => {
details.search = !details.search; details.search = !details.search;
setNodeHeight(details.listNode, '', true); setNodeHeight(tableNode.value.$el, '', true);
}; };
/** 表格表头输入框搜索 */ /** 表格表头输入框搜索 */
@ -417,166 +401,20 @@ const setnewcolum = (newarr, headarr, type) => {
} }
}; };
/** 弹出层开启前清除数据 */
const beforeClose = done => {
done();
details.form = {};
details.selectionList = [];
details.view = false;
};
/** 查看包内产品 */
const handleShowPackageOrderList = ({ row }) => {
details.popUpShow.packageDetailColumnListVisited = true;
nextTick(() => {
// ,
const _node: any = document.querySelector('.packageDetailColumnListVisited .maboxhi');
if (!_node) return;
_node.style.height = '550px';
console.log('_node :>> ', _node);
});
};
/** 订单转运单 */
const handleCreateOrder = () => {
$router.push('/distribution/inventory/CreateOrder');
};
/** 修改客户信息 */
const editClientInfo = () => {
if (details.selectionList.length !== 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
// editClientInfoVisible;
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) 开启或关闭
*/
const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
let _node = '';
if (_name) _node = document.querySelector(`.${_name} .maboxhi`);
switch (_name) {
//
case 'packageDetailColumnListVisited':
details.fullscreenObj.packageDetailColumnListVisited =
!details.fullscreenObj.packageDetailColumnListVisited;
if (_type === 'close') {
if (_node) setNodeHeight(_node, '500px');
} else {
if (_node) setNodeHeight(_node);
}
break;
default:
details.fullscreenObj[_name] = !details.fullscreenObj[_name];
if (_type === 'close') {
if (_node) setNodeHeight(_node, '500px');
} else {
if (_node) setNodeHeight(_node);
}
break;
}
};
/** 单列查看包条码 */
const printOrder = ({ row }) => {
let qr = {
ids: row.id,
};
details.html = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};
/** 单列查看包条码 */
const batchPrintOrder = ({ row }) => {
let qr = {
ids: row.id,
};
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
details.html = '';
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};
/** 打印包条码 */ /** 打印包条码 */
const printTemplate = () => { const printTemplate = () => {
const orderNodeList = document.querySelectorAll('.el-dialog-QRCode .el-dialog__body>div>div>div'); const orderNodeList = document.querySelectorAll('.el-dialog-QRCode .el-dialog__body>div>div>div');
print(orderNodeList); print(orderNodeList);
}; };
/** 入库 */ /** 查看包明细 */
const handlePutInStorage = row => { const handleShowPackageOrderList = ({ row }) => {
ElMessageBox.confirm('确认直接入库吗?', '警告', { $router.push({
confirmButtonText: '确认', path: '/waybill/orderPackageListDetails?name=包明细',
cancelButtonText: '取消', query: {
type: 'warning', id: row.id,
}) name: `订单 -- ${row.orderCode} 包明细`,
.then(() => { },
ElMessage({
type: 'success',
message: '入库成功',
});
})
.catch(() => {});
};
/** 显示流转节点 */
const handleShowFlowNode = ({ row }) => {
details.popUpShow.flowNodeColumnListVisited = true;
nextTick(() => {
// ,
const _node: any = document.querySelector('.flowNodeColumnListVisited .maboxhi');
if (!_node) return;
_node.style.height = '550px';
console.log('_node :>> ', _node);
}); });
}; };
</script> </script>

Loading…
Cancel
Save