fix: 修复场景提示词
This commit is contained in:
@@ -108,8 +108,12 @@ export const dramaAPI = {
|
||||
return request.put(`/scenes/${sceneId}`, data)
|
||||
},
|
||||
|
||||
generateSceneImage(data: { scene_id: string; prompt?: string; model?: string }) {
|
||||
return request.post('/scenes/generate-image', data)
|
||||
generateSceneImage(data: { scene_id: number; prompt?: string; model?: string }) {
|
||||
return request.post<{ image_generation: { id: number } }>('/scenes/generate-image', data)
|
||||
},
|
||||
|
||||
updateScenePrompt(sceneId: string, prompt: string) {
|
||||
return request.put(`/scenes/${sceneId}/prompt`, { prompt })
|
||||
},
|
||||
|
||||
deleteScene(sceneId: string) {
|
||||
|
||||
@@ -68,7 +68,9 @@ export default {
|
||||
tip: '提示',
|
||||
status: '状态',
|
||||
createdAt: '创建时间',
|
||||
updatedAt: '更新时间'
|
||||
updatedAt: '更新时间',
|
||||
name: '名称',
|
||||
description: '描述'
|
||||
},
|
||||
settings: {
|
||||
title: '设置',
|
||||
|
||||
@@ -241,10 +241,10 @@
|
||||
<el-dialog v-model="addSceneDialogVisible" :title="$t('common.add')" width="600px">
|
||||
<el-form :model="newScene" label-width="100px">
|
||||
<el-form-item :label="$t('common.name')">
|
||||
<el-input v-model="newScene.name" :placeholder="$t('common.name')" />
|
||||
<el-input v-model="newScene.location" :placeholder="$t('common.name')" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('common.description')">
|
||||
<el-input v-model="newScene.description" type="textarea" :rows="4" :placeholder="$t('common.description')" />
|
||||
<el-input v-model="newScene.prompt" type="textarea" :rows="4" :placeholder="$t('common.description')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@@ -285,8 +285,8 @@ const newCharacter = ref({
|
||||
})
|
||||
|
||||
const newScene = ref({
|
||||
name: '',
|
||||
description: ''
|
||||
location: '',
|
||||
prompt: ''
|
||||
})
|
||||
|
||||
const episodesCount = computed(() => drama.value?.episodes?.length || 0)
|
||||
@@ -494,14 +494,14 @@ const deleteCharacter = async (character: any) => {
|
||||
|
||||
const openAddSceneDialog = () => {
|
||||
newScene.value = {
|
||||
name: '',
|
||||
description: ''
|
||||
location: '',
|
||||
prompt: ''
|
||||
}
|
||||
addSceneDialogVisible.value = true
|
||||
}
|
||||
|
||||
const addScene = async () => {
|
||||
if (!newScene.value.name.trim()) {
|
||||
if (!newScene.value.location.trim()) {
|
||||
ElMessage.warning('请输入场景名称')
|
||||
return
|
||||
}
|
||||
@@ -517,7 +517,11 @@ const addScene = async () => {
|
||||
}
|
||||
|
||||
const editScene = (scene: any) => {
|
||||
ElMessage.info('编辑功能开发中')
|
||||
newScene.value = {
|
||||
location: scene.location || scene.name || '',
|
||||
prompt: scene.prompt || scene.description || ''
|
||||
}
|
||||
addSceneDialogVisible.value = true
|
||||
}
|
||||
|
||||
const deleteScene = async (scene: any) => {
|
||||
|
||||
@@ -1601,8 +1601,9 @@ const saveShotEdit = async () => {
|
||||
// 对话框相关方法
|
||||
const openPromptDialog = (item: any, type: 'character' | 'scene') => {
|
||||
currentEditItem.value = item
|
||||
currentEditItem.value.name = item.name || item.location
|
||||
currentEditType.value = type
|
||||
editPrompt.value = item.appearance || item.description || ''
|
||||
editPrompt.value = item.prompt || item.appearance || item.description || ''
|
||||
promptDialogVisible.value = true
|
||||
}
|
||||
|
||||
@@ -1614,10 +1615,32 @@ const savePrompt = async () => {
|
||||
})
|
||||
await generateCharacterImage(currentEditItem.value.id)
|
||||
} else {
|
||||
await dramaAPI.generateSceneImage({
|
||||
// 1. 先保存场景提示词
|
||||
await dramaAPI.updateScenePrompt(currentEditItem.value.id.toString(), editPrompt.value)
|
||||
|
||||
// 2. 生成场景图片
|
||||
const model = selectedImageModel.value || undefined
|
||||
const response = await dramaAPI.generateSceneImage({
|
||||
scene_id: parseInt(currentEditItem.value.id),
|
||||
prompt: editPrompt.value
|
||||
prompt: editPrompt.value,
|
||||
model
|
||||
})
|
||||
const imageGenId = response.image_generation?.id
|
||||
|
||||
// 3. 轮询图片生成状态
|
||||
if (imageGenId) {
|
||||
ElMessage.info('场景图片生成中,请稍候...')
|
||||
generatingSceneImages.value[currentEditItem.value.id] = true
|
||||
pollImageStatus(imageGenId, async () => {
|
||||
await loadDramaData()
|
||||
ElMessage.success('场景图片生成完成!')
|
||||
}).finally(() => {
|
||||
generatingSceneImages.value[currentEditItem.value.id] = false
|
||||
})
|
||||
} else {
|
||||
ElMessage.success('场景图片生成已启动')
|
||||
await loadDramaData()
|
||||
}
|
||||
}
|
||||
promptDialogVisible.value = false
|
||||
} catch (error: any) {
|
||||
|
||||
Reference in New Issue
Block a user