diff --git a/src/apis/paths/conversation.ts b/src/apis/paths/conversation.ts index b97d083ca7adeebdb1458688cb4c5d31310b7dfd..34d3c5cb40ed07a612e34295c761537555965ba9 100644 --- a/src/apis/paths/conversation.ts +++ b/src/apis/paths/conversation.ts @@ -64,7 +64,7 @@ export const createSession = ({ ), ] > => { - return post(BASE_URL, { appId, debug }, { llm_id, kb_ids, title }); + return post(`${BASE_URL}?appId=${appId}&debug=${debug}`, { llm_id, kb_ids, title }); }; /** diff --git a/src/apis/paths/document.ts b/src/apis/paths/document.ts index db22030735dbb652b9df2545e9e49e6b3f7754d2..a9b07e47011719ba4add27dcf19ca8e9eceb244d 100644 --- a/src/apis/paths/document.ts +++ b/src/apis/paths/document.ts @@ -15,7 +15,7 @@ import type { FcResponse } from 'src/apis/server'; * @returns Promise<[any, FcResponse | undefined]> */ export const getParseMethodList = (): Promise<[any, FcResponse | undefined]> => { - return witchainDGet(`/wtd/other/parse_method`); + return witchainDGet(`/witchaind/api/other/parse_method`); }; /** diff --git a/src/apis/paths/userMessage.ts b/src/apis/paths/userMessage.ts index 36da1f3429599089d153037cc687e15eda7ef6a5..7f99cd95140eef37d9a6ac7279ec20575493315e 100644 --- a/src/apis/paths/userMessage.ts +++ b/src/apis/paths/userMessage.ts @@ -74,7 +74,7 @@ export interface DeleteUserMessageResponse { export const listUserMessages = ( params: ListUserMessageRequest ): Promise<[any, FcResponse | undefined]> => { - return witchainDPost('/wtd/usr_msg/list', params as any); + return witchainDPost('/witchaind/api/usr_msg/list', params as any); }; /** @@ -87,7 +87,7 @@ export const updateUserMessage = ( msgId: string, msgStatus: UserMessageStatus ): Promise<[any, FcResponse | undefined]> => { - return witchainDPut('/wtd/usr_msg', {}, { msgId, msgStatus }); + return witchainDPut('/witchaind/api/usr_msg', {}, { msgId, msgStatus }); }; /** @@ -98,7 +98,7 @@ export const updateUserMessage = ( export const deleteUserMessage = ( msgId: string ): Promise<[any, FcResponse | undefined]> => { - return witchainDDel('/wtd/usr_msg', {}, { msgId }); + return witchainDDel('/witchaind/api/usr_msg', {}, { msgId }); }; // 导出用户消息API diff --git a/src/assets/styles/base/index.scss b/src/assets/styles/base/index.scss index 34fa254f144dc7c4378cf183e6b96df41afc0ebe..c78eaac9679cfd3554eabbd106475fc6e3601f3e 100644 --- a/src/assets/styles/base/index.scss +++ b/src/assets/styles/base/index.scss @@ -24,21 +24,21 @@ /* 鼠标悬停时的滚动条按钮颜色 */ } textarea::-webkit-input-placeholder { - color: var(--o-think-header-text); + color: var(--o-placeholder-text); font-size: 14px; } input::-moz-placeholder, textarea::-moz-placeholder { /* Mozilla Firefox 19+ */ - color: var(--o-think-header-text); + color: var(--o-placeholder-text); font-size: 14px; } input:-moz-placeholder, textarea:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ - color: var(--o-think-header-text); + color: var(--o-placeholder-text); font-size: 14px; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { /* Internet Explorer 10-11 */ - color: var(--o-think-header-text); + color: var(--o-placeholder-text); font-size: 14px; } \ No newline at end of file diff --git a/src/assets/styles/variables/theme.scss b/src/assets/styles/variables/theme.scss index f115d3686c99919861c2de82505d5545f467a0e0..490de276bd6f1d4c1b28cb06ef5e8a019ecbaa4d 100644 --- a/src/assets/styles/variables/theme.scss +++ b/src/assets/styles/variables/theme.scss @@ -61,6 +61,7 @@ body[theme='dark'] { --o-think-border: #8d98aa; --o-think-header-bg: #2a2f37; --o-think-header-text: #e4e8ee; + --o-placeholder-text: #8d98aa; --el-drawer-bg-color: #000000; --el-bg-color: #1f2329; --question-bg: linear-gradient( @@ -186,6 +187,7 @@ body[theme='light'] { --o-think-border: #ccc; --o-think-header-bg: #f8f8f8; --o-think-header-text: #8d98aa; + --o-placeholder-text: #8d98aa; --flow-branch-node-error-node-cover-color: #edb3b3; --flow-branch-node-success-node-cover-color: #b3dbb8; --el-collapse-header-bg: rgb(244, 246, 250); diff --git a/src/i18n/lang/en.ts b/src/i18n/lang/en.ts index 71f5f94a15682a0d26d2cdb54daf05071afb3ff0..49477552fe6fb71342096cc9912570aa282597e9 100644 --- a/src/i18n/lang/en.ts +++ b/src/i18n/lang/en.ts @@ -1346,5 +1346,37 @@ export default { no_notification_message: 'No notification messages', no_todo_message: 'No to-do messages', empty_message: 'No {type} messages' + }, + // Debug Variable Panel related + debugVariablePanel: { + variable_config: 'Variable Configuration', + start_conversation: 'Start Conversation', + click_upload: 'Click to Upload', + drag_files_here: 'or drag files here', + uploaded: 'Uploaded', + pending_upload: 'Pending Upload', + remove: 'Remove', + variable_panel_title: 'Variable Configuration Panel', + variable_panel_description: 'Configure variable values when the workflow contains variables', + enter_after_add: 'Press Enter to add after input, or separate multiple values with commas', + file_selected_upload_on_start: 'File selected, will upload when conversation starts', + file_removed_sync_on_start: 'File removed, will sync to backend when conversation starts', + file_array_selected_upload_on_start: 'Files selected, will upload when conversation starts', + file_removed_from_array_sync_on_start: 'File "{fileName}" removed, will sync to backend when conversation starts', + variable_updated_sync_on_start: 'Variable value updated, will sync to backend when conversation starts', + file_variable_updated_sync_on_start: 'File variable updated, will sync to backend when conversation starts', + variable_updated: 'Variable value updated', + update_variable_failed: 'Failed to update variable', + placeholders: { + enter_text: 'Enter text value', + enter_number: 'Enter number', + enter_json: 'Enter JSON format', + enter_secret: 'Enter secret key', + enter_string_array: 'Enter string value' + }, + file_upload: { + supported_types: '{types} files, single file no more than {size}MB', + supported_types_multiple: '{types} files, up to {count} files, single file no more than {size}MB' + } } }; \ No newline at end of file diff --git a/src/i18n/lang/zh-cn.ts b/src/i18n/lang/zh-cn.ts index 280905dd147b305b1b9581cec54fd7e3fac56387..75b8e30a8f0f2698149c38923313fc2436119495 100644 --- a/src/i18n/lang/zh-cn.ts +++ b/src/i18n/lang/zh-cn.ts @@ -1376,5 +1376,37 @@ export default { no_notification_message: '暂无通知消息', no_todo_message: '暂无待办消息', empty_message: '暂无{type}消息' + }, + // 调试变量面板相关 + debugVariablePanel: { + variable_config: '变量配置', + start_conversation: '开始对话', + click_upload: '点击上传', + drag_files_here: '或将文件拖拽到此处', + uploaded: '已上传', + pending_upload: '待上传', + remove: '移除', + variable_panel_title: '变量配置面板', + variable_panel_description: '当工作流包含变量时,可以在这里配置变量值', + enter_after_add: '输入后按回车添加,或用逗号分隔多个值', + file_selected_upload_on_start: '文件已选择,开始对话时将上传', + file_removed_sync_on_start: '文件已移除,开始对话时将同步到后端', + file_array_selected_upload_on_start: '文件已选择,开始对话时将上传', + file_removed_from_array_sync_on_start: '文件 "{fileName}" 已移除,开始对话时将同步到后端', + variable_updated_sync_on_start: '变量值已更新,开始对话时将同步到后端', + file_variable_updated_sync_on_start: '文件变量已更新,开始对话时将同步到后端', + variable_updated: '变量值已更新', + update_variable_failed: '更新变量失败', + placeholders: { + enter_text: '请输入文本值', + enter_number: '请输入数字', + enter_json: '请输入JSON格式', + enter_secret: '请输入密钥', + enter_string_array: '输入字符串值' + }, + file_upload: { + supported_types: '{types} 文件,单个文件不超过 {size}MB', + supported_types_multiple: '{types} 文件,最多 {count} 个文件,单个文件不超过 {size}MB' + } } }; \ No newline at end of file diff --git a/src/store/historySession.ts b/src/store/historySession.ts index eb9638aea3f1a8e33f3de8469a2938a84055e683..7e1aeadeca90f0eb23da34277f2a79dc2f3dd750 100644 --- a/src/store/historySession.ts +++ b/src/store/historySession.ts @@ -11,6 +11,7 @@ import { api } from 'src/apis'; import { defineStore } from 'pinia'; import { ref, computed } from 'vue'; import { storeToRefs } from 'pinia'; +import { useRouter, useRoute } from 'vue-router'; import { useSessionStore } from '.'; import type { SessionItem } from 'src/components/sessionCard/type'; import { successMsg } from 'src/components/Message'; @@ -54,6 +55,55 @@ export const useHistorySessionStore = defineStore( return; } currentSelectedSession.value = conversationId; + + // 🔑 关键修复:根据当前对话的appId更新app选择状态 + const currentSession = historySession.value.find(session => session.conversationId === conversationId); + if (currentSession) { + console.log('🔍 [changeSession] 找到当前会话:', currentSession); + + if (currentSession.appId && currentSession.appId.trim() !== '') { + // 对话绑定了app,设置为对应的app + console.log('🔍 [changeSession] 对话绑定了app,设置app状态:', currentSession.appId); + user_selected_app.value = currentSession.appId; + } else { + // 对话没有绑定app,清除app选择状态 + console.log('🔍 [changeSession] 对话未绑定app,清除app状态'); + user_selected_app.value = ''; + } + } else { + console.warn('🔍 [changeSession] 未找到对应的会话记录:', conversationId); + // 如果找不到会话记录,清除app状态 + user_selected_app.value = ''; + } + + // 🔑 修复:同时更新路由,确保路由与session状态保持一致 + const router = useRouter(); + const route = useRoute(); + const currentQuery = { ...route.query }; + + // 添加conversationId到路由参数中 + currentQuery.conversationId = conversationId; + + // 🔑 新增:根据app状态更新路由参数 + if (user_selected_app.value && user_selected_app.value.trim() !== '') { + currentQuery.appId = user_selected_app.value; + // 尝试获取app名称 + const { appList } = storeToRefs(useSessionStore()); + const relatedApp = appList.value?.find(app => app.appId === user_selected_app.value); + if (relatedApp) { + currentQuery.name = relatedApp.name; + } + } else { + // 清除路由中的app参数 + delete currentQuery.appId; + delete currentQuery.name; + } + + router.replace({ + path: route.path, + query: currentQuery + }); + const { getConversation } = useSessionStore(); await getConversation(currentSelectedSession.value).then(() => { const a = document.getElementsByClassName('draw'); @@ -139,18 +189,43 @@ export const useHistorySessionStore = defineStore( const [err, res] = await api.getSessionRecord(); const { conversationList } = storeToRefs(useSessionStore()); if (!err && res) { - historySession.value = res.result.conversations + // 🔑 关键修复:根据当前选择的app过滤对话记录 + const currentAppId = user_selected_app.value || ''; + console.log('🔍 [getHistorySession] 当前选择的app:', currentAppId); + + const allConversations = res.result.conversations .reverse() .map((item) => ({ conversationId: item.conversationId, createdTime: item.createdTime, title: item.title, docCount: item.docCount || 0, + appId: item.appId || '', // 🔑 关键修复:添加appId字段 + debug: item.debug || false, // 🔑 添加debug字段 + kbList: item.kbList || [], // 🔑 添加kbList字段 llm: item.llm || {}, })) .filter((item) => item.conversationId !== conversationId); - if (res.result.conversations.length === 0) { - await generateSession(); + + // 🔑 新增:按app分离对话记录 + historySession.value = allConversations.filter((item) => { + const itemAppId = item.appId || ''; + const matches = itemAppId === currentAppId; + console.log('🔍 [getHistorySession] 对话过滤:', { + conversationId: item.conversationId, + itemAppId, + currentAppId, + matches + }); + return matches; + }); + + // 🔑 修复:当当前app没有对话时,自动创建新对话 + if (historySession.value.length === 0) { + console.log('🔍 [getHistorySession] 当前app无对话记录,自动创建新对话,appId:', currentAppId); + await generateSession(false); + // 🔑 关键修复:创建新对话后需要重新加载历史记录 + await getHistorySession(); return; } if (!currentSelectedSession.value) { @@ -207,10 +282,10 @@ export const useHistorySessionStore = defineStore( successMsg(i18n.global.t('history.latestConversation')); await getHistorySession(); } else { - await generateSession(); + await generateSession(false); } } else { - await generateSession(); + await generateSession(false); } }; /** @@ -218,9 +293,24 @@ export const useHistorySessionStore = defineStore( */ const generateSession = async (isDebug): Promise => { const appId = user_selected_app.value ?? ''; + console.log('🔍 [generateSession] 创建会话,appId:', appId, 'debug:', isDebug); const [_, res] = await api.createSession({appId, debug: isDebug}); if (!_ && res) { currentSelectedSession.value = res.result.conversationId; + + // 🔑 修复:创建新会话时同时更新路由 + const router = useRouter(); + const route = useRoute(); + const currentQuery = { ...route.query }; + + // 添加conversationId到路由参数中 + currentQuery.conversationId = res.result.conversationId; + + router.replace({ + path: route.path, + query: currentQuery + }); + await getHistorySession(); } }; diff --git a/src/views/api/components/ActiveModel.vue b/src/views/api/components/ActiveModel.vue index 835e22ceb05d94d029b978f63297fb26775ec4e6..dcaf23bfb4c5896d31b8eaca84100f35b6b11d5b 100644 --- a/src/views/api/components/ActiveModel.vue +++ b/src/views/api/components/ActiveModel.vue @@ -145,6 +145,116 @@ async function onConfirm(formEl: FormInstance | undefined) { text-align: center; margin-bottom: 8px; } + +// 深色模式支持 +.dark .add-model-dialog { + .text { + color: #a0aec0 !important; + } + + :deep(.el-dialog) { + background-color: #2d3748 !important; + border: 1px solid #4a5568 !important; + + .el-dialog__header { + background-color: #2d3748 !important; + border-bottom: 1px solid #4a5568 !important; + + .el-dialog__title { + color: #e2e8f0 !important; + } + + .el-dialog__headerbtn { + .el-dialog__close { + color: #a0aec0 !important; + + &:hover { + color: #e2e8f0 !important; + } + } + } + } + + .el-dialog__body { + background-color: #2d3748 !important; + color: #e2e8f0 !important; + + .el-form { + .el-form-item { + .el-form-item__label { + color: #e2e8f0 !important; + } + + .el-input { + .el-input__wrapper { + background-color: #374151 !important; + border-color: #4a5568 !important; + box-shadow: 0 0 0 1px #4a5568 inset !important; + + .el-input__inner { + color: #e2e8f0 !important; + background-color: transparent !important; + + &::placeholder { + color: #9ca3af !important; + } + } + + &:hover { + border-color: #6b7280 !important; + box-shadow: 0 0 0 1px #6b7280 inset !important; + } + + &.is-focus { + border-color: #6395fd !important; + box-shadow: 0 0 0 1px #6395fd inset !important; + } + } + } + } + } + } + + .el-dialog__footer { + background-color: #2d3748 !important; + border-top: 1px solid #4a5568 !important; + + .el-button { + &.el-button--primary { + background-color: #6395fd !important; + border-color: #6395fd !important; + color: #ffffff !important; + + &:hover { + background-color: #4f7df3 !important; + border-color: #4f7df3 !important; + } + + &:active { + background-color: #3b69f2 !important; + border-color: #3b69f2 !important; + } + } + + &.el-button--default { + background-color: #374151 !important; + border-color: #4a5568 !important; + color: #e2e8f0 !important; + + &:hover { + background-color: #4b5563 !important; + border-color: #6b7280 !important; + } + + &:active { + background-color: #374151 !important; + border-color: #4a5568 !important; + } + } + } + } + } +} diff --git a/src/views/app/index.vue b/src/views/app/index.vue index f9dd572bdf533f09d77dcac86ed72b4c78054a17..2b933f958843fd7aa01136aafb7c6c3990b0118f 100644 --- a/src/views/app/index.vue +++ b/src/views/app/index.vue @@ -62,9 +62,9 @@ >
- - - +
@@ -241,6 +241,8 @@ const handleCreateApp = async (appType: 'flow' | 'agent') => { const routerToDetail = async (appItem) => { if (!appItem.published) { //未发布应用不允许跳转 + console.log('here'); + console.log(appItem); return; } await createNewSession().finally(() => { @@ -354,7 +356,10 @@ watch( diff --git a/src/views/dialogue/components/DialogueVariablePanel.vue b/src/views/dialogue/components/DialogueVariablePanel.vue index 640fb884e170b443ad699460c13205bc5e80b394..fbc90c3a5fce5400356cb0dbe79809c0512e6704 100644 --- a/src/views/dialogue/components/DialogueVariablePanel.vue +++ b/src/views/dialogue/components/DialogueVariablePanel.vue @@ -3,7 +3,7 @@
- 变量设置 + {{ $t('debugVariablePanel.variable_config') }}
- 编辑 + {{ $t('semantic.edit') }}
@@ -240,7 +240,7 @@ :loading="isStarting" class="start-btn" > - 开始对话 + {{ $t('debugVariablePanel.start_conversation') }}
@@ -345,7 +345,7 @@ const deleteConversationOnFailure = async (conversationId: string) => { await deleteSession({ conversationList: [conversationId] }) ElMessage.warning('文件上传失败,已取消对话创建') } catch (error) { - console.error('删除conversation失败:', error) + // 删除conversation失败,忽略错误 } } @@ -571,7 +571,7 @@ const updateBooleanVariable = async (variable: Variable) => { emit('variableUpdated') } catch (error) { - console.error('更新变量失败:', error) + // 更新变量失败 ElMessage.error('更新变量失败') } } @@ -757,7 +757,7 @@ const batchUpdateVariables = async (): Promise => { updateResults.push({ success: true, variable: variable.name }) } catch (error) { - console.error(`变量 ${variable.name} 更新失败:`, error) + // 变量更新失败 updateResults.push({ success: false, variable: variable.name, error }) } } @@ -868,7 +868,7 @@ const batchUpdateVariables = async (): Promise => { variable.fileUploaded = true } } catch (error) { - console.error(`文件变量 ${variable.name} 上传失败:`, error) + // 文件变量上传失败 ElMessage.error(`文件变量 ${variable.name} 上传失败`) return false } @@ -883,7 +883,7 @@ const batchUpdateVariables = async (): Promise => { return true } catch (error) { - console.error('批量更新变量失败:', error) + // 批量更新变量失败 ElMessage.error('变量更新失败,无法开始对话') return false } @@ -988,6 +988,8 @@ watch( // 2. 变量数量发生变化(新增或删除变量) // 3. 变量类型发生变化 if (!oldVariables || newVariables.length !== oldVariables.length) { + // 🔑 重要:变量数量变化时重置更新标志,确保新变量能正确处理 + hasUpdatedVariables.value = false; initializeInternalVariables(); return; } @@ -999,15 +1001,27 @@ watch( }); if (hasTypeChange) { + hasUpdatedVariables.value = false; initializeInternalVariables(); return; } - - // 如果只是变量值的变化,不重新初始化,保持用户输入的状态 }, { immediate: true } ) +// 🔑 新增:监听appId变化,确保在切换app时重新初始化变量 +watch( + () => props.appId, + (newAppId, oldAppId) => { + if (newAppId && oldAppId && newAppId !== oldAppId) { + // 🔑 重要:App切换时强制重新初始化,清除之前的用户输入状态 + // 这确保了不同app的变量配置不会互相干扰 + hasUpdatedVariables.value = false; // 重置更新标志 + initializeInternalVariables(); + } + } +) + // 监听内部变量变化,在数据加载完成后判断是否需要最小化 watch( () => internalVariables.value, @@ -1030,7 +1044,7 @@ watch( margin-bottom: 16px; margin-top: 16px; overflow: hidden; - transition: all 0.3s ease; + transition: transform 0.3s ease, width 0.3s ease, max-width 0.3s ease; width: 90%; max-width: 800px; box-shadow: var(--o-shadow-base, 0 4px 12px rgba(0, 0, 0, 0.08)); @@ -1058,7 +1072,7 @@ watch( justify-content: space-between; align-items: center; padding: 20px 24px; - background: linear-gradient(135deg, var(--o-color-primary-light-9, #f2f6fc), var(--o-color-primary-light-8, #ecf2ff)); + background: linear-gradient(135deg, var(--o-bg-color-light, #f2f6fc), var(--o-bg-color-light, #ecf2ff)); border-bottom: 1px solid var(--o-border-color-lighter, #e4e7ed); .header-left { @@ -1108,11 +1122,10 @@ watch( background: var(--o-fill-color-extra-light, #f8f9fa); border-radius: 6px; border: 1px solid var(--o-border-color-lighter, #e4e7ed); - transition: all 0.2s ease; + transition: transform 0.2s ease; &:hover { border-color: var(--o-color-primary-light-7, #c6e2ff); - background: var(--o-color-primary-light-9, #f2f6fc); } &:last-child { @@ -1207,7 +1220,7 @@ watch( background: var(--o-bg-color-base, #ffffff); font-size: 14px; padding: 12px 16px; - transition: all 0.2s ease; + transition: transform 0.2s ease; &:focus { border-color: var(--o-color-primary, #409eff); @@ -1240,16 +1253,14 @@ watch( border: 2px dashed var(--o-border-color, #dcdfe6); border-radius: 8px; background: var(--o-fill-color-extra-light, #f8f9fa); - transition: all 0.3s ease; + transition: transform 0.3s ease; &:hover { border-color: var(--o-color-primary, #409eff); - background: var(--o-color-primary-light-9, #f2f6fc); } &.is-dragover { border-color: var(--o-color-primary, #409eff); - background: var(--o-color-primary-light-8, #ecf2ff); } } @@ -1304,7 +1315,7 @@ watch( border: 1px solid var(--o-border-color-lighter, #e4e7ed); border-radius: 6px; margin-bottom: 8px; - transition: all 0.2s ease; + transition: transform 0.2s ease; &:hover { background: var(--o-fill-color-light, #f5f7fa); @@ -1419,7 +1430,7 @@ watch( background: linear-gradient(135deg, var(--o-color-primary, #409eff), var(--o-color-primary-light-3, #79bbff)); border: none; box-shadow: 0 2px 8px var(--o-color-primary-light-8, #ecf2ff); - transition: all 0.2s ease; + transition: transform 0.2s ease; &:hover { transform: translateY(-1px); diff --git a/src/views/dialogue/components/InitalPanel.vue b/src/views/dialogue/components/InitalPanel.vue index a970396975642347f09d5b53dd4bdda97ef06104..927f5a4f60fd90606aab49f38a7f77b643e0f1ea 100644 --- a/src/views/dialogue/components/InitalPanel.vue +++ b/src/views/dialogue/components/InitalPanel.vue @@ -89,9 +89,9 @@ onMounted(() => { :key="item.key" :style="item.style" > - + - +
-
-
- - - -
- {{ interPreviewInfo.name }} -
-
-
- MCP服务 - -
-
@@ -151,55 +128,6 @@ watch( width: 100%; gap: 32px; flex-direction: column; - .preTop { - width: 100%; - display: flex; - justify-content: center; - align-items: center; - position: relative; - margin-top: 64px; - - .mcp-list { - position: absolute; - right: 103px; - font-size: 12px; - display: flex; - align-items: center; - color: var(--o-text-color-tertiary); - - .mcp-item { - width: 24px; - height: 24px; - margin-left: 8px; - border-radius: 50%; - } - } - - .preTopContent { - display: flex; - align-items: center; - height: 40px; - padding: 8px; - border-radius: 20px; - gap: 8px; - background: linear-gradient( - 122.39deg, - rgba(109, 117, 250, 0.2) -20.158%, - rgba(90, 179, 255, 0.2) 112.459% - ); - .preTitleIcon { - width: 32px; - height: 32px; - } - .preMainAppName { - font-size: 16px; - margin-right: 8px; - line-height: 24px; - color: var(--o-text-color-primary); - font-weight: 700; - } - } - } .preMain { display: flex; diff --git a/src/views/dialogue/components/TitleBar.vue b/src/views/dialogue/components/TitleBar.vue index 2fd6010ccaf098260d9dbcb68edbe6108fd3ddb5..99abc1671f36b3bda5cfdf95e1b6beaa22d9e5d3 100644 --- a/src/views/dialogue/components/TitleBar.vue +++ b/src/views/dialogue/components/TitleBar.vue @@ -159,6 +159,7 @@ const headerStyles = computed(() => { 'max-width': '400px', 'width': '400px', 'max-height': '70vh', + 'z-index': 9999999, }" >