From ff7f7b5a76da602f7eeddd5317ff7224968b041c Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Mon, 7 Jul 2025 20:24:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=B0=86IP=E4=B8=8E=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3=E8=BE=93=E5=85=A5=E6=A1=86=E5=8D=95=E7=8B=AC=E6=8A=BD?= =?UTF-8?q?=E8=B1=A1=E6=88=90=E7=8B=AC=E7=AB=8B=E6=96=87=E4=BB=B6=E6=96=B9?= =?UTF-8?q?=E4=BE=BF=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/InputField/BaseInputField.vue | 94 ++++++++++++++++++++ src/components/InputField/IpInputField.vue | 75 ++++++++++++++++ src/components/InputField/PortInputField.vue | 81 +++++++++++++++++ src/components/InputField/index.ts | 3 + src/views/OscilloscopeView.vue | 66 +++----------- 5 files changed, 266 insertions(+), 53 deletions(-) create mode 100644 src/components/InputField/BaseInputField.vue create mode 100644 src/components/InputField/IpInputField.vue create mode 100644 src/components/InputField/PortInputField.vue create mode 100644 src/components/InputField/index.ts diff --git a/src/components/InputField/BaseInputField.vue b/src/components/InputField/BaseInputField.vue new file mode 100644 index 0000000..cd74d71 --- /dev/null +++ b/src/components/InputField/BaseInputField.vue @@ -0,0 +1,94 @@ + + + \ No newline at end of file diff --git a/src/components/InputField/IpInputField.vue b/src/components/InputField/IpInputField.vue new file mode 100644 index 0000000..ac3c044 --- /dev/null +++ b/src/components/InputField/IpInputField.vue @@ -0,0 +1,75 @@ + + + \ No newline at end of file diff --git a/src/components/InputField/PortInputField.vue b/src/components/InputField/PortInputField.vue new file mode 100644 index 0000000..3ec9633 --- /dev/null +++ b/src/components/InputField/PortInputField.vue @@ -0,0 +1,81 @@ + + + \ No newline at end of file diff --git a/src/components/InputField/index.ts b/src/components/InputField/index.ts new file mode 100644 index 0000000..1f97acb --- /dev/null +++ b/src/components/InputField/index.ts @@ -0,0 +1,3 @@ +export { default as BaseInputField } from './BaseInputField.vue' +export { default as IpInputField } from './IpInputField.vue' +export { default as PortInputField } from './PortInputField.vue' \ No newline at end of file diff --git a/src/views/OscilloscopeView.vue b/src/views/OscilloscopeView.vue index a3c6857..6d20015 100644 --- a/src/views/OscilloscopeView.vue +++ b/src/views/OscilloscopeView.vue @@ -12,41 +12,17 @@
- -
- -
- +
- -
- -
- +
@@ -91,14 +67,12 @@ import { useStorage } from "@vueuse/core"; import { z } from "zod"; import { Settings, - Globe, - Network, Save, RotateCcw, - CheckCircle, Activity, } from "lucide-vue-next"; import { WaveformDisplay, generateTestData } from "@/components/Oscilloscope"; +import { IpInputField, PortInputField } from "@/components/InputField"; // 配置类型定义 const configSchema = z.object({ @@ -151,25 +125,11 @@ const tempConfig = reactive({ // 状态管理 const isSaving = ref(false); -// 验证错误 -const ipError = computed(() => { - if (!tempConfig.ip) return ""; - const result = z.string().ip({ version: "v4" }).safeParse(tempConfig.ip); - return result.success - ? "" - : result.error.errors[0]?.message || "无效的IP地址"; -}); - -const portError = computed(() => { - if (!tempConfig.port && tempConfig.port !== 0) return ""; - const result = z.number().int().min(1).max(65535).safeParse(tempConfig.port); - return result.success ? "" : result.error.errors[0]?.message || "无效的端口"; -}); - -// 检查配置是否有效 +// 检查配置是否有效 - 简化版本,因为验证现在在组件内部 const isValidConfig = computed(() => { - const result = configSchema.safeParse(tempConfig); - return result.success; + return tempConfig.ip && tempConfig.port && + tempConfig.port >= 1 && tempConfig.port <= 65535 && + /^(\d{1,3}\.){3}\d{1,3}$/.test(tempConfig.ip); }); // 检查是否有更改