From 4141f0c017600929b034584e8496783eee8df444 Mon Sep 17 00:00:00 2001 From: fly6516 Date: Mon, 16 Jun 2025 18:37:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=97=AE=E9=A2=98=E7=BC=96=E8=BE=91):=20a?= =?UTF-8?q?dd=20problem-editor=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了编辑问题描述、解决方案、详细信息、代码模板和测试用例的组件 - 实现了问题编辑页面的基本布局和功能 - 增加了富文本预览和对比功能 - 支持多种编程语言的代码编辑- 提供了测试用例的添加和删除功能 --- .../(app)/problem-editor/[problemId]/page.tsx | 32 ++ src/components/creater/edit-code-panel.tsx | 157 ++++----- .../creater/edit-description-panel.tsx | 226 ++++-------- src/components/creater/edit-detail-panel.tsx | 204 ++++------- .../creater/edit-solution-panel.tsx | 209 ++++-------- .../creater/edit-testcase-panel.tsx | 321 ++++++------------ 6 files changed, 387 insertions(+), 762 deletions(-) create mode 100644 src/app/(app)/problem-editor/[problemId]/page.tsx diff --git a/src/app/(app)/problem-editor/[problemId]/page.tsx b/src/app/(app)/problem-editor/[problemId]/page.tsx new file mode 100644 index 0000000..44bb27f --- /dev/null +++ b/src/app/(app)/problem-editor/[problemId]/page.tsx @@ -0,0 +1,32 @@ +"use client"; + +import { ProblemFlexLayout } from "@/features/problems/components/problem-flexlayout"; +import { EditDescriptionPanel } from "@/components/creater/edit-description-panel"; +import { EditSolutionPanel } from "@/components/creater/edit-solution-panel"; +import { EditTestcasePanel } from "@/components/creater/edit-testcase-panel"; +import { EditDetailPanel } from "@/components/creater/edit-detail-panel"; +import { EditCodePanel } from "@/components/creater/edit-code-panel"; + +interface ProblemEditorPageProps { + params: Promise<{ problemId: string }>; +} + +export default async function ProblemEditorPage({ + params, +}: ProblemEditorPageProps) { + const { problemId } = await params; + + const components: Record = { + description: , + solution: , + detail: , + code: , + testcase: , + }; + + return ( +
+ +
+ ); +} \ No newline at end of file diff --git a/src/components/creater/edit-code-panel.tsx b/src/components/creater/edit-code-panel.tsx index 8b73b59..5af31d6 100644 --- a/src/components/creater/edit-code-panel.tsx +++ b/src/components/creater/edit-code-panel.tsx @@ -1,109 +1,80 @@ -"use client" +"use client"; -import React, { useEffect, useState } from 'react'; -import { getProblemData } from '@/app/actions/getProblem'; -import { updateProblemTemplate } from '@/components/creater/problem-maintain'; -import { Label } from '@/components/ui/label'; -import { Button } from '@/components/ui/button'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; -import { CoreEditor } from '@/components/core-editor'; -import { Language } from '@/generated/client'; -import { toast } from 'sonner'; +import { useState } from "react"; +import { Label } from "@/components/ui/label"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { Button } from "@/components/ui/button"; +import { CoreEditor } from "@/components/core-editor"; interface Template { + id: string; language: string; - content: string; + code: string; } interface EditCodePanelProps { problemId: string; } -export default function EditCodePanel({ problemId }: EditCodePanelProps) { - const [codeTemplate, setCodeTemplate] = useState