Browse Source

修改部分干线bug

dev-xx
qb 1 year ago
parent
commit
d33d6c8ac8
  1. 11
      src/api/distribution/CreateOrder.js
  2. 22
      src/api/distribution/TripartiteTransfer.js
  3. 10
      src/api/work/work.js
  4. 38
      src/components/ArteryPrintTemplate/ArteryPrintTemplate.vue
  5. 109
      src/components/WaybillPrintTemplate/WaybillPrintTemplate.vue
  6. 10
      src/main.js
  7. 1247
      src/static/listOfLoadedWagons.html
  8. 144
      src/views/distribution/artery/TripartiteTransfer.vue
  9. 12
      src/views/distribution/artery/VehicleStowage.vue
  10. 37
      src/views/distribution/artery/truckLoadingDetails.vue
  11. 46
      src/views/distribution/inventory/BookingNote.vue
  12. 50
      src/views/distribution/inventory/CreateOrder.vue
  13. 41
      src/views/waybill/CreateZeroOrder.vue
  14. 96
      src/views/waybill/WaybillOrderList.vue
  15. 70
      src/views/waybill/orderPackageListDetails.vue

11
src/api/distribution/CreateOrder.js

@ -110,3 +110,14 @@ export const postUpdateWaybillVerify = data => {
data,
});
};
/**
* 改单验证
*/
export const postCheckWaybill = data => {
return request({
url: '/api/logpm-trunkline/openOrder/checkWaybill',
method: 'post',
data,
});
};

22
src/api/distribution/TripartiteTransfer.js

@ -76,3 +76,25 @@ export const postFindCarrierByName = data => {
data,
});
};
/**
* 通过名称查询承运商
*/
export const postSignCars = data => {
return request({
url: '/api/logpm-trunkline/tripartiteTransfer/signCars',
method: 'post',
data,
});
};
/**
* 通过名称查询承运商
*/
export const postSettlementCars = data => {
return request({
url: '/api/logpm-trunkline/tripartiteTransfer/settlementCars',
method: 'post',
data,
});
};

10
src/api/work/work.js

@ -86,18 +86,14 @@ export const getMyWarehouseList = data => {
});
};
;
export const getMyCurrentWarehouse = data => {
export const getMyCurrentWarehouse = params => {
return request({
url: '/api/logpm-basicdata/warehouse/getCurrentWarehouse',
method: 'get',
data,
params,
});
};
export const preserveCurrentWarehouse = data => {
return request({
url: '/api/logpm-basicdata/warehouse/preserveCurrentWarehouse',
@ -112,4 +108,4 @@ export const getclearWarehouseCache = data => {
method: 'get',
data,
});
};
};

38
src/components/ArteryPrintTemplate/ArteryPrintTemplate.vue

@ -0,0 +1,38 @@
<template>
<div>
12312312
<table>
<thead style="border: 1px solid #000">
<tr>
<th>Logo</th>
<th>干线运输装载清单</th>
<th>条形码</th>
</tr>
<tr>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</template>
<script setup lang="ts">
import { defineProps, ref } from 'vue';
const props = defineProps(['waybillInfo']);
/** 运单信息 */
const { waybillInfo } = props;
/** 是否显示金额统计 */
const isShowTotal = ref(false);
</script>
<style lang="scss" scoped>
.waybillPrintTemplate_container {
width: 100%;
}
</style>

109
src/components/WaybillPrintTemplate/WaybillPrintTemplate.vue

@ -0,0 +1,109 @@
<template>
<div class="waybillPrintTemplate_container">
<div style="display: flex">
<div style="flex: 1">起运地{{ waybillInfo.departureWarehouseName }}</div>
<div style="flex: 1">到达站{{ waybillInfo.destination }}</div>
<div style="flex: 1">查询单号</div>
</div>
<div style="border: 1px solid #000; margin-top: 10px">
<div style="display: flex; border-bottom: 1px solid #000">
<div style="width: 50%; display: flex">
<div
style="
writing-mode: tb-rl;
border-right: 1px solid #000;
width: 10%;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 0;
"
>
</div>
<div style="width: 90%; height: 100%; display: flex; flex-direction: column">
<div style="border-bottom: 1px solid #000; flex: 1">名称</div>
<div style="border-bottom: 1px solid #000; flex: 1">电话</div>
<div style="flex: 1">地址</div>
</div>
</div>
<div style="width: 50%; display: flex">
<div
style="
border-right: 1px solid #000;
border-left: 1px solid #000;
width: 10%;
display: flex;
justify-content: center;
align-items: center;
writing-mode: tb-rl;
"
>
</div>
<div style="width: 90%; height: 100%; display: flex; flex-direction: column">
<div style="border-bottom: 1px solid #000; flex: 1">名称</div>
<div style="border-bottom: 1px solid #000; flex: 1">电话</div>
<div style="flex: 1">地址</div>
</div>
</div>
</div>
<div
style="display: flex; text-align: center; font-size: 0.9rem; border-bottom: 1px solid #000"
>
<div style="flex: 1; border-right: 1px solid #000">货物名称</div>
<div style="flex: 1; border-right: 1px solid #000">件数</div>
<div style="flex: 1; border-right: 1px solid #000">重量</div>
<div style="flex: 1; border-right: 1px solid #000">体积</div>
<div style="flex: 1">运费</div>
</div>
<div
style="display: flex; text-align: center; font-size: 0.9rem; border-bottom: 1px solid #000"
>
<div style="flex: 1; border-right: 1px solid #000">${item.货物名称}</div>
<div style="flex: 1; border-right: 1px solid #000">${item.件数}</div>
<div style="flex: 1; border-right: 1px solid #000">${item.重量}</div>
<div style="flex: 1; border-right: 1px solid #000">${item.体积}</div>
<div style="flex: 1"></div>
</div>
<div
style="display: flex; text-align: center; font-size: 0.9rem; border-bottom: 1px solid #000"
>
<div style="flex: 1; border-right: 1px solid #000">合计</div>
<div style="flex: 1; border-right: 1px solid #000">${合计.件数}</div>
<div style="flex: 1; border-right: 1px solid #000">${合计.重量}</div>
<div style="flex: 1; border-right: 1px solid #000">${合计.体积}</div>
<div style="flex: 1">${合计.体积}</div>
</div>
<div style="height: 50px"></div>
</div>
<div style="display: flex; justify-content: space-between">
<div style="display: flex; width: 50%">
<div>填票人</div>
<div></div>
</div>
<div style="width: 50%">托运日期</div>
</div>
</div>
</template>
<script setup lang="ts">
import { defineProps, ref } from 'vue';
const props = defineProps(['waybillInfo']);
/** 运单信息 */
const { waybillInfo } = props;
/** 是否显示金额统计 */
const isShowTotal = ref(false);
</script>
<style lang="scss" scoped>
.waybillPrintTemplate_container {
width: 100%;
}
</style>

10
src/main.js

@ -25,7 +25,9 @@ import flowDesign from './components/flow-design/main.vue';
import tablecmt from './components/tablecmt/tablecmt.vue';
import SelectBox from './components/SelectBox/SelectBox.vue';
import edittablehead from './components/edittablehead/index.vue';
import {message } from './utils/resetMessage'
import WaybillPrintTemplate from './components/WaybillPrintTemplate/WaybillPrintTemplate.vue';
import ArteryPrintTemplate from './components/ArteryPrintTemplate/ArteryPrintTemplate.vue';
import { message } from './utils/resetMessage';
import App from './App.vue';
import 'animate.css';
import dayjs from 'dayjs';
@ -50,6 +52,10 @@ app.component('tenantPackage', tenantPackage);
app.component('tablecmt', tablecmt);
app.component('edittablehead', edittablehead);
app.component('SelectBox', SelectBox);
/** 运单打印模版 */
app.component('WaybillPrintTemplate', WaybillPrintTemplate);
/** 干线运输打印模版 */
app.component('ArteryPrintTemplate', ArteryPrintTemplate);
app.config.globalProperties.$dayjs = dayjs;
app.config.globalProperties.$functions = functions;
app.provide('functions', functions);
@ -65,7 +71,7 @@ app.use(router);
app.use(ElementPlus, {
locale: messages[language],
});
app.config.globalProperties.$message = message;//解决重复弹窗
app.config.globalProperties.$message = message; //解决重复弹窗
app.use(Avue, {
axios,
calcHeight: 10,

1247
src/static/listOfLoadedWagons.html

File diff suppressed because it is too large Load Diff

144
src/views/distribution/artery/TripartiteTransfer.vue

@ -123,11 +123,19 @@
</template>
<template v-if="slotProps.scope.column.label === '操作'">
<el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)"> 删除 </el-text>
<el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)">
<!-- <el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)"> 删除 </el-text> -->
<el-text
v-if="!slotProps.scope.row.signTime"
@click="handleTheClerkSignsForIt(slotProps.scope)"
>
文员签收
</el-text>
<el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)"> 结算 </el-text>
<el-text
v-if="Number(slotProps.scope.row.isSettlement) === 1"
@click="handleShowCloseAnAccount(slotProps.scope)"
>
结算
</el-text>
<el-text @click="handleShowTruckLoadingDetails(slotProps.scope)">装车明细</el-text>
</template>
</template>
@ -159,7 +167,7 @@
<el-dialog
title="确认到达信息"
v-model="details.popUpShow.confirmArriveVisited"
width="50%"
width="30%"
:before-close="beforeClose"
append-to-body
class="confirmArriveVisited"
@ -193,6 +201,44 @@
</div>
</el-dialog>
<!-- 确认到达信息 -->
<el-dialog
title="结算"
v-model="details.popUpShow.closeAnAccountVisited"
width="30%"
append-to-body
class="closeAnAccountVisited"
>
<el-form :inline="false" label-width="100px" :model="details.closeAnAccountForm">
<el-form-item label="结算金额">
<el-input-number
style="width: 100%"
:precision="2"
:min="0"
:step="1"
controls-position="right"
placeholder="请输入结算金额"
v-model="details.closeAnAccountForm.number"
/>
</el-form-item>
</el-form>
<div class="flex-c-c">
<el-button
@click="
() => {
details.form = {};
details.popUpShow.closeAnAccountVisited = false;
}
"
>
取消
</el-button>
<el-button type="primary" icon="Promotion" @click="handleSubmitCloseAnAccount"
>提交</el-button
>
</div>
</el-dialog>
<!-- 配置装车目的地 -->
<el-dialog
title="配置装车目的地"
@ -329,14 +375,9 @@ import {
postTripartiteTransferPageList,
postStartCars,
postCancelStartCars,
postSignCars,
postSettlementCars,
} from '@/api/distribution/TripartiteTransfer.js';
import {
postStartCarByLoadId,
postDetermineHasNoFinalNode,
postFindNextNodeList,
postUpdateLoadScanFinalNodeIdById,
postRemoveCarsLoadScan,
} from '@/api/distribution/VehicleStowage';
import { ElMessage, ElMessageBox } from 'element-plus';
import { useRouter } from 'vue-router';
@ -413,6 +454,8 @@ const details = reactive<any>({
truckLoadingDetailVisited: false,
/** 选择目的地弹窗 */
chooseDestinationVisited: false,
/** 结算弹窗 */
closeAnAccountVisited: true,
},
/** 列表Dom节点 */
listNode: '',
@ -469,6 +512,8 @@ const details = reactive<any>({
/** 被选中的数据 */
chooseNodeId: '',
packageQuery: {},
/** 结算金额表单 */
closeAnAccountForm: { number: 0 },
});
/** 表格实例 */
@ -631,7 +676,14 @@ const onLoad = async (params = {}) => {
}
};
onLoad();
// onLoad();
/** 初始化页面 */
const initPage = () => {
details.page.pageNum = 1;
onLoad();
};
initPage();
/** 搜索 */
const searchChange = () => {
@ -800,6 +852,7 @@ const handleShowConfirm = () => {
type: 'warning',
});
}
const _item = details.selectionList[0];
details.popUpShow.confirmArriveVisited = true;
};
@ -819,16 +872,17 @@ const submitConfirmArrive = async () => {
const res = await postArriveCars(submitData);
const { code } = res.data;
if (code !== 200) {
return;
}
if (code !== 200) return;
onLoad();
ElMessage({
type: 'success',
message: '到达成功',
});
details.popUpShow.confirmArriveVisited = false;
} catch (error) {
} finally {
onLoad();
console.log('error :>> ', error);
}
};
@ -845,7 +899,7 @@ const handleConfirmStartCar = () => {
type: 'warning',
});
}
ElMessageBox.confirm('确认发车吗?', '', {
ElMessageBox.confirm('确认发车吗?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
@ -880,7 +934,7 @@ const handleCancelStartCar = () => {
type: 'warning',
});
}
ElMessageBox.confirm('确认取消发车吗?', 'Warning', {
ElMessageBox.confirm('确认取消发车吗?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
@ -912,6 +966,58 @@ const handleGoDetils = ({ row }) => {
},
});
};
/** 文员签收 */
const handleTheClerkSignsForIt = ({ row }) => {
ElMessageBox.confirm('确认签收吗?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'success',
}).then(async () => {
const submitData = {
loadId: row.id,
};
const res = await postSignCars(submitData);
const { code } = res.data;
if (code !== 200) {
return;
}
ElMessage({
type: 'success',
message: '签收成功',
});
onLoad();
});
};
/** 开启结算提交弹窗 */
const handleShowCloseAnAccount = ({ row }) => {
details.closeAnAccountForm = row;
details.closeAnAccountForm.number = Number(row.settlementValue || 0);
details.popUpShow.closeAnAccountVisited = true;
};
/** 结算提交 */
const handleSubmitCloseAnAccount = async () => {
try {
const submitData = {
loadId: details.closeAnAccountForm.id,
settlementValue: details.closeAnAccountForm.number,
};
const res = await postSettlementCars(submitData);
const { code, data } = res.data;
if (code !== 200) return;
ElMessage.success('结算成功');
details.popUpShow.closeAnAccountVisited = false;
initPage();
} catch (error) {
console.log('error :>> ', error);
} finally {
}
};
</script>
<style scoped lang="scss">

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

@ -351,9 +351,8 @@
</el-dialog>
<!-- 配载清单 -->
<!-- 配置装车目的地 -->
<el-dialog
title="配置装车目的地"
title="配载清单"
v-model="details.popUpShow.listOfLoadedWagons"
width="80%"
:before-close="beforeClose"
@ -366,7 +365,7 @@
<!-- 标题 -- 头部控件区 -->
<template #header="{ close, titleId, titleClass }">
<div class="my-header flex-c-sb">
<div class="fwb" :id="titleId" :class="titleClass">置装车目的地</div>
<div class="fwb" :id="titleId" :class="titleClass">载清单</div>
<div class="flex-c-c">
<!-- 全屏显示按钮 -->
<el-button type="text" v-if="!details.fullscreenObj.listOfLoadedWagonsPopUp">
@ -394,7 +393,9 @@
dialog_container: true,
fullScreen: details.fullscreenObj.listOfLoadedWagonsPopUp,
}"
></div>
>
<ArteryPrintTemplate />
</div>
<div class="dialog-footer">
<el-button
icon="el-icon-circle-close"
@ -523,7 +524,7 @@ const details = reactive<any>({
/** 选择目的地弹窗 */
chooseDestinationVisited: false,
/** 装载清单 */
listOfLoadedWagons: false,
listOfLoadedWagons: true,
},
/** 列表Dom节点 */
listNode: '',
@ -533,6 +534,7 @@ const details = reactive<any>({
/** 装车明细 */
truckLoadingDetailPopUp: false,
comparativeStatementPopUp: false,
/** 装载清单 */
listOfLoadedWagonsPopUp: false,
},
packageColumnList,

37
src/views/distribution/artery/truckLoadingDetails.vue

@ -97,7 +97,7 @@
"
>
<template #default="slotProps">
<el-button
<el-text
type="text"
@click="handleZeroUnLoad(slotProps.scope)"
v-if="
@ -105,8 +105,8 @@
"
>
零担卸车
</el-button>
<el-button
</el-text>
<el-text
type="text"
@click="handleOrderUnLoad(slotProps.scope)"
v-if="
@ -114,7 +114,7 @@
"
>
包件卸车
</el-button>
</el-text>
</template>
</tablecmt>
@ -308,6 +308,8 @@ const details = reactive<any>({
{ label: '是', value: 1 },
{ label: '否', value: 0 },
],
/** 个人仓库信息 */
myWarehouseData: {},
});
const {
@ -341,6 +343,13 @@ const initTableSelect = () => {
initTableSelect();
getMyCurrentWarehouse({}).then(res => {
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.myWarehouseData = data;
});
onMounted(() => {
/**
* 初始化获取本地缓存的编辑隐藏的列表
@ -620,12 +629,12 @@ const handleBatchUnLoad = async () => {
if (details.selectionList.length === 0) return ElMessage.warning('请选择需要卸车的数据');
if (details.pageInfo.type !== 'TripartiteTransfer') {
const myWarehouseData = await getMyCurrentWarehouse();
if (!details.myWarehouseData) details.myWarehouseData = await getMyCurrentWarehouse();
if (!myWarehouseData) return ElMessage.warning('请先选择一个仓库');
if (!details.myWarehouseData) return ElMessage.warning('请先选择一个仓库');
// Id
const myWarehouseId = myWarehouseData.warehouseId;
const myWarehouseId = details.myWarehouseData.warehouseId;
//
const _orderArr = [];
@ -782,11 +791,12 @@ const handleOrderUnLoad = async ({ row }) => {
details.loadingObj.pageLoading = true;
if (details.pageInfo.type !== 'TripartiteTransfer') {
const myWarehouseData = await getMyCurrentWarehouse();
if (!myWarehouseData) return ElMessage.warning('请先选择一个仓库');
if (!details.myWarehouseData) details.myWarehouseData = await getMyCurrentWarehouse();
if (!details.myWarehouseData) return ElMessage.warning('请先选择一个仓库');
// Id
const myWarehouseId = myWarehouseData.warehouseId;
const myWarehouseId = details.myWarehouseData.warehouseId;
if (row.warehouseId !== myWarehouseId)
return (
@ -856,10 +866,11 @@ const handleOrderUnLoad = async ({ row }) => {
/** 卸车 -- 零担 */
const handleZeroUnLoad = async ({ row }) => {
if (details.pageInfo.type !== 'TripartiteTransfer') {
const myWarehouseData = await getMyCurrentWarehouse();
if (!myWarehouseData) return ElMessage.warning('请先选择一个仓库');
if (!details.myWarehouseData) details.myWarehouseData = await getMyCurrentWarehouse();
if (!details.myWarehouseData) return ElMessage.warning('请先选择一个仓库');
if (myWarehouseData.warehouseId !== row.warehouseId)
if (details.myWarehouseData.warehouseId !== row.warehouseId)
return ElMessage.warning('未在目的仓, 无法卸车');
}

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

@ -1,5 +1,5 @@
<template>
<basic-container>
<basic-container v-loading="details.loadingObj.pageLaoding">
<div class="avue-crud">
<el-tabs type="border-card" v-model="activeTab">
<el-tab-pane label="详 情 信 息" name="tab1">
@ -947,9 +947,14 @@
<!-- 提交按钮 -->
<div class="submitDataContainer">
<el-button type="primary" icon="el-icon-position" @click="searchReset()">
</el-button
<el-button
type="primary"
v-if="!query.checkUserId"
icon="el-icon-position"
@click="handleAudit"
>
</el-button>
<el-button type="primary" icon="el-icon-edit" @click="handleEdit"> </el-button>
<el-button type="primary" icon="el-icon-printer" @click="searchReset()">
</el-button
@ -1156,18 +1161,11 @@ import { getDictionaryBiz } from '@/api/system/dict';
import { downloadXls, computeNumber, isNumber, getObjType } from '@/utils/util';
import { columnList, detailsColumnList } from '@/option/distribution/VehicleStowage';
import { useRouter, useRoute } from 'vue-router';
import {
postOpenOrderFindClientInfo,
getOpenOrderAdvanceToWaybillInfo,
postOpenOrderOpenWaybill,
getOpenOrderAdvanceFindWarehouseList,
postFindWaybillDetail,
postUpdateWaybill,
postUpdateWaybillVerify,
} from '@/api/distribution/CreateOrder.js';
import { postFindWaybillDetail, postCheckWaybill } from '@/api/distribution/CreateOrder.js';
import { getLazyTreeAll } from '@/api/base/region';
import { postWarehouseFindWaybillInfo } from '@/api/distribution/BookingNote.js';
import { useStore } from 'vuex';
import { ElMessageBox, ElMessage } from 'element-plus';
//
const $router = useRouter();
@ -1427,6 +1425,7 @@ const details = reactive<any>({
loadingObj: {
/** 配载信息loading */
stowageLoading: false,
pageLaoding: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
@ -1762,6 +1761,29 @@ const handleEdit = () => {
});
}
};
const handleAudit = () => {
ElMessageBox.confirm('确认审核?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
details.loadingObj.pageLaoding = true;
try {
const res = await postCheckWaybill({ waybillId: $route.query.id });
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage.success({
message: msg,
});
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLaoding = false;
}
});
};
</script>
<style scoped lang="scss">

50
src/views/distribution/inventory/CreateOrder.vue

@ -203,7 +203,7 @@
<el-form-item label="发货地址:">
<el-input
v-model="query.shipperAddress"
@change="e => handleRefreshText('shipperAddress', e)"
@change="e => handleRefreshText('shipperAddress', e, '')"
placeholder="发货地址"
></el-input>
</el-form-item>
@ -281,10 +281,10 @@
</el-row>
<el-row>
<el-form-item label="货地址:">
<el-form-item label="货地址:">
<el-input
v-model="query.consigneeAddress"
@change="e => handleRefreshText('consigneeAddress', e)"
@change="e => handleRefreshText('consigneeAddress', e, '')"
placeholder="发货地址"
></el-input>
</el-form-item>
@ -360,6 +360,7 @@
:max="info.maxNum + item.num - details.totalObj.totalCount"
:precision="0"
:step="1"
:value-on-clear="0"
@change="handleComputed(item)"
/>
</el-form-item>
@ -372,6 +373,7 @@
:min="0"
:precision="4"
:step="0.1"
:value-on-clear="0"
@change="handleComputed(item)"
/>
</el-form-item>
@ -384,6 +386,7 @@
:min="0"
:precision="3"
:step="0.1"
:value-on-clear="0"
@change="handleComputed(item)"
/>
</el-form-item>
@ -396,6 +399,7 @@
:min="0"
:precision="2"
:step="0.1"
:value-on-clear="0"
@change="handleComputed(item)"
/>
</el-form-item>
@ -408,6 +412,7 @@
:precision="2"
:min="0"
:step="0.1"
:value-on-clear="0"
:disabled="item.price > 0 || Number(item.price) !== Number(item.price)"
/>
</el-form-item>
@ -463,7 +468,7 @@
:min="0"
:step="0.1"
v-model="query.deliveryFee"
@input="e => handleRefreshText('deliveryFee', e, 0)"
:value-on-clear="0"
></el-input-number>
</el-form-item>
@ -475,7 +480,7 @@
:min="0"
:step="0.1"
v-model="query.pickupFee"
@input="e => handleRefreshText('pickupFee', e, 0)"
:value-on-clear="0"
></el-input-number>
</el-form-item>
@ -487,7 +492,7 @@
:min="0"
:step="0.1"
v-model="query.warehouseManagementFee"
@input="e => handleRefreshText('warehouseManagementFee', e, 0)"
:value-on-clear="0"
></el-input-number>
</el-form-item>
@ -499,7 +504,7 @@
:min="0"
:step="0.1"
v-model="query.storageFee"
@input="e => handleRefreshText('storageFee', e, 0)"
:value-on-clear="0"
></el-input-number>
</el-form-item>
</el-row>
@ -513,7 +518,7 @@
:min="0"
:step="0.1"
v-model="query.handlingFee"
@input="e => handleRefreshText('handlingFee', e, 0)"
:value-on-clear="0"
></el-input-number>
</el-form-item>
<el-form-item label="其它费用:">
@ -524,7 +529,7 @@
:min="0"
:step="0.1"
v-model="query.otherFee"
@input="e => handleRefreshText('otherFee', e, 0)"
:value-on-clear="0"
></el-input-number>
</el-form-item>
<el-form-item label="保价费:">
@ -535,6 +540,7 @@
:precision="2"
:min="0"
:step="0.1"
:value-on-clear="0"
></el-input-number>
</el-form-item>
<el-form-item label="申明价值:">
@ -545,6 +551,7 @@
:precision="2"
:min="0"
:step="0.1"
:value-on-clear="0"
></el-input-number>
</el-form-item>
</el-row>
@ -558,6 +565,7 @@
:min="0"
:step="0.1"
v-model="query.installFee"
:value-on-clear="0"
></el-input-number>
</el-form-item>
</el-row>
@ -609,6 +617,7 @@
:min="0"
:step="0.1"
v-model="query.xianPay"
:value-on-clear="0"
></el-input-number>
</el-form-item>
</el-row>
@ -622,6 +631,7 @@
:min="0"
:step="0.1"
v-model="query.daoPay"
:value-on-clear="0"
></el-input-number>
</el-form-item>
@ -633,6 +643,7 @@
:min="0"
:step="0.1"
v-model="query.yuePay"
:value-on-clear="0"
></el-input-number>
</el-form-item>
@ -644,6 +655,7 @@
:min="0"
:step="0.1"
v-model="query.huiPay"
:value-on-clear="0"
></el-input-number>
</el-form-item>
</el-row>
@ -667,6 +679,7 @@
controls-position="right"
:precision="0"
:step="0.1"
:value-on-clear="0"
/>
</el-form-item>
@ -705,6 +718,7 @@
:precision="0"
:step="1"
:min="0"
:value-on-clear="0"
/>
</el-form-item>
@ -1430,6 +1444,7 @@ const totalCost = computed(() => {
.next('+', details.query.handlingFee || 0)
.next('+', details.query.otherFee || 0)
.next('+', details.query.insuranceFee || 0)
.next('+', details.query.installFee || 0)
.next('+', details.query.claimingValue || 0).result;
handlePayWay(_num);
@ -1513,6 +1528,14 @@ const onLoad = async (idsArr = []) => {
details.query[key] = data[key] || '';
}
details.query.shipperAddress = data.shipperAddress || '';
details.query.consigneeAddress = data.consigneeAddress || '';
details.query.destination = data.destinationArray;
details.query.destinationWarehouseName = data.departureWarehouseName;
details.query.destinationWarehouseId = data.departureWarehouseId;
details.query.queryDestinationWarehouseName = data.departureWarehouseName;
let _maxNum = 0;
details.goodsList = data.goodsList.map(val => {
@ -1888,11 +1911,6 @@ const destinationWarehouseNameChange = val => {
/** 计算行合计 */
const handleComputed = (row: any) => {
// if (!row.price) return;
row.num = row.num || 0;
row.price = row.price || 0;
row.volume = row.volume || 0;
row.weight = row.weight || 0;
console.log('row :>> ', row);
if (row.chargeType === 1) row.subtotalFreight = computeNumber(row.num, '*', row.price).result;
@ -1970,7 +1988,7 @@ const handleClickAll = e => {
console.log('e :>> ', e);
const _name = e.props.name;
details.orderStatus = _name;
initOnLoad();
init();
};
/** 返回上一个页面 */
@ -2038,7 +2056,7 @@ const handlePayWay = (number?: number) => {
const handleRefreshText = (key, value, refreshValue?: string | number) => {
console.log('key :>> ', key);
if (value) return;
query.value[key] = 1;
query.value[key] = refreshValue ? refreshValue : '';
console.log('query :>> ', query);
};

41
src/views/waybill/CreateZeroOrder.vue

@ -298,6 +298,7 @@
<el-form-item label="件数:" label-width="fit-content" prop="num" class="el-times">
<el-input-number
:value-on-clear="0"
:controls="false"
v-model="item.num"
controls-position="right"
@ -310,6 +311,7 @@
<el-form-item label="体积(方):" label-width="fit-content" class="el-times">
<el-input-number
:value-on-clear="0"
:controls="false"
v-model="item.volume"
controls-position="right"
@ -322,6 +324,7 @@
<el-form-item label="重量(kg):" label-width="fit-content" class="el-times">
<el-input-number
:value-on-clear="0"
:controls="false"
v-model="item.weight"
controls-position="right"
@ -334,6 +337,7 @@
<el-form-item label="单价:" label-width="fit-content" class="el-times">
<el-input-number
:value-on-clear="0"
:controls="false"
v-model="item.price"
controls-position="right"
@ -346,6 +350,7 @@
<el-form-item label="运费小计:" label-width="fit-content" class="el-times">
<el-input-number
:value-on-clear="0"
:controls="false"
v-model="item.subtotalFreight"
controls-position="right"
@ -398,6 +403,7 @@
<el-form-item label="送货费:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -409,6 +415,7 @@
<el-form-item label="提货费:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -420,6 +427,7 @@
<el-form-item label="仓库管理费:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -431,6 +439,7 @@
<el-form-item label="仓储费:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -444,6 +453,7 @@
<el-row>
<el-form-item label="装卸费:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -454,6 +464,7 @@
</el-form-item>
<el-form-item label="其它费用:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -464,6 +475,7 @@
</el-form-item>
<el-form-item label="保价费:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -474,6 +486,7 @@
</el-form-item>
<el-form-item label="申明价值:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -484,6 +497,7 @@
</el-form-item>
<el-form-item label="回扣:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -497,6 +511,7 @@
<el-row>
<el-form-item label="安装费:">
<el-input-number
:value-on-clear="0"
:controls="false"
controls-position="right"
:precision="2"
@ -554,6 +569,7 @@
<el-form-item label-width="fit-content" label="现付:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -567,6 +583,7 @@
<el-row>
<el-form-item label-width="fit-content" label="到付:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -578,6 +595,7 @@
<el-form-item label-width="fit-content" label="月结:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -589,6 +607,7 @@
<el-form-item label-width="fit-content" label="回付:">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -614,6 +633,7 @@
<div style="font-size: 14px">代收货款:</div>
<el-form-item label-width="0">
<el-input-number
:value-on-clear="0"
:controls="false"
:precision="2"
:min="0"
@ -639,6 +659,7 @@
<el-form-item label="三方操作费:" label-width="fit-content" class="el-times">
<el-input-number
:value-on-clear="0"
:controls="false"
v-model="query.thirdOperationFee"
controls-position="right"
@ -676,6 +697,7 @@
<el-form-item label="回单" label-width="fit-content" class="el-times">
<el-input-number
:value-on-clear="0"
:controls="false"
v-model="query.receiptNum"
controls-position="right"
@ -1300,15 +1322,16 @@ details.deepQuery = deepClone(details.query);
const totalCost = computed(() => {
// let _num = 0;
const _num = computeNumber(0, '+', details.totalObj.totalFreight)
.next('+', details.query.deliveryFee)
.next('+', details.query.pickupFee)
.next('+', details.query.warehouseManagementFee)
.next('+', details.query.storageFee)
.next('+', details.query.handlingFee)
.next('+', details.query.otherFee)
.next('+', details.query.insuranceFee)
.next('+', details.query.rebate)
.next('+', details.query.claimingValue).result;
.next('+', details.query.deliveryFee || 0)
.next('+', details.query.pickupFee || 0)
.next('+', details.query.warehouseManagementFee || 0)
.next('+', details.query.storageFee || 0)
.next('+', details.query.handlingFee || 0)
.next('+', details.query.otherFee || 0)
.next('+', details.query.insuranceFee || 0)
.next('+', details.query.rebate || 0)
.next('+', details.query.installFee || 0)
.next('+', details.query.claimingValue || 0).result;
handlePayWay(_num);
return _num;

96
src/views/waybill/WaybillOrderList.vue

@ -96,36 +96,33 @@
</div>
</el-row>
<!-- 表格 -->
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="details.columnList"
:tableData="data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '运单号'">
<el-text @click="handleGoWaybillDetails(slotProps.scope)">
{{ slotProps.scope.row.waybillNo }}
</el-text>
</template>
<template v-else-if="slotProps.scope.column.label === '操作'">
<el-text @click="handleShowPackageOrderList(slotProps.scope)"> 上传回单 </el-text>
<el-text @click="handleViewOrderDetails(slotProps.scope)"> 查看订单 </el-text>
<!-- <el-text @click="handleShowPackageOrderList(slotProps.scope)">
<!-- 列表模块 -->
<tablecmt
:columnList="details.columnList"
:tableData="data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '运单号'">
<el-text @click="handleGoWaybillDetails(slotProps.scope)">
{{ slotProps.scope.row.waybillNo }}
</el-text>
</template>
<template v-else-if="slotProps.scope.column.label === '操作'">
<el-text @click="handleShowPackageOrderList(slotProps.scope)"> 上传回单 </el-text>
<el-text @click="handleViewOrderDetails(slotProps.scope)"> 查看订单 </el-text>
<!-- <el-text @click="handleShowPackageOrderList(slotProps.scope)">
零担标签
</el-text> -->
</template>
</template>
</tablecmt>
</el-row>
</template>
</tablecmt>
<!-- 分页模块 -->
<el-row class="el-fy">
@ -185,6 +182,45 @@
</template>
</el-dialog>
<!-- 查看改单 -->
<el-dialog
title="查看改单"
:visible.sync="details.popUpShow.WaybillPrintTemplate"
width="780px"
:show-close="false"
:fullscreen="details.fullscreenObj.WaybillPrintTemplate"
v-model="details.popUpShow.WaybillPrintTemplate"
>
<!-- 头部 -->
<template #header="{ close, titleId, titleClass }">
<div class="my-header flex-c-sb">
<div :id="titleId" :class="titleClass">运单打印</div>
<div class="flex-c-c">
<!-- 全屏显示按钮 -->
<el-button type="text" v-if="!details.fullscreenObj.WaybillPrintTemplate">
<el-icon class="" @click="handleFullScrean('open', 'WaybillPrintTemplate')"
><FullScreen
/></el-icon>
</el-button>
<el-button type="text" v-else>
<el-icon class="" @click="handleFullScrean('close', 'WaybillPrintTemplate')"
><CopyDocument
/></el-icon>
</el-button>
<!-- 弹窗关闭按钮 -->
<el-button type="text">
<el-icon class="" @click="close"><Close /></el-icon>
</el-button>
</div>
</div>
</template>
<div v-for="item in details.selectionList" :key="item.id" style="margin-top: 20px">
<WaybillPrintTemplate :waybillInfo="item" />
</div>
</el-dialog>
<!-- 列表配置显示 -->
<edittablehead
@setcolum="setnewcolum"
@ -277,6 +313,8 @@ const details = reactive<any>({
packageOrderListlVisited: false,
/** 查看 */
view: false,
/** 运单打印模版 */
WaybillPrintTemplate: false,
},
/** 列表Dom节点 */
listNode: '',
@ -285,6 +323,7 @@ const details = reactive<any>({
fullscreenObj: {
/** 查看 */
view: false,
WaybillPrintTemplate: false,
},
});
@ -473,6 +512,7 @@ const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
break;
default:
details.fullscreenObj[_name] = !details.fullscreenObj[_name];
break;
}
};
@ -485,6 +525,8 @@ const batchPrint = () => {
message: '最少选择一条数据',
});
}
details.popUpShow.WaybillPrintTemplate = true;
};
/** 改单 */

70
src/views/waybill/orderPackageListDetails.vue

@ -1,5 +1,5 @@
<template>
<basic-container>
<basic-container v-loading="details.loadingObj.pageLaoding">
<div class="avue-crud">
<!-- 搜索模块 -->
<div v-h5uShow="!search">
@ -410,6 +410,8 @@ const details = reactive<any>({
/** 列表加载loading */
list: false,
packageListLoading: false,
/** 页面loading */
pageLaoding: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
@ -748,21 +750,29 @@ const handleBatchPutInStorage = () => {
type: 'warning',
})
.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: '入库成功',
});
try {
details.loadingObj.pageLaoding = true;
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: '入库成功',
});
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLaoding = false;
}
})
.catch(() => {});
};
@ -782,24 +792,32 @@ const handleShowFlowNode = ({ row }) => {
/** 批量删除 */
const handleBatchDelete = () => {
if (details.selectionList.length === 0) return ElMessage.error('请选择要删除的数据');
if (details.selectionList.length === 0) return ElMessage.error('请选择要删除的数据');
ElMessageBox.confirm('确认删除吗?', '警告', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
const submitData = { advanceDetailIds: details.selectionList.map(item => item.id) };
try {
details.loadingObj.pageLaoding = true;
const res = await postDeleteAdvanceDetail(submitData);
const { code } = res.data;
const submitData = { advanceDetailIds: details.selectionList.map(item => item.id) };
if (code !== 200) return;
initPage();
ElMessage({
type: 'success',
message: '删除成功',
});
const res = await postDeleteAdvanceDetail(submitData);
const { code } = res.data;
if (code !== 200) return;
initPage();
ElMessage({
type: 'success',
message: '删除成功',
});
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLaoding = false;
}
});
};
</script>

Loading…
Cancel
Save