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