@@ -214,6 +383,82 @@ onMounted(() => {
+
+
+
+
应用场景
+ {{ applications.length }}
+
+
+
+
+
+ {{ item.title }}
+ {{ statusText[item.status] || item.status }}
+
+
{{ item.description }}
+
+ {{ item.resourceUrl }}
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
思维导图
+ {{ mindMap?.contentFormat || mindMapForm.contentFormat }}
+
+
+
+
+
+
该任务下的所有学习记录
@@ -280,6 +525,15 @@ onMounted(() => {
flex-wrap: wrap;
}
+.session-stats {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px 14px;
+ margin: -6px 0 16px;
+ color: var(--text-secondary);
+ font-size: 13px;
+}
+
.meta-task-name {
font-weight: 600;
color: var(--green-800);
@@ -310,6 +564,84 @@ onMounted(() => {
padding: 40px 0;
}
+.review-extension-grid {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
+ gap: 14px;
+}
+
+.extension-card {
+ padding: 20px 22px;
+}
+
+.extension-head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ margin-bottom: 14px;
+}
+
+.extension-head h3 {
+ margin: 0;
+ color: var(--green-900);
+ font-size: 16px;
+}
+
+.application-list {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ margin-bottom: 14px;
+}
+
+.application-item {
+ padding: 12px;
+ border: 1px solid var(--border-soft);
+ border-radius: 8px;
+ background: #fbfefc;
+}
+
+.application-main {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 10px;
+}
+
+.application-main strong {
+ min-width: 0;
+ color: var(--text-primary);
+ word-break: break-word;
+}
+
+.application-item p {
+ margin: 8px 0 0;
+ color: var(--text-secondary);
+ font-size: 13px;
+ word-break: break-word;
+}
+
+.item-actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: 4px;
+ margin-top: 8px;
+}
+
+.application-form,
+.mind-map-form {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+}
+
+.form-row {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
/* 历史记录卡片 */
.history-card {
padding: 20px 22px;
@@ -420,4 +752,15 @@ onMounted(() => {
margin-top: 12px;
}
-
\ No newline at end of file
+@media (max-width: 900px) {
+ .review-extension-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .form-row {
+ flex-direction: column;
+ align-items: stretch;
+ }
+}
+
+
diff --git a/src/components/Study.vue b/src/components/Study.vue
index 1f67765..c83a656 100644
--- a/src/components/Study.vue
+++ b/src/components/Study.vue
@@ -3,6 +3,7 @@ import { computed, onMounted, ref, watch } from "vue";
import request from "@/utils/request";
import router from "@/router";
import { ElMessage } from "element-plus";
+import { getReviewTaskStatsByTask } from "@/api/review";
interface TaskItem {
title: string;
@@ -44,7 +45,7 @@ async function loadTaskStats(taskNum: string) {
if (!task || task.statsLoaded) return;
try {
- const res = await request.get(`/review/tasks/${taskNum}`);
+ const res = await getReviewTaskStatsByTask(taskNum);
if (res?.data) {
task.reportCount = res.data.reportCount ?? 0;
task.fragmentCount = res.data.fragmentCount ?? 0;
diff --git a/src/components/Welcome.vue b/src/components/Welcome.vue
index bfb4cd5..391351d 100644
--- a/src/components/Welcome.vue
+++ b/src/components/Welcome.vue
@@ -63,7 +63,7 @@ const duplicatedGroups = computed(() => [...sessionGroups.value, ...sessionGroup
const loadReviewFeed = async () => {
try {
- const res = await getReviewFeed(100);
+ const res = await getReviewFeed(100, "random");
reviewItems.value = res?.data || [];
} catch {
// feed 加载失败不影响页面主体功能