diff --git a/src/api/boe/aiChat.js b/src/api/boe/aiChat.js index fc2282ca..accb9f23 100644 --- a/src/api/boe/aiChat.js +++ b/src/api/boe/aiChat.js @@ -28,3 +28,9 @@ export function getChatMessages(conversationId) { export function showCaseAiEntrance() { return ajax.get('/xboe/m/boe/case/ai/show-entrance') } +export function likeMsg(data) { + return ajax.postJson('/xboe/m/boe/case/ai/likeMsg',data) +} +export function msgFeedback(data) { + return ajax.postJson('/xboe/m/boe/case/ai/msgFeedback',data) +} diff --git a/src/assets/images/case/cai-yes.svg b/src/assets/images/case/cai-yes.svg new file mode 100644 index 00000000..d0447617 --- /dev/null +++ b/src/assets/images/case/cai-yes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/case/cai.svg b/src/assets/images/case/cai.svg new file mode 100644 index 00000000..ba1e9716 --- /dev/null +++ b/src/assets/images/case/cai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/case/zan-yes.svg b/src/assets/images/case/zan-yes.svg new file mode 100644 index 00000000..de9f83a5 --- /dev/null +++ b/src/assets/images/case/zan-yes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/case/zan.svg b/src/assets/images/case/zan.svg new file mode 100644 index 00000000..6e92fc7b --- /dev/null +++ b/src/assets/images/case/zan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/portal/case/AICall.vue b/src/views/portal/case/AICall.vue index de28de92..f9f0a7ee 100644 --- a/src/views/portal/case/AICall.vue +++ b/src/views/portal/case/AICall.vue @@ -9,7 +9,7 @@ @close="onClose" class="case-expert-dialog" :modal="false" - :fullscreen="false" + :fullscreen="dialogFullscreen" top="0" v-resizeable v-draggable @@ -17,14 +17,24 @@
您好!我是京东方案例智能问答助手,随时为您服务。
我可以帮您快速查找和解读平台内的各类案例内容。只需输入您想了解的问题或关键词,我会从案例库中精准匹配相关信息,并提供清晰的解答。每条回答都会附上来源链接,方便您随时查阅原始案例全文。
@@ -554,6 +570,90 @@ export default { } }, methods: { + onbigWindowClick() { + console.log('放大'); + // 保存当前非全屏状态的尺寸和位置(仅当当前不是全屏状态时) + if (!this.dialogFullscreen) { + const dialogEl = document.querySelector('.case-expert-dialog .el-dialog'); + if (dialogEl) { + const normalSize = { + width: parseInt(dialogEl.style.width) || dialogEl.offsetWidth, + height: parseInt(dialogEl.style.height) || dialogEl.offsetHeight, + left: parseInt(dialogEl.style.left) || dialogEl.offsetLeft, + top: parseInt(dialogEl.style.top) || dialogEl.offsetTop + }; + sessionStorage.setItem('aiCallDialogNormalSize', JSON.stringify(normalSize)); + } + } + + // 设置全屏状态 + this.dialogFullscreen = true; + + // 设置全屏尺寸和位置 + this.$nextTick(() => { + const dialogEl = document.querySelector('.case-expert-dialog .el-dialog'); + if (dialogEl) { + dialogEl.style.width = '100vw'; + dialogEl.style.height = '100vh'; + dialogEl.style.left = '0px'; + dialogEl.style.top = '0px'; + + // 更新消息容器高度 + const messageContainer = document.querySelector('.welcome-message'); + const inputArea = document.querySelector('.input-area-wrapper'); + if (messageContainer && inputArea) { + messageContainer.style.height = `calc(100vh - ${inputArea.offsetHeight}px - 120px)`; + } + } + }); +}, +onRestoreWindowClick(){ + console.log('缩小'); + this.dialogFullscreen = false; + + this.$nextTick(() => { + const dialogEl = document.querySelector('.case-expert-dialog .el-dialog'); + if (dialogEl) { + // 从 sessionStorage 中获取保存的正常窗口尺寸和位置 + const savedNormalSize = sessionStorage.getItem('aiCallDialogNormalSize'); + const savedSize = sessionStorage.getItem('aiCallDialogSize'); + const savedPosition = sessionStorage.getItem('aiCallDialogPosition'); + + if (savedNormalSize) { + // 使用之前保存的正常尺寸 + const { width, height, left, top } = JSON.parse(savedNormalSize); + dialogEl.style.width = width + 'px'; + dialogEl.style.height = height + 'px'; + dialogEl.style.left = left + 'px'; + dialogEl.style.top = top + 'px'; + } else if (savedSize) { + // 回退到通用保存的尺寸 + const { width, height, left, top } = JSON.parse(savedSize); + dialogEl.style.width = width + 'px'; + dialogEl.style.height = height + 'px'; + dialogEl.style.left = left + 'px'; + dialogEl.style.top = top + 'px'; + } else { + // 如果没有保存的尺寸,则使用默认值 + dialogEl.style.width = '800px'; + dialogEl.style.height = '600px'; + dialogEl.style.left = (window.innerWidth - 800) / 2 + 'px'; + dialogEl.style.top = '100px'; + } + + // 应用相应的消息容器高度 + this.$nextTick(() => { + const messageContainer = document.querySelector('.welcome-message'); + const inputArea = document.querySelector('.input-area-wrapper'); + if (messageContainer && inputArea) { + const dialogHeight = dialogEl.style.height || '600px'; + messageContainer.style.height = `calc(${dialogHeight} - ${inputArea.offsetHeight}px - 120px)`; + } + }); + } + }); +}, + // / 关闭最小化窗口 closeMinimizedWindow() { this.$store.commit('app/SET_SHOW_AI_CALL_MINIMIZED', false); @@ -570,10 +670,13 @@ closeMinimizedWindow() { sessionStorage.removeItem('aiCallDialogSize'); // sessionStorage.removeItem('aiCallDialogPosition'); this.$emit('close') + this.dialogFullscreen=false // 可以在这里执行其他逻辑 }, minimizeWindow() { + console.log(131); + this.windowState = 'minimized'; this.$store.commit('app/SET_SHOW_AI_CALL_MINIMIZED', true); }, @@ -625,6 +728,7 @@ closeMinimizedWindow() { this.messageList = [ { isBot: true, + isFirstMessage: true, text: `您好!我是京东方案例智能问答助手,随时为您服务。
我可以帮您快速查找和解读平台内的各类案例内容。只需输入您想了解的问题或关键词,我会从案例库中精准匹配相关信息,并提供清晰的解答。每条回答都会附上来源链接,方便您随时查阅原始案例全文。
我还会根据您的提问,智能推荐相关延伸问题,助您更高效地探索知识、解决问题。
@@ -743,6 +847,7 @@ closeMinimizedWindow() { font-size: 18px; padding: 5px 10px; color: #333; /* 黑色图标 */ + margin-top: -13px; } } @@ -770,6 +875,8 @@ closeMinimizedWindow() { //margin-bottom: 20px; display: flex; flex-direction: column; + max-width: 800px; + margin: 0 auto; .welcome-message { display: flex; @@ -903,4 +1010,13 @@ closeMinimizedWindow() { align-items: center; } } +.case-expert-dialog { + ::v-deep .el-dialog.fullscreen { + border-radius: 0; + + .el-dialog__body { + height: calc(100vh - 120px); // 减去标题栏高度 + } + } + } diff --git a/src/views/portal/case/components/messages.vue b/src/views/portal/case/components/messages.vue index 72ec2379..dd0e5ccb 100644 --- a/src/views/portal/case/components/messages.vue +++ b/src/views/portal/case/components/messages.vue @@ -6,15 +6,13 @@ - +