From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/ai/image/index/components/ImageDetail.vue |  187 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 187 insertions(+), 0 deletions(-)

diff --git a/src/views/ai/image/index/components/ImageDetail.vue b/src/views/ai/image/index/components/ImageDetail.vue
new file mode 100644
index 0000000..d4f8dc6
--- /dev/null
+++ b/src/views/ai/image/index/components/ImageDetail.vue
@@ -0,0 +1,187 @@
+<template>
+  <el-drawer
+    v-model="showDrawer"
+    title="鍥剧墖璇︾粏"
+    @close="handleDrawerClose"
+    custom-class="drawer-class"
+  >
+    <!-- 鍥剧墖棰勮 -->
+    <div class="mb-5">
+      <el-image
+        :src="detail?.picUrl"
+        :preview-src-list="[detail.picUrl]"
+        preview-teleported
+        class="w-full rounded-2"
+        fit="contain"
+      />
+    </div>
+
+    <!-- 鍩虹淇℃伅 -->
+    <el-descriptions title="鍩虹淇℃伅" :column="1" :label-width="100" border>
+      <el-descriptions-item label="鎻愪氦鏃堕棿">
+        {{ formatTime(detail.createTime, 'yyyy-MM-dd HH:mm:ss') }}
+      </el-descriptions-item>
+      <el-descriptions-item label="鐢熸垚鏃堕棿">
+        {{ formatTime(detail.finishTime, 'yyyy-MM-dd HH:mm:ss') }}
+      </el-descriptions-item>
+      <el-descriptions-item label="妯″瀷">
+        {{ detail.model }}({{ detail.height }}x{{ detail.width }})
+      </el-descriptions-item>
+      <el-descriptions-item label="鎻愮ず璇�">
+        <div class="break-words">{{ detail.prompt }}</div>
+      </el-descriptions-item>
+      <el-descriptions-item label="鍥剧墖鍦板潃">
+        <div class="break-all text-xs">{{ detail.picUrl }}</div>
+      </el-descriptions-item>
+    </el-descriptions>
+
+    <!-- StableDiffusion 涓撳睘鍖哄煙 -->
+    <el-descriptions
+      v-if="detail.platform === AiPlatformEnum.STABLE_DIFFUSION && hasStableDiffusionOptions"
+      title="StableDiffusion 鍙傛暟"
+      :column="1"
+      :label-width="100"
+      border
+      class="mt-5"
+    >
+      <el-descriptions-item v-if="detail?.options?.sampler" label="閲囨牱鏂规硶">
+        {{
+          StableDiffusionSamplers.find(
+            (item: ImageModelVO) => item.key === detail?.options?.sampler
+          )?.name
+        }}
+      </el-descriptions-item>
+      <el-descriptions-item v-if="detail?.options?.clipGuidancePreset" label="CLIP">
+        {{
+          StableDiffusionClipGuidancePresets.find(
+            (item: ImageModelVO) => item.key === detail?.options?.clipGuidancePreset
+          )?.name
+        }}
+      </el-descriptions-item>
+      <el-descriptions-item v-if="detail?.options?.stylePreset" label="椋庢牸">
+        {{
+          StableDiffusionStylePresets.find(
+            (item: ImageModelVO) => item.key === detail?.options?.stylePreset
+          )?.name
+        }}
+      </el-descriptions-item>
+      <el-descriptions-item v-if="detail?.options?.steps" label="杩唬姝ユ暟">
+        {{ detail?.options?.steps }}
+      </el-descriptions-item>
+      <el-descriptions-item v-if="detail?.options?.scale" label="寮曞绯绘暟">
+        {{ detail?.options?.scale }}
+      </el-descriptions-item>
+      <el-descriptions-item v-if="detail?.options?.seed" label="闅忔満鍥犲瓙">
+        {{ detail?.options?.seed }}
+      </el-descriptions-item>
+    </el-descriptions>
+
+    <!-- Dall3 涓撳睘鍖哄煙 -->
+    <el-descriptions
+      v-if="detail.platform === AiPlatformEnum.OPENAI && detail?.options?.style"
+      title="DALL-E 3 鍙傛暟"
+      :column="1"
+      :label-width="100"
+      border
+      class="mt-5"
+    >
+      <el-descriptions-item label="椋庢牸閫夋嫨">
+        {{ Dall3StyleList.find((item: ImageModelVO) => item.key === detail?.options?.style)?.name }}
+      </el-descriptions-item>
+    </el-descriptions>
+
+    <!-- Midjourney 涓撳睘鍖哄煙 -->
+    <el-descriptions
+      v-if="detail.platform === AiPlatformEnum.MIDJOURNEY && hasMidjourneyOptions"
+      title="Midjourney 鍙傛暟"
+      :column="1"
+      :label-width="100"
+      border
+      class="mt-5"
+    >
+      <el-descriptions-item v-if="detail?.options?.version" label="妯″瀷鐗堟湰">
+        {{ detail?.options?.version }}
+      </el-descriptions-item>
+      <el-descriptions-item v-if="detail?.options?.referImageUrl" label="鍙傝�冨浘">
+        <el-image
+          :src="detail.options.referImageUrl"
+          class="max-w-[200px] rounded-2"
+          fit="contain"
+        />
+      </el-descriptions-item>
+    </el-descriptions>
+  </el-drawer>
+</template>
+
+<script setup lang="ts">
+import { ImageApi, ImageVO } from '@/api/ai/image'
+import {
+  AiPlatformEnum,
+  Dall3StyleList,
+  ImageModelVO,
+  StableDiffusionClipGuidancePresets,
+  StableDiffusionSamplers,
+  StableDiffusionStylePresets
+} from '@/views/ai/utils/constants'
+import { formatTime } from '@/utils'
+
+const showDrawer = ref<boolean>(false) // 鏄惁鏄剧ず
+const detail = ref<ImageVO>({} as ImageVO) // 鍥剧墖璇︾粏淇℃伅
+
+// 璁$畻灞炴�э細鍒ゆ柇鏄惁鏈� StableDiffusion 閫夐」
+const hasStableDiffusionOptions = computed(() => {
+  const options = detail.value?.options
+  return (
+    options?.sampler ||
+    options?.clipGuidancePreset ||
+    options?.stylePreset ||
+    options?.steps ||
+    options?.scale ||
+    options?.seed
+  )
+})
+
+// 璁$畻灞炴�э細鍒ゆ柇鏄惁鏈� Midjourney 閫夐」
+const hasMidjourneyOptions = computed(() => {
+  const options = detail.value?.options
+  return options?.version || options?.referImageUrl
+})
+
+const props = defineProps({
+  show: {
+    type: Boolean,
+    require: true,
+    default: false
+  },
+  id: {
+    type: Number,
+    required: true
+  }
+})
+
+/** 鍏抽棴鎶藉眽  */
+const handleDrawerClose = async () => {
+  emits('handleDrawerClose')
+}
+
+/** 鐩戝惉 drawer 鏄惁鎵撳紑 */
+const { show } = toRefs(props)
+watch(show, async (newValue, _oldValue) => {
+  showDrawer.value = newValue as boolean
+})
+
+/**  鑾峰彇鍥剧墖璇︽儏  */
+const getImageDetail = async (id: number) => {
+  detail.value = await ImageApi.getImageMy(id)
+}
+
+/** 鐩戝惉 id 鍙樺寲锛屽姞杞芥渶鏂板浘鐗囪鎯� */
+const { id } = toRefs(props)
+watch(id, async (newVal, _oldVal) => {
+  if (newVal) {
+    await getImageDetail(newVal)
+  }
+})
+
+const emits = defineEmits(['handleDrawerClose'])
+</script>

--
Gitblit v1.8.0