From 0eebbb094c178f9dce776648183d7ed94deed976 Mon Sep 17 00:00:00 2001
From: wangdan-fit2cloud <79562285+wangdan-fit2cloud@users.noreply.github.com>
Date: Fri, 21 Mar 2025 16:57:04 +0800
Subject: [PATCH] feat: Optimize the mobile voice interaction experience
* fix: Optimize small screen dialogue style
* feat: Mobile voice conversation new UI
* feat: Optimize the mobile voice interaction experience
* feat: Optimize the mobile voice interaction experience
---
ui/public/index.html | 20 ++
ui/src/assets/acoustic-color.svg | 29 ++
ui/src/assets/acoustic.svg | 29 ++
ui/src/components/ai-chat/KnowledgeSource.vue | 2 +-
.../component/answer-content/index.vue | 4 +-
.../chat-input-operate/TouchChat.vue | 161 ++++++++++
.../component/chat-input-operate/index.vue | 294 +++++++++++++-----
.../operation-button/ChatOperationButton.vue | 4 +-
.../component/operation-button/index.vue | 4 +-
.../component/prologue-content/index.vue | 4 +-
.../component/question-content/index.vue | 2 +-
ui/src/components/ai-chat/index.scss | 73 +----
ui/src/components/ai-chat/index.vue | 6 +-
ui/src/components/dynamics-form/Demo.vue | 2 +-
ui/src/components/dynamics-form/index.vue | 2 +-
.../items/label/TooltipLabel.vue | 2 +-
.../generate-related-dialog/index.vue | 2 +-
ui/src/components/icons/index.ts | 25 ++
ui/src/components/layout-container/index.vue | 2 +-
ui/src/components/login-container/index.vue | 2 +-
ui/src/components/login-layout/index.vue | 2 +-
ui/src/layout/hooks/useResize.ts | 4 +-
ui/src/styles/app.scss | 1 +
.../component/APIKeyDialog.vue | 2 +-
.../component/DisplaySettingDialog.vue | 2 +-
.../component/EditAvatarDialog.vue | 2 +-
.../component/EmbedDialog.vue | 4 +-
.../component/LimitDialog.vue | 2 +-
.../component/SettingAPIKeyDialog.vue | 2 +-
.../component/XPackDisplaySettingDialog.vue | 2 +-
.../views/application/ApplicationSetting.vue | 2 +-
.../component/AddDatasetDialog.vue | 2 +-
.../component/CopyApplicationDialog.vue | 2 +-
.../component/CreateApplicationDialog.vue | 2 +-
.../component/ParamSettingDialog.vue | 2 +-
.../component/ReasoningParamSettingDialog.vue | 2 +-
ui/src/views/chat/embed/index.vue | 4 +-
ui/src/views/chat/mobile/index.vue | 23 +-
.../dataset/component/CreateDatasetDialog.vue | 2 +-
.../dataset/component/EditParagraphDialog.vue | 2 +-
.../component/SelectDatasetDialog.vue | 2 +-
.../component/EditAvatarDialog.vue | 2 +-
.../views/log/component/EditContentDialog.vue | 2 +-
ui/src/views/log/component/EditMarkDialog.vue | 2 +-
ui/src/views/login/forgot-password/index.vue | 2 +-
ui/src/views/login/index.vue | 2 +-
ui/src/views/login/register/index.vue | 2 +-
ui/src/views/login/reset-password/index.vue | 2 +-
.../paragraph/component/ParagraphDialog.vue | 2 +-
.../component/SelectDocumentDialog.vue | 2 +-
.../problem/component/RelateProblemDialog.vue | 2 +-
.../team/component/CreateMemberDialog.vue | 2 +-
.../team/component/PermissionSetting.vue | 2 +-
.../user-manage/component/UserDialog.vue | 2 +-
.../user-manage/component/UserPwdDialog.vue | 2 +-
.../reranker-node/ParamSettingDialog.vue | 2 +-
56 files changed, 564 insertions(+), 203 deletions(-)
create mode 100644 ui/public/index.html
create mode 100644 ui/src/assets/acoustic-color.svg
create mode 100644 ui/src/assets/acoustic.svg
create mode 100644 ui/src/components/ai-chat/component/chat-input-operate/TouchChat.vue
diff --git a/ui/public/index.html b/ui/public/index.html
new file mode 100644
index 000000000..6bb01923c
--- /dev/null
+++ b/ui/public/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ 111
+
+
+
+
+
+
diff --git a/ui/src/assets/acoustic-color.svg b/ui/src/assets/acoustic-color.svg
new file mode 100644
index 000000000..d9cfa1498
--- /dev/null
+++ b/ui/src/assets/acoustic-color.svg
@@ -0,0 +1,29 @@
+
diff --git a/ui/src/assets/acoustic.svg b/ui/src/assets/acoustic.svg
new file mode 100644
index 000000000..a400eff9b
--- /dev/null
+++ b/ui/src/assets/acoustic.svg
@@ -0,0 +1,29 @@
+
diff --git a/ui/src/components/ai-chat/KnowledgeSource.vue b/ui/src/components/ai-chat/KnowledgeSource.vue
index 0c98666d8..729a6317b 100644
--- a/ui/src/components/ai-chat/KnowledgeSource.vue
+++ b/ui/src/components/ai-chat/KnowledgeSource.vue
@@ -112,7 +112,7 @@ const uniqueParagraphList = computed(() => {
})
diff --git a/ui/src/components/ai-chat/component/chat-input-operate/index.vue b/ui/src/components/ai-chat/component/chat-input-operate/index.vue
index 14e185a69..a26d7a2a4 100644
--- a/ui/src/components/ai-chat/component/chat-input-operate/index.vue
+++ b/ui/src/components/ai-chat/component/chat-input-operate/index.vue
@@ -1,5 +1,5 @@
-
+
@@ -114,7 +114,15 @@
+
-
-
-
-
-
- {{ $t('chat.uploadFile.label') }}:{{ $t('chat.uploadFile.most')
- }}{{ props.applicationDetails.file_upload_setting.maxFiles
- }}{{ $t('chat.uploadFile.limit') }}
- {{ props.applicationDetails.file_upload_setting.fileLimit }}MB
{{
- $t('chat.uploadFile.fileType')
- }}:{{ getAcceptList().replace(/\./g, '').replace(/,/g, '、').toUpperCase() }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
00:{{ recorderTime < 10 ? `0${recorderTime}` : recorderTime }}
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
00:{{ recorderTime < 10 ? `0${recorderTime}` : recorderTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('chat.uploadFile.label') }}:{{ $t('chat.uploadFile.most')
+ }}{{ props.applicationDetails.file_upload_setting.maxFiles
+ }}{{ $t('chat.uploadFile.limit') }}
+ {{ props.applicationDetails.file_upload_setting.fileLimit }}MB
{{
+ $t('chat.uploadFile.fileType')
+ }}:{{ getAcceptList().replace(/\./g, '').replace(/,/g, '、').toUpperCase() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -201,6 +230,7 @@
-
diff --git a/ui/src/components/ai-chat/component/operation-button/ChatOperationButton.vue b/ui/src/components/ai-chat/component/operation-button/ChatOperationButton.vue
index 187bc6a3c..48079c8ec 100644
--- a/ui/src/components/ai-chat/component/operation-button/ChatOperationButton.vue
+++ b/ui/src/components/ai-chat/component/operation-button/ChatOperationButton.vue
@@ -307,7 +307,9 @@ onMounted(() => {
})
+
diff --git a/ui/src/components/dynamics-form/index.vue b/ui/src/components/dynamics-form/index.vue
index 8885aeec9..28bea502e 100644
--- a/ui/src/components/dynamics-form/index.vue
+++ b/ui/src/components/dynamics-form/index.vue
@@ -219,4 +219,4 @@ defineExpose({
ruleFormRef
})
-
+
diff --git a/ui/src/components/dynamics-form/items/label/TooltipLabel.vue b/ui/src/components/dynamics-form/items/label/TooltipLabel.vue
index d9669fd45..2ca9911f4 100644
--- a/ui/src/components/dynamics-form/items/label/TooltipLabel.vue
+++ b/ui/src/components/dynamics-form/items/label/TooltipLabel.vue
@@ -17,7 +17,7 @@ defineProps<{
tooltip: string
}>()
-
+
diff --git a/ui/src/components/icons/index.ts b/ui/src/components/icons/index.ts
index 5c7e7ca1f..81d471b2a 100644
--- a/ui/src/components/icons/index.ts
+++ b/ui/src/components/icons/index.ts
@@ -1415,5 +1415,30 @@ export const iconMap: any = {
)
])
}
+ },
+ 'app-keyboard': {
+ iconReader: () => {
+ return h('i', [
+ h(
+ 'svg',
+ {
+ style: { height: '100%', width: '100%' },
+ viewBox: '0 0 1024 1024',
+ version: '1.1',
+ xmlns: 'http://www.w3.org/2000/svg'
+ },
+ [
+ h('path', {
+ d: 'M373.333333 352a53.333333 53.333333 0 1 1-106.666666 0 53.333333 53.333333 0 0 1 106.666666 0zM320 576a53.333333 53.333333 0 1 0 0-106.666667 53.333333 53.333333 0 0 0 0 106.666667zM565.333333 352a53.333333 53.333333 0 1 1-106.666666 0 53.333333 53.333333 0 0 1 106.666666 0zM512 576a53.333333 53.333333 0 1 0 0-106.666667 53.333333 53.333333 0 0 0 0 106.666667zM757.333333 352a53.333333 53.333333 0 1 1-106.666666 0 53.333333 53.333333 0 0 1 106.666666 0zM704 576a53.333333 53.333333 0 1 0 0-106.666667 53.333333 53.333333 0 0 0 0 106.666667zM362.666667 661.333333a42.666667 42.666667 0 1 0 0 85.333334h298.666666a42.666667 42.666667 0 1 0 0-85.333334h-298.666666z',
+ fill: 'currentColor'
+ }),
+ h('path', {
+ d: 'M512 42.666667C252.8 42.666667 42.666667 252.8 42.666667 512s210.133333 469.333333 469.333333 469.333333 469.333333-210.133333 469.333333-469.333333S771.2 42.666667 512 42.666667zM128 512a384 384 0 1 1 768 0 384 384 0 0 1-768 0z',
+ fill: 'currentColor'
+ })
+ ]
+ )
+ ])
+ }
}
}
diff --git a/ui/src/components/layout-container/index.vue b/ui/src/components/layout-container/index.vue
index ec5d8c3b2..09f0123f3 100644
--- a/ui/src/components/layout-container/index.vue
+++ b/ui/src/components/layout-container/index.vue
@@ -30,7 +30,7 @@ const showBack = computed(() => {
})
-
+
diff --git a/ui/src/views/application-overview/component/DisplaySettingDialog.vue b/ui/src/views/application-overview/component/DisplaySettingDialog.vue
index 4f35b10ea..a094bc670 100644
--- a/ui/src/views/application-overview/component/DisplaySettingDialog.vue
+++ b/ui/src/views/application-overview/component/DisplaySettingDialog.vue
@@ -99,4 +99,4 @@ const submit = async (formEl: FormInstance | undefined) => {
defineExpose({ open })
-
+
diff --git a/ui/src/views/application-overview/component/EditAvatarDialog.vue b/ui/src/views/application-overview/component/EditAvatarDialog.vue
index cf8083735..c7f7a40d8 100644
--- a/ui/src/views/application-overview/component/EditAvatarDialog.vue
+++ b/ui/src/views/application-overview/component/EditAvatarDialog.vue
@@ -139,4 +139,4 @@ function submit() {
defineExpose({ open })
-
+
diff --git a/ui/src/views/application-overview/component/EmbedDialog.vue b/ui/src/views/application-overview/component/EmbedDialog.vue
index 8aaf4a9bc..428a25224 100644
--- a/ui/src/views/application-overview/component/EmbedDialog.vue
+++ b/ui/src/views/application-overview/component/EmbedDialog.vue
@@ -132,7 +132,7 @@ src="${window.location.origin}/api/application/embed?protocol=${window.location.
<\/script>
`
source3.value = `