Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
2ef484e7
authored
Mar 03, 2025
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型
parent
ae632ac2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
58 additions
and
10 deletions
+58
-10
src/views/ai/image/index/components/midjourney/index.vue
+27
-3
src/views/ai/image/index/components/stableDiffusion/index.vue
+31
-7
No files found.
src/views/ai/image/index/components/midjourney/index.vue
View file @
2ef484e7
...
...
@@ -95,7 +95,13 @@
</el-space>
</div>
<div
class=
"btns"
>
<el-button
type=
"primary"
size=
"large"
round
@
click=
"handleGenerateImage"
>
<el-button
type=
"primary"
size=
"large"
round
:disabled=
"prompt.length === 0"
@
click=
"handleGenerateImage"
>
{{
drawIn
?
'生成中'
:
'生成内容'
}}
</el-button>
</div>
...
...
@@ -112,9 +118,19 @@ import {
MidjourneyVersions
,
NijiVersionList
}
from
'@/views/ai/utils/constants'
import
{
ModelVO
}
from
'@/api/ai/model/model'
const
message
=
useMessage
()
// 消息弹窗
// 接收父组件传入的模型列表
const
props
=
defineProps
({
models
:
{
type
:
Array
<
ModelVO
>
,
default
:
()
=>
[]
as
ModelVO
[]
}
})
const
emits
=
defineEmits
([
'onDrawStart'
,
'onDrawComplete'
])
// 定义 emits
// 定义属性
const
drawIn
=
ref
<
boolean
>
(
false
)
// 生成中
const
selectHotWord
=
ref
<
string
>
(
''
)
// 选中的热词
...
...
@@ -125,7 +141,6 @@ const selectModel = ref<string>('midjourney') // 选中的模型
const
selectSize
=
ref
<
string
>
(
'1:1'
)
// 选中 size
const
selectVersion
=
ref
<
any
>
(
'6.0'
)
// 选中的 version
const
versionList
=
ref
<
any
>
(
MidjourneyVersions
)
// version 列表
const
emits
=
defineEmits
([
'onDrawStart'
,
'onDrawComplete'
])
// 定义 emits
/** 选择热词 */
const
handleHotWordClick
=
async
(
hotWord
:
string
)
=>
{
...
...
@@ -158,6 +173,15 @@ const handleModelClick = async (model: ImageModelVO) => {
/** 图片生成 */
const
handleGenerateImage
=
async
()
=>
{
// 从 models 中查找匹配的模型
const
matchedModel
=
props
.
models
.
find
(
(
item
)
=>
item
.
model
===
selectModel
.
value
&&
item
.
platform
===
AiPlatformEnum
.
MIDJOURNEY
)
if
(
!
matchedModel
)
{
message
.
error
(
'该模型不可用,请选择其它模型'
)
return
}
// 二次确认
await
message
.
confirm
(
`确认生成内容?`
)
try
{
...
...
@@ -171,7 +195,7 @@ const handleGenerateImage = async () => {
)
as
ImageSizeVO
const
req
=
{
prompt
:
prompt
.
value
,
model
:
selectModel
.
value
,
model
Id
:
matchedModel
.
id
,
width
:
imageSize
.
width
,
height
:
imageSize
.
height
,
version
:
selectVersion
.
value
,
...
...
src/views/ai/image/index/components/stableDiffusion/index.vue
View file @
2ef484e7
...
...
@@ -2,11 +2,11 @@
<
template
>
<div
class=
"prompt"
>
<el-text
tag=
"b"
>
画面描述
</el-text>
<el-text
tag=
"p"
>
建议使用“形容词
+动词+
风格”的格式,使用“,”隔开
</el-text>
<el-text
tag=
"p"
>
建议使用“形容词
+ 动词 +
风格”的格式,使用“,”隔开
</el-text>
<el-input
v-model=
"prompt"
maxlength=
"1024"
rows=
"5"
:
rows=
"5"
class=
"w-100% mt-15px"
input-style=
"border-radius: 7px;"
placeholder=
"例如:童话里的小屋应该是什么样子?"
...
...
@@ -128,7 +128,14 @@
</el-space>
</div>
<div
class=
"btns"
>
<el-button
type=
"primary"
size=
"large"
round
:loading=
"drawIn"
@
click=
"handleGenerateImage"
>
<el-button
type=
"primary"
size=
"large"
round
:loading=
"drawIn"
:disabled=
"prompt.length === 0"
@
click=
"handleGenerateImage"
>
{{
drawIn
?
'生成中'
:
'生成内容'
}}
</el-button>
</div>
...
...
@@ -143,9 +150,19 @@ import {
StableDiffusionSamplers
,
StableDiffusionStylePresets
}
from
'@/views/ai/utils/constants'
import
{
ModelVO
}
from
'@/api/ai/model/model'
const
message
=
useMessage
()
// 消息弹窗
// 接收父组件传入的模型列表
const
props
=
defineProps
({
models
:
{
type
:
Array
<
ModelVO
>
,
default
:
()
=>
[]
as
ModelVO
[]
}
})
const
emits
=
defineEmits
([
'onDrawStart'
,
'onDrawComplete'
])
// 定义 emits
// 定义属性
const
drawIn
=
ref
<
boolean
>
(
false
)
// 生成中
const
selectHotWord
=
ref
<
string
>
(
''
)
// 选中的热词
...
...
@@ -160,8 +177,6 @@ const scale = ref<number>(7.5) // 引导系数
const
clipGuidancePreset
=
ref
<
string
>
(
'NONE'
)
// 文本提示相匹配的图像(clip_guidance_preset) 简称 CLIP
const
stylePreset
=
ref
<
string
>
(
'3d-model'
)
// 风格
const
emits
=
defineEmits
([
'onDrawStart'
,
'onDrawComplete'
])
// 定义 emits
/** 选择热词 */
const
handleHotWordClick
=
async
(
hotWord
:
string
)
=>
{
// 情况一:取消选中
...
...
@@ -177,6 +192,16 @@ const handleHotWordClick = async (hotWord: string) => {
/** 图片生成 */
const
handleGenerateImage
=
async
()
=>
{
// 从 models 中查找匹配的模型
const
selectModel
=
'stable-diffusion-v1-6'
const
matchedModel
=
props
.
models
.
find
(
(
item
)
=>
item
.
model
===
selectModel
&&
item
.
platform
===
AiPlatformEnum
.
STABLE_DIFFUSION
)
if
(
!
matchedModel
)
{
message
.
error
(
'该模型不可用,请选择其它模型'
)
return
}
// 二次确认
if
(
hasChinese
(
prompt
.
value
))
{
message
.
alert
(
'暂不支持中文!'
)
...
...
@@ -191,8 +216,7 @@ const handleGenerateImage = async () => {
emits
(
'onDrawStart'
,
AiPlatformEnum
.
STABLE_DIFFUSION
)
// 发送请求
const
form
=
{
platform
:
AiPlatformEnum
.
STABLE_DIFFUSION
,
model
:
'stable-diffusion-v1-6'
,
modelId
:
matchedModel
.
id
,
prompt
:
prompt
.
value
,
// 提示词
width
:
width
.
value
,
// 图片宽度
height
:
height
.
value
,
// 图片高度
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment