This commit is contained in:
Chuck1sn
2025-05-26 11:29:51 +08:00
parent 3f4a5f2e8b
commit 0b8624a098
10 changed files with 99 additions and 187 deletions

View File

@@ -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(() => {

View File

@@ -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(() => {

View File

@@ -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);
};
</script>

View File

@@ -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(() => {

View File

@@ -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(() => {

View File

@@ -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);
};
</script>

View File

@@ -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(() => {

View File

@@ -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(() => {

View File

@@ -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(() => {

View File

@@ -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",
});
};
</script>