- 修复 dashboard 今日数据统计,改为实时计算订单、销售额、用户数与优惠券使用量 - 统计数据写入 cmsStatistics 表,新增 couponUsedCount 状态与 getter - dashboard 页面移除原有按日期查询逻辑,优惠券使用数改为响应式读取 - 商城设置 Logo 上传改为直接调用 OSS 接口上传,移除图片库选择组件 - 新增商品列表中市场价和会员价列,数据为空时显示 "-" - 同步更新商品列表导出功能,包含新增的价格列与列宽配置 - 商品列表商品图片添加 OSS 压缩访问支持 - 调整商品分类搜索框与关键词输入框宽度以优化布局
5.8 KiB
5.8 KiB
2026-07-14 修复 Dashboard 统计数据问题
问题描述
用户反馈 /shop/dashboard 页面所有统计数据都显示为 0,包括用户总数、订单总数、总营业额、运行天数、今日数据概况等。
修复内容
1. 修复 src/store/modules/statistics.ts
- 添加了
todaySales、todayOrders、todayUsers从cmsStatistics表数据中提取的逻辑 - 在
fetchStatistics中传入page: 1, limit: 1参数,减少不必要的数据传输 - 确保在没有
cmsStatistics记录时,仍然能使用基础统计数据(用户总数、订单总数、总销售额)
2. 修复 src/views/shop/dashboard/index.vue
- 将
coreStats、todayStats、todoItems从reactive改为computed,确保数据响应式更新 - 修复了今日数据使用错误来源的问题:
- 之前:
todayStats.salesAmount = totalSales.value(使用总销售额作为今日销售额) - 现在:
todayStats.salesAmount = todaySales.value(使用真正的今日销售额)
- 之前:
- 添加了从 API 获取待处理事项数据的逻辑:
- 待发货订单:
statusFilter: 1查询 - 退款/售后:
statusFilter: 6查询 - 今日订单数:通过
createTimeStart和createTimeEnd查询
- 待发货订单:
注意事项
如果后端 cmsStatistics 表中没有今日数据(todaySales、todayOrders、todayUsers),今日数据仍会显示为 0。建议:
- 检查后端是否有定时任务更新
cmsStatistics表 - 或手动触发统计数据更新
- 检查浏览器控制台是否有 API 调用失败的错误日志
2026-07-14 Dashboard 标题改用 tenantName + 订单提醒同步刷新
Dashboard 标题
src/views/shop/dashboard/index.vue欢迎横幅标题从siteStore.appName改为userStore.info?.tenantName,显示当前登录用户所属租户名称。
订单新订单语音提醒同步刷新
src/views/shop/shopOrder/useOrderNotify.ts增加onNewOrder回调参数,检测到新订单触发提醒(叮声+语音)时同时调用回调。src/views/shop/shopOrder/index.vue调用useOrderNotify({ onNewOrder: () => reload() }),使新订单提醒时自动刷新表格数据,保持数据同步。
2026-07-14 实时统计 Dashboard 今日数据
问题
用户再次反馈 /shop/dashboard 的「今日数据概况」与「待处理事项」全部显示为 0,且已确认存在今日订单/用户数据。根本原因是 cmsStatistics 统计表未写入今日数据,而前端仍依赖该表读取 todaySales/todayOrders/todayUsers;另外 dashboard 中直接按日期查询时使用了 YYYY-MM-DD 格式,缺少时间部分,导致时间范围不匹配。
修复
src/store/modules/statistics.ts:- 引入
dayjs与listShopOrder。 - 在
fetchStatistics中实时调用listShopOrder({ createTimeStart, createTimeEnd })获取今日订单列表,直接计算todayOrders、todaySales(仅已付款订单)、couponUsedCount。 - 调用
pageUsers({ createTimeStart, createTimeEnd })获取todayUsers。 - 将今日数据同步写入
cmsStatistics表(若存在记录),同时新增couponUsedCountstore 状态与 getter。
- 引入
src/views/shop/dashboard/index.vue:- 移除原来使用
createTimeStart/End: today(仅日期)查询今日订单并作为优惠券使用数的占位逻辑。 couponUsedCount改为从statisticsStore.couponUsedCount读取。- 今日销售额使用
formatMoney保留两位小数显示。
- 移除原来使用
验证
pnpm run build成功。vue-tsc --noEmit在改动文件中未引入新错误。
备注
- 待发货/退款仍使用
statusFilter=1与statusFilter=6;若后续出现货到付款订单未计入待发货,需再检查订单payStatus在后端是否被正确标记为已付款。
2026-07-14 订单列表商品图片接入 OSS 压缩
改动内容
- 参考
/Users/gxwebsoft/VUE/xinlong-shop-taro/src/utils/image.ts,在管理后台新增src/utils/image.ts:ensureFullUrl(url):补全 OSS 域名为完整 URLgetCompressedImageUrl(url, options?):拼接x-oss-process=image/resize,w_${width}/quality,Q_${quality}压缩参数
src/views/shop/shopOrder/index.vue:- 引入
getCompressedImageUrl - 订单列表商品图片列
<a-avatar :src="item.image" />改为<a-avatar :src="getCompressedImageUrl(item.image)" />
- 引入
待办
- 用户提到后端也需要此方法,但当前工作区只有前端代码,后端实现需在后端项目补充。
2026-07-14 商城设置 Logo 改为直传
修改文件
src/views/shop/shopSetting/components/basic.vue
修改内容
- 将商城 Logo 上传方式从
SelectFile图片库选择改为a-upload+uploadOss直接上传,与商品编辑弹窗的商品图片上传方式保持一致。 - 已上传图片使用
a-image预览,下方提供"上传"按钮覆盖替换。 - 删除不再使用的
SelectFile导入、logoList变量、chooseImage/onDeleteImage回调。 - 使用
ele-admin-pro的messageLoading保持上传加载提示与商品编辑弹窗一致。
2026-07-14 商品列表增加三价格展示
改动文件
src/views/shop/shopGoods/index.vue
列表页列配置
- 原来只显示一列「价格」(
price) - 新增「市场价」列 (
salePrice),数据为空时显示- - 新增「会员价」列 (
dealerPrice),数据为空时显示- - 三列均设置
width: 110、align: 'center'、customRender带¥前缀
导出功能同步更新
- 导出表头增加「市场价」「会员价」两列
- 数据行对应增加
goods.salePrice和goods.dealerPrice输出 - 列宽配置同步增加两列
{ wch: 12 }
备注
- 编辑表单
shopGoodsEdit.vue已支持三个价格编辑(价格/市场价/会员价),无需修改 - 数据模型字段映射:价格=price, 市场价=salePrice, 会员价=dealerPrice