购物增加统计功能

This commit is contained in:
zhonghua.li
2026-06-06 22:55:38 +08:00
parent 92d37655b0
commit 2294a82abd

View File

@@ -2,9 +2,6 @@
<div class="app-container">
<el-card class="filter-container" shadow="never">
<el-form :model="queryParams" :inline="true" label-width="100px">
<el-form-item label="订单号">
<el-input v-model="queryParams.orderSn" clearable placeholder="订单号" style="width: 160px" />
</el-form-item>
<el-form-item label="卖家ID">
<el-input v-model="queryParams.sellerId" clearable placeholder="卖家ID" style="width: 140px" />
</el-form-item>
@@ -14,6 +11,13 @@
<el-form-item label="买家ID">
<el-input v-model="queryParams.buyerId" clearable placeholder="买家ID" style="width: 140px" />
</el-form-item>
<el-form-item label="数据类型">
<el-select v-model="queryParams.dataType" clearable placeholder="请选择数据类型" style="width: 140px">
<el-option label="明细" value="detail_data" />
<el-option label="按天统计" value="day_stat" />
<el-option label="总和统计" value="sum_data" />
</el-select>
</el-form-item>
<el-form-item label="卖家昵称">
<el-input v-model="queryParams.sellerNickname" clearable placeholder="卖家昵称" style="width: 140px" />
</el-form-item>
@@ -115,6 +119,11 @@
<el-table-column label="买家ID" prop="buyerId" min-width="100" show-overflow-tooltip />
<el-table-column label="买家昵称" prop="buyerNickname" min-width="110" show-overflow-tooltip />
<el-table-column label="买家手机" prop="buyerMobile" min-width="120" show-overflow-tooltip />
<el-table-column label="数据类型" prop="dataType" min-width="100" show-overflow-tooltip>
<template slot-scope="scope">
{{ formatDataType(scope.row.dataType) }}
</template>
</el-table-column>
<el-table-column label="商品ID" prop="merchandiseId" min-width="100" show-overflow-tooltip />
<el-table-column label="卖家ID" prop="sellerId" min-width="100" show-overflow-tooltip />
<el-table-column label="卖家昵称" prop="sellerNickname" min-width="110" show-overflow-tooltip />
@@ -124,6 +133,21 @@
{{ formatAmount(scope.row.newTotal) }}
</template>
</el-table-column>
<el-table-column label="总金额" prop="statTotalMoney" min-width="110" align="right">
<template slot-scope="scope">
{{ formatAmount(scope.row.statTotalMoney) }}
</template>
</el-table-column>
<el-table-column label="总单数" prop="totalOrderCount" min-width="90" align="right">
<template slot-scope="scope">
{{ formatCount(scope.row.totalOrderCount) }}
</template>
</el-table-column>
<el-table-column label="平均金额" prop="avgAmount" min-width="110" align="right">
<template slot-scope="scope">
{{ formatAmount(scope.row.avgAmount) }}
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createdAt" min-width="160">
<template slot-scope="scope">
{{ formatDateTime(scope.row.createdAt) }}
@@ -163,8 +187,8 @@
<el-form-item label="租户ID">
<el-input :value="tenantIdDisplay" disabled placeholder="未获取到租户ID" />
</el-form-item>
<el-form-item label="买家ID" prop="buyerId">
<el-input v-model="statForm.buyerId" clearable placeholder="请输入买家ID" />
<el-form-item label="买家ID">
<el-input v-model="statForm.buyerId" clearable placeholder="选填,不填则统计全部买家" />
</el-form-item>
<el-form-item label="统计类型" prop="statType">
<el-radio-group v-model="statForm.statType">
@@ -375,7 +399,6 @@ export default {
mobileListText: [{ required: true, message: '请输入手机号', trigger: 'blur' }]
},
statFormRules: {
buyerId: [{ required: true, message: '请输入买家ID', trigger: 'blur' }],
statType: [{ required: true, message: '请选择统计类型', trigger: 'change' }]
},
list: [],
@@ -392,7 +415,7 @@ export default {
sellerId: '',
merchandiseId: '',
buyerId: '',
orderSn: '',
dataType: '',
sellerNickname: '',
sellerMobile: '',
buyerNickname: '',
@@ -448,16 +471,16 @@ export default {
this.$message.error('未获取到租户ID请先登录或配置业务请求头中的租户')
return
}
const buyerIdText = (this.statForm.buyerId || '').trim()
const buyerId = parseOptionalLong(this.statForm.buyerId)
if (buyerId == null) {
if (buyerIdText && buyerId == null) {
this.$message.warning('请输入有效的买家ID')
return
}
const payload = { statType: this.statForm.statType }
if (buyerId != null) payload.buyerId = buyerId
this.statLoading = true
generateLbBuyerShoppingStat({
buyerId,
statType: this.statForm.statType
})
generateLbBuyerShoppingStat(payload)
.then((res) => {
const isSuccess = res && (res.success === true || res.code === 200 || res.code === 20000)
if (!isSuccess) {
@@ -550,7 +573,7 @@ export default {
sellerId: parseOptionalLong(this.queryParams.sellerId),
merchandiseId: parseOptionalLong(this.queryParams.merchandiseId),
buyerId: parseOptionalLong(this.queryParams.buyerId),
orderSn: this.queryParams.orderSn || undefined,
dataType: this.queryParams.dataType || undefined,
sellerNickname: this.queryParams.sellerNickname || undefined,
sellerMobile: this.queryParams.sellerMobile || undefined,
buyerNickname: this.queryParams.buyerNickname || undefined,
@@ -583,7 +606,7 @@ export default {
sellerId: '',
merchandiseId: '',
buyerId: '',
orderSn: '',
dataType: '',
sellerNickname: '',
sellerMobile: '',
buyerNickname: '',
@@ -703,6 +726,20 @@ export default {
const n = Number(val)
return Number.isNaN(n) ? String(val) : n.toFixed(2)
},
formatDataType(val) {
const map = {
detail_data: '明细',
day_stat: '按天统计',
sum_data: '总和统计'
}
if (val === null || val === undefined || val === '') return '-'
return map[val] || String(val)
},
formatCount(val) {
if (val === null || val === undefined || val === '') return '-'
const n = Number(val)
return Number.isNaN(n) ? String(val) : String(n)
},
formatDateTime(dateTime) {
if (!dateTime) return '-'
const date = new Date(String(dateTime).replace('T', ' '))