From 16e24cfc9596f486a6e3ccb50ced1aeee8a48672 Mon Sep 17 00:00:00 2001 From: wizardchen Date: Sat, 27 Jun 2026 16:54:31 +0800 Subject: [PATCH] ui(frontend): polish channel cards and use official QQBot icon Replace the placeholder QQBot logo with the official documentation favicon and enlarge channel card badges for clearer platform recognition. --- frontend/src/assets/img/im/qqbot.png | Bin 0 -> 1546 bytes frontend/src/assets/img/im/qqbot.svg | 1 - .../src/components/AgentEmbedChannelPanel.vue | 591 ++++++-------- frontend/src/components/IMChannelPanel.vue | 732 ++++++++---------- .../components/css/channel-panel-list.less | 12 +- frontend/src/components/menu.vue | 2 +- 6 files changed, 557 insertions(+), 781 deletions(-) create mode 100644 frontend/src/assets/img/im/qqbot.png delete mode 100644 frontend/src/assets/img/im/qqbot.svg diff --git a/frontend/src/assets/img/im/qqbot.png b/frontend/src/assets/img/im/qqbot.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9a443c3f0eb9a9438ff6170613cdd73c4c2428 GIT binary patch literal 1546 zcmYLJ3p5jI9RJp4ktL32Bab{9LKUvOPcj%^l>`gLcwzv!o2EX0L}jr^!FqcFz_0?~!X*Ial-7kY08VcJ-~$-| zha3R(Bl7O=cT^UlgNe8hPfuX2)T#gmL4w5&5G8g&41Z~N2ns;|^_KvU5C&jBGk7I0 z95UUzkP$pqI+bqgEnwx;&j9MfG*NFhRP zkr(|*g(*yq?sqQtcUVbrt4d9+DXAui`d1r));T3H;^*G{_VL`_&a=2y?GZ_?eg8~X z-pLX8Y(B1N_O~A2WT7hEHq}5kF*eMW;ZgobTA1F(e(}1@&;DUWnPMgdTQ$&3(bF!+`a0 zpaa0JahFpPtpngmSEdZ+yw*)#mqv%&+i_ZtL35hcbgdMlwJF>^`ufK)%!a%Z)#sA3>7gF%&fUaN$=kEu)(FnN46g}JE1~jzp|^vxW}r=L zZ288=Q#O(PZZNv~%+2&n`&-B9$qZ_hWc*o1ejf@rtBB`dg6~H)LsrR}v;|WL((t>Z zmp6U0d&3y%*vcdtyL#?hZ5eeNCwbZ~v{C@Z_%rk;xOTZ{4H0QOuOi;aF8OoSba>I& z7ud_8cppa21F5^!=)T5|BXh8C>}jJAMfbQoD^?J+_emF9dS}FrRgk5osHo4#WEk&D z$scvR2l3^^jXvy)YN&~Ar`DP8c{m$ft;jGXL%^uxG_&_l71(lR)7Wm{- z6TD-*z5YFRwvX~WXlJ;^d1JN)=jEw0glYwRXQaON zjMj8Ia%vzQmbCM>p&J>izsV!z49@}CLVxXK21Oncw%6SDCioO>tTw^pU*6@UCN}U{Ie?U6D8o(<<4fLpQD`cB7{Sz^l ze?+bz=i!z$ui9n^L0v!BDZRK*-ceFthkPZ;$${?>BCo3g{2#wbXD)pX7JG~yP?%(i%*zXco3qn|uc{&2 z@oBWsZ3CS>)R;bIC5Ino@qtBGZ~Ov6uF)Dhs0|EcZ@xW0AxgNkQK|rWuK6^MAT|7% zx?^GhFQ`|8 diff --git a/frontend/src/components/AgentEmbedChannelPanel.vue b/frontend/src/components/AgentEmbedChannelPanel.vue index ced5a529..ba28ca19 100644 --- a/frontend/src/components/AgentEmbedChannelPanel.vue +++ b/frontend/src/components/AgentEmbedChannelPanel.vue @@ -13,15 +13,10 @@
- -
- +
- +
+ +
+
+ +
-
- +
-
-

{{ $t('embedPublish.sectionWebhook') }}

+
+

{{ $t('embedPublish.sectionWebhook') }}

-
-
- - -

{{ $t('embedPublish.webhookUrlDesc') }}

-
+
+
+ + +

{{ $t('embedPublish.webhookUrlDesc') }}

+
-
- - -

{{ $t('embedPublish.webhookSecretDesc') }}

+
+ + +

{{ $t('embedPublish.webhookSecretDesc') }}

+
+
+ +
+ +

{{ $t('embedPublish.deployAfterSaveHint') }}

-
- -
- -

{{ $t('embedPublish.deployAfterSaveHint') }}

-
-
-

{{ $t('embedPublish.sectionDeploy') }}

-

{{ $t('embedPublish.deployIntro') }}

+
+

{{ $t('embedPublish.sectionDeploy') }}

+

{{ $t('embedPublish.deployIntro') }}

-
-
{{ $t('embedPublish.deployStepEmbed') }}
-

{{ $t('embedPublish.deployStepEmbedDesc') }}

+
+
{{ $t('embedPublish.deployStepEmbed') }}
+

{{ $t('embedPublish.deployStepEmbedDesc') }}

@@ -430,13 +314,8 @@ {{ drawerSnippetTab === 'iframe' ? $t('embedPublish.embedCode') : $t('embedPublish.widgetCode') }}
- + {{ $t('embedPublish.preview') }} @@ -468,77 +347,49 @@
{{ secureServerExample }}
-
- -
-
{{ $t('embedPublish.channelKey') }}
-

{{ $t('embedPublish.channelKeyDesc') }}

- -
- - - - - - -
-

- {{ $t('embedPublish.channelKeyHint') }} -

-
-
+
+
{{ $t('embedPublish.channelKey') }}
+

{{ $t('embedPublish.channelKeyDesc') }}

+ +
+ + + + + + + +
+

+ {{ $t('embedPublish.channelKeyHint') }} +

+
+ +
- + @@ -1678,8 +1529,24 @@ const toggleEnabled = async (ch: EmbedChannel, enabled: boolean) => { } } -.pos-bottom-right .preview-launcher { right: 10px; bottom: 10px; } -.pos-bottom-left .preview-launcher { left: 10px; bottom: 10px; } -.pos-top-right .preview-launcher { left: auto; right: 10px; top: 10px; } -.pos-top-left .preview-launcher { left: 10px; top: 10px; } +.pos-bottom-right .preview-launcher { + right: 10px; + bottom: 10px; +} + +.pos-bottom-left .preview-launcher { + left: 10px; + bottom: 10px; +} + +.pos-top-right .preview-launcher { + left: auto; + right: 10px; + top: 10px; +} + +.pos-top-left .preview-launcher { + left: 10px; + top: 10px; +} diff --git a/frontend/src/components/IMChannelPanel.vue b/frontend/src/components/IMChannelPanel.vue index 9321505a..398ee378 100644 --- a/frontend/src/components/IMChannelPanel.vue +++ b/frontend/src/components/IMChannelPanel.vue @@ -13,21 +13,12 @@
- -
- + @@ -131,11 +86,8 @@
-
+
@@ -152,36 +104,20 @@
- +
- + - +
{{ item.label }} @@ -192,11 +128,8 @@
- +

{{ $t('agentEditor.im.channelNameDefaultHint') }}

@@ -219,46 +152,33 @@
- -

- {{ formData.platform === 'mattermost' ? $t('agentEditor.im.mattermostModeHint') : $t('agentEditor.im.modeHint') }} + {{ formData.platform === 'mattermost' ? $t('agentEditor.im.mattermostModeHint') : + $t('agentEditor.im.modeHint') }}

- -
@@ -270,21 +190,14 @@
- -
@@ -292,16 +205,14 @@
-
+

{{ $t('agentEditor.im.sectionCallback') }}

- + @@ -316,12 +227,8 @@

{{ $t('agentEditor.im.sectionKnowledge') }}

- +

{{ $t('agentEditor.im.fileKnowledgeBaseHint') }}

@@ -334,277 +241,280 @@

{{ $t('agentEditor.im.sectionCredentials') }}

- - - - - - - - - - - - - - - - - - - - + +
@@ -633,7 +543,7 @@ import telegramLogo from '@/assets/img/im/telegram.svg'; import dingtalkLogo from '@/assets/img/im/dingtalk.svg'; import mattermostLogo from '@/assets/img/im/mattermost.svg'; import wechatLogo from '@/assets/img/im/wechat.svg'; -import qqbotLogo from '@/assets/img/im/qqbot.svg'; +import qqbotLogo from '@/assets/img/im/qqbot.png'; type IMPlatform = IMChannel['platform']; diff --git a/frontend/src/components/css/channel-panel-list.less b/frontend/src/components/css/channel-panel-list.less index 2d1079dd..4d84bc12 100644 --- a/frontend/src/components/css/channel-panel-list.less +++ b/frontend/src/components/css/channel-panel-list.less @@ -108,7 +108,7 @@ .channel-card__badge { background: color-mix(in srgb, var(--td-brand-color) 10%, transparent); color: var(--td-brand-color); - font-size: 16px; + font-size: 20px; } .channel-card__title { @@ -120,9 +120,9 @@ &__badge { flex-shrink: 0; - width: 28px; - height: 28px; - border-radius: 7px; + width: 36px; + height: 36px; + border-radius: 8px; display: flex; align-items: center; justify-content: center; @@ -132,8 +132,8 @@ } &__logo { - width: 16px; - height: 16px; + width: 22px; + height: 22px; object-fit: contain; } diff --git a/frontend/src/components/menu.vue b/frontend/src/components/menu.vue index a5123d90..8cac5986 100644 --- a/frontend/src/components/menu.vue +++ b/frontend/src/components/menu.vue @@ -259,7 +259,7 @@ import telegramLogo from '@/assets/img/im/telegram.svg'; import dingtalkLogo from '@/assets/img/im/dingtalk.svg'; import mattermostLogo from '@/assets/img/im/mattermost.svg'; import wechatLogo from '@/assets/img/im/wechat.svg'; -import qqbotLogo from '@/assets/img/im/qqbot.svg'; +import qqbotLogo from '@/assets/img/im/qqbot.png'; const PLATFORM_LOGO: Record = { wecom: wecomLogo,