mirror of
https://github.com/adams549659584/go-proxy-bingai.git
synced 2025-06-03 15:02:30 +08:00
66 lines
2.3 KiB
Vue
66 lines
2.3 KiB
Vue
<script setup lang="ts">
|
||
import { ref } from 'vue';
|
||
import { NButton, NEmpty, NInput, NModal, useMessage } from 'naive-ui';
|
||
import { computed } from 'vue';
|
||
|
||
const props = defineProps<{
|
||
show: boolean;
|
||
}>();
|
||
|
||
const emit = defineEmits<{
|
||
'update:show': [value: boolean];
|
||
}>();
|
||
|
||
const message = useMessage();
|
||
|
||
const DEMO_KEYWORD = '骑着摩托的小猫咪,疾驰在路上,动漫场景,详细的细节。';
|
||
const keyword = ref('');
|
||
const iframeSrc = ref('');
|
||
const isCreating = ref(false);
|
||
|
||
const isShowModal = computed({
|
||
get: () => props.show,
|
||
set: (value) => emit('update:show', value),
|
||
});
|
||
|
||
const createImage = () => {
|
||
if (!keyword.value) {
|
||
message.error('请先输入关键词');
|
||
return;
|
||
}
|
||
isCreating.value = true;
|
||
iframeSrc.value = `/images/create?re=1&showselective=1&sude=1&kseed=7500&SFX=2&q=${encodeURIComponent(keyword.value)}&t=${Date.now()}`;
|
||
};
|
||
|
||
const onClose = () => {
|
||
keyword.value = '';
|
||
iframeSrc.value = '';
|
||
};
|
||
|
||
const useDemo = () => {
|
||
keyword.value = DEMO_KEYWORD;
|
||
return createImage();
|
||
};
|
||
</script>
|
||
|
||
<template>
|
||
<NModal class="w-11/12 lg:w-[540px] select-none" v-model:show="isShowModal" :on-close="onClose" preset="card" title="图像创建">
|
||
<head class="flex justify-center gap-3 px-8">
|
||
<NInput class="flex-1" placeholder="提示词" v-model:value="keyword" :clearable="true" @keyup.enter="createImage" maxlength="100"></NInput>
|
||
<NButton secondary type="info" @click="createImage" :loading="isCreating">开始创建</NButton>
|
||
</head>
|
||
<main class="flex justify-center items-center">
|
||
<iframe v-if="iframeSrc" class="w-[310px] h-[350px] xl:w-[475px] xl:h-[520px] my-4" :src="iframeSrc" frameborder="0" @load="isCreating = false"></iframe>
|
||
<NEmpty v-else class="h-[40vh] xl:h-[60vh] flex justify-center items-center" description="暂未创建">
|
||
<template #extra>
|
||
<NButton secondary type="info" @click="useDemo">使用示例创建</NButton>
|
||
<div class="text-[#c2c2c2] px-2 xl:px-10">
|
||
<p class="text-left">提示:形容词+名词+动词+风格,描述得越详细时,效果越好。</p>
|
||
<p class="text-left">示例:{{ DEMO_KEYWORD }}</p>
|
||
</div>
|
||
</template>
|
||
</NEmpty>
|
||
</main>
|
||
</NModal>
|
||
</template>
|