From 2464a5fea6dadd7b1689cd9711bd8e4171a8a996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E9=9C=96=E9=93=83?= Date: Sat, 6 Jun 2026 19:51:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AD=97=E6=AE=B5=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=B7=BB=E5=8A=A0=E3=80=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E3=80=8D=E6=8C=89=E9=92=AE=20=E5=8E=BB=E9=99=A4=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E6=8C=89=E9=92=AE=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=8C=89=E9=92=AE=20-=20=E5=BC=B9=E7=AA=97=E5=BA=95?= =?UTF-8?q?=E9=83=A8=E6=B7=BB=E5=8A=A0=E3=80=8C=E5=AE=8C=E6=88=90=E3=80=8D?= =?UTF-8?q?=E6=8C=89=E9=92=AE=EF=BC=8C=E7=82=B9=E5=87=BB=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=20-=20DialogContent=20=E6=94=AF=E6=8C=81=20s?= =?UTF-8?q?howCloseButton=20prop=20=E6=8E=A7=E5=88=B6=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=98=BE=E7=A4=BA=20-=20=E5=BA=95=E9=83=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=96=E6=B6=88=E5=92=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/_locales/zh_CN/messages.json | 8 ++++---- src/components/ui/dialog.tsx | 20 ++++++++++++++------ src/pages/TestDataGenerator/index.tsx | 19 ++++++++++++++----- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/public/_locales/zh_CN/messages.json b/public/_locales/zh_CN/messages.json index bd83827..7d6f8ca 100644 --- a/public/_locales/zh_CN/messages.json +++ b/public/_locales/zh_CN/messages.json @@ -1011,10 +1011,6 @@ "message": "数据格式", "description": "Translation key: testDataGenerator_format" }, - "testDataGenerator_defaultNullRate": { - "message": "默认空值率", - "description": "Translation key: testDataGenerator_defaultNullRate" - }, "testDataGenerator_generate": { "message": "生成数据", "description": "Translation key: testDataGenerator_generate" @@ -1163,6 +1159,10 @@ "message": "确认", "description": "Translation key: testDataGenerator_confirm" }, + "testDataGenerator_done": { + "message": "完成", + "description": "Translation key: testDataGenerator_done" + }, "testDataGenerator_noSearchResults": { "message": "未找到匹配的规则", "description": "Translation key: testDataGenerator_noSearchResults" diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx index c226b38..68fa678 100644 --- a/src/components/ui/dialog.tsx +++ b/src/components/ui/dialog.tsx @@ -26,10 +26,16 @@ const DialogOverlay = React.forwardRef< )); DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; +interface DialogContentProps extends React.ComponentPropsWithoutRef< + typeof DialogPrimitive.Content +> { + showCloseButton?: boolean; +} + const DialogContent = React.forwardRef< React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( + DialogContentProps +>(({ className, children, showCloseButton = true, ...props }, ref) => ( {children} - - - Close - + {showCloseButton && ( + + + Close + + )} )); diff --git a/src/pages/TestDataGenerator/index.tsx b/src/pages/TestDataGenerator/index.tsx index a3c2163..5e9365c 100644 --- a/src/pages/TestDataGenerator/index.tsx +++ b/src/pages/TestDataGenerator/index.tsx @@ -9,6 +9,7 @@ import { cn } from '@/lib/utils'; import { useGenerator } from './hooks/useGenerator'; import type { FieldConfig, GenerateResult } from '@/types/testDataGenerator'; import { Dialog, DialogContent } from '@/components/ui/dialog'; +import { Button } from '@/components/ui/button'; import { toast } from 'sonner'; // 生成唯一 ID 的辅助函数 @@ -39,7 +40,6 @@ export default function TestDataGeneratorPage() { // 生成选项 const [count, setCount] = useState(100); const [format, setFormat] = useState<'json' | 'csv'>('json'); - const [defaultNullRate, setDefaultNullRate] = useState(10); // 当前标签页 const [activeTab, setActiveTab] = useState('fields'); @@ -206,8 +206,6 @@ export default function TestDataGeneratorPage() { onCountChange={setCount} format={format} onFormatChange={setFormat} - defaultNullRate={defaultNullRate} - onDefaultNullRateChange={setDefaultNullRate} /> @@ -264,8 +262,11 @@ export default function TestDataGeneratorPage() { {/* 字段编辑弹窗 */} - -
+ +
{selectedField && selectedIndex !== null && ( )}
+
+ + +