From c28a9412574d3a1f90d01d54d2026cb7fd069b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=98=8A=E5=A4=A9?= <442384644@qq.com> Date: Fri, 16 Oct 2026 15:15:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BA=A4=E6=98=93=E7=BB=9F=E8=AE=A1):=20?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E5=8C=BA=E9=97=B4=E8=A1=A5=E9=BD=90=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E6=97=A5=E5=B9=B6=E4=BF=AE=E5=A4=8D=E7=A9=BA=E5=80=BC?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - whereTime between 结束边界停在结束日零点漏掉当天数据,改 whereBetween 并 +86399 按全天统计 - topData series 键位空洞(历史佣金卡片移除)致 JSON 变对象、前端 filter 报错,重排为连续索引;图标序列对齐 8 卡片 - 接口异常时兜底错误文案避免 undefined --- backend/app/dao/user/UserBillDao.php | 4 +++- backend/app/services/statistic/TradeStatisticServices.php | 3 +++ .../src/pages/statistic/transaction/components/toDay.vue | 2 +- .../pages/statistic/transaction/components/transaction.vue | 6 +++--- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/backend/app/dao/user/UserBillDao.php b/backend/app/dao/user/UserBillDao.php index 1bf374b2d..db66ab2ba 100644 --- a/backend/app/dao/user/UserBillDao.php +++ b/backend/app/dao/user/UserBillDao.php @@ -360,7 +360,9 @@ class UserBillDao extends BaseDao if ($time[0] == $time[1]) { $query->whereDay($field, $time[0]); } else { - $query->whereTime($field, 'between', $time); + // whereTime between 对日期字符串的结束边界停在结束日 00:00:00,会漏掉结束日当天数据; + // 与统计口径 searchTimeAttr 的结束日 +86399 对齐,按全天统计 + $query->whereBetween($field, [strtotime($time[0]), strtotime($time[1]) + 86399]); } })->field("FROM_UNIXTIME($field,'$timeType') as days,$str as num")->group('days')->select()->toArray(); } diff --git a/backend/app/services/statistic/TradeStatisticServices.php b/backend/app/services/statistic/TradeStatisticServices.php index 065a7bbf5..59cb1170a 100644 --- a/backend/app/services/statistic/TradeStatisticServices.php +++ b/backend/app/services/statistic/TradeStatisticServices.php @@ -428,6 +428,9 @@ class TradeStatisticServices extends BaseService $data['series'][$k]['rate'] = $v['rate']; $data['series'][$k]['value'] = array_values($v['value']); } + // topData 键位不连续(历史支付佣金卡片已移除,键 7 空缺),必须重排为连续索引, + // 否则 JSON 序列化输出对象而非数组,前端 series.filter 直接报错 + $data['series'] = array_values($data['series']); // 仅导出请求时才生成 Excel 文件,普通查询不落盘 if ($isExport) { /** @var ExportServices $exportService */ diff --git a/frontend/admin/src/pages/statistic/transaction/components/toDay.vue b/frontend/admin/src/pages/statistic/transaction/components/toDay.vue index 940814b89..462ef6e19 100644 --- a/frontend/admin/src/pages/statistic/transaction/components/toDay.vue +++ b/frontend/admin/src/pages/statistic/transaction/components/toDay.vue @@ -438,7 +438,7 @@ function getList() { }) .catch((res) => { listLoading.value = false; - ElMessage.error(res.msg); + ElMessage.error(res?.msg || '数据加载失败'); }); } function getOrder() {} diff --git a/frontend/admin/src/pages/statistic/transaction/components/transaction.vue b/frontend/admin/src/pages/statistic/transaction/components/transaction.vue index dac6282c5..957bbbb34 100644 --- a/frontend/admin/src/pages/statistic/transaction/components/transaction.vue +++ b/frontend/admin/src/pages/statistic/transaction/components/transaction.vue @@ -138,16 +138,16 @@ function getStatistics() { statisticBottomTradeApi({ data: dataTime.value }) .then(async (res) => { const cardLists = res.data; + // 图标顺序与后端 series 卡片顺序(营业额/商品支付/购买会员/充值/线下收银/支出/余额支付/商品退款)一致, + // 支付佣金卡片已随佣金体系移除 const incons = [ 'iconyingyee', - 'iconjiaoyijine', 'iconshangpinzhifujine', 'icongoumaihuiyuanjine', 'iconchongzhijianshu', 'iconxianxiashouyinjine', 'iconzhichujine', 'iconyuezhifujine', - 'iconzhifuyongjinjine', 'iconshangpintuikuanjine', ]; for (var i = 0; i < cardLists.series.length; i++) { @@ -158,7 +158,7 @@ function getStatistics() { spinShow.value = false; }) .catch((res) => { - ElMessage.error(res.msg); + ElMessage.error(res?.msg || '数据加载失败'); spinShow.value = false; }); }