Kaynağa Gözat

fix: 修复统计数据加载错误处理并重构查询参数逻辑

- 抽离getQueryParams函数统一构建表格查询参数,简化reload逻辑
- 为统计加载接口添加错误捕获与非200状态处理,展示友好报错提示
- 完善pageConfig配置,添加并更新params参数
ylong 1 ay önce
ebeveyn
işleme
c3c9d442b9

+ 20 - 6
src/views/marketing/redBag/components/red-bag-detail.vue

@@ -218,14 +218,14 @@
     const pageConfig = reactive({
         pageUrl: '/activity/red/bag/detail/activity/redBag/detail/pagelist',
         fileName: '红包码详情',
-        cacheKey: 'redBagDetailTable'
+        cacheKey: 'redBagDetailTable',
+        params: {}
     });
 
-    // 刷新表格
-    function reload() {
+    function getQueryParams() {
         const [drawTimeStartRaw, drawTimeEndRaw] =
             searchForm.value.drawTimeRange || [];
-        pageRef.value?.reload({
+        return {
             activityId: activityId.value,
             ...searchForm.value,
             drawTimeRange: undefined,
@@ -235,19 +235,32 @@
             drawTimeEnd: drawTimeEndRaw
                 ? new Date(drawTimeEndRaw).toISOString()
                 : undefined
-        });
+        };
+    }
+
+    // 刷新表格
+    function reload() {
+        pageRef.value?.reload(getQueryParams());
     }
 
     // 加载统计数据
     const loadStats = () => {
         request
             .get('/activity/red/bag/detail/activity/redBag/detail/sum', {
-                params: { activityId: activityId.value }
+                params: { activityId: activityId.value },
+                validateStatus: () => true
             })
             .then((res) => {
                 if (res.data.code === 200) {
                     stats.value = res.data.data || {};
+                } else {
+                    stats.value = {};
+                    ElMessage.error(res.data.msg || '加载统计数据失败');
                 }
+            })
+            .catch((e) => {
+                stats.value = {};
+                ElMessage.error(e.message || '加载统计数据失败');
             });
     };
 
@@ -258,6 +271,7 @@
             return;
         }
         activityId.value = id;
+        pageConfig.params = { activityId: id };
         resetSearch();
         loadStats();
         visible.value = true;