diff --git a/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx b/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx index 7a041d50..b3a9716d 100644 --- a/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx +++ b/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx @@ -11,6 +11,7 @@ import { Pause, Play, Users, + Filter, } from 'lucide-react'; import { Card } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; @@ -83,31 +84,6 @@ export default function TrafficDistribution() { navigate(`/workspace/traffic-distribution/${ruleId}`); }; - // 注释掉未使用的函数 - /* - const handleCopy = async (ruleId: string) => { - const ruleToCopy = tasks.find((rule) => rule.id === ruleId); - if (ruleToCopy) { - try { - // 这里可以添加复制API调用 - toast({ - title: '复制成功', - description: '已成功复制分发规则', - }); - // 重新加载列表 - fetchData(); - } catch (error) { - console.error('复制流量分发规则失败:', error); - toast({ - title: '复制失败', - description: '操作失败,请稍后重试', - variant: 'destructive', - }); - } - } - }; - */ - const toggleRuleStatus = async (ruleId: string) => { const rule = tasks.find((r) => r.id === ruleId); if (!rule) return; @@ -217,21 +193,6 @@ export default function TrafficDistribution() { rule.name.toLowerCase().includes(searchTerm.toLowerCase()), ); - const getStatusColor = (status: number) => { - switch (status) { - case WorkbenchTaskStatus.RUNNING: - return 'bg-green-100 text-green-800'; - case WorkbenchTaskStatus.PAUSED: - return 'bg-gray-100 text-gray-800'; - case WorkbenchTaskStatus.COMPLETED: - return 'bg-blue-100 text-blue-800'; - case WorkbenchTaskStatus.FAILED: - return 'bg-red-100 text-red-800'; - default: - return 'bg-gray-100 text-gray-800'; - } - }; - const getStatusText = (status: number) => { switch (status) { case WorkbenchTaskStatus.RUNNING: @@ -285,7 +246,7 @@ export default function TrafficDistribution() { // 初始加载和搜索 useEffect(() => { fetchData(1, searchTerm); - }, [searchTerm]); // 添加依赖项 + }, []); // 初始加载时只执行一次 // 处理搜索 const handleSearch = () => { @@ -297,136 +258,155 @@ export default function TrafficDistribution() { fetchData(); }; + // 页面头部右侧内容 + const headerRightContent = ( + + ); + return ( } + header={ + + } footer={} > -
-
-
-
+
+
+
+
setSearchTerm(e.target.value)} - className="pl-9 h-10 w-48" + className="pl-9 h-10" />
-
-
- -
-
- {isLoading ? ( -
- {[1, 2, 3].map((i) => ( - -
-
-
-
-
-
-
- ))} -
- ) : filteredRules.length > 0 ? ( -
- {filteredRules.map((rule) => ( - -
-
-

handleView(rule.id)} - > - {rule.name} -

- handleEdit(rule.id)} - onToggleStatus={() => toggleRuleStatus(rule.id)} - onDelete={() => handleDelete(rule.id)} - /> + {isLoading ? ( +
+ {[1, 2, 3].map((i) => ( + +
+
+
+
+
-
- - 创建于 {rule.createTime?.substring(0, 16) || '未知时间'} -
-
- - {getStatusText(rule.status)} - -
- {rule.distributedTraffic || 0} - / - {rule.totalTraffic || 0} + + ))} +
+ ) : filteredRules.length > 0 ? ( +
+ {filteredRules.map((rule) => ( + +
+
+

流量分发

+
+ + {getStatusText(rule.status)} + + toggleRuleStatus(rule.id)} + /> + handleEdit(rule.id)} + onToggleStatus={() => toggleRuleStatus(rule.id)} + onDelete={() => handleDelete(rule.id)} + /> +
+
+ +
+
+
{rule.deviceCount || 2}
+
分发账号
+
+
+
{rule.totalTraffic || 7}
+
分发设备
+
+
+
ALL
+
流量池
+
+
+ +
+
+
{rule.distributedTraffic || 119}
+
日均分发量
+
+
+
{rule.totalTraffic || 2}
+
总流量池数量
+
+
+ +
+
+ + 上次执行: {rule.lastDistributionTime?.substring(0, 16) || '2025-07-02 09:00'} +
+
创建人: {rule.creator || '售前'}
-
-
-
- - {rule.deviceCount || 0} 个设备 -
-
- toggleRuleStatus(rule.id)} - className="data-[state=checked]:bg-blue-600" - /> -
-
- - ))} -
- ) : ( -
-
暂无流量分发规则
- -
- )} - - {totalItems > 10 && ( -
-
- -
- 第 {currentPage} 页,共 {Math.ceil(totalItems / 10)} 页 -
-
+ ) : ( +
+
暂无流量分发规则
+
-
- )} + )} + + {totalItems > 10 && ( +
+
+ +
+ 第 {currentPage} 页,共 {Math.ceil(totalItems / 10)} 页 +
+ +
+
+ )} +
);