From d220b01ba43b348b6304d59884f67084c4754ca4 Mon Sep 17 00:00:00 2001 From: Peanut Date: Sun, 26 Jul 2026 15:39:49 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9AScriptLibraryView=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=A4=A7=E7=BA=B2=E9=A2=84=E8=A7=88=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/pages/main/ScriptLibraryView.vue | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mini-program/src/pages/main/ScriptLibraryView.vue b/mini-program/src/pages/main/ScriptLibraryView.vue index 08d8b5b..460e187 100644 --- a/mini-program/src/pages/main/ScriptLibraryView.vue +++ b/mini-program/src/pages/main/ScriptLibraryView.vue @@ -86,6 +86,10 @@ {{ tag }} + + {{ getOutlinePreview(script) }} + + {{ script.summary || script.content || '一段正在生成中的平行人生剧本。' }} @@ -249,6 +253,20 @@ const getProgress = (script) => Math.max(0, Math.min(99, Number(script.progress const getInitial = (script) => (script.title || '剧').slice(0, 1) +/** + * 获取大纲预览文本(前 2 章标题) + * 数据来源:script.plotJson.stages.outline.beats + */ +const getOutlinePreview = (script) => { + const beats = script?.plotJson?.stages?.outline?.beats + if (!Array.isArray(beats) || beats.length === 0) return '' + const parts = beats.slice(0, 2).map((beat, i) => { + const title = beat.title || '' + return `第${i + 1}章:${title}` + }) + return `📋 ${parts.join(' · ')}` +} + const isFavorite = (script) => { return Boolean(favoriteStatus.value[String(script.id)]) } @@ -795,6 +813,19 @@ const confirmDeleteScript = async () => { background: rgba(149, 55, 255, 0.2); } +.outline-preview-row { + margin-top: 10rpx; + padding: 10rpx 14rpx; + border-radius: 14rpx; + background: rgba(168, 85, 247, 0.08); + border: 1rpx solid rgba(168, 85, 247, 0.16); +} +.outline-preview-text { + font-size: 22rpx; + color: rgba(193, 134, 255, 0.88); + line-height: 1.4; +} + .summary { display: -webkit-box; margin-top: 14rpx;