Files
guilixu-admin/.workbuddy/memory/2026-07-14.md
赵忠林 a2640ba7dc feat(shop): 实时修复今日数据及优化商城设置与商品列表展示
- 修复 dashboard 今日数据统计,改为实时计算订单、销售额、用户数与优惠券使用量
- 统计数据写入 cmsStatistics 表,新增 couponUsedCount 状态与 getter
- dashboard 页面移除原有按日期查询逻辑,优惠券使用数改为响应式读取
- 商城设置 Logo 上传改为直接调用 OSS 接口上传,移除图片库选择组件
- 新增商品列表中市场价和会员价列,数据为空时显示 "-"
- 同步更新商品列表导出功能,包含新增的价格列与列宽配置
- 商品列表商品图片添加 OSS 压缩访问支持
- 调整商品分类搜索框与关键词输入框宽度以优化布局
2026-07-14 20:27:26 +08:00

5.8 KiB
Raw Blame History

2026-07-14 修复 Dashboard 统计数据问题

问题描述

用户反馈 /shop/dashboard 页面所有统计数据都显示为 0包括用户总数、订单总数、总营业额、运行天数、今日数据概况等。

修复内容

1. 修复 src/store/modules/statistics.ts

  • 添加了 todaySalestodayOrderstodayUserscmsStatistics 表数据中提取的逻辑
  • fetchStatistics 中传入 page: 1, limit: 1 参数,减少不必要的数据传输
  • 确保在没有 cmsStatistics 记录时,仍然能使用基础统计数据(用户总数、订单总数、总销售额)

2. 修复 src/views/shop/dashboard/index.vue

  • coreStatstodayStatstodoItemsreactive 改为 computed,确保数据响应式更新
  • 修复了今日数据使用错误来源的问题:
    • 之前:todayStats.salesAmount = totalSales.value(使用总销售额作为今日销售额)
    • 现在:todayStats.salesAmount = todaySales.value(使用真正的今日销售额)
  • 添加了从 API 获取待处理事项数据的逻辑:
    • 待发货订单:statusFilter: 1 查询
    • 退款/售后:statusFilter: 6 查询
    • 今日订单数:通过 createTimeStartcreateTimeEnd 查询

注意事项

如果后端 cmsStatistics 表中没有今日数据todaySales、todayOrders、todayUsers今日数据仍会显示为 0。建议

  1. 检查后端是否有定时任务更新 cmsStatistics
  2. 或手动触发统计数据更新
  3. 检查浏览器控制台是否有 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
    • 引入 dayjslistShopOrder
    • fetchStatistics 中实时调用 listShopOrder({ createTimeStart, createTimeEnd }) 获取今日订单列表,直接计算 todayOrderstodaySales(仅已付款订单)、couponUsedCount
    • 调用 pageUsers({ createTimeStart, createTimeEnd }) 获取 todayUsers
    • 将今日数据同步写入 cmsStatistics 表(若存在记录),同时新增 couponUsedCount store 状态与 getter。
  • src/views/shop/dashboard/index.vue
    • 移除原来使用 createTimeStart/End: today(仅日期)查询今日订单并作为优惠券使用数的占位逻辑。
    • couponUsedCount 改为从 statisticsStore.couponUsedCount 读取。
    • 今日销售额使用 formatMoney 保留两位小数显示。

验证

  • pnpm run build 成功。
  • vue-tsc --noEmit 在改动文件中未引入新错误。

备注

  • 待发货/退款仍使用 statusFilter=1statusFilter=6;若后续出现货到付款订单未计入待发货,需再检查订单 payStatus 在后端是否被正确标记为已付款。

2026-07-14 订单列表商品图片接入 OSS 压缩

改动内容

  • 参考 /Users/gxwebsoft/VUE/xinlong-shop-taro/src/utils/image.ts,在管理后台新增 src/utils/image.ts
    • ensureFullUrl(url):补全 OSS 域名为完整 URL
    • getCompressedImageUrl(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-promessageLoading 保持上传加载提示与商品编辑弹窗一致。

2026-07-14 商品列表增加三价格展示

改动文件

  • src/views/shop/shopGoods/index.vue

列表页列配置

  • 原来只显示一列「价格」(price)
  • 新增「市场价」列 (salePrice),数据为空时显示 -
  • 新增「会员价」列 (dealerPrice),数据为空时显示 -
  • 三列均设置 width: 110align: 'center'customRender 前缀

导出功能同步更新

  • 导出表头增加「市场价」「会员价」两列
  • 数据行对应增加 goods.salePricegoods.dealerPrice 输出
  • 列宽配置同步增加两列 { wch: 12 }

备注

  • 编辑表单 shopGoodsEdit.vue 已支持三个价格编辑(价格/市场价/会员价),无需修改
  • 数据模型字段映射:价格=price, 市场价=salePrice, 会员价=dealerPrice