From 8c023d459f9bf9df4021eb08356ca3facacbcf8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=B1=E8=BE=BE?= Date: Sun, 28 Sep 2025 18:07:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(portal):=20=E6=B7=BB=E5=8A=A0AI=20Call?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E5=8C=96=E7=AA=97=E5=8F=A3=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在app store中新增showAICallMinimized状态用于控制AI Call最小化窗口显示 - 添加对应的mutation和action用于更新最小化窗口显示状态 - 在AICall.vue组件中实现最小化窗口的条件显示逻辑 - 修改case消息组件中的链接跳转方式为路由跳转 - 更新AI聊天接口的请求地址为统一网关路径 - 在App.vue中添加路由监听,根据路由动态控制AI Call窗口显示状态- 实现case和caseDetail路由下显示AI Call最小化窗口的逻辑 --- src/App.vue | 26 ++++++++++++++++++- src/store/modules/app.js | 12 ++++++++- src/views/portal/case/AICall.vue | 12 +++++++-- src/views/portal/case/components/messages.vue | 11 +++++++- .../portal/case/components/sendMessage.vue | 4 +-- 5 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/App.vue b/src/App.vue index 18c73b94..1bcc6bc6 100644 --- a/src/App.vue +++ b/src/App.vue @@ -23,12 +23,27 @@ }, computed: { ...mapGetters(['userInfo']), - ...mapState('app', ['showAICall']) + ...mapState('app', ['showAICall', 'showAICallMinimized']) }, methods: { onCloseAICall() { // 通过Vuex关闭AI Call组件 this.$store.dispatch('app/setShowAICall', false); + }, + + // 检查当前路由是否应该显示AI弹窗 + checkRouteForAICall() { + const currentRoute = this.$route.name; + // 只在case或caseDetail路由显示弹窗 + if (currentRoute === 'case' || currentRoute === 'caseDetail') { + // 设置最小化窗口显示状态为true + this.$store.dispatch('app/setShowAICallMinimized', true); + } else { + // 其他路由关闭弹窗 + this.$store.dispatch('app/setShowAICall', false); + // 设置最小化窗口显示状态为false + this.$store.dispatch('app/setShowAICallMinimized', false); + } } }, mounted() { @@ -37,7 +52,16 @@ // if(this.userInfo && this.userInfo.name!=''){ // this.$watermark.set(this.userInfo.name+this.userInfo.loginName); // } + + // 初始化检查路由 + this.checkRouteForAICall(); }, + watch: { + // 监听路由变化 + $route(to, from) { + this.checkRouteForAICall(); + } + } // watch:{ // userInfo(newVal,oldVal){ // if(newVal && newVal.name!=''){ diff --git a/src/store/modules/app.js b/src/store/modules/app.js index 7a59d739..a18d65bf 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -9,7 +9,9 @@ const state = { device: 'desktop',//默认是桌面,以后会有android,ios,minapp size: Cookies.get('size') || 'medium', //字段大小 // 添加AI Call组件显示控制状态 - showAICall: false + showAICall: false, + // 控制AI Call最小化窗口在特定路由下显示的状态 + showAICallMinimized: false } const mutations = { @@ -40,6 +42,10 @@ const mutations = { // 添加控制AI Call组件显示的mutation SET_SHOW_AI_CALL: (state, show) => { state.showAICall = show + }, + // 控制AI Call最小化窗口显示的mutation + SET_SHOW_AI_CALL_MINIMIZED: (state, show) => { + state.showAICallMinimized = show } } @@ -59,6 +65,10 @@ const actions = { // 添加控制AI Call组件显示的action setShowAICall({ commit }, show) { commit('SET_SHOW_AI_CALL', show) + }, + // 控制AI Call最小化窗口显示的action + setShowAICallMinimized({ commit }, show) { + commit('SET_SHOW_AI_CALL_MINIMIZED', show) } } diff --git a/src/views/portal/case/AICall.vue b/src/views/portal/case/AICall.vue index f2ca431b..4c816ae3 100644 --- a/src/views/portal/case/AICall.vue +++ b/src/views/portal/case/AICall.vue @@ -70,7 +70,7 @@
@@ -96,6 +96,7 @@