2024-03-04 07:10:11 +00:00
|
|
|
|
<template>
|
|
|
|
|
<view class="layout-box">
|
|
|
|
|
<view class="filter">
|
2024-05-09 02:20:25 +00:00
|
|
|
|
<u-input
|
2024-03-15 06:41:42 +00:00
|
|
|
|
v-model="state.startTime"
|
2024-03-04 07:10:11 +00:00
|
|
|
|
disabled
|
2024-04-23 02:47:52 +00:00
|
|
|
|
disabledColor=""
|
2024-03-04 07:10:11 +00:00
|
|
|
|
placeholder="请选择开始时间"
|
2024-05-09 02:20:25 +00:00
|
|
|
|
></u-input>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
<text>-</text>
|
2024-05-09 02:20:25 +00:00
|
|
|
|
<u-input
|
2024-03-15 06:41:42 +00:00
|
|
|
|
v-model="state.endTime"
|
2024-03-04 07:10:11 +00:00
|
|
|
|
disabled
|
2024-04-23 02:47:52 +00:00
|
|
|
|
disabledColor=""
|
2024-03-04 07:10:11 +00:00
|
|
|
|
placeholder="请选择结束时间"
|
2024-05-09 02:20:25 +00:00
|
|
|
|
></u-input>
|
2024-03-15 06:41:42 +00:00
|
|
|
|
<u-icon
|
|
|
|
|
name="arrow-down"
|
|
|
|
|
@click="handleDialog('showTime', true)"
|
|
|
|
|
></u-icon>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
<text class="btn" @click="handleDialog('showFilter', true)">筛选</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="box">
|
|
|
|
|
<up-row>
|
|
|
|
|
<up-col span="4">
|
|
|
|
|
<view class="inner-box" style="border: none">
|
2024-04-25 08:30:50 +00:00
|
|
|
|
<view class="num highlight">{{
|
2024-07-23 07:38:35 +00:00
|
|
|
|
formatMoney(state.summary.totalAmount, 2)
|
2024-04-25 08:30:50 +00:00
|
|
|
|
}}</view>
|
2024-08-02 07:18:11 +00:00
|
|
|
|
<view>出货总净重/kg</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
<up-col span="4">
|
|
|
|
|
<view class="inner-box">
|
2024-04-25 08:30:50 +00:00
|
|
|
|
<view class="num">{{
|
2024-07-23 07:38:35 +00:00
|
|
|
|
formatMoney(state.summary.totalPayShipment, 2)
|
2024-04-25 08:30:50 +00:00
|
|
|
|
}}</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
<view>已收/kg</view>
|
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
<up-col span="4">
|
|
|
|
|
<view class="inner-box">
|
2024-04-25 08:30:50 +00:00
|
|
|
|
<view class="num">{{
|
2024-07-23 07:38:35 +00:00
|
|
|
|
formatMoney(state.summary.totalUnPayShipment, 2)
|
2024-04-25 08:30:50 +00:00
|
|
|
|
}}</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
<view>未收/kg</view>
|
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
</up-row>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view class="box">
|
|
|
|
|
<up-row>
|
|
|
|
|
<up-col span="4">
|
|
|
|
|
<view class="inner-box" style="border: none">
|
2024-04-25 08:30:50 +00:00
|
|
|
|
<view class="num highlight">{{
|
2024-07-23 07:38:35 +00:00
|
|
|
|
formatMoney(state.summary.totalCollection, 2)
|
2024-04-25 08:30:50 +00:00
|
|
|
|
}}</view>
|
2024-08-02 07:18:11 +00:00
|
|
|
|
<view>出货总收款/元</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
<up-col span="4">
|
|
|
|
|
<view class="inner-box">
|
2024-04-25 08:30:50 +00:00
|
|
|
|
<view class="num">{{
|
2024-07-23 07:38:35 +00:00
|
|
|
|
formatMoney(state.summary.totalPayCollection, 2)
|
2024-04-25 08:30:50 +00:00
|
|
|
|
}}</view>
|
2024-08-02 07:18:11 +00:00
|
|
|
|
<view>已收/元</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
<up-col span="4">
|
|
|
|
|
<view class="inner-box">
|
2024-04-25 08:30:50 +00:00
|
|
|
|
<view class="num">{{
|
2024-07-23 07:38:35 +00:00
|
|
|
|
formatMoney(state.summary.totalUnPayCollection, 2)
|
2024-04-25 08:30:50 +00:00
|
|
|
|
}}</view>
|
2024-08-02 07:18:11 +00:00
|
|
|
|
<view>未收/元</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
</up-row>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="box">
|
|
|
|
|
<up-row>
|
|
|
|
|
<up-col span="6">
|
|
|
|
|
<view class="inner-box" style="border: none">
|
2024-07-23 07:38:35 +00:00
|
|
|
|
<view class="num">{{
|
|
|
|
|
formatMoney(state.summary.totalReceipt)
|
|
|
|
|
}}</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
<view>出货单</view>
|
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
<up-col span="6">
|
|
|
|
|
<view class="inner-box">
|
2024-07-23 07:38:35 +00:00
|
|
|
|
<view class="num">{{
|
|
|
|
|
formatMoney(state.summary.averagePrice, 2)
|
|
|
|
|
}}</view>
|
2024-03-15 06:41:42 +00:00
|
|
|
|
<view>均价(元/kg)</view>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</view>
|
|
|
|
|
</up-col>
|
|
|
|
|
</up-row>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view class="box">
|
|
|
|
|
<uni-table stripe emptyText="暂无更多数据">
|
|
|
|
|
<!-- 表头行 -->
|
|
|
|
|
<uni-tr>
|
2024-03-15 06:41:42 +00:00
|
|
|
|
<uni-th v-for="(item, index) in tableTitleList" :key="index">{{
|
2024-03-04 07:10:11 +00:00
|
|
|
|
item.name
|
|
|
|
|
}}</uni-th>
|
|
|
|
|
</uni-tr>
|
|
|
|
|
<!-- 表格数据行 -->
|
2024-03-15 06:41:42 +00:00
|
|
|
|
<uni-tr v-for="(item, index) in state.summary.rankings" :key="index">
|
|
|
|
|
<uni-td>{{ item.userName }}</uni-td>
|
|
|
|
|
<uni-td>{{ item.totalAmount }}</uni-td>
|
|
|
|
|
<uni-td>{{ item.totalPayment }}</uni-td>
|
2024-08-02 06:37:53 +00:00
|
|
|
|
<uni-td>{{ item.actualPayment }}</uni-td>
|
2024-03-15 06:41:42 +00:00
|
|
|
|
<uni-td>{{ item.totalOrderNumber }}</uni-td>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</uni-tr>
|
|
|
|
|
</uni-table>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 时间弹框 -->
|
2024-03-15 06:41:42 +00:00
|
|
|
|
<TimeDialog
|
|
|
|
|
ref="timeDialog"
|
|
|
|
|
:show="showDialog.showTime"
|
|
|
|
|
@handleDialog="(v:boolean) => {handleDialog('showTime', v)}"
|
|
|
|
|
@changeTime="changeTime"
|
|
|
|
|
/>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
|
2024-03-15 06:41:42 +00:00
|
|
|
|
<!-- 筛选弹框 -->
|
|
|
|
|
<FilterDialog
|
|
|
|
|
:show="showDialog.showFilter"
|
|
|
|
|
@handleDialog="(v:boolean) => {handleDialog('showFilter', v)}"
|
|
|
|
|
@changeOther="changeOther"
|
|
|
|
|
:isShipment="true"
|
|
|
|
|
/>
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</template>
|
|
|
|
|
<script setup lang="ts">
|
2024-07-15 06:15:49 +00:00
|
|
|
|
import TimeDialog from "@/components/Dialog/TimeDialog.vue";
|
2024-03-15 06:41:42 +00:00
|
|
|
|
import FilterDialog from "./components/FilterDialog.vue";
|
|
|
|
|
import { ShipmentApi } from "@/services";
|
2024-04-25 08:30:50 +00:00
|
|
|
|
import {
|
|
|
|
|
formatDate,
|
|
|
|
|
formatMoney,
|
|
|
|
|
getCurrentMonthStartAndEnd,
|
|
|
|
|
getScaleStatus,
|
|
|
|
|
} from "@/utils";
|
2024-03-04 07:10:11 +00:00
|
|
|
|
const tableTitleList = reactive([
|
|
|
|
|
{
|
|
|
|
|
name: "客户",
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-08-02 07:18:11 +00:00
|
|
|
|
name: "出货总净重/kg",
|
2024-03-04 07:10:11 +00:00
|
|
|
|
},
|
|
|
|
|
{
|
2024-08-02 07:18:11 +00:00
|
|
|
|
name: "实际收款",
|
2024-03-04 07:10:11 +00:00
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "实收款",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "数量",
|
|
|
|
|
},
|
|
|
|
|
]);
|
|
|
|
|
const showDialog = <
|
|
|
|
|
{
|
2024-03-15 06:41:42 +00:00
|
|
|
|
[key: string]: boolean;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
}
|
2024-03-15 06:41:42 +00:00
|
|
|
|
>reactive({
|
|
|
|
|
showTime: false,
|
|
|
|
|
showFilter: false,
|
|
|
|
|
});
|
2024-03-04 07:10:11 +00:00
|
|
|
|
|
2024-03-15 06:41:42 +00:00
|
|
|
|
const state = reactive<{
|
|
|
|
|
summary: ShipmentSummaryCount;
|
|
|
|
|
startTime: string;
|
|
|
|
|
endTime: string;
|
|
|
|
|
scaleStatus: number;
|
|
|
|
|
userId: number;
|
|
|
|
|
productId: number;
|
|
|
|
|
}>({
|
|
|
|
|
summary: {
|
|
|
|
|
totalAmount: 0, // 收货汇总:审核过收货总量
|
|
|
|
|
totalPayShipment: 0, // 已支付的出货总
|
|
|
|
|
totalUnPayShipment: 0, // 未支付的出货总量
|
|
|
|
|
totalCollection: 0, // 总收款
|
|
|
|
|
totalPayCollection: 0, // 已经收到的收款
|
|
|
|
|
totalUnPayCollection: 0, // 未收到的收款
|
|
|
|
|
totalReceipt: 0, // 收货单数量已审核的
|
|
|
|
|
averagePrice: 0, // 平均单价
|
|
|
|
|
rankings: [],
|
|
|
|
|
},
|
2024-07-20 08:34:44 +00:00
|
|
|
|
startTime: formatDate(
|
|
|
|
|
getCurrentMonthStartAndEnd().start,
|
|
|
|
|
"{y}-{m}-{d} {h}:{i}:{s}"
|
|
|
|
|
),
|
|
|
|
|
endTime: formatDate(
|
|
|
|
|
getCurrentMonthStartAndEnd().end,
|
|
|
|
|
"{y}-{m}-{d} {h}:{i}:{s}"
|
|
|
|
|
),
|
2024-03-15 06:41:42 +00:00
|
|
|
|
scaleStatus: -1,
|
|
|
|
|
userId: -1,
|
|
|
|
|
productId: -1,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const changeTime = (obj: any) => {
|
|
|
|
|
state.startTime = obj.startTime;
|
|
|
|
|
state.endTime = obj.endTime;
|
|
|
|
|
getList();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const changeOther = (obj: any) => {
|
|
|
|
|
state.userId = obj.userId;
|
|
|
|
|
state.productId = obj.productId;
|
|
|
|
|
getList();
|
|
|
|
|
};
|
2024-03-04 07:10:11 +00:00
|
|
|
|
|
2024-03-15 06:41:42 +00:00
|
|
|
|
const handleDialog = (key: string, v: boolean) => {
|
|
|
|
|
showDialog[key] = v;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const getList = () => {
|
|
|
|
|
let params: any = {
|
2024-07-20 08:34:44 +00:00
|
|
|
|
startTime: state.startTime,
|
|
|
|
|
endTime: state.endTime,
|
2024-03-15 06:41:42 +00:00
|
|
|
|
};
|
|
|
|
|
if (state.scaleStatus > -1) {
|
|
|
|
|
params.scaleStatus = state.scaleStatus;
|
|
|
|
|
}
|
|
|
|
|
if (state.userId > -1) {
|
|
|
|
|
params.userId = state.userId;
|
|
|
|
|
}
|
|
|
|
|
if (state.productId > -1) {
|
|
|
|
|
params.productId = state.productId;
|
|
|
|
|
}
|
|
|
|
|
ShipmentApi.getOrderInReceipt(params).then((res) => {
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
state.summary = res.data;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
getList();
|
|
|
|
|
});
|
2024-03-04 07:10:11 +00:00
|
|
|
|
</script>
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.layout-box {
|
|
|
|
|
margin: 35.9rpx 25.64rpx;
|
|
|
|
|
.filter {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-items: center;
|
|
|
|
|
font-family: Source Han Sans CN;
|
2024-03-15 06:41:42 +00:00
|
|
|
|
font-size: 28rpx;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
color: #000000;
|
2024-05-09 02:20:25 +00:00
|
|
|
|
::v-deep .u-input {
|
2024-03-04 07:10:11 +00:00
|
|
|
|
padding: 0rpx 16.03rpx !important;
|
|
|
|
|
input {
|
|
|
|
|
font-family: Source Han Sans CN;
|
|
|
|
|
font-weight: 400;
|
2024-03-15 06:41:42 +00:00
|
|
|
|
font-size: 24rpx !important;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
color: #000000;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
text {
|
|
|
|
|
margin: 0px 5rpx;
|
|
|
|
|
}
|
|
|
|
|
.status {
|
|
|
|
|
margin-left: 40rpx;
|
|
|
|
|
}
|
|
|
|
|
.btn {
|
|
|
|
|
color: $u-primary;
|
|
|
|
|
margin-left: 40rpx;
|
|
|
|
|
margin-right: 0rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.box {
|
2024-04-01 06:49:46 +00:00
|
|
|
|
padding: 28rpx 20rpx;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
// display: flex;
|
|
|
|
|
// justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
font-family: Source Han Sans CN;
|
|
|
|
|
font-weight: 400;
|
2024-03-15 06:41:42 +00:00
|
|
|
|
font-size: 26rpx;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
color: #000000;
|
|
|
|
|
text-align: center;
|
|
|
|
|
background: #ffffff;
|
|
|
|
|
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
|
|
|
|
|
border-radius: 13rpx;
|
|
|
|
|
margin-top: 30rpx;
|
|
|
|
|
}
|
|
|
|
|
.inner-box {
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-family: Source Han Sans CN;
|
|
|
|
|
font-weight: 400;
|
2024-03-15 06:41:42 +00:00
|
|
|
|
font-size: 26rpx;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
color: #000000;
|
|
|
|
|
border-left: 1px solid #e9e9e9;
|
|
|
|
|
.num {
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
font-size: 27rpx;
|
|
|
|
|
}
|
2024-04-23 02:47:52 +00:00
|
|
|
|
.highlight {
|
|
|
|
|
color: rgba(236, 15, 62, 1);
|
|
|
|
|
}
|
2024-03-04 07:10:11 +00:00
|
|
|
|
}
|
|
|
|
|
::v-deep .uni-table {
|
2024-03-15 06:41:42 +00:00
|
|
|
|
min-width: 500px !important;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
.uni-table-th {
|
|
|
|
|
font-family: Source Han Sans CN;
|
|
|
|
|
font-weight: 500;
|
2024-03-15 06:41:42 +00:00
|
|
|
|
font-size: 24rpx;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
color: #000000;
|
|
|
|
|
padding: 5px 5px;
|
|
|
|
|
}
|
|
|
|
|
.uni-table-td {
|
|
|
|
|
font-family: Source Han Sans CN;
|
|
|
|
|
font-weight: 400;
|
2024-03-15 06:41:42 +00:00
|
|
|
|
font-size: 24rpx;
|
2024-03-04 07:10:11 +00:00
|
|
|
|
color: #000000;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|