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); }); // 检查是否有更改