refactor: ScriptView 删除 read 模式,剧本入口直接进对话流
This commit is contained in:
@@ -158,51 +158,8 @@
|
||||
<view class="result-scroll-content">
|
||||
<view id="result-scroll-top" class="result-scroll-top"></view>
|
||||
|
||||
<!-- 阅读模式 -->
|
||||
<view v-if="viewMode === 'read'">
|
||||
<view class="version-bar">
|
||||
<view
|
||||
v-for="v in versions"
|
||||
:key="v.id"
|
||||
class="version-tag"
|
||||
:class="{ active: selectedVersionMessageId === v.id, current: currentVersionMessageId === v.id }"
|
||||
@click="onSelectVersion(v.id)"
|
||||
>
|
||||
<text>V{{ v.versionNumber }}</text>
|
||||
<text v-if="currentVersionMessageId === v.id" class="version-current-label">(当前)</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="script-read-content">
|
||||
<view class="script-title">{{ currentScriptContent.title }}</view>
|
||||
<view v-if="currentScriptContent.plotIntro" class="script-section">
|
||||
<view class="script-section-title">序幕:低谷回响</view>
|
||||
<view class="script-section-body">{{ currentScriptContent.plotIntro }}</view>
|
||||
</view>
|
||||
<view v-if="currentScriptContent.plotTurning" class="script-section">
|
||||
<view class="script-section-title">转折:契机出现</view>
|
||||
<view class="script-section-body">{{ currentScriptContent.plotTurning }}</view>
|
||||
</view>
|
||||
<view v-if="currentScriptContent.plotClimax" class="script-section">
|
||||
<view class="script-section-title">高潮:命运抉择</view>
|
||||
<view class="script-section-body">{{ currentScriptContent.plotClimax }}</view>
|
||||
</view>
|
||||
<view v-if="currentScriptContent.plotEnding" class="script-section">
|
||||
<view class="script-section-title">结局:新的开始</view>
|
||||
<view class="script-section-body">{{ currentScriptContent.plotEnding }}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="read-action-bar">
|
||||
<view class="read-action-btn" @click="enterChatMode">进入对话修改</view>
|
||||
<view class="read-action-btn secondary" @click="rewriteCurrentVersion">改写当前版本</view>
|
||||
<view class="read-action-btn secondary" @click="continueCurrentVersion">续写当前版本</view>
|
||||
<view v-if="selectedVersionMessageId && selectedVersionMessageId !== currentVersionMessageId" class="read-action-btn primary" @click="setAsCurrentVersion">设为当前版本</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 聊天模式 -->
|
||||
<view v-else-if="viewMode === 'chat'">
|
||||
<view v-else>
|
||||
<view class="conversation compact">
|
||||
<view class="chat-bubble user">
|
||||
<text>{{ wishText }}</text>
|
||||
@@ -466,11 +423,10 @@ const remainingCount = ref(3)
|
||||
const style = ref('career')
|
||||
const randomRecommendations = ref([])
|
||||
const useSocialInsights = ref(true)
|
||||
const viewMode = ref('read')
|
||||
const viewMode = ref('chat')
|
||||
const scriptId = ref('')
|
||||
const conversationId = ref('')
|
||||
const currentVersionMessageId = ref('')
|
||||
const selectedVersionMessageId = ref('')
|
||||
const messages = ref([])
|
||||
const versions = ref([])
|
||||
const chatInput = ref('')
|
||||
@@ -617,7 +573,7 @@ const resultHasScriptReplies = computed(() => {
|
||||
})
|
||||
|
||||
const currentScriptContent = computed(() => {
|
||||
const targetId = selectedVersionMessageId.value || currentVersionMessageId.value
|
||||
const targetId = currentVersionMessageId.value
|
||||
const targetMessage = messages.value.find(m => m.id === targetId && m.type === 'script')
|
||||
let result
|
||||
if (!targetMessage || !targetMessage.metadata) {
|
||||
@@ -650,37 +606,6 @@ const currentScriptContent = computed(() => {
|
||||
|
||||
const displayMessages = computed(() => messages.value)
|
||||
|
||||
const onSelectVersion = (messageId) => {
|
||||
selectedVersionMessageId.value = messageId
|
||||
}
|
||||
|
||||
const setAsCurrentVersion = async () => {
|
||||
try {
|
||||
await switchVersion({ scriptId: scriptId.value, messageId: selectedVersionMessageId.value })
|
||||
currentVersionMessageId.value = selectedVersionMessageId.value
|
||||
uni.showToast({ title: '已设为当前版本', icon: 'success' })
|
||||
} catch (error) {
|
||||
uni.showToast({ title: error.message || '切换失败', icon: 'none' })
|
||||
}
|
||||
}
|
||||
|
||||
const enterChatMode = () => {
|
||||
viewMode.value = 'chat'
|
||||
loadMessages()
|
||||
}
|
||||
|
||||
const rewriteCurrentVersion = () => {
|
||||
selectedVersionMessageId.value = currentVersionMessageId.value
|
||||
viewMode.value = 'chat'
|
||||
loadMessages()
|
||||
}
|
||||
|
||||
const continueCurrentVersion = () => {
|
||||
selectedVersionMessageId.value = currentVersionMessageId.value
|
||||
viewMode.value = 'chat'
|
||||
loadMessages()
|
||||
}
|
||||
|
||||
const loadMessages = async () => {
|
||||
if (!conversationId.value) return
|
||||
|
||||
@@ -952,10 +877,17 @@ const showVersions = async (msg) => {
|
||||
const items = list.map(v => `V${v.versionNumber} ${v.id === currentVersionMessageId.value ? '(当前)' : ''}`)
|
||||
uni.showActionSheet({
|
||||
itemList: items,
|
||||
success: (res) => {
|
||||
success: async (res) => {
|
||||
const selected = list[res.tapIndex]
|
||||
selectedVersionMessageId.value = selected.id
|
||||
viewMode.value = 'read'
|
||||
// 切换到选中的版本
|
||||
try {
|
||||
await switchVersion({ scriptId: scriptId.value, messageId: selected.id })
|
||||
currentVersionMessageId.value = selected.id
|
||||
await loadMessages()
|
||||
uni.showToast({ title: `已切换到 V${selected.versionNumber}`, icon: 'success' })
|
||||
} catch (error) {
|
||||
uni.showToast({ title: error.message || '切换失败', icon: 'none' })
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1598,11 +1530,10 @@ const openScriptChat = async (payload = {}) => {
|
||||
scriptId.value = script.id
|
||||
conversationId.value = script.conversationId || ''
|
||||
currentVersionMessageId.value = script.currentVersionMessageId || ''
|
||||
selectedVersionMessageId.value = script.currentVersionMessageId || ''
|
||||
wishText.value = script.theme || script.prompt || script.title || '继续修改这个人生剧本'
|
||||
currentMessageTime.value = formatMessageTime()
|
||||
currentResultTime.value = script.updateTime || script.updatedAt || script.createTime || script.createdAt || formatMessageTime()
|
||||
viewMode.value = 'read'
|
||||
viewMode.value = 'chat'
|
||||
viewState.value = 'result'
|
||||
if (conversationId.value) {
|
||||
await loadMessages()
|
||||
@@ -1772,7 +1703,6 @@ const runGeneration = async ({ prompt, displayText, source = 'text', saveTheme }
|
||||
scriptId.value = data.scriptId
|
||||
conversationId.value = data.conversationId
|
||||
currentVersionMessageId.value = data.currentVersionMessageId
|
||||
selectedVersionMessageId.value = data.currentVersionMessageId
|
||||
|
||||
currentResult.value = {
|
||||
id: data.scriptId,
|
||||
@@ -1787,7 +1717,7 @@ const runGeneration = async ({ prompt, displayText, source = 'text', saveTheme }
|
||||
}
|
||||
|
||||
await loadMessages()
|
||||
viewMode.value = 'read'
|
||||
viewMode.value = 'chat'
|
||||
viewState.value = 'result'
|
||||
|
||||
analytics.track('script_generate_success', {
|
||||
|
||||
Reference in New Issue
Block a user