feat: 本次提交更新内容如下

流量分发的功能构建完成
This commit is contained in:
笔记本里的永平
2025-07-10 17:05:13 +08:00
parent c87378fc66
commit cb253a568c
3 changed files with 86 additions and 71 deletions

View File

@@ -4,7 +4,6 @@ import { Steps, StepItem } from 'tdesign-mobile-react';
import {
Users,
Search,
Database,
X,
} from 'lucide-react';
import { Button } from '@/components/ui/button';
@@ -17,7 +16,7 @@ import Layout from '@/components/Layout';
import PageHeader from '@/components/PageHeader';
import DeviceSelection from '@/components/DeviceSelection';
import { useToast } from '@/components/ui/toast';
import { fetchAccountList, Account } from '@/api/trafficDistribution';
import { fetchAccountList, Account, createDistributionRule } from '@/api/trafficDistribution';
import '@/components/Layout.css';
import TrafficPoolSelection from '@/components/TrafficPoolSelection';
@@ -45,13 +44,6 @@ interface FormData {
trafficPool: Partial<TrafficPoolData>;
}
interface TrafficPool {
id: string;
name: string;
count: number;
description: string;
}
// 账号选择对话框组件
const AccountSelectionDialog = ({
open,
@@ -289,6 +281,20 @@ export default function NewDistribution() {
return `流量分发 ${year}${month}${day} ${hour}${minute}`;
};
// 转换分配方式为后端需要的格式
const getDistributeType = (distributionMethod: string | undefined) => {
switch (distributionMethod) {
case 'equal':
return 1; // 均分配
case 'priority':
return 2; // 优先级分配
case 'ratio':
return 3; // 比例分配
default:
return 1; // 默认均分配
}
};
const handleBasicInfoNext = (data: BasicInfoData) => {
setFormData(prev => ({ ...prev, basicInfo: data }));
setCurrentStep(1);
@@ -314,19 +320,48 @@ export default function NewDistribution() {
};
try {
console.log('提交的数据:', finalData);
// 构造API请求参数 - 按照后端要求的格式
const apiParams = {
type: 5, // 流量分发类型
name: finalData.basicInfo.name || '',
distributeType: getDistributeType(finalData.basicInfo.distributionMethod),
maxPerDay: finalData.basicInfo.dailyLimit || 50,
timeType: finalData.basicInfo.timeRestriction === 'allDay' ? 1 : 2,
startTime: finalData.basicInfo.timeRestriction === 'custom'
? (finalData.basicInfo.startTime || "09:00")
: "00:00",
endTime: finalData.basicInfo.timeRestriction === 'custom'
? (finalData.basicInfo.endTime || "18:00")
: "23:59",
devices: finalData.targetSettings?.selectedDevices || [],
account: finalData.basicInfo?.selectedAccounts || [],
pools: finalData.trafficPool?.selectedPools || [],
enabled: true // 默认启用
};
console.log('提交的数据:', apiParams);
toast({
title: "创建成功",
description: "流量分发规则已成功创建"
});
const response = await createDistributionRule(apiParams);
navigate('/workspace/traffic-distribution');
if (response.code === 200) {
toast({
title: "创建成功",
description: "流量分发规则已成功创建"
});
navigate('/workspace/traffic-distribution');
} else {
toast({
title: "创建失败",
description: response.msg || "请稍后重试",
variant: "destructive"
});
}
} catch (error) {
console.error('提交失败:', error);
toast({
title: "创建失败",
description: "请稍后重试",
description: "网络错误,请稍后重试",
variant: "destructive"
});
}
@@ -589,14 +624,6 @@ export default function NewDistribution() {
const [isSubmitting, setIsSubmitting] = useState(false);
const handleSubmit = async () => {
if (selectedPools.length === 0) {
toast({
title: "请选择至少一个流量池",
variant: "destructive"
});
return;
}
setIsSubmitting(true);
try {
@@ -634,7 +661,7 @@ export default function NewDistribution() {
<Button variant="outline" onClick={onBack}>
</Button>
<Button onClick={handleSubmit} disabled={isSubmitting || selectedPools.length === 0}>
<Button onClick={handleSubmit} disabled={isSubmitting}>
{isSubmitting ? "提交中..." : "完成"}
</Button>
</div>