1
1
<script setup lang="ts">
2
- import { reactive , ref , onMounted } from ' vue' ;
2
+ import { reactive , ref , onMounted , defineAsyncComponent } from ' vue' ;
3
3
import { Message , MessageStatus } from ' ./interfaces/message'
4
4
import MessageItem from ' ./Message.vue'
5
5
import { getMessagesAPI , createMessageAPI , upscaleMessageAPI } from ' ./api/midjourney'
@@ -9,15 +9,19 @@ import Toast from './components/Toast/index'
9
9
import UseModal from ' ./components/Use-Modal/index.vue'
10
10
import SettingsModal from ' ./components/Settings-Modal/index.vue'
11
11
import { showModal } from ' ./components/Modal' ;
12
- import { drawStyles , randomPrompt , getJointPrompt } from ' ./utils/index'
13
-
12
+ import { drawStyles , randomPrompt , getJointPrompt , showLoginModal } from ' ./utils/index'
13
+ import { useLimitHook } from ' @/hooks/use-limit-hook ' ;
14
14
15
15
const showUseModal = () => {
16
- showModal (UseModal )
16
+ showModal (UseModal , {
17
+ title: " 使用说明"
18
+ })
17
19
}
18
20
19
21
const showSettingsModal = () => {
20
- showModal (SettingsModal )
22
+ showModal (SettingsModal , {
23
+ title: " 设置"
24
+ })
21
25
}
22
26
createWebsocket ({
23
27
onMessage(data ) {
@@ -64,12 +68,6 @@ const onClickSend = () => {
64
68
}
65
69
66
70
const onKeyDown = useDebounceFn ((event : Event ) => {
67
- if (! data .prompt ) {
68
- Toast ({
69
- value: ' 描述不能为空'
70
- })
71
- return
72
- }
73
71
event .stopPropagation ()
74
72
event .preventDefault ()
75
73
sendPrompt ()
@@ -95,7 +93,21 @@ const getList = (params: any) => {
95
93
96
94
const sendPrompt = async () => {
97
95
data .prompt = data .prompt .trim ()
98
- if (! data .prompt ) return
96
+ if (! data .prompt ) {
97
+ Toast ({
98
+ value: ' 描述不能为空'
99
+ })
100
+ return
101
+ }
102
+
103
+ const { isExceedFreeTimesByDay, recordTimeUse } = useLimitHook ()
104
+ if (isExceedFreeTimesByDay ()) {
105
+ Toast ({ value: " 今日免费次数已用尽,请先登录" })
106
+ setTimeout (() => {
107
+ showLoginModal ()
108
+ }, 2000 )
109
+ return
110
+ }
99
111
const newPmt = getJointPrompt (data .prompt )
100
112
const msgId = await createMessageAPI (newPmt ) as any ;
101
113
console .log (" msgId: " , msgId )
@@ -107,9 +119,9 @@ const sendPrompt = async () => {
107
119
status: MessageStatus .INIT
108
120
}
109
121
110
- // data.messages.push(msgObj)
111
122
data .messages .unshift (msgObj )
112
123
data .prompt = ' '
124
+ recordTimeUse ()
113
125
scrollToBottom ()
114
126
}
115
127
@@ -174,6 +186,7 @@ onMounted(() => {
174
186
</script >
175
187
176
188
<template >
189
+ <!-- <div class="h-full w-full max-sm:py-0 bg-gray-600" v-loading:[title]="true"> -->
177
190
<div class =" h-full w-full max-sm:py-0 bg-gray-600" >
178
191
<div class =" relative h-full max-w-[980px] bg-gray-700 m-auto text-white px-10 py-4 sm:py-0 max-sm:py-2 max-sm:px-4 rounded-none" >
179
192
<div id =" contentWrap" ref =" contentWrap" class =" h-[calc(100%-150px)] overflow-auto m-auto flex flex-col-reverse" >
0 commit comments