- {{ line || " " }} -
+ ++ {{ line || " " }} +
+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(() => {
+
- {{ line || " " }} -
+ ++ {{ line || " " }} +
+