feat: 对话功能开发
This commit is contained in:
@@ -36,7 +36,10 @@
|
|||||||
<div
|
<div
|
||||||
v-for="(item, index) in historyStore.historyItems"
|
v-for="(item, index) in historyStore.historyItems"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="flex items-center w-[216px] h-[37px] justify-between rounded-[10px] pl-3 pr-3 mx-auto text-gray-500 hover:bg-gray-50 hover:text-gray-700 cursor-pointer transition-all duration-200"
|
:class="[
|
||||||
|
'flex items-center w-[216px] h-[37px] justify-between rounded-[10px] pl-3 pr-3 mx-auto cursor-pointer transition-all duration-200',
|
||||||
|
route.params.id === item.id ? 'bg-[#DEE0E4] text-gray-900' : 'text-gray-500 hover:bg-gray-50 hover:text-gray-700',
|
||||||
|
]"
|
||||||
@click="onHistoryClick(item)"
|
@click="onHistoryClick(item)"
|
||||||
:title="item.name"
|
:title="item.name"
|
||||||
>
|
>
|
||||||
@@ -133,7 +136,7 @@ const statusLabel = computed(() => {
|
|||||||
const menus = ref([
|
const menus = ref([
|
||||||
{ name: '新对话', index: '/', icon: 'plus' },
|
{ name: '新对话', index: '/', icon: 'plus' },
|
||||||
{ name: '知识空间', index: '/knowledge', icon: 'book' },
|
{ name: '知识空间', index: '/knowledge', icon: 'book' },
|
||||||
{ name: 'opencode对话', index: '/chat', icon: 'bot' },
|
// { name: 'opencode对话', index: '/chat', icon: 'bot' },
|
||||||
{ name: '发现设备', index: '/bonjour', icon: 'server' },
|
{ name: '发现设备', index: '/bonjour', icon: 'server' },
|
||||||
{ name: '测试页', index: '/test', icon: 'flask-conical' },
|
{ name: '测试页', index: '/test', icon: 'flask-conical' },
|
||||||
]);
|
]);
|
||||||
@@ -168,8 +171,8 @@ async function onHistoryClick(item) {
|
|||||||
}
|
}
|
||||||
// 跳转到对话页面
|
// 跳转到对话页面
|
||||||
router.push({
|
router.push({
|
||||||
path: '/chat',
|
name: 'Chat',
|
||||||
query: { sessionId: item.id },
|
params: { id: item.id },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const routes = [
|
|||||||
meta: { title: '首页' },
|
meta: { title: '首页' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/chat',
|
path: '/chat/:id?',
|
||||||
name: 'Chat',
|
name: 'Chat',
|
||||||
component: () => import('@/views/chat/ChatView.vue'),
|
component: () => import('@/views/chat/ChatView.vue'),
|
||||||
meta: { title: 'OpenCode 对话' },
|
meta: { title: 'OpenCode 对话' },
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ const localAssistantMessageIds = new Set();
|
|||||||
let unsubscribeCallbacks = [];
|
let unsubscribeCallbacks = [];
|
||||||
|
|
||||||
// 从路由参数中获取 sessionId
|
// 从路由参数中获取 sessionId
|
||||||
const routeSessionId = computed(() => route.query.sessionId);
|
const routeSessionId = computed(() => route.params.id || route.query.sessionId);
|
||||||
|
|
||||||
// 加载历史消息
|
// 加载历史消息
|
||||||
async function loadHistoryMessages(sessionId) {
|
async function loadHistoryMessages(sessionId) {
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ import { useRouter } from 'vue-router';
|
|||||||
import { useAppStore } from '@/stores/app';
|
import { useAppStore } from '@/stores/app';
|
||||||
import { useHistoryStore } from '@/stores/history';
|
import { useHistoryStore } from '@/stores/history';
|
||||||
import { Document, Plus, Promotion } from '@element-plus/icons-vue';
|
import { Document, Plus, Promotion } from '@element-plus/icons-vue';
|
||||||
|
import { ElMessage } from 'element-plus';
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
@@ -84,6 +85,11 @@ const isCreating = ref(false);
|
|||||||
|
|
||||||
// 处理发送消息
|
// 处理发送消息
|
||||||
async function handleSend() {
|
async function handleSend() {
|
||||||
|
// 检查 opencode 服务是否已启动
|
||||||
|
if (appStore.serviceStatus !== appStore.SERVICE_STATUS.RUNNING) {
|
||||||
|
ElMessage.warning('暂时没有运行的智能体');
|
||||||
|
return;
|
||||||
|
}
|
||||||
const text = inputText.value.trim();
|
const text = inputText.value.trim();
|
||||||
if (!text || isCreating.value) return;
|
if (!text || isCreating.value) return;
|
||||||
|
|
||||||
@@ -98,11 +104,9 @@ async function handleSend() {
|
|||||||
|
|
||||||
// 跳转到对话页面,并将消息文本带入 query
|
// 跳转到对话页面,并将消息文本带入 query
|
||||||
router.push({
|
router.push({
|
||||||
path: '/chat',
|
name: 'Chat',
|
||||||
query: {
|
params: { id: session.id },
|
||||||
sessionId: session.id,
|
query: { text: text },
|
||||||
text: text,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('创建会话失败:', err);
|
console.error('创建会话失败:', err);
|
||||||
|
|||||||
Reference in New Issue
Block a user