From 0627109b2bf1dd27adef22a2d92ca9d57254b391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E6=9F=AF?= <10691891+qing_ke@user.noreply.gitee.com> Date: Tue, 22 Apr 2025 03:36:26 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=80=9D=E7=BB=B4?= =?UTF-8?q?=E5=AF=BC=E5=9B=BE=E4=B8=8B=E8=BD=BD=E5=9B=BE=E7=89=87=E7=9A=84?= =?UTF-8?q?=E6=B8=85=E6=99=B0=E5=BA=A6=E4=BB=A5=E5=8F=8A=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=8B=96=E5=8A=A8=E3=80=81=E7=BC=A9=E6=94=BE=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=90=8E=E4=BC=9A=E4=B8=8B=E8=BD=BD=E5=9B=BE=E7=89=87=E4=B8=8D?= =?UTF-8?q?=E5=85=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/views/MarkMap.vue | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/web/src/views/MarkMap.vue b/web/src/views/MarkMap.vue index a9320347..c5f61c21 100644 --- a/web/src/views/MarkMap.vue +++ b/web/src/views/MarkMap.vue @@ -263,29 +263,35 @@ const getModelById = (modelId) => { } // download SVG to png file -const downloadImage = () => { +const downloadImage = async() => { + // 先自适应思维导图到可视化区域 + await markMap.value.fit() + const svgElement = document.getElementById('markmap') - // 将 SVG 渲染到图片对象 const serializer = new XMLSerializer() const source = '\r\n' + serializer.serializeToString(svgRef.value) const image = new Image() image.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(source) - // 将图片对象渲染 + // 分辨率倍数,越高图片越清晰,但文件越大 + const scale = 4 const canvas = document.createElement('canvas') - canvas.width = svgElement.offsetWidth - canvas.height = svgElement.offsetHeight + canvas.width = svgElement.offsetWidth * scale + canvas.height = svgElement.offsetHeight * scale + let context = canvas.getContext('2d') context.clearRect(0, 0, canvas.width, canvas.height) context.fillStyle = 'white' context.fillRect(0, 0, canvas.width, canvas.height) image.onload = function () { + // 关键:缩放 context + context.setTransform(scale, 0, 0, scale, 0, 0) context.drawImage(image, 0, 0) const a = document.createElement('a') a.download = 'geek-ai-xmind.png' - a.href = canvas.toDataURL(`image/png`) + a.href = canvas.toDataURL('image/png') a.click() } } From 51c270fb2999a1691a5e7e2830b7d4128b1f4ad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E6=9F=AF?= <10691891+qing_ke@user.noreply.gitee.com> Date: Fri, 25 Apr 2025 03:06:22 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/package-lock.json | 65 ++++- web/src/views/ChatPlus.vue | 432 +++++++++++++++++++++++++++++- web/src/views/Index.vue | 23 +- web/src/views/admin/ChatModel.vue | 26 +- 4 files changed, 518 insertions(+), 28 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 90514b12..82dd37b7 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -8,8 +8,12 @@ "name": "geekai-web", "version": "0.1.0", "dependencies": { + "@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", "@element-plus/icons-vue": "^2.3.1", - "@openai/realtime-api-beta": "github:openai/openai-realtime-api-beta", "animate.css": "^4.1.1", "axios": "^0.27.2", "clipboard": "^2.0.11", @@ -35,7 +39,6 @@ "qs": "^6.11.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", @@ -1728,6 +1731,51 @@ "node": ">=6.9.0" } }, + "node_modules/@better-scroll/core": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@better-scroll/core/-/core-2.5.1.tgz", + "integrity": "sha512-koKOuYA55dQ04FJRIVUpMGDr1hbCfWmfX0MGp1hKagkQSWSRpwblqACiwtggVauoj9aaJRJZ9hDsTM4weaavlg==", + "dependencies": { + "@better-scroll/shared-utils": "^2.5.1" + } + }, + "node_modules/@better-scroll/mouse-wheel": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@better-scroll/mouse-wheel/-/mouse-wheel-2.5.1.tgz", + "integrity": "sha512-DGnrirRMY6zMM7xwgx09D/cA9A//3J1/uDkq8iBVEyE5p0sEr/keQpjEfFHGkBRa505BnbBwdbN6f5lugEDSPw==", + "dependencies": { + "@better-scroll/core": "^2.5.1" + } + }, + "node_modules/@better-scroll/observe-dom": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@better-scroll/observe-dom/-/observe-dom-2.5.1.tgz", + "integrity": "sha512-TCMGFLRfpXBPIwtUV/efliUmfmrhSNI7NXdSyjdWjsLOS7dh3eFkmcom5ERVWMaXVELSmujGXLqobT+dT0C/jg==", + "dependencies": { + "@better-scroll/core": "^2.5.1" + } + }, + "node_modules/@better-scroll/pull-up": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@better-scroll/pull-up/-/pull-up-2.5.1.tgz", + "integrity": "sha512-1hu3xSMxdB8T391KffpNZ7g93lMwZEHjfb1F1Y4KvIkciDt8nXqkGpqrZF+YwR+EJTgYcWqUO8kgmI6XXu7Pkg==", + "dependencies": { + "@better-scroll/core": "^2.5.1" + } + }, + "node_modules/@better-scroll/scroll-bar": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@better-scroll/scroll-bar/-/scroll-bar-2.5.1.tgz", + "integrity": "sha512-i6r60pWG/ztkFK2j5Gj54I0LJb2jGh5TWJNQBoW0gUkp28B+0JvBFTwZn9tF7beZCBorKR7Hvvu4O9A1TJy94Q==", + "dependencies": { + "@better-scroll/core": "^2.5.1" + } + }, + "node_modules/@better-scroll/shared-utils": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@better-scroll/shared-utils/-/shared-utils-2.5.1.tgz", + "integrity": "sha512-AplkfSjXVYP9LZiD6JsKgmgQJ/mG4uuLmBuwLz8W5OsYc7AYTfN8kw6GqZ5OwCGoXkVhBGyd8NeC4xwYItp0aw==" + }, "node_modules/@ctrl/tinycolor": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", @@ -2133,13 +2181,6 @@ "node": ">= 8" } }, - "node_modules/@openai/realtime-api-beta": { - "version": "0.0.0", - "resolved": "git+ssh://git@github.com/openai/openai-realtime-api-beta.git#a5cb94824f625423858ebacb9f769226ca98945f", - "dependencies": { - "ws": "^8.18.0" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -12711,11 +12752,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v3-waterfall": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/v3-waterfall/-/v3-waterfall-1.3.3.tgz", - "integrity": "sha512-jUmp0xpHGkEcUxaYKGRtI5b2NvogxI/UrfoCLmpTi0UbQndDdqjwufxJvWwiJjwZQyOIPpnq9ZOFtkBwxchq3Q==" - }, "node_modules/v8-compile-cache": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", @@ -13531,6 +13567,7 @@ "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, "engines": { "node": ">=10.0.0" }, diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index 89df83a4..59b3fa12 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -85,12 +85,107 @@ - - - {{ item.name }} - {{ item.power }}算力 - - + + + +
+ + +
+
+ 全部 +
+ +
+ {{ category }} +
+
+ 清除筛选 +
+
+ +
+ +
+ +
+
+
+ {{ model.name }} + + {{ model.power > 0 ? `${model.power}算力` : '免费' }} + +
+
{{ model.description || '暂无描述' }}
+ + +
+
+
+
+
@@ -232,7 +327,7 @@