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;