refactor: ScriptView 删除 read 模式 + 兼容旧模式,统一对话流入口

This commit is contained in:
2026-07-01 08:28:47 +08:00
parent 6aeb5319e3
commit 2c778fabbb
2 changed files with 10 additions and 121 deletions
+1 -102
View File
@@ -159,7 +159,7 @@
<view id="result-scroll-top" class="result-scroll-top"></view>
<!-- 聊天模式 -->
<view v-else>
<view>
<view class="conversation compact">
<view class="chat-bubble user">
<text>{{ wishText }}</text>
@@ -178,7 +178,6 @@
>
<MessageCard
v-if="message.sender === 'assistant' || message.type === 'script'"
message-type="script"
:version-label="formatVersionLabel(message)"
:has-children="messageHasChildren(message)"
:can-delete="message.id !== currentVersionMessageId && message.parentMessageId !== null"
@@ -199,7 +198,6 @@
@play-tts="playMessageTts(message)"
@change-direction="changeDirection"
@not-like-me="notLikeMe"
@continue="continueMessage(message)"
/>
<view v-else class="chat-bubble user">
<text>{{ message.content }}</text>
@@ -221,83 +219,6 @@
<view :id="resultScrollAnchor" class="result-scroll-anchor"></view>
</view>
<!-- 兼容旧模式 -->
<view v-else>
<view class="conversation compact">
<view class="chat-bubble user">
<text>{{ wishText }}</text>
<text class="bubble-time">{{ currentMessageTime }}</text>
</view>
<view class="chat-bubble system done">
<text>心愿已实现故事已为你展开</text>
<text class="bubble-time">{{ currentResultTime }}</text>
</view>
</view>
<MessageCard
:content="displayedResultContent"
:title="currentResult?.title"
:tags="resultTags"
:collapsed="storyCollapsed"
:content-length="displayedResultContent.length"
:is-short-message="false"
:tts-icon="ttsActionIcon"
:tts-text="ttsActionText"
@toggle-collapse="toggleStoryCollapse"
@copy="copyResultContent"
@change-direction="changeDirection"
@not-like-me="notLikeMe"
@continue="continueInChat"
@play-tts="trackTtsClick"
/>
<view v-if="resultMessages.length" class="result-chat-list">
<view
v-for="message in resultMessages"
:key="message.id"
>
<MessageCard
v-if="isAssistantMessage(message)"
:content="message.content"
:collapsed="isMessageCollapsed(message)"
:content-length="message.content.length"
:is-short-message="message.content.length < 100"
:tts-icon="ttsPlayer.playing.value ? '' : ''"
:tts-text="ttsPlayer.playing.value ? '暂停' : '播放'"
@toggle-collapse="toggleMessageCollapse(message)"
@copy="copyMessageContent(message)"
@change-direction="changeDirection"
@not-like-me="notLikeMe"
@continue="continueInChat"
@play-tts="playMessageTts(message)"
/>
<view v-else class="chat-bubble user">
<text>{{ message.content }}</text>
<text class="bubble-time">{{ message.time }}</text>
</view>
</view>
</view>
<view v-if="resultChatting" class="generation-loading">
<view class="loading-orbit streaming">
<view class="orbit-ring outer"></view>
<view class="orbit-ring inner"></view>
<view class="orbit-core"></view>
</view>
<text class="loading-copy">正在为你重写人生</text>
<text class="loading-subcopy">AI 正在思考下一步方向</text>
</view>
<view :id="resultScrollAnchor" class="result-scroll-anchor"></view>
</view>
</view>
</scroll-view>
<view v-if="showScrollTopBtn || showScrollBottomBtn" class="scroll-jump-group">
<view v-if="showScrollTopBtn" class="scroll-jump-btn" @click="scrollResultToTop">顶部</view>
<view v-if="showScrollBottomBtn" class="scroll-jump-btn" @click="scrollResultToBottom">底部</view>
</view>
<!-- 聊天模式输入栏 -->
<view v-if="viewMode === 'chat'" class="result-chat-bar">
<view
@@ -326,28 +247,6 @@
<view class="chat-send-btn" :class="{ disabled: !chatInput.trim() || generating }" @click="sendChat">发送</view>
</view>
<!-- 非聊天模式输入栏兼容旧模式 -->
<view v-else class="result-chat-bar">
<view
class="chat-voice-btn"
:class="{ pressing: voiceState === 'pressing', recognizing: voiceState === 'recognizing' }"
@touchstart.prevent="startVoicePress"
@touchend.prevent="endVoicePress"
@touchcancel.prevent="cancelVoicePress"
>
<text class="voice-icon">🎤</text>
</view>
<view class="result-input-shell" :class="{ twoLine: resultInputLevel === 'two', expanded: resultInputLevel === 'multi' }">
<text v-if="!resultChatInput" class="custom-input-placeholder result-input-placeholder">继续提修改建议或确认后重新生成</text>
<textarea
class="result-chat-input"
v-model="resultChatInput"
:auto-height="resultInputLevel !== 'single'"
:show-confirm-bar="false"
:focus="resultInputFocus"
maxlength="500"
confirm-type="send"
@focus="resultInputFocused = true"
@blur="resultInputFocused = false"
@confirm="sendResultChat('text')"
/>