Browse Source

模特与场景

kongwenhao 3 months ago
parent
commit
3ced89f2bc

+ 23 - 9
frontend/src/components/ModelGeneration/index.vue

@@ -64,13 +64,17 @@
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, computed, onMounted, nextTick } from 'vue'
+import { ref, reactive, computed, watch, nextTick } from 'vue'
 import { ElMessage } from 'element-plus'
 import { getShoesModelTemplateApi } from '@/apis/other'
 
 // 定义组件的 props
 interface Props {
   modelValue: boolean
+  initialModels?: {
+    female?: any
+    male?: any
+  }
 }
 
 const props = defineProps<Props>()
@@ -175,7 +179,6 @@ const handleConfirm = () => {
     } : null
   }
 
-  console.log('选中的模特:', selectedModels)
 
   // 通过事件将数据发送给父组件
   emit('confirm', selectedModels)
@@ -197,7 +200,6 @@ const handleClose = () => {
 const fetchModelList = async () => {
   try {
     const response = await getShoesModelTemplateApi({ status: 2 })
-    console.log(response)
     if (response && response.data) {
       // 根据性别分类模特
       femaleModels.value = response.data.filter((model: ModelData) => model.keywords === '女性')
@@ -210,7 +212,6 @@ const fetchModelList = async () => {
       }, 100)
     }
   } catch (error) {
-    console.error('获取模特列表失败:', error)
     ElMessage.error('获取模特列表失败')
   }
 }
@@ -225,11 +226,24 @@ const preloadImages = (models: ModelData[]) => {
   })
 }
 
-// 组件挂载时的初始化
-onMounted(() => {
-  console.log('模特生成页面已加载')
-  fetchModelList()
-})
+// 监听弹窗显示状态变化,初始化模特数据
+watch(dialogVisible, (newValue) => {
+  if (newValue) {
+    fetchModelList()
+    
+    // 初始化时接收父组件传递的模特数据
+    if (props.initialModels) {
+      
+      if (props.initialModels.female) {
+        selectedFemaleModel.value = props.initialModels.female
+      }
+      
+      if (props.initialModels.male) {
+        selectedMaleModel.value = props.initialModels.male
+      }
+    }
+  }
+}, { immediate: true })
 </script>
 
 <style lang="scss" scoped>

+ 9 - 1
frontend/src/components/ScenePromptDialog/index.vue

@@ -28,12 +28,13 @@
 </template>
 
 <script setup lang="ts">
-import { ref, computed } from 'vue'
+import { ref, computed, watch } from 'vue'
 import { ElMessage } from 'element-plus'
 
 // 定义组件的 props
 interface Props {
   modelValue: boolean
+  initialPrompt?: string
 }
 
 const props = defineProps<Props>()
@@ -103,6 +104,13 @@ const handleClose = () => {
 const resetForm = () => {
   scenePrompt.value = ''
 }
+
+// 监听弹窗显示状态变化,初始化场景提示词
+watch(dialogVisible, (newValue) => {
+  if (newValue && props.initialPrompt) {
+    scenePrompt.value = props.initialPrompt
+  }
+}, { immediate: true })
 </script>
 
 <style lang="scss" scoped>

+ 8 - 9
frontend/src/views/Home/index.vue

@@ -57,16 +57,18 @@
 
       <ModelGenerationDialog 
          v-model="modelDialogVisible"
+         :initial-models="selectedModels"
          @confirm="handleModelSelection"
          @cancel="modelDialogVisible = false"
        />
 
-       <!-- 场景提示词弹窗 -->
-       <ScenePromptDialog 
-         v-model="scenePromptDialogVisible"
-         @confirm="handleScenePromptConfirm"
-         @cancel="scenePromptDialogVisible = false"
-       />
+               <!-- 场景提示词弹窗 -->
+        <ScenePromptDialog 
+          v-model="scenePromptDialogVisible"
+          :initial-prompt="scenePrompt"
+          @confirm="handleScenePromptConfirm"
+          @cancel="scenePromptDialogVisible = false"
+        />
    </div>
 </template>
 
@@ -133,7 +135,6 @@ const openScenePromptDialog = () => {
 
 // 处理场景提示词确认
 const handleScenePromptConfirm = (prompt: string) => {
-    console.log('场景提示词:', prompt);
     scenePrompt.value = prompt;
     // 这里可以添加处理场景提示词的逻辑
 };
@@ -146,7 +147,6 @@ const checkHealth = async () => {
             loading.value = false; // 健康检查成功,关闭 loading
         }
     } catch (error) {
-        console.error('健康检查失败:', error);
         setTimeout(() => {
             checkHealth(); // 延迟检查
         }, 2000);
@@ -157,7 +157,6 @@ const checkHealth = async () => {
 const settingClickCount = ref(0);
 // 修改headerBar的点击处理函数
 function handleSettingClick() {
-  console.log('handleSettingClickhandleSettingClick')
   settingClickCount.value++;
 
   if (settingClickCount.value >= 5) {