From 5a5b2e8f0c9bb4986774f60d218c390d14ec79fd Mon Sep 17 00:00:00 2001 From: dataeaseShu Date: Tue, 19 Aug 2025 16:11:59 +0800 Subject: [PATCH] feat(Embedded): Embedded appearance configuration --- .../src/assets/svg/icon_magnify_outlined.svg | 3 + .../assets/svg/icon_style-set_outlined.svg | 3 + frontend/src/i18n/en.json | 18 +- frontend/src/i18n/zh-CN.json | 18 +- frontend/src/stores/appearance.ts | 2 + frontend/src/views/embedded/assistant.vue | 22 +- frontend/src/views/system/embedded/Card.vue | 144 ++++- frontend/src/views/system/embedded/SetUi.vue | 546 ++++++++++++++++++ frontend/src/views/system/embedded/index.vue | 8 +- 9 files changed, 744 insertions(+), 20 deletions(-) create mode 100644 frontend/src/assets/svg/icon_magnify_outlined.svg create mode 100644 frontend/src/assets/svg/icon_style-set_outlined.svg create mode 100644 frontend/src/views/system/embedded/SetUi.vue diff --git a/frontend/src/assets/svg/icon_magnify_outlined.svg b/frontend/src/assets/svg/icon_magnify_outlined.svg new file mode 100644 index 00000000..15d021ce --- /dev/null +++ b/frontend/src/assets/svg/icon_magnify_outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/assets/svg/icon_style-set_outlined.svg b/frontend/src/assets/svg/icon_style-set_outlined.svg new file mode 100644 index 00000000..382a78dd --- /dev/null +++ b/frontend/src/assets/svg/icon_style-set_outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index d6a87c0d..2bda28c8 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -517,7 +517,21 @@ "i_am_sqlbot": "Hello, I am SQLBot", "predict_data_etc": "I can query data, generate charts, detect data anomalies, predict data, etc.", "intelligent_data_query": "Hurry up and start intelligent data query~", - "origin_format_error": "Format invalid, starts with http or https and cannot end with /" + "origin_format_error": "Format invalid, starts with http or https and cannot end with /", + "display_settings": "Display Settings", + "header_text_color": "Header Text Color", + "app_logo": "App Logo", + "maximum_size_10mb": "Recommended size: 32 x 32, supports JPG, PNG, and SVG, maximum size: 10MB", + "replace": "Replace", + "default_icon_position": "Default Icon Position", + "draggable_position": "Draggable Position", + "up": "Up", + "down": "Down", + "left": "Left", + "right": "Right", + "welcome_description": "Welcome Description", + "data_analysis_now": "I can query data, generate charts, detect data anomalies, predict data, and more! Enable Smart Data Analysis now!", + "window_entrance_icon": "Floating window entrance icon" }, "chat": { "type": "Chart Type", @@ -604,4 +618,4 @@ "setting_successfully": "Setting Successfully", "customize_theme_color": "Customize theme color" } -} +} \ No newline at end of file diff --git a/frontend/src/i18n/zh-CN.json b/frontend/src/i18n/zh-CN.json index 9d85c8dd..25f50713 100644 --- a/frontend/src/i18n/zh-CN.json +++ b/frontend/src/i18n/zh-CN.json @@ -517,7 +517,21 @@ "i_am_sqlbot": "你好,我是 SQLBot", "predict_data_etc": "我可以查询数据、生成图表、检测数据异常、预测数据等", "intelligent_data_query": "赶快开启智能问数吧~", - "origin_format_error": "格式错误,http或https开头,不能以 / 结尾" + "origin_format_error": "格式错误,http或https开头,不能以 / 结尾", + "display_settings": "显示设置", + "header_text_color": "头部文本颜色", + "app_logo": "应用 Logo", + "maximum_size_10mb": "建议尺寸 32 x 32,支持 JPG、PNG、SVG,大小不超过 10MB", + "replace": "替换", + "default_icon_position": "图标默认位置", + "draggable_position": "可拖拽位置", + "up": "上", + "down": "下", + "left": "左", + "right": "右", + "welcome_description": "欢迎语描述", + "data_analysis_now": "我可以查询数据、生成图表、检测数据异常、预测数据等赶快开启智能问数吧~", + "window_entrance_icon": "浮窗入口图标" }, "chat": { "type": "图表类型", @@ -604,4 +618,4 @@ "setting_successfully": "设置成功", "customize_theme_color": "自定义主题色" } -} +} \ No newline at end of file diff --git a/frontend/src/stores/appearance.ts b/frontend/src/stores/appearance.ts index 6e8ffe89..33d328d6 100644 --- a/frontend/src/stores/appearance.ts +++ b/frontend/src/stores/appearance.ts @@ -251,6 +251,8 @@ export const useAppearanceStore = defineStore('appearanceStore', { // if (!isDataEaseBi) { // document.title = '' // } + const obj = LicenseGenerator.getLicense() + if (obj?.status !== 'valid') return const resData = await request.get('/system/appearance') this.loaded = true if (!resData?.length) { diff --git a/frontend/src/views/embedded/assistant.vue b/frontend/src/views/embedded/assistant.vue index 6f8f1acc..bafd3ed3 100644 --- a/frontend/src/views/embedded/assistant.vue +++ b/frontend/src/views/embedded/assistant.vue @@ -3,10 +3,9 @@ import { ref } from 'vue' import icon_sidebar_outlined from '@/assets/embedded/icon_sidebar_outlined.svg' import icon_new_chat_outlined from '@/assets/embedded/icon_new-chat_outlined.svg' import LOGO from '@/assets/embedded/LOGO.png' -import answer from '@/assets/embedded/answer.png' import disable_answer from '@/assets/embedded/disable.png' -import loading_answer from '@/assets/embedded/loading.png' -import send_answer from '@/assets/embedded/send.png' +import icon_close_outlined from '@/assets/svg/icon_close_outlined.svg' +import icon_magnify_outlined from '@/assets/svg/icon_magnify_outlined.svg' const textareaVal = ref('') @@ -25,6 +24,14 @@ const textareaVal = ref('') + + + + + + + +
@@ -45,7 +52,7 @@ const textareaVal = ref('') - - + -->
@@ -66,14 +73,15 @@ const textareaVal = ref('') + + diff --git a/frontend/src/views/system/embedded/SetUi.vue b/frontend/src/views/system/embedded/SetUi.vue new file mode 100644 index 00000000..2b4748b0 --- /dev/null +++ b/frontend/src/views/system/embedded/SetUi.vue @@ -0,0 +1,546 @@ + + + + + diff --git a/frontend/src/views/system/embedded/index.vue b/frontend/src/views/system/embedded/index.vue index ea69ce7e..356db28b 100644 --- a/frontend/src/views/system/embedded/index.vue +++ b/frontend/src/views/system/embedded/index.vue @@ -11,7 +11,7 @@ import icon_edit_outlined from '@/assets/svg/icon_edit_outlined.svg' import icon_delete from '@/assets/svg/icon_delete.svg' import icon_copy_outlined from '@/assets/embedded/icon_copy_outlined.svg' import { useClipboard } from '@vueuse/core' - +import SetUi from './SetUi.vue' import Card from './Card.vue' import { workspaceList } from '@/api/workspace' import DsCard from './DsCard.vue' @@ -232,6 +232,10 @@ const deleteHandler = (row: any) => { }) }) } +const setUiRef = ref() +const handleSetUi = (row: any) => { + setUiRef.value.open(row) +} const rules = { name: [ @@ -532,6 +536,7 @@ const saveHandler = () => { @embedded="handleEmbedded(ele)" @edit="handleEditRule(ele)" @del="deleteHandler(ele)" + @ui="handleSetUi(ele)" > @@ -936,6 +941,7 @@ const saveHandler = () => { +