From 44319446b793b8b66578e8fccafdb3714933a93e Mon Sep 17 00:00:00 2001 From: mlogclub Date: Sun, 3 May 2026 12:55:27 +0800 Subject: [PATCH] feat: support rich ticket descriptions --- .../dashboard/tickets/_components/edit.tsx | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/web/app/dashboard/tickets/_components/edit.tsx b/web/app/dashboard/tickets/_components/edit.tsx index e9a8e97..6540f18 100644 --- a/web/app/dashboard/tickets/_components/edit.tsx +++ b/web/app/dashboard/tickets/_components/edit.tsx @@ -9,6 +9,8 @@ import { z } from "zod/v4" import { OptionCombobox } from "@/components/option-combobox" import { ProjectDialog } from "@/components/project-dialog" +import { RichTextEditor } from "@/components/rich-text-editor" +import { isRichTextEmpty } from "@/components/safe-rich-html" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { @@ -28,7 +30,6 @@ import { } from "@/components/ui/field" import { Input } from "@/components/ui/input" import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover" -import { Textarea } from "@/components/ui/textarea" import { fetchAgentProfilesAll, fetchTagsAll, @@ -57,7 +58,7 @@ type EditDialogProps = { const schema = z.object({ title: z.string().trim().min(1, "请输入工单标题"), - description: z.string().trim().min(1, "请输入问题描述"), + description: z.string().refine((value) => !isRichTextEmpty(value), "请输入问题描述"), currentAssigneeId: z.coerce.number().int().min(0).optional(), tagIds: z.array(z.number().int().positive()).default([]), }) @@ -92,7 +93,7 @@ function buildForm(item: TicketItem | null): EditForm { function buildInitialForm(initialValues?: Partial): EditForm { return { title: initialValues?.title?.trim() ?? "", - description: initialValues?.description?.trim() ?? "", + description: initialValues?.description ?? "", currentAssigneeId: initialValues?.currentAssigneeId ?? 0, tagIds: initialValues?.tagIds ?? [], } @@ -368,14 +369,19 @@ function TicketEditDialogBody({ - 描述 + 描述 -