From 7a5b6680f26c0c7d24dfb108ec40ece3a5fe7cd9 Mon Sep 17 00:00:00 2001 From: cirry <812852553@qq.com> Date: Sun, 12 Apr 2026 13:05:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=B9=E8=AF=9D=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/App.vue | 11 +++++++---- src/renderer/router/index.js | 2 +- src/renderer/views/chat/ChatView.vue | 2 +- src/renderer/views/home/HomeView.vue | 14 +++++++++----- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/renderer/App.vue b/src/renderer/App.vue index e6e5e6e..fdb7bd8 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -36,7 +36,10 @@
@@ -133,7 +136,7 @@ const statusLabel = computed(() => { const menus = ref([ { name: '新对话', index: '/', icon: 'plus' }, { name: '知识空间', index: '/knowledge', icon: 'book' }, - { name: 'opencode对话', index: '/chat', icon: 'bot' }, + // { name: 'opencode对话', index: '/chat', icon: 'bot' }, { name: '发现设备', index: '/bonjour', icon: 'server' }, { name: '测试页', index: '/test', icon: 'flask-conical' }, ]); @@ -168,8 +171,8 @@ async function onHistoryClick(item) { } // 跳转到对话页面 router.push({ - path: '/chat', - query: { sessionId: item.id }, + name: 'Chat', + params: { id: item.id }, }); } diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js index 0293e84..a1788e3 100644 --- a/src/renderer/router/index.js +++ b/src/renderer/router/index.js @@ -8,7 +8,7 @@ const routes = [ meta: { title: '首页' }, }, { - path: '/chat', + path: '/chat/:id?', name: 'Chat', component: () => import('@/views/chat/ChatView.vue'), meta: { title: 'OpenCode 对话' }, diff --git a/src/renderer/views/chat/ChatView.vue b/src/renderer/views/chat/ChatView.vue index f164e02..905b4b8 100644 --- a/src/renderer/views/chat/ChatView.vue +++ b/src/renderer/views/chat/ChatView.vue @@ -63,7 +63,7 @@ const localAssistantMessageIds = new Set(); let unsubscribeCallbacks = []; // 从路由参数中获取 sessionId -const routeSessionId = computed(() => route.query.sessionId); +const routeSessionId = computed(() => route.params.id || route.query.sessionId); // 加载历史消息 async function loadHistoryMessages(sessionId) { diff --git a/src/renderer/views/home/HomeView.vue b/src/renderer/views/home/HomeView.vue index d8f22d3..af1becc 100644 --- a/src/renderer/views/home/HomeView.vue +++ b/src/renderer/views/home/HomeView.vue @@ -75,6 +75,7 @@ import { useRouter } from 'vue-router'; import { useAppStore } from '@/stores/app'; import { useHistoryStore } from '@/stores/history'; import { Document, Plus, Promotion } from '@element-plus/icons-vue'; +import { ElMessage } from 'element-plus'; const router = useRouter(); const appStore = useAppStore(); @@ -84,6 +85,11 @@ const isCreating = ref(false); // 处理发送消息 async function handleSend() { + // 检查 opencode 服务是否已启动 + if (appStore.serviceStatus !== appStore.SERVICE_STATUS.RUNNING) { + ElMessage.warning('暂时没有运行的智能体'); + return; + } const text = inputText.value.trim(); if (!text || isCreating.value) return; @@ -98,11 +104,9 @@ async function handleSend() { // 跳转到对话页面,并将消息文本带入 query router.push({ - path: '/chat', - query: { - sessionId: session.id, - text: text, - }, + name: 'Chat', + params: { id: session.id }, + query: { text: text }, }); } catch (err) { console.error('创建会话失败:', err);