按目的国家统计

This commit is contained in:
wuteng 2025-11-13 17:25:01 +08:00
parent 2529c15a3d
commit 3f2a740aba
3 changed files with 319 additions and 248 deletions

View File

@ -2,12 +2,12 @@
<div class="app-container"> <div class="app-container">
<div class="el-tabs-container"> <div class="el-tabs-container">
<el-tabs slot="pageTabs" v-model="activeTab" @tab-click="handleTabsClick"> <el-tabs slot="pageTabs" v-model="activeTab" @tab-click="handleTabsClick">
<el-tab-pane label="出货统计" name="shipment" > <el-tab-pane label="按运输方式统计" name="shipment" >
<MonthlyShipmentStatQuery @onSelect="onSelect"> </MonthlyShipmentStatQuery> <MonthlyShipmentStatQuery @onSelect="onSelect"> </MonthlyShipmentStatQuery>
</el-tab-pane> </el-tab-pane>
<!-- <el-tab-pane label="按目的国家统计" name="receiveCountry" > <el-tab-pane label="按目的国家统计" name="receiveCountry" >
<monthlyShipmentStatReceiveCountryQuery @onSelect="onSelect"> </monthlyShipmentStatReceiveCountryQuery> <monthlyShipmentStatReceiveCountryQuery @onSelect="onSelect"> </monthlyShipmentStatReceiveCountryQuery>
</el-tab-pane> --> </el-tab-pane>
<el-tab-pane label="明细列表" v-if="showDtlList" name="dtlList" > <el-tab-pane label="明细列表" v-if="showDtlList" name="dtlList" >
<!-- <PayBackRecordList :queryType="queryType" :queryInfo="queryInfo"></PayBackRecordList> --> <!-- <PayBackRecordList :queryType="queryType" :queryInfo="queryInfo"></PayBackRecordList> -->
</el-tab-pane> </el-tab-pane>

View File

@ -7,11 +7,11 @@
<el-form-item label="寄件时间" prop="createTime" label-width="68px"> <el-form-item label="寄件时间" prop="createTime" label-width="68px">
<elDateAdvPicker v-model="dateTimeRange" style="z-index:9999;width:260px" ></elDateAdvPicker> <elDateAdvPicker v-model="dateTimeRange" style="z-index:9999;width:260px" ></elDateAdvPicker>
</el-form-item> </el-form-item>
<el-form-item label="客户名称" prop="custNo" label-width="68px">
<AllMonthpayAccountPicker v-model="queryParams.custNo" style="width:260px"></AllMonthpayAccountPicker>
</el-form-item>
</el-col> </el-col>
<el-col :span="18"> <el-col :span="18">
<el-form-item label="客户名称" prop="custNo">
<AllMonthpayAccountPicker v-model="queryParams.custNo" style="width:100%" ></AllMonthpayAccountPicker>
</el-form-item>
<el-form-item label="寄件国家" prop="sendCountry"> <el-form-item label="寄件国家" prop="sendCountry">
<CountryPicker1 v-model="queryParams.sendCountry" :placeholder="$t('寄件国家')" ></CountryPicker1> <CountryPicker1 v-model="queryParams.sendCountry" :placeholder="$t('寄件国家')" ></CountryPicker1>
</el-form-item> </el-form-item>
@ -41,7 +41,7 @@
border border
size="mini" size="mini"
storageName="PayBackStatList_main_2505_05" storageName="MonthlyShipmentStatList_main_2511_13"
:data="emisStatList" :data="emisStatList"
:showSearch.sync="showSearch" :showSearch.sync="showSearch"
@ -205,7 +205,7 @@ export default {
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
custNo: null, custNo: null,
sendCountry: null, sendCountry: null,
receiveCountry: null, receiveCountry: null,
@ -215,6 +215,7 @@ export default {
params: { params: {
beginSendDate: null, beginSendDate: null,
endSendDate: null, endSendDate: null,
statType:'1'
} }
}, },
// 表单参数 // 表单参数

View File

@ -6,12 +6,12 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="寄件时间" prop="createTime" label-width="68px"> <el-form-item label="寄件时间" prop="createTime" label-width="68px">
<elDateAdvPicker v-model="dateTimeRange" style="z-index:9999;width:260px" ></elDateAdvPicker> <elDateAdvPicker v-model="dateTimeRange" style="z-index:9999;width:260px" ></elDateAdvPicker>
</el-form-item>
<el-form-item label="客户名称" prop="custNo" label-width="68px">
<AllMonthpayAccountPicker v-model="queryParams.custNo" style="width:260px" ></AllMonthpayAccountPicker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="18"> <el-col :span="18">
<el-form-item label="客户名称" prop="custNo">
<AllMonthpayAccountPicker v-model="queryParams.custNo" style="width:100%" ></AllMonthpayAccountPicker>
</el-form-item>
<el-form-item label="寄件国家" prop="sendCountry"> <el-form-item label="寄件国家" prop="sendCountry">
<CountryPicker1 v-model="queryParams.sendCountry" :placeholder="$t('寄件国家')" ></CountryPicker1> <CountryPicker1 v-model="queryParams.sendCountry" :placeholder="$t('寄件国家')" ></CountryPicker1>
</el-form-item> </el-form-item>
@ -41,7 +41,7 @@
border border
size="mini" size="mini"
storageName="PayBackStatList_main_2505_05" storageName="MonthlyShipmentStatReceiveCountryList_main_2511_13"
:data="emisStatList" :data="emisStatList"
:showSearch.sync="showSearch" :showSearch.sync="showSearch"
@ -78,45 +78,61 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('总重量')" align="center" prop="totalWeight" min-width="100" /> <el-table-column :label="$t('总重量')" align="center" prop="totalWeight" min-width="100" />
<el-table-column :label="$t('销售联系人')" align="center" prop="salesmen" min-width="120" /> <el-table-column :label="$t('销售联系人')" align="center" prop="salesmen" min-width="120" />
<el-table-column :label="$t('越南')" align="center" prop="express" min-width="120" > <el-table-column :label="$t('中国')" align="center" prop="china" min-width="120" >
<el-table-column :label="$t('票数')" align="center" prop="expressTickets" min-width="120" > <el-table-column :label="$t('票数')" align="center" prop="chinaTickets" min-width="120" >
<template slot-scope="scope"> <template slot-scope="scope">
<span @click="handleShowBillList(scope.row,1)">{{ scope.row.expressTickets }}</span> <span @click="handleShowBillList(scope.row,'0086')">{{ scope.row.chinaTickets }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('实际重量')" align="center" prop="expressWeight" min-width="120" /> <el-table-column :label="$t('实际重量')" align="center" prop="chinaWeight" min-width="120" />
</el-table-column> </el-table-column>
<el-table-column :label="$t('空运')" align="center" prop="air" width="100" > <el-table-column :label="$t('越南')" align="center" prop="vietnam" min-width="120" >
<el-table-column :label="$t('票数')" align="center" prop="airTickets" min-width="120" > <el-table-column :label="$t('票数')" align="center" prop="vietnamTickets" min-width="120" >
<template slot-scope="scope"> <template slot-scope="scope">
<span @click="handleShowBillList(scope.row,2)">{{ scope.row.airTickets }}</span> <span @click="handleShowBillList(scope.row,'0084')">{{ scope.row.vietnamTickets }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('实际重量')" align="center" prop="airWeight" min-width="120" /> <el-table-column :label="$t('实际重量')" align="center" prop="vietnamWeight" min-width="120" />
</el-table-column> </el-table-column>
<el-table-column :label="$t('陆运')" align="center" prop="land" width="100" > <el-table-column :label="$t('柬埔寨')" align="center" prop="cambodia" width="100" >
<el-table-column :label="$t('票数')" align="center" prop="landTickets" min-width="120" > <el-table-column :label="$t('票数')" align="center" prop="cambodiaTickets" min-width="120" >
<template slot-scope="scope"> <template slot-scope="scope">
<span @click="handleShowBillList(scope.row,'3,5')">{{ scope.row.landTickets }}</span> <span @click="handleShowBillList(scope.row,'0855')">{{ scope.row.cambodiaTickets }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('实际重量')" align="center" prop="landWeight" min-width="120" /> <el-table-column :label="$t('实际重量')" align="center" prop="cambodiaWeight" min-width="120" />
</el-table-column> </el-table-column>
<el-table-column :label="$t('进口')" align="center" prop="import" width="100" > <el-table-column :label="$t('缅甸票')" align="center" prop="myanmar" width="100" >
<el-table-column :label="$t('票数')" align="center" prop="importTickets" min-width="120" > <el-table-column :label="$t('票数')" align="center" prop="myanmarTickets" min-width="120" >
<template slot-scope="scope"> <template slot-scope="scope">
<span @click="handleShowBillList(scope.row,'import')">{{ scope.row.importTickets }}</span> <span @click="handleShowBillList(scope.row,'0095')">{{ scope.row.myanmarTickets }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('实际重量')" align="center" prop="importWeight" min-width="120" /> <el-table-column :label="$t('实际重量')" align="center" prop="myanmarWeight" min-width="120" />
</el-table-column> </el-table-column>
<el-table-column :label="$t('海运')" align="center" prop="sea" width="100" > <el-table-column :label="$t('孟加拉')" align="center" prop="bangladesh" width="100" >
<el-table-column :label="$t('票数')" align="center" prop="seaTickets" min-width="120" > <el-table-column :label="$t('票数')" align="center" prop="bangladeshTickets" min-width="120" >
<template slot-scope="scope"> <template slot-scope="scope">
<span @click="handleShowBillList(scope.row,4)">{{ scope.row.seaTickets }}</span> <span @click="handleShowBillList(scope.row,'0880')">{{ scope.row.bangladeshTickets }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('实际重量')" align="center" prop="seaWeight" min-width="120" /> <el-table-column :label="$t('实际重量')" align="center" prop="bangladeshWeight" min-width="120" />
</el-table-column>
<el-table-column :label="$t('老挝')" align="center" prop="lao" width="100" >
<el-table-column :label="$t('票数')" align="center" prop="laoTickets" min-width="120" >
<template slot-scope="scope">
<span @click="handleShowBillList(scope.row,'0856')">{{ scope.row.laoTickets }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('实际重量')" align="center" prop="laoWeight" min-width="120" />
</el-table-column>
<el-table-column :label="$t('泰国')" align="center" prop="thailand" width="100" >
<el-table-column :label="$t('票数')" align="center" prop="thailandTickets" min-width="120" >
<template slot-scope="scope">
<span @click="handleShowBillList(scope.row,'0066')">{{ scope.row.thailandTickets }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('实际重量')" align="center" prop="thailandWeight" min-width="120" />
</el-table-column> </el-table-column>
<el-table-column :label="$t('其他')" align="center" prop="other" width="100" > <el-table-column :label="$t('其他')" align="center" prop="other" width="100" >
<el-table-column :label="$t('票数')" align="center" prop="otherTickets" min-width="120" > <el-table-column :label="$t('票数')" align="center" prop="otherTickets" min-width="120" >
@ -205,7 +221,7 @@ export default {
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
custNo: null, custNo: null,
sendCountry: null, sendCountry: null,
receiveCountry: null, receiveCountry: null,
@ -215,6 +231,7 @@ export default {
params: { params: {
beginSendDate: null, beginSendDate: null,
endSendDate: null, endSendDate: null,
statType:'2'
} }
}, },
// 表单参数 // 表单参数
@ -239,7 +256,7 @@ export default {
end = new Date(nextMonthFirstDay - oneDay) end = new Date(nextMonthFirstDay - oneDay)
end.setHours(23, 59, 59, 0) end.setHours(23, 59, 59, 0)
this.dateTimeRange = [timeFormat(start), timeFormat(end)] this.dateTimeRange = [timeFormat(start), timeFormat(end)]
// this.getList(); this.getList();
}, },
methods: { methods: {
initQueryParams(){ initQueryParams(){
@ -248,10 +265,10 @@ export default {
return thisQueryParams; return thisQueryParams;
}, },
handleShowBillList(row, transType) { handleShowBillList(row, receiveCountry) {
let params = { let params = {
...this.queryParams, ...this.queryParams,
transType: transType, receiveCountry: receiveCountry,
custNo: row.custNo, custNo: row.custNo,
}; };
console.log("====>params====>", params); console.log("====>params====>", params);
@ -369,10 +386,10 @@ export default {
sums[index] = sums[index].toFixed(2); sums[index] = sums[index].toFixed(2);
} }
else if ( else if (
column.property === 'expressTickets' column.property === 'chinaTickets'
) { ) {
const values = data.map(item => Number(item.expressTickets)); const values = data.map(item => Number(item.chinaTickets));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
@ -386,9 +403,9 @@ export default {
} }
else if ( else if (
column.property === 'expressWeight' column.property === 'chinaWeight'
) { ) {
const values = data.map(item => Number(item.expressWeight)); const values = data.map(item => Number(item.chinaWeight));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -399,9 +416,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(2); sums[index] = sums[index].toFixed(2);
} else if ( } else if (
column.property === 'airTickets' column.property === 'vietnamTickets'
) { ) {
const values = data.map(item => Number(item.airTickets)); const values = data.map(item => Number(item.vietnamTickets));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -412,9 +429,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(0); sums[index] = sums[index].toFixed(0);
} else if ( } else if (
column.property === 'airWeight' column.property === 'vietnamWeight'
) { ) {
const values = data.map(item => Number(item.airWeight)); const values = data.map(item => Number(item.vietnamWeight));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -425,9 +442,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(2); sums[index] = sums[index].toFixed(2);
} else if ( } else if (
column.property === 'landTickets' column.property === 'cambodiaTickets'
) { ) {
const values = data.map(item => Number(item.landTickets)); const values = data.map(item => Number(item.cambodiaTickets));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -438,9 +455,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(0); sums[index] = sums[index].toFixed(0);
} else if ( } else if (
column.property === 'landWeight' column.property === 'cambodiaWeight'
) { ) {
const values = data.map(item => Number(item.landWeight)); const values = data.map(item => Number(item.cambodiaWeight));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -451,9 +468,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(2); sums[index] = sums[index].toFixed(2);
} else if ( } else if (
column.property === 'importTickets' column.property === 'myanmarTickets'
) { ) {
const values = data.map(item => Number(item.importTickets)); const values = data.map(item => Number(item.myanmarTickets));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -464,9 +481,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(0); sums[index] = sums[index].toFixed(0);
} else if ( } else if (
column.property === 'importWeight' column.property === 'myanmarWeight'
) { ) {
const values = data.map(item => Number(item.importWeight)); const values = data.map(item => Number(item.myanmarWeight));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -477,9 +494,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(2); sums[index] = sums[index].toFixed(2);
} else if ( } else if (
column.property === 'seaTickets' column.property === 'bangladeshTickets'
) { ) {
const values = data.map(item => Number(item.seaTickets)); const values = data.map(item => Number(item.bangladeshTickets));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -490,9 +507,9 @@ export default {
}, 0); }, 0);
sums[index] = sums[index].toFixed(0); sums[index] = sums[index].toFixed(0);
} else if ( } else if (
column.property === 'seaWeight' column.property === 'bangladeshWeight'
) { ) {
const values = data.map(item => Number(item.seaWeight)); const values = data.map(item => Number(item.bangladeshWeight));
sums[index] = values.reduce((prev, curr) => { sums[index] = values.reduce((prev, curr) => {
const value = Number(curr); const value = Number(curr);
if (!isNaN(value)) { if (!isNaN(value)) {
@ -502,7 +519,8 @@ export default {
} }
}, 0); }, 0);
sums[index] = sums[index].toFixed(2); sums[index] = sums[index].toFixed(2);
}else if( }
else if (
column.property === 'otherTickets' column.property === 'otherTickets'
) { ) {
const values = data.map(item => Number(item.otherTickets)); const values = data.map(item => Number(item.otherTickets));
@ -528,6 +546,58 @@ export default {
} }
}, 0); }, 0);
sums[index] = sums[index].toFixed(2); sums[index] = sums[index].toFixed(2);
} else if (
column.property === 'laosTickets'
) {
const values = data.map(item => Number(item.laosTickets));
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] = sums[index].toFixed(0);
} else if (
column.property === 'laosWeight'
) {
const values = data.map(item => Number(item.laosWeight));
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] = sums[index].toFixed(2);
} else if (
column.property === 'thailandTickets'
) {
const values = data.map(item => Number(item.thailandTickets));
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] = sums[index].toFixed(0);
} else if (
column.property === 'thailandWeight'
) {
const values = data.map(item => Number(item.thailandWeight));
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] = sums[index].toFixed(2);
} }
}); });
return sums return sums