Ver Fonte

Refactor StatisticsPlaymateServicePage to simplify sorting and filtering logic

- Removed unused sorting functionality and associated state management for improved clarity and performance.
- Streamlined the category options filtering process to ensure only valid entries are included.
- Cleaned up import statements to maintain a tidy codebase.
0es há 1 semana atrás
pai
commit
5b9ca292b2
1 ficheiros alterados com 3 adições e 65 exclusões
  1. 3 65
      src/app/(dashboard)/statistics/playmate-service/page.tsx

+ 3 - 65
src/app/(dashboard)/statistics/playmate-service/page.tsx

@@ -13,7 +13,6 @@ import {
   Typography,
 } from "antd";
 import type { ColumnsType, TablePaginationConfig } from "antd/es/table";
-import type { SorterResult } from "antd/es/table/interface";
 import type { Dayjs } from "dayjs";
 import { useCallback, useEffect, useMemo, useState } from "react";
 import { getBizCategoryConfigPage } from "@/services/bizCategory";
@@ -134,11 +133,11 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       const response = await getBizCategoryConfigPage({ enabled: true });
       const flatList = flattenBizCategories(response.list || []);
       const options = flatList
+        .filter((item) => Boolean(item.code) && Boolean(item.parentCode))
         .map((item) => ({
           label: item.name ? `${item.name} (${item.code})` : (item.code ?? ""),
           value: item.code,
-        }))
-        .filter((item) => Boolean(item.value));
+        }));
       setCategoryOptions(options);
     } catch (error) {
       console.error("Failed to load biz categories:", error);
@@ -186,7 +185,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       ...prev,
       pageIndex: 1,
       pageSize: prev.pageSize || PAGE_SIZE,
-      sort: undefined,
       startDay,
       endDay,
       type: Number.isFinite(type) ? type : 0,
@@ -208,7 +206,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       startDay: defaultRange.beginDateTime,
       endDay: defaultRange.endDateTime,
       type: 0,
-      sort: undefined,
       playmateKeyword: undefined,
       mainSkillBizCategoryCode: undefined,
       skip: 0,
@@ -265,12 +262,7 @@ const StatisticsPlaymateServicePage: React.FC = () => {
 
   const handleTableChange = (
     pagination: TablePaginationConfig,
-    _filters: unknown,
-    sorter:
-      | SorterResult<PlaymateServiceMetricAdminDTO>
-      | SorterResult<PlaymateServiceMetricAdminDTO>[],
   ) => {
-    const singleSorter = Array.isArray(sorter) ? sorter[0] : sorter;
     const nextPageIndex = pagination.current || 1;
     const nextPageSize = pagination.pageSize || PAGE_SIZE;
 
@@ -281,24 +273,10 @@ const StatisticsPlaymateServicePage: React.FC = () => {
         pageSize: nextPageSize,
         skip: (nextPageIndex - 1) * nextPageSize,
       };
-
-      if (singleSorter?.field && singleSorter?.order) {
-        next.sort = {
-          field: String(singleSorter.field),
-          order: singleSorter.order === "ascend" ? 1 : -1,
-        };
-      } else {
-        next.sort = undefined;
-      }
       return next;
     });
   };
 
-  const getSortOrder = (field: string): "ascend" | "descend" | undefined => {
-    if (queryParams.sort?.field !== field) return undefined;
-    return queryParams.sort.order === 1 ? "ascend" : "descend";
-  };
-
   const columns: ColumnsType<PlaymateServiceMetricAdminDTO> = [
     {
       title: "周期",
@@ -352,8 +330,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "foregroundOnlineHours",
       key: "foregroundOnlineHours",
       width: 170,
-      sorter: true,
-      sortOrder: getSortOrder("foregroundOnlineHours"),
       render: (value) => formatNumber(value, 2),
     },
     {
@@ -361,8 +337,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "avgDailyOnlineHours",
       key: "avgDailyOnlineHours",
       width: 180,
-      sorter: true,
-      sortOrder: getSortOrder("avgDailyOnlineHours"),
       render: (value) => formatNumber(value, 2),
     },
     {
@@ -370,8 +344,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "replyWithin5mRatePct",
       key: "replyWithin5mRatePct",
       width: 160,
-      sorter: true,
-      sortOrder: getSortOrder("replyWithin5mRatePct"),
       render: formatPercent,
     },
     {
@@ -379,8 +351,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "proactiveChatRatePct",
       key: "proactiveChatRatePct",
       width: 130,
-      sorter: true,
-      sortOrder: getSortOrder("proactiveChatRatePct"),
       render: formatPercent,
     },
     {
@@ -388,8 +358,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "deepChatRatePct",
       key: "deepChatRatePct",
       width: 110,
-      sorter: true,
-      sortOrder: getSortOrder("deepChatRatePct"),
       render: formatPercent,
     },
     {
@@ -397,8 +365,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "cardExposureUv",
       key: "cardExposureUv",
       width: 110,
-      sorter: true,
-      sortOrder: getSortOrder("cardExposureUv"),
       render: formatInteger,
     },
     {
@@ -406,8 +372,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "profileVisitUv",
       key: "profileVisitUv",
       width: 110,
-      sorter: true,
-      sortOrder: getSortOrder("profileVisitUv"),
       render: formatInteger,
     },
     {
@@ -415,8 +379,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "dmInitiateUv",
       key: "dmInitiateUv",
       width: 110,
-      sorter: true,
-      sortOrder: getSortOrder("dmInitiateUv"),
       render: formatInteger,
     },
     {
@@ -424,8 +386,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "newContactUv",
       key: "newContactUv",
       width: 120,
-      sorter: true,
-      sortOrder: getSortOrder("newContactUv"),
       render: formatInteger,
     },
     {
@@ -433,8 +393,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "homeToDmCvrPct",
       key: "homeToDmCvrPct",
       width: 175,
-      sorter: true,
-      sortOrder: getSortOrder("homeToDmCvrPct"),
       render: formatPercent,
     },
     {
@@ -442,8 +400,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "completedOrderCount",
       key: "completedOrderCount",
       width: 100,
-      sorter: true,
-      sortOrder: getSortOrder("completedOrderCount"),
       render: formatInteger,
     },
     {
@@ -451,8 +407,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "newUserFirstOrderCount",
       key: "newUserFirstOrderCount",
       width: 120,
-      sorter: true,
-      sortOrder: getSortOrder("newUserFirstOrderCount"),
       render: formatInteger,
     },
     {
@@ -460,8 +414,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "oldUserRepurchaseOrderCount",
       key: "oldUserRepurchaseOrderCount",
       width: 120,
-      sorter: true,
-      sortOrder: getSortOrder("oldUserRepurchaseOrderCount"),
       render: formatInteger,
     },
     {
@@ -469,8 +421,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "orderIncomeBeanAmount",
       key: "orderIncomeBeanAmount",
       width: 140,
-      sorter: true,
-      sortOrder: getSortOrder("orderIncomeBeanAmount"),
       render: (value) => formatNumber(value, 2),
     },
     {
@@ -478,8 +428,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "newContactConversionRatePct",
       key: "newContactConversionRatePct",
       width: 165,
-      sorter: true,
-      sortOrder: getSortOrder("newContactConversionRatePct"),
       render: formatPercent,
     },
     {
@@ -487,8 +435,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "avgOrderValueBeanAmount",
       key: "avgOrderValueBeanAmount",
       width: 150,
-      sorter: true,
-      sortOrder: getSortOrder("avgOrderValueBeanAmount"),
       render: (value) => formatNumber(value, 2),
     },
     {
@@ -496,8 +442,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "unitOutputBeanPerHour",
       key: "unitOutputBeanPerHour",
       width: 185,
-      sorter: true,
-      sortOrder: getSortOrder("unitOutputBeanPerHour"),
       render: (value) => formatNumber(value, 2),
     },
     {
@@ -505,8 +449,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "avgUserRating",
       key: "avgUserRating",
       width: 110,
-      sorter: true,
-      sortOrder: getSortOrder("avgUserRating"),
       render: (value) => formatNumber(value, 2),
     },
     {
@@ -514,8 +456,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "positiveRatingRatePct",
       key: "positiveRatingRatePct",
       width: 100,
-      sorter: true,
-      sortOrder: getSortOrder("positiveRatingRatePct"),
       render: formatPercent,
     },
     {
@@ -523,8 +463,6 @@ const StatisticsPlaymateServicePage: React.FC = () => {
       dataIndex: "oldUserRepurchaseRatePct",
       key: "oldUserRepurchaseRatePct",
       width: 120,
-      sorter: true,
-      sortOrder: getSortOrder("oldUserRepurchaseRatePct"),
       render: formatPercent,
     },
   ];
@@ -536,7 +474,7 @@ const StatisticsPlaymateServicePage: React.FC = () => {
           <Title level={3} style={{ marginBottom: 0 }}>
             陪玩服务效果
           </Title>
-          <Text type="secondary">按周期查看陪玩师服务效果指标,支持筛选、排序与导出</Text>
+          <Text type="secondary">按周期查看陪玩师服务效果指标,支持筛选与导出</Text>
         </div>
       </div>