对比新文件 |
| | |
| | | <template> |
| | | <el-drawer |
| | | v-model="showDrawer" |
| | | title="图片详细" |
| | | @close="handleDrawerClose" |
| | | custom-class="drawer-class" |
| | | > |
| | | <!-- 图片 --> |
| | | <div class="item"> |
| | | <div class="body"> |
| | | <el-image |
| | | class="image" |
| | | :src="detail?.picUrl" |
| | | :preview-src-list="[detail.picUrl]" |
| | | preview-teleported |
| | | /> |
| | | </div> |
| | | </div> |
| | | <!-- 时间 --> |
| | | <div class="item"> |
| | | <div class="tip">时间</div> |
| | | <div class="body"> |
| | | <div>提交时间:{{ formatTime(detail.createTime, 'yyyy-MM-dd HH:mm:ss') }}</div> |
| | | <div>生成时间:{{ formatTime(detail.finishTime, 'yyyy-MM-dd HH:mm:ss') }}</div> |
| | | </div> |
| | | </div> |
| | | <!-- 模型 --> |
| | | <div class="item"> |
| | | <div class="tip">模型</div> |
| | | <div class="body"> {{ detail.model }}({{ detail.height }}x{{ detail.width }}) </div> |
| | | </div> |
| | | <!-- 提示词 --> |
| | | <div class="item"> |
| | | <div class="tip">提示词</div> |
| | | <div class="body"> |
| | | {{ detail.prompt }} |
| | | </div> |
| | | </div> |
| | | <!-- 地址 --> |
| | | <div class="item"> |
| | | <div class="tip">图片地址</div> |
| | | <div class="body"> |
| | | {{ detail.picUrl }} |
| | | </div> |
| | | </div> |
| | | <!-- StableDiffusion 专属区域 --> |
| | | <div |
| | | class="item" |
| | | v-if="detail.platform === AiPlatformEnum.STABLE_DIFFUSION && detail?.options?.sampler" |
| | | > |
| | | <div class="tip">采样方法</div> |
| | | <div class="body"> |
| | | {{ |
| | | StableDiffusionSamplers.find( |
| | | (item: ImageModelVO) => item.key === detail?.options?.sampler |
| | | )?.name |
| | | }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="item" |
| | | v-if=" |
| | | detail.platform === AiPlatformEnum.STABLE_DIFFUSION && detail?.options?.clipGuidancePreset |
| | | " |
| | | > |
| | | <div class="tip">CLIP</div> |
| | | <div class="body"> |
| | | {{ |
| | | StableDiffusionClipGuidancePresets.find( |
| | | (item: ImageModelVO) => item.key === detail?.options?.clipGuidancePreset |
| | | )?.name |
| | | }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="item" |
| | | v-if="detail.platform === AiPlatformEnum.STABLE_DIFFUSION && detail?.options?.stylePreset" |
| | | > |
| | | <div class="tip">风格</div> |
| | | <div class="body"> |
| | | {{ |
| | | StableDiffusionStylePresets.find( |
| | | (item: ImageModelVO) => item.key === detail?.options?.stylePreset |
| | | )?.name |
| | | }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="item" |
| | | v-if="detail.platform === AiPlatformEnum.STABLE_DIFFUSION && detail?.options?.steps" |
| | | > |
| | | <div class="tip">迭代步数</div> |
| | | <div class="body"> |
| | | {{ detail?.options?.steps }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="item" |
| | | v-if="detail.platform === AiPlatformEnum.STABLE_DIFFUSION && detail?.options?.scale" |
| | | > |
| | | <div class="tip">引导系数</div> |
| | | <div class="body"> |
| | | {{ detail?.options?.scale }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="item" |
| | | v-if="detail.platform === AiPlatformEnum.STABLE_DIFFUSION && detail?.options?.seed" |
| | | > |
| | | <div class="tip">随机因子</div> |
| | | <div class="body"> |
| | | {{ detail?.options?.seed }} |
| | | </div> |
| | | </div> |
| | | <!-- Dall3 专属区域 --> |
| | | <div class="item" v-if="detail.platform === AiPlatformEnum.OPENAI && detail?.options?.style"> |
| | | <div class="tip">风格选择</div> |
| | | <div class="body"> |
| | | {{ Dall3StyleList.find((item: ImageModelVO) => item.key === detail?.options?.style)?.name }} |
| | | </div> |
| | | </div> |
| | | <!-- Midjourney 专属区域 --> |
| | | <div |
| | | class="item" |
| | | v-if="detail.platform === AiPlatformEnum.MIDJOURNEY && detail?.options?.version" |
| | | > |
| | | <div class="tip">模型版本</div> |
| | | <div class="body"> |
| | | {{ detail?.options?.version }} |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="item" |
| | | v-if="detail.platform === AiPlatformEnum.MIDJOURNEY && detail?.options?.referImageUrl" |
| | | > |
| | | <div class="tip">参考图</div> |
| | | <div class="body"> |
| | | <el-image :src="detail.options.referImageUrl" /> |
| | | </div> |
| | | </div> |
| | | </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) // 图片详细信息 |
| | | |
| | | 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> |
| | | <style scoped lang="scss"> |
| | | .item { |
| | | margin-bottom: 20px; |
| | | width: 100%; |
| | | overflow: hidden; |
| | | word-wrap: break-word; |
| | | |
| | | .header { |
| | | display: flex; |
| | | flex-direction: row; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .tip { |
| | | font-weight: bold; |
| | | font-size: 16px; |
| | | } |
| | | |
| | | .body { |
| | | margin-top: 10px; |
| | | color: #616161; |
| | | |
| | | .taskImage { |
| | | border-radius: 10px; |
| | | } |
| | | } |
| | | } |
| | | </style> |