From c0538ad8c355e5b763a9bb71f0205f44e94d2d4c Mon Sep 17 00:00:00 2001 From: let5sne Date: Sat, 18 Jul 2026 13:43:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(mobile):=20learning=20page=20fold=20round?= =?UTF-8?q?=202=20=E2=80=94=20deepen=20APP-like=20compression?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户复查后继续压缩(折叠不删减): - 岗位 SOP:要点默认只显示 2 条,与答案共用「展开全文(含N条要点)」 开关(原要点全量常显,该面板 1122px 是首因) - 训练前预习卡:默认只显示「要点」,红线/可说话术收进 「展开红线与可说话术」(练前场景里预习卡与练页预习视图重复度高) - 错题本默认 3→2 条(展开全部不变) - 学习后动作:三个竖排大按钮改为一行三列 高度变化:5452(初始)→3890(第一轮)→3039px(本轮,累计 -44%); 剩余为 8 个功能面板骨架高度,继续压需砍面板,violates 不影响功能原则。 面板分布:错题本 701→544、岗位SOP 1122→738、预习卡 596→361、 学习后动作 234→116。 验证:本地折叠/展开断言全过 + 生产复核 height<3300、双折叠就位。 发布备份 h5-before-$TS。 Co-Authored-By: Claude Fable 5 --- mobile-uni/src/pages/user/learning/index.vue | 53 +++++++++++++------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/mobile-uni/src/pages/user/learning/index.vue b/mobile-uni/src/pages/user/learning/index.vue index eb7b8afd..e3c55eec 100644 --- a/mobile-uni/src/pages/user/learning/index.vue +++ b/mobile-uni/src/pages/user/learning/index.vue @@ -117,7 +117,7 @@ 已完成 - @@ -228,14 +228,14 @@ {{ displayedAnswer }} - - - + + {{ index + 1 }}. {{ cleanOrderedText(point) }} + 要点 {{ item }} - - 红线 - {{ item }} - - - 可说话术 - {{ item }} - + + 暂无可用预习卡 @@ -366,13 +371,21 @@ const ANSWER_PREVIEW_CHARS = 140; const showAllMistakes = ref(false); const showFullAnswer = ref(false); const expandedSnippets = ref>({}); -const displayedMistakes = computed(() => (showAllMistakes.value ? visibleMistakes.value : visibleMistakes.value.slice(0, 3))); +const displayedMistakes = computed(() => (showAllMistakes.value ? visibleMistakes.value : visibleMistakes.value.slice(0, 2))); const answerIsLong = computed(() => (knowledgeResult.value?.answer || '').length > ANSWER_PREVIEW_CHARS); const displayedAnswer = computed(() => { const answer = knowledgeResult.value?.answer || ''; if (showFullAnswer.value || answer.length <= ANSWER_PREVIEW_CHARS) return answer; return `${answer.slice(0, ANSWER_PREVIEW_CHARS)}…`; }); +const KEYPOINT_PREVIEW_COUNT = 2; +const displayedKeyPoints = computed(() => { + const points = knowledgeResult.value?.keyPoints || []; + return showFullAnswer.value ? points : points.slice(0, KEYPOINT_PREVIEW_COUNT); +}); +const sopFoldNeeded = computed(() => + answerIsLong.value || (knowledgeResult.value?.keyPoints?.length || 0) > KEYPOINT_PREVIEW_COUNT); +const showPrepDetail = ref(false); const toggleSnippet = (index: number) => { expandedSnippets.value = { ...expandedSnippets.value, [index]: !expandedSnippets.value[index] }; }; @@ -1045,11 +1058,17 @@ onUnload(invalidateRequests); .snippet-list, .action-list { display: flex; - flex-direction: column; - gap: 12px; + gap: 10px; margin-top: 14px; } +.action-list .action-button { + flex: 1; + min-height: 44px; + padding: 0 4px; + font-size: 14px; +} + .task-row { display: flex; gap: 12px;