From c797b35f5a24022be8e65b967f08a4306e96ff15 Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 3 Apr 2025 16:48:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=96=B0=E7=80=91=E5=B8=83?= =?UTF-8?q?=E6=B5=81=E7=BB=84=E4=BB=B6=E6=95=B4=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 +- api/core/app_server.go | 24 +- web/package.json | 3 +- web/src/assets/img/loading.gif | Bin 0 -> 26819 bytes .../img/{371731933156_.pic.jpg => logo2.jpg} | Bin web/src/store/sharedata.js | 78 +++ web/src/views/Dalle.vue | 460 +++++++-------- web/src/views/ImageMj.vue | 534 ++++++++++++++++-- web/src/views/ImageSd.vue | 391 ++++++++++--- web/src/views/ImagesWall.vue | 391 ++++++++----- 10 files changed, 1350 insertions(+), 535 deletions(-) create mode 100644 web/src/assets/img/loading.gif rename web/src/assets/img/{371731933156_.pic.jpg => logo2.jpg} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71c479de..053c0855 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,8 @@ - 功能优化:开启图形验证码功能的时候现检查是否配置了 API 服务,防止开启之后没法登录的 Bug。 - 功能优化:支持原生的 DeepSeek 推理模型 API,聊天 API KEY 支持设置完整的 API 路径,比如 https://api.geekai.pro/v1/chat/completions - 功能优化:支持 GPT-4o 图片编辑功能。 -- 功能新增:对话页面支持AI输出语音播报(TTS)。 -- 功能新增:支持 Goole 账号登录。 +- 功能新增:对话页面支持 AI 输出语音播报(TTS)。 +- 功能优化:替换瀑布流组件,优化用户体验。 ## v4.2.1 diff --git a/api/core/app_server.go b/api/core/app_server.go index 8b4d83ac..7302678b 100644 --- a/api/core/app_server.go +++ b/api/core/app_server.go @@ -112,19 +112,23 @@ func corsMiddleware() gin.HandlerFunc { return func(c *gin.Context) { method := c.Request.Method origin := c.Request.Header.Get("Origin") + + // 设置允许的请求源 if origin != "" { - // 设置允许的请求源 c.Header("Access-Control-Allow-Origin", origin) - c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE") - //允许跨域设置可以返回其他子段,可以自定义字段 - c.Header("Access-Control-Allow-Headers", "Authorization, Body-Length, Body-Type, Admin-Authorization,content-type") - // 允许浏览器(客户端)可以解析的头部 (重要) - c.Header("Access-Control-Expose-Headers", "Body-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers") - //设置缓存时间 - c.Header("Access-Control-Max-Age", "172800") - //允许客户端传递校验信息比如 cookie (重要) - c.Header("Access-Control-Allow-Credentials", "true") + } else { + c.Header("Access-Control-Allow-Origin", "*") } + + c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE") + //允许跨域设置可以返回其他子段,可以自定义字段 + c.Header("Access-Control-Allow-Headers", "Authorization, Body-Length, Body-Type, Admin-Authorization,content-type") + // 允许浏览器(客户端)可以解析的头部 (重要) + c.Header("Access-Control-Expose-Headers", "Body-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers") + //设置缓存时间 + c.Header("Access-Control-Max-Age", "172800") + //允许客户端传递校验信息比如 cookie (重要) + c.Header("Access-Control-Allow-Credentials", "true") if method == http.MethodOptions { c.JSON(http.StatusOK, "ok!") diff --git a/web/package.json b/web/package.json index 98515624..a7ea40e6 100644 --- a/web/package.json +++ b/web/package.json @@ -32,14 +32,13 @@ "pinia": "^2.1.4", "qrcode": "^1.5.3", "qs": "^6.11.1", - "@better-scroll/core": "^2.5.1", + "@better-scroll/core": "^2.5.1", "@better-scroll/mouse-wheel": "^2.5.1", "@better-scroll/observe-dom": "^2.5.1", "@better-scroll/pull-up": "^2.5.1", "@better-scroll/scroll-bar": "^2.5.1", "sortablejs": "^1.15.0", "three": "^0.128.0", - "v3-waterfall": "^1.3.3", "vant": "^4.5.0", "vue": "^3.2.13", "vue-router": "^4.0.15", diff --git a/web/src/assets/img/loading.gif b/web/src/assets/img/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..a0fcc9e60ad79fde1cb5bd461cc37ba20825d589 GIT binary patch literal 26819 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 literal 0 HcmV?d00001 diff --git a/web/src/assets/img/371731933156_.pic.jpg b/web/src/assets/img/logo2.jpg similarity index 100% rename from web/src/assets/img/371731933156_.pic.jpg rename to web/src/assets/img/logo2.jpg diff --git a/web/src/store/sharedata.js b/web/src/store/sharedata.js index 9fc0eda8..4073a1ed 100644 --- a/web/src/store/sharedata.js +++ b/web/src/store/sharedata.js @@ -1,5 +1,82 @@ import {defineStore} from "pinia"; import Storage from "good-storage"; +import errorIcon from "@/assets/img/failed.png"; +import loadingIcon from "@/assets/img/loading.gif"; + +let waterfallOptions = { + // 唯一key值 + rowKey: "id", + // 卡片之间的间隙 + gutter: 10, + // 是否有周围的gutter + hasAroundGutter: true, + // 卡片在PC上的宽度 + width: 200, + // 自定义行显示个数,主要用于对移动端的适配 + breakpoints: { + 3840: { + // 4K下 + rowPerView: 8, + }, + 2560: { + // 2K下 + rowPerView: 7, + }, + 1920: { + // 2K下 + rowPerView: 6, + }, + 1600: { + // 2K下 + rowPerView: 5, + }, + 1366: { + // 2K下 + rowPerView: 4, + }, + 800: { + // 当屏幕宽度小于等于800 + rowPerView: 3, + }, + 500: { + // 当屏幕宽度小于等于500 + rowPerView: 2, + }, + }, + // 动画效果 + animationEffect: "animate__fadeInUp", + // 动画时间 + animationDuration: 1000, + // 动画延迟 + animationDelay: 300, + animationCancel: false, + // 背景色 + backgroundColor: "", + // imgSelector + imgSelector: "img_thumb", + // 是否跨域 + crossOrigin: true, + // 加载配置 + loadProps: { + loading: loadingIcon, + error: errorIcon, + ratioCalculator: (width, height) => { + const minRatio = 3 / 4; + const maxRatio = 4 / 3; + const curRatio = height / width; + if (curRatio < minRatio) { + return minRatio; + } else if (curRatio > maxRatio) { + return maxRatio; + } else { + return curRatio; + } + }, + }, + // 是否懒加载 + lazyload: true, + align: "center", +} export const useSharedStore = defineStore("shared", { state: () => ({ @@ -11,6 +88,7 @@ export const useSharedStore = defineStore("shared", { isLogin: false, chatListExtend: Storage.get("chat_list_extend", true), ttsModel: Storage.get("tts_model", ""), + waterfallOptions, }), getters: {}, actions: { diff --git a/web/src/views/Dalle.vue b/web/src/views/Dalle.vue index 2387d172..b48b4d73 100644 --- a/web/src/views/Dalle.vue +++ b/web/src/views/Dalle.vue @@ -11,8 +11,18 @@ @@ -24,7 +34,12 @@ @@ -36,7 +51,12 @@ @@ -48,9 +68,18 @@