diff --git a/frontend/src/components/DepartmentUpsertModal.vue b/frontend/src/components/DepartmentUpsertModal.vue index ab937e2..afd0a24 100644 --- a/frontend/src/components/DepartmentUpsertModal.vue +++ b/frontend/src/components/DepartmentUpsertModal.vue @@ -90,19 +90,9 @@ const handleSubmit = async () => { .max(15, "部门名称最多15个字符"), }); - try { - const validatedData = schema.parse(formData.value); - await onSubmit(validatedData); - updateFormData(undefined); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } - throw error; - } + const validatedData = schema.parse(formData.value); + await onSubmit(validatedData); + updateFormData(undefined); }; onMounted(() => { diff --git a/frontend/src/components/LlmUpdateModal.vue b/frontend/src/components/LlmUpdateModal.vue index bb70572..d4dadfe 100644 --- a/frontend/src/components/LlmUpdateModal.vue +++ b/frontend/src/components/LlmUpdateModal.vue @@ -106,45 +106,35 @@ watch(() => llm, updateFormData, { }); const handleSubmit = async () => { - try { - const llmSchema = z.object({ - id: z.number({ - message: "id不能为空", - }), - name: z.string({ - message: "名称不能为空", - }), - modelName: z.string({ - message: "模型名称不能为空", - }), - apiKey: z.string({ - message: "apiKey不能为空", - }), - url: z.string({ - message: "url不能为空", - }), - enable: z.boolean({ - message: "状态不能为空", - }), - priority: z.number({ - message: "优先级必须为数字", - }), - type: z.string({ - message: "类型不能为空", - }), - }); - const validatedData = llmSchema.parse(formData.value); - await onSubmit(validatedData); - updateFormData(undefined); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } - throw error; - } + const llmSchema = z.object({ + id: z.number({ + message: "id不能为空", + }), + name: z.string({ + message: "名称不能为空", + }), + modelName: z.string({ + message: "模型名称不能为空", + }), + apiKey: z.string({ + message: "apiKey不能为空", + }), + url: z.string({ + message: "url不能为空", + }), + enable: z.boolean({ + message: "状态不能为空", + }), + priority: z.number({ + message: "优先级必须为数字", + }), + type: z.string({ + message: "类型不能为空", + }), + }); + const validatedData = llmSchema.parse(formData.value); + await onSubmit(validatedData); + updateFormData(undefined); }; onMounted(() => { diff --git a/frontend/src/components/PermissionUpsertModal.vue b/frontend/src/components/PermissionUpsertModal.vue index f468a5c..71a2fda 100644 --- a/frontend/src/components/PermissionUpsertModal.vue +++ b/frontend/src/components/PermissionUpsertModal.vue @@ -86,18 +86,8 @@ const handleSubmit = async () => { .max(15, "权限代码最多15个字符"), }); - try { - const validatedData = permissionSchema.parse(formData.value); - await onSubmit(validatedData); - updateFormData(undefined); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } - throw error; - } + const validatedData = permissionSchema.parse(formData.value); + await onSubmit(validatedData); + updateFormData(undefined); }; diff --git a/frontend/src/components/PositionUpsertModal.vue b/frontend/src/components/PositionUpsertModal.vue index 9df1b04..1fbca84 100644 --- a/frontend/src/components/PositionUpsertModal.vue +++ b/frontend/src/components/PositionUpsertModal.vue @@ -78,19 +78,9 @@ const handleSubmit = async () => { .max(15, "岗位名称最多15个字符"), }); - try { - const validatedData = schema.parse(formData.value); - await onSubmit(validatedData); - updateFormData(undefined); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } - throw error; - } + const validatedData = schema.parse(formData.value); + await onSubmit(validatedData); + updateFormData(undefined); }; onMounted(() => { diff --git a/frontend/src/components/RoleUpsertModal.vue b/frontend/src/components/RoleUpsertModal.vue index 7f1a493..b1f87da 100644 --- a/frontend/src/components/RoleUpsertModal.vue +++ b/frontend/src/components/RoleUpsertModal.vue @@ -86,19 +86,9 @@ const handleSubmit = async () => { .max(15, "角色代码最多15个字符"), }); - try { - const validatedData = roleSchema.parse(formData.value); - await onSubmit(validatedData); - updateFormData(undefined); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } - throw error; - } + const validatedData = roleSchema.parse(formData.value); + await onSubmit(validatedData); + updateFormData(undefined); }; onMounted(() => { diff --git a/frontend/src/components/SchedulerUpdateModal.vue b/frontend/src/components/SchedulerUpdateModal.vue index 07130f4..d154cc8 100644 --- a/frontend/src/components/SchedulerUpdateModal.vue +++ b/frontend/src/components/SchedulerUpdateModal.vue @@ -69,17 +69,7 @@ const handleSubmit = async () => { .min(5, "表达式的长度非法"), }); - try { - const validatedData = jobSchema.parse(formData.value); - await onSubmit(validatedData.cronExpression); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } - throw error; - } + const validatedData = jobSchema.parse(formData.value); + await onSubmit(validatedData.cronExpression); }; diff --git a/frontend/src/components/UserUpsertModal.vue b/frontend/src/components/UserUpsertModal.vue index cd69a25..020d515 100644 --- a/frontend/src/components/UserUpsertModal.vue +++ b/frontend/src/components/UserUpsertModal.vue @@ -130,10 +130,9 @@ const handleSubmit = async () => { }, ); - const validatedData = userSchema.parse(formData.value); - await onSubmit(validatedData); - updateFormData(undefined); - + const validatedData = userSchema.parse(formData.value); + await onSubmit(validatedData); + updateFormData(undefined); }; onMounted(() => { diff --git a/frontend/src/views/AiChatView.vue b/frontend/src/views/AiChatView.vue index 2d4b970..bfb86f6 100644 --- a/frontend/src/views/AiChatView.vue +++ b/frontend/src/views/AiChatView.vue @@ -87,7 +87,7 @@ import useAlertStore from "@/composables/store/useAlertStore"; import DOMPurify from "dompurify"; import { Modal, type ModalInterface, initFlowbite } from "flowbite"; import { marked } from "marked"; -import { nextTick, onMounted, onUnmounted, ref, watch } from "vue"; +import { nextTick, onMounted, onUnmounted, ref, watch } from "vue"; import { z } from "zod"; import Button from "../components/Button.vue"; import UserUpsertModal from "../components/UserUpsertModal.vue"; @@ -193,23 +193,12 @@ const chatByMode = async (message: string) => { }; const handleSendClick = async () => { - try { - scrollToBottom(); - const validInputMessage = z - .string({ message: "消息不能为空" }) - .min(1, "消息不能为空") - .parse(inputMessage.value); - await chatByMode(validInputMessage); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } else { - throw error; - } - } + scrollToBottom(); + const validInputMessage = z + .string({ message: "消息不能为空" }) + .min(1, "消息不能为空") + .parse(inputMessage.value); + await chatByMode(validInputMessage); }; onUnmounted(() => { diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue index d35996e..0d8b95c 100644 --- a/frontend/src/views/LoginView.vue +++ b/frontend/src/views/LoginView.vue @@ -45,26 +45,19 @@ const handleLogin = async () => { password: z.string().min(1, "密码至少1个字符"), }); - try { - const validatedData = userSchema.parse({ - username: username.value, - password: password.value, - }); - await userAuth.signIn(validatedData.username, validatedData.password); - alertStore.showAlert({ - level: "success", - content: "登录成功", - }); - const redirectPath = - (route.query.redirect as string) || - `${RoutePath.DASHBOARD}/${RoutePath.USERVIEW}`; - router.push(redirectPath); - } catch (e) { - alertStore.showAlert({ - level: "error", - content: e instanceof z.ZodError ? e.errors[0].message : "账号或密码错误", - }); - } + const validatedData = userSchema.parse({ + username: username.value, + password: password.value, + }); + await userAuth.signIn(validatedData.username, validatedData.password); + alertStore.showAlert({ + level: "success", + content: "登录成功", + }); + const redirectPath = + (route.query.redirect as string) || + `${RoutePath.DASHBOARD}/${RoutePath.USERVIEW}`; + router.push(redirectPath); }; onMounted(() => { diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index e1447d5..40e6e22 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -78,47 +78,38 @@ onMounted(() => { const handleUpdateClick = async () => { let validatedData = undefined; - try { - validatedData = z - .object({ - username: z - .string({ - message: "用户名不能为空", - }) - .min(4, "用户名长度不能小于4个字符"), - password: z - .string() - .min(5, "密码长度不能小于5个字符") - .optional() - .nullable(), - confirmPassword: z.string().optional().nullable(), - enable: z.boolean({ - message: "状态不能为空", - }), - }) - .refine( - (data) => { - if (data.password) { - return data.password === data.confirmPassword; - } - return true; - }, - { message: "密码输入不一致。" }, - ) - .parse(userForm.value); - await upsertCurrentUser(validatedData); - alertStore.showAlert({ - content: "操作成功", - level: "success", - }); - } catch (error) { - if (error instanceof z.ZodError) { - alertStore.showAlert({ - level: "error", - content: error.errors[0].message, - }); - } - throw error; - } + + validatedData = z + .object({ + username: z + .string({ + message: "用户名不能为空", + }) + .min(4, "用户名长度不能小于4个字符"), + password: z + .string() + .min(5, "密码长度不能小于5个字符") + .optional() + .nullable(), + confirmPassword: z.string().optional().nullable(), + enable: z.boolean({ + message: "状态不能为空", + }), + }) + .refine( + (data) => { + if (data.password) { + return data.password === data.confirmPassword; + } + return true; + }, + { message: "密码输入不一致。" }, + ) + .parse(userForm.value); + await upsertCurrentUser(validatedData); + alertStore.showAlert({ + content: "操作成功", + level: "success", + }); };