From a82c25b45c76c66ca2e4d58c38b1b7e9cf3e354d Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Sat, 30 May 2026 15:51:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A2=8E=E7=89=87=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=A1=B5=E6=94=AF=E6=8C=81=E5=86=85=E8=81=94=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 碎片类型详情页新增编辑按钮 - 编辑模式下显示 textarea 和保存/取消按钮 - 保存时调用更新接口并同步本地数据 --- src/components/ReviewDetail.vue | 88 +++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/src/components/ReviewDetail.vue b/src/components/ReviewDetail.vue index fa422dd..098b4aa 100644 --- a/src/components/ReviewDetail.vue +++ b/src/components/ReviewDetail.vue @@ -3,6 +3,8 @@ import { computed, onMounted, ref } from "vue"; import { useRoute, useRouter } from "vue-router"; import { getReportDetail, getFragmentDetail, getTaskReview, type ReviewFeedItem } from "@/api/review"; import { getSessionDetail } from "@/api/studySessions"; +import { updateFragments } from "@/api/reportFragments"; +import { ElMessage } from "element-plus"; const route = useRoute(); const router = useRouter(); @@ -15,6 +17,11 @@ const content = ref(""); const sourceTypeLabel = ref(""); const taskNum = ref(""); +// 编辑状态 +const isEditing = ref(false); +const editContent = ref(""); +const saving = ref(false); + // 当前会话信息 const sessionInfo = ref<{ taskName: string; @@ -114,6 +121,42 @@ const goToDetail = (type: string, id: number) => { router.push(`/review/detail/${type}/${id}`); }; +const enterEdit = () => { + editContent.value = content.value; + isEditing.value = true; +}; + +const cancelEdit = () => { + isEditing.value = false; + editContent.value = ""; +}; + +const saveEdit = async () => { + if (!editContent.value.trim()) { + ElMessage.warning("内容不能为空"); + return; + } + if (editContent.value === content.value) { + isEditing.value = false; + return; + } + saving.value = true; + try { + const res = await updateFragments(contentId.value, editContent.value); + if (res?.code === 200) { + content.value = editContent.value; + isEditing.value = false; + ElMessage.success("保存成功"); + } else { + ElMessage.error(res?.message || "保存失败"); + } + } catch (e: any) { + ElMessage.error(e.message || "请求失败"); + } finally { + saving.value = false; + } +}; + onMounted(() => { loadDetail(); }); @@ -137,14 +180,38 @@ onMounted(() => { 学习时间:{{ sessionInfo.startTime?.replace("T", " ")?.substring(0, 16) }} + + 编辑 + -
-

- {{ line || " " }} -

+ +
+ +
+ 取消 + 保存 +
-
暂无内容
+ + @@ -342,4 +409,15 @@ onMounted(() => { color: #b8860b; } +.edit-area { + margin-top: 12px; +} + +.edit-actions { + display: flex; + justify-content: flex-end; + gap: 8px; + margin-top: 12px; +} + \ No newline at end of file