From 976b71e59274ad3464dfa2c1c2014a98c9373d86 Mon Sep 17 00:00:00 2001 From: RockYang Date: Sun, 7 Sep 2025 16:36:56 +0800 Subject: [PATCH 1/4] merge Login page Register page --- api/handler/chat_handler.go | 17 ++-- api/handler/user_handler.go | 4 +- api/service/sms/service.go | 4 +- web/src/components/LoginDialog.vue | 11 ++- web/src/components/SendMsg.vue | 15 ++-- web/src/router.js | 2 +- web/src/views/Login.vue | 43 ++++++---- web/src/views/Register.vue | 129 ----------------------------- 8 files changed, 56 insertions(+), 169 deletions(-) delete mode 100644 web/src/views/Register.vue diff --git a/api/handler/chat_handler.go b/api/handler/chat_handler.go index 9785a185..7c28e164 100644 --- a/api/handler/chat_handler.go +++ b/api/handler/chat_handler.go @@ -338,16 +338,13 @@ func (h *ChatHandler) sendMessage(ctx context.Context, input ChatInput, c *gin.C }, }) } else { - // 如果不是逆向模型,则提取文件内容 - modelValue := input.ChatModel.Value - if !(strings.Contains(modelValue, "-all") || strings.HasPrefix(modelValue, "gpt-4-gizmo") || strings.HasPrefix(modelValue, "claude")) { - content, err := utils.ReadFileContent(file.URL, h.App.Config.TikaHost) - if err != nil { - logger.Error("error with read file: ", err) - continue - } else { - fileContents = append(fileContents, fmt.Sprintf("%s 文件内容:%s", file.Name, content)) - } + // 处理文件,提取文件内容 + content, err := utils.ReadFileContent(file.URL, h.App.Config.TikaHost) + if err != nil { + logger.Error("error with read file: ", err) + continue + } else { + fileContents = append(fileContents, fmt.Sprintf("%s 文件内容:%s", file.Name, content)) } } } diff --git a/api/handler/user_handler.go b/api/handler/user_handler.go index 79fbb684..c70ecb90 100644 --- a/api/handler/user_handler.go +++ b/api/handler/user_handler.go @@ -112,8 +112,8 @@ func (h *UserHandler) Register(c *gin.Context) { return } - // 如果注册方式不是账号密码,则需要验证码 - if h.captchaService.GetConfig().Enabled && data.RegWay != "username" { + // 人机验证 + if h.captchaService.GetConfig().Enabled { var check bool if data.X != 0 { check = h.captchaService.SlideCheck(data) diff --git a/api/service/sms/service.go b/api/service/sms/service.go index 14d12ca9..82d0a914 100644 --- a/api/service/sms/service.go +++ b/api/service/sms/service.go @@ -7,8 +7,8 @@ package sms // * @Author yangjian102621@163.com // * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -const Ali = "ALI" -const Bao = "BAO" +const Ali = "aliyun" +const Bao = "bao" type Service interface { SendVerifyCode(mobile string, code int) error diff --git a/web/src/components/LoginDialog.vue b/web/src/components/LoginDialog.vue index 9c585d0f..9653df50 100644 --- a/web/src/components/LoginDialog.vue +++ b/web/src/components/LoginDialog.vue @@ -398,7 +398,7 @@ const activeName = ref('') const wxImg = ref('/images/wx.png') const captchaRef = ref(null) // eslint-disable-next-line no-undef -const emits = defineEmits(['hide', 'success']) +const emits = defineEmits(['hide', 'success', 'changeActive']) const action = ref('login') const enableCaptcha = ref(false) const captchaType = ref('') @@ -411,6 +411,13 @@ const showPrivacy = ref(false) const agreementHtml = ref('') const privacyHtml = ref('') +watch( + () => login.value, + (newValue) => { + emits('changeActive', newValue) + } +) + onMounted(() => { getSystemInfo() .then((res) => { @@ -649,7 +656,7 @@ const submitRegister = () => { if (!agreeChecked.value) { return ElMessage.error('请先阅读并同意《用户协议》和《隐私政策》') } - if (enableCaptcha.value && activeName.value === 'username') { + if (enableCaptcha.value) { captchaRef.value.loadCaptcha() action.value = 'register' } else { diff --git a/web/src/components/SendMsg.vue b/web/src/components/SendMsg.vue index 8149c63d..08ece2f2 100644 --- a/web/src/components/SendMsg.vue +++ b/web/src/components/SendMsg.vue @@ -4,15 +4,14 @@ {{ btnText }} - + diff --git a/web/src/views/Register.vue b/web/src/views/Register.vue deleted file mode 100644 index d61f58f6..00000000 --- a/web/src/views/Register.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - - From 18961d3c26c108b0cb5c64aaee4525fdd9569324 Mon Sep 17 00:00:00 2001 From: RockYang Date: Sun, 7 Sep 2025 18:10:45 +0800 Subject: [PATCH 2/4] acomplish re-generating for mobile chat page --- api/handler/chat_handler.go | 2 +- web/src/components/mobile/ChatReply.vue | 58 +++++++- web/src/views/ChatPlus.vue | 1 + web/src/views/mobile/ChatSession.vue | 177 +++++++++++++----------- 4 files changed, 157 insertions(+), 81 deletions(-) diff --git a/api/handler/chat_handler.go b/api/handler/chat_handler.go index 7c28e164..02bae8d2 100644 --- a/api/handler/chat_handler.go +++ b/api/handler/chat_handler.go @@ -194,7 +194,7 @@ func (h *ChatHandler) sendMessage(ctx context.Context, input ChatInput, c *gin.C } if userVo.Power < input.ChatModel.Power { - return fmt.Errorf("您当前剩余算力 %d 已不足以支付当前模型的单次对话需要消耗的算力 %d,[立即购买](/member)。", userVo.Power, input.ChatModel.Power) + return fmt.Errorf("您的算力不足,请购买算力。") } if userVo.ExpiredTime > 0 && userVo.ExpiredTime <= time.Now().Unix() { diff --git a/web/src/components/mobile/ChatReply.vue b/web/src/components/mobile/ChatReply.vue index 22ead9f1..9f90ce3f 100644 --- a/web/src/components/mobile/ChatReply.vue +++ b/web/src/components/mobile/ChatReply.vue @@ -8,24 +8,40 @@
+
+
{{ error }}
+
AI 思考中
+ + +
+ + {{ isGenerating ? '生成中...' : '重新生成' }} + +
diff --git a/web/src/components/mobile/MobileFileList.vue b/web/src/components/mobile/MobileFileList.vue new file mode 100644 index 00000000..0e8befff --- /dev/null +++ b/web/src/components/mobile/MobileFileList.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index 4987bb61..5a8becbf 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -384,7 +384,7 @@ import FileSelect from '@/components/FileSelect.vue' import Welcome from '@/components/Welcome.vue' import { checkSession, getClientId, getSystemInfo } from '@/store/cache' import { useSharedStore } from '@/store/sharedata' -import { closeLoading, showLoading, showMessageError } from '@/utils/dialog' +import { closeLoading, showLoading, showMessageError, showMessageInfo } from '@/utils/dialog' import { httpGet, httpPost } from '@/utils/http' import { isMobile, randString, removeArrayItem, UUID } from '@/utils/libs' import { @@ -1162,7 +1162,7 @@ const stopGenerate = function () { isGenerating.value = false httpGet('/api/chat/stop?session_id=' + getClientId()) .then(() => { - console.log('会话已中断') + showMessageInfo('会话已中断') }) .catch((e) => { showMessageError('中断对话失败:' + e.message) diff --git a/web/src/views/mobile/ChatList.vue b/web/src/views/mobile/ChatList.vue index af796b56..6367c5f9 100644 --- a/web/src/views/mobile/ChatList.vue +++ b/web/src/views/mobile/ChatList.vue @@ -104,8 +104,12 @@ checkSession() .then((user) => { loginUser.value = user isLogin.value = true + }) + .finally(() => { + loading.value = false + finished.value = true // 加载角色列表 - httpGet(`/api/app/list/user`) + httpGet(`/api/app/list`) .then((res) => { if (res.data) { const items = res.data @@ -139,44 +143,6 @@ checkSession() showFailToast('加载模型失败: ' + e.message) }) }) - .catch(() => { - loading.value = false - finished.value = true - - // 加载角色列表 - httpGet('/api/app/list/user') - .then((res) => { - if (res.data) { - const items = res.data - for (let i = 0; i < items.length; i++) { - // console.log(items[i]) - roles.value.push({ - text: items[i].name, - value: items[i].id, - icon: items[i].icon, - helloMsg: items[i].hello_msg, - }) - } - } - }) - .catch(() => { - showFailToast('加载聊天角色失败') - }) - - // 加载模型 - httpGet('/api/model/list') - .then((res) => { - if (res.data) { - const items = res.data - for (let i = 0; i < items.length; i++) { - models.value.push({ text: items[i].name, value: items[i].id }) - } - } - }) - .catch((e) => { - showFailToast('加载模型失败: ' + e.message) - }) - }) const onLoad = () => { checkSession() diff --git a/web/src/views/mobile/ChatSession.vue b/web/src/views/mobile/ChatSession.vue index d2c7dbd5..e160d3bf 100644 --- a/web/src/views/mobile/ChatSession.vue +++ b/web/src/views/mobile/ChatSession.vue @@ -58,8 +58,23 @@ center clearable placeholder="输入你的问题" + type="textarea" + rows="1" + :autosize="{ maxHeight: 100, minHeight: 20 }" + show-word-limit @keyup.enter="sendMessage" > +