From 15626757b268a23f5643ee58c5ca3ebb42f6ab83 Mon Sep 17 00:00:00 2001 From: "X1627315083@163.com" <1627315083@qq.com> Date: Mon, 2 Mar 2026 10:55:57 +0800 Subject: [PATCH 1/7] ifx --- .../agent/components/versionTree/tree/view2/secondaryNode.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/home/agent/components/versionTree/tree/view2/secondaryNode.vue b/src/views/home/agent/components/versionTree/tree/view2/secondaryNode.vue index f65663f..a33c2e9 100644 --- a/src/views/home/agent/components/versionTree/tree/view2/secondaryNode.vue +++ b/src/views/home/agent/components/versionTree/tree/view2/secondaryNode.vue @@ -25,7 +25,7 @@ const props = defineProps<{
- +
From bd0a5a8c6bb1f5dbf202213a9d1978c30b984856 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Mon, 2 Mar 2026 11:29:07 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat:=20=E4=BC=9A=E8=AF=9D=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E5=9B=9E=E6=BA=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/agent.ts | 2 +- src/api/versitonTree.ts | 2 +- src/stores/agent.ts | 2 +- src/views/home/agent/components/Agent.vue | 47 ++++++++++++++++++++--- src/views/home/agent/components/Item.vue | 3 ++ src/views/home/agent/index.vue | 39 +++++++++++++------ src/views/home/components/Input.vue | 2 +- 7 files changed, 76 insertions(+), 21 deletions(-) diff --git a/src/api/agent.ts b/src/api/agent.ts index 4858085..4ea71b0 100644 --- a/src/api/agent.ts +++ b/src/api/agent.ts @@ -29,7 +29,7 @@ export const createProject = (data: CreateProjectParamsType): Promise => { } /** - * 获取项目信息 + * 获取项目信息和会话历史 * @param data 获取项目信息参数 * @param data.id 项目id * @returns 获取项目信息 diff --git a/src/api/versitonTree.ts b/src/api/versitonTree.ts index d175f03..52995eb 100644 --- a/src/api/versitonTree.ts +++ b/src/api/versitonTree.ts @@ -32,7 +32,7 @@ export const versionTree = (data) => { * @param data 获取节点缩略信息的参数 * @param data.projectId 项目id * @param data.id 节点id - * @returns 获取节点缩略信息 + * @returns 回溯该节点之前的会话列表 */ export const getNodeAncestors = (data) => { return request({ diff --git a/src/stores/agent.ts b/src/stores/agent.ts index cd26e89..658e586 100644 --- a/src/stores/agent.ts +++ b/src/stores/agent.ts @@ -14,7 +14,7 @@ export const useAgentStore = defineStore('agent', () => { type: string area: string style: string - } | null>(null) + } | null>(null) // 保存项目初始数据 const setInitialProjectData = (data: { diff --git a/src/views/home/agent/components/Agent.vue b/src/views/home/agent/components/Agent.vue index 8102bcd..ef6d064 100644 --- a/src/views/home/agent/components/Agent.vue +++ b/src/views/home/agent/components/Agent.vue @@ -67,8 +67,6 @@ watch( sketchList, (newVal) => { - console.log('添加图片链接--------') - emits('update:sketchList', newVal) }, { deep: true } @@ -120,7 +118,7 @@ }, skipUserMessage = false ) => { - console.log('Message sent:', message) + // console.log('Message sent:', message) isPaused.value = false isGenerating.value = true params.message = message.text @@ -213,7 +211,7 @@ while (flag) { const { done, value } = await reader.read() if (done) { - console.log('传输结束 end---', contentBody) + // console.log('传输结束 end---', contentBody) aiMessage.streaming = false aiMessage.loading = false isGenerating.value = false @@ -361,8 +359,47 @@ ) } + const setChatInfo = (data) => { + // messageList.value = list + const { ancestors, current } = data + const imgList = [] + const ancestorsList = [] + if (ancestors) { + ancestors.forEach((item) => { + const list = item.dialogue.map((el, index) => { + if (el.image_url) { + imgList.push(el.image_url) + } + return { + ...el, + text: el.content, + isUser: el.role === 'user', + id: index + 1 + } + }) + ancestorsList.push(...list) + }) + } + const currentList = current.dialogue.map((item, index) => { + if (item.image_url) { + imgList.push(item.image_url) + } + return { + ...item, + text: item.content, + isUser: item.role === 'user', + id: index + 1 + ancestorsList.length + } + }) + messageList.value = [...ancestorsList, ...currentList] + params.versionID = current.id + sketchList.value = imgList + // console.log('messagelist:', messageList.value) + // debugger + } + defineExpose({ - inputRef + setChatInfo }) diff --git a/src/views/home/agent/components/Item.vue b/src/views/home/agent/components/Item.vue index bd59fd9..36a6cf9 100644 --- a/src/views/home/agent/components/Item.vue +++ b/src/views/home/agent/components/Item.vue @@ -221,5 +221,8 @@ ul { list-style-position: inside; } + code { + white-space: pre-wrap; + } } diff --git a/src/views/home/agent/index.vue b/src/views/home/agent/index.vue index 1033538..cf8a1da 100644 --- a/src/views/home/agent/index.vue +++ b/src/views/home/agent/index.vue @@ -13,6 +13,7 @@ ref="VersionTreeIndexRef" v-model:versionTreeData="versionTreeData" @restore="handleRestore" + @selectNode="handleSelectNode" /> @@ -24,13 +25,14 @@ import VersionTreeIndex from './components/versionTree/index.vue' import { useProjectStore } from '@/stores' import { getProjectInfo } from '@/api/agent' + import { clearNodeChat, getNodeAncestors } from '@/api/versitonTree' import { useRoute } from 'vue-router' + const route = useRoute() + const projectStore = useProjectStore() const agentTitle = ref('Retro Sofa Sketch') const previewType = ref<'sketch' | 'report'>('sketch') - const route = useRoute() - const VersionTreeIndexRef = ref() const agentRef = ref() const sketchList = ref([]) @@ -45,20 +47,37 @@ }) const handleRestore = () => { - console.log('-----------', agentRef.value.inputRef.addReportTag) + // agentRef.value?.inputRef?.addReportTag('Restore') + clearNodeChat({ projectId: projectStore.state.id, id: projectStore.state.nodeId }).then( + (res) => {} + ) + } + const handleSelectNode = () => { + console.log('handleSelectNode') + getNodeAncestors({ projectId: projectStore.state.id, id: projectStore.state.nodeId }).then( + (res) => { + console.log('res', res) + agentRef.value.setChatInfo(res) + } + ) + } - agentRef.value?.inputRef?.addReportTag('Restore') + const handleGetProjectInfoAndHistory = () => { + getProjectInfo({ id: projectStore.state.id }).then((res) => { + // console.log('1111111',res); + agentRef.value.setChatInfo(res.conversation) + projectStore.setProject(res.project) + }) } const proJectId = computed(() => route.params.id) - const projectStore = useProjectStore() + watch( () => proJectId.value, (newVal, oldVal) => { if (newVal) { projectStore.clearProject() projectStore.setId(newVal) - } } ) @@ -66,18 +85,14 @@ () => projectStore.state.id, (newVal, oldVal) => { if (newVal) { - getProjectInfo({ id: newVal }).then((res) => { - projectStore.setProject(res.project) - }) + handleGetProjectInfoAndHistory() } } ) onMounted(() => { if (projectStore.state.id) { - getProjectInfo({ id: projectStore.state.id }).then((res) => { - projectStore.setProject(res.project) - }) + handleGetProjectInfoAndHistory() } }) diff --git a/src/views/home/components/Input.vue b/src/views/home/components/Input.vue index 9802681..963c598 100644 --- a/src/views/home/components/Input.vue +++ b/src/views/home/components/Input.vue @@ -573,7 +573,7 @@ }) // console.log('Create project with:', params) - router.push('/home/agent', { query: params }) + router.push(`/home/agent/${projectres}`, { query: params }) } // 暴露方法给父组件 From 1d318f4094d16e5820497f67d5e6196a153f4821 Mon Sep 17 00:00:00 2001 From: "X1627315083@163.com" <1627315083@qq.com> Date: Mon, 2 Mar 2026 11:45:40 +0800 Subject: [PATCH 3/7] fix --- .../home/agent/components/versionTree/tree/view2/index.vue | 7 ++++++- src/views/home/agent/index.vue | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/views/home/agent/components/versionTree/tree/view2/index.vue b/src/views/home/agent/components/versionTree/tree/view2/index.vue index c93a3b1..d1770f4 100644 --- a/src/views/home/agent/components/versionTree/tree/view2/index.vue +++ b/src/views/home/agent/components/versionTree/tree/view2/index.vue @@ -125,7 +125,7 @@ defineExpose({push}) -->
-
+
@@ -225,6 +225,11 @@ defineExpose({push}) margin-bottom: 2rem; background-color: #ffffff; cursor: pointer; + pointer-events: none; + &.active{ + background-color: #f5f5f5; + pointer-events: auto; + } &:hover{ background-color: #f5f5f5; } diff --git a/src/views/home/agent/index.vue b/src/views/home/agent/index.vue index cf8a1da..1c8a4ce 100644 --- a/src/views/home/agent/index.vue +++ b/src/views/home/agent/index.vue @@ -66,7 +66,11 @@ getProjectInfo({ id: projectStore.state.id }).then((res) => { // console.log('1111111',res); agentRef.value.setChatInfo(res.conversation) - projectStore.setProject(res.project) + let data = res.project + if(data.latestNodeId)data.nodeId = data.latestNodeId + projectStore.setProject({ + ...data, + }) }) } From 4857376736247da4388dc8f4966955f7d458727c Mon Sep 17 00:00:00 2001 From: "X1627315083@163.com" <1627315083@qq.com> Date: Mon, 2 Mar 2026 13:40:17 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=B9=E8=AF=9D?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=B2=A1=E6=9C=89=E6=9B=B4=E6=96=B0=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent/components/versionTree/index.vue | 3 ++- .../components/versionTree/tree/index.vue | 5 ----- .../versionTree/tree/view2/index.vue | 2 +- src/views/home/agent/index.vue | 22 ++++++------------- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/views/home/agent/components/versionTree/index.vue b/src/views/home/agent/components/versionTree/index.vue index 7f71d0e..4bab113 100644 --- a/src/views/home/agent/components/versionTree/index.vue +++ b/src/views/home/agent/components/versionTree/index.vue @@ -29,7 +29,7 @@ const projectStore = useProjectStore() let oldProjectId:any = '' watch(()=>props.versionTreeData?.drawer, (newVal, oldVal) => { console.log(newVal,oldProjectId,projectStore.state.id) - if(newVal && oldProjectId !== projectStore.state.id && projectStore.state.id){ + if(newVal || (oldProjectId !== projectStore.state.id && projectStore.state.id)){ getVersionTree() oldProjectId = JSON.parse(JSON.stringify(projectStore.state.id)) } @@ -41,6 +41,7 @@ const getVersionTree = ()=>{ }).then(res => { if(!res)return setVersionsList([res]) + treeKey.value++ }) } diff --git a/src/views/home/agent/components/versionTree/tree/index.vue b/src/views/home/agent/components/versionTree/tree/index.vue index f3650fe..6713261 100644 --- a/src/views/home/agent/components/versionTree/tree/index.vue +++ b/src/views/home/agent/components/versionTree/tree/index.vue @@ -73,7 +73,6 @@ const initialize = ()=>{ const setSelectItem = (item)=>{ if(!item.versionId)return - console.log(item) projectStore.setProject({nodeId: item.id}) emit('update:selectItem', {...item}) emit('selectNode') @@ -97,10 +96,6 @@ watch(()=>treeStateTime.value,(newVal,oldVal)=>{ } }) -watch(()=>props.selectItem,(newVal,oldVal)=>{ - // scrollToActive() -},{immediate: true}) - onMounted(()=>{ initialize() }) diff --git a/src/views/home/agent/components/versionTree/tree/view2/index.vue b/src/views/home/agent/components/versionTree/tree/view2/index.vue index d1770f4..9db3f8a 100644 --- a/src/views/home/agent/components/versionTree/tree/view2/index.vue +++ b/src/views/home/agent/components/versionTree/tree/view2/index.vue @@ -125,7 +125,7 @@ defineExpose({push}) -->
-
+
diff --git a/src/views/home/agent/index.vue b/src/views/home/agent/index.vue index 1c8a4ce..c902340 100644 --- a/src/views/home/agent/index.vue +++ b/src/views/home/agent/index.vue @@ -63,11 +63,10 @@ } const handleGetProjectInfoAndHistory = () => { - getProjectInfo({ id: projectStore.state.id }).then((res) => { - // console.log('1111111',res); - agentRef.value.setChatInfo(res.conversation) - let data = res.project - if(data.latestNodeId)data.nodeId = data.latestNodeId + getProjectInfo({ id: route.params.id }).then((res) => { + if(res?.conversation)agentRef.value.setChatInfo(res.conversation) + let data = res?.project || res + if(data?.latestNodeId)data.nodeId = data.latestNodeId projectStore.setProject({ ...data, }) @@ -79,15 +78,7 @@ watch( () => proJectId.value, (newVal, oldVal) => { - if (newVal) { - projectStore.clearProject() - projectStore.setId(newVal) - } - } - ) - watch( - () => projectStore.state.id, - (newVal, oldVal) => { + projectStore.clearProject() if (newVal) { handleGetProjectInfoAndHistory() } @@ -95,7 +86,8 @@ ) onMounted(() => { - if (projectStore.state.id) { + projectStore.clearProject() + if (proJectId.value) { handleGetProjectInfoAndHistory() } }) From c0fa621ecce43cfb9365be6ece0e83fa84fb74c4 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Mon, 2 Mar 2026 13:40:34 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat:=20=E6=96=87=E4=BB=B6=E9=95=BF?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/upload.ts | 7 ++++++ src/views/home/components/Input.vue | 39 ++++++++++++++++------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/api/upload.ts b/src/api/upload.ts index d95ed38..9cd07a6 100644 --- a/src/api/upload.ts +++ b/src/api/upload.ts @@ -1,2 +1,9 @@ import request from '@/utils/request' +export const uploadImage = (data: FormData) => { + return request({ + url: '/api/file/upload', + method: 'POST', + data + }) +} diff --git a/src/views/home/components/Input.vue b/src/views/home/components/Input.vue index 963c598..e9aeb18 100644 --- a/src/views/home/components/Input.vue +++ b/src/views/home/components/Input.vue @@ -188,6 +188,7 @@ import restoreCloseIcon from '@/assets/images/tag-close.png' import { createProject } from '@/api/agent' import { getStyleImage } from './style' + import { uploadImage } from '@/api/upload' // import Tag from './Tag.vue' const router = useRouter() @@ -221,18 +222,26 @@ // 处理文件选择 const handleFileChange = (event: Event) => { const input = event.target as HTMLInputElement + if (input.files) { Array.from(input.files).forEach((file) => { // 只处理图片文件 if (file.type.startsWith('image/')) { - const reader = new FileReader() - reader.onload = (e) => { - uploadedImages.value.push({ - url: e.target?.result as string, - name: file.name - }) - } - reader.readAsDataURL(file) + const formData = new FormData() + formData.append('file', file) + uploadImage(formData).then((res) => { + console.log(res) + + const reader = new FileReader() + reader.onload = (e) => { + uploadedImages.value.push({ + url: e.target?.result as string, + name: file.name, + path: res + }) + } + reader.readAsDataURL(file) + }) } }) } @@ -293,7 +302,6 @@ imgClose.src = closeIcon as unknown as string } - textSpan.innerText = tagText imgClose.addEventListener('click', (ev) => { @@ -467,19 +475,15 @@ } const handleSendAgent = async () => { - console.log('发送信息--------') - if (props.generating) { emits('pause') return } if (!inputValue.value.trim()) return - console.log('222222') + const imageUrlList = uploadedImages.value.map((item) => item.path) - const payload = { text: inputValue.value.trim(), images: uploadedImages.value } - console.log('准备发送 send 事件', payload) + const payload = { text: inputValue.value.trim(), images: imageUrlList } emits('send', payload) - console.log('send 事件已发送') // 发送后清空输入框 if (editorRef.value) { @@ -1056,15 +1060,14 @@ height: 1rem; cursor: pointer; flex-shrink: 0; - &.restore{ + &.restore { width: 0.5rem; height: 0.5rem; } } - .restore-icon{ + .restore-icon { width: 1.2rem; height: 1.2rem; } - } From 4aa0ef3fd5dd1bfbff442350862e571a5707c8c6 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Mon, 2 Mar 2026 13:44:10 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat:=20=E5=AF=B9=E8=AF=9D=E4=B8=AD?= =?UTF-8?q?=E4=BA=A7=E7=94=9F=E6=96=B0=E7=9A=84nodeId=E6=97=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=88=B0store?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/home/agent/components/Agent.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/home/agent/components/Agent.vue b/src/views/home/agent/components/Agent.vue index ef6d064..56b9c70 100644 --- a/src/views/home/agent/components/Agent.vue +++ b/src/views/home/agent/components/Agent.vue @@ -26,7 +26,7 @@ import Input from '../../components/Input.vue' import { fetchAgentReply } from '@/api/agent' import type { AgentParamsType } from '@/api/agent' - import { useUserInfoStore, useProjectStore } from '@/stores' + import { useUserInfoStore, useProjectStore, } from '@/stores' import { useAgentStore } from '@/stores/agent' const userStore = useUserInfoStore() @@ -252,6 +252,7 @@ // console.log('dataLInes', dataLines) if (isNodeIdEvent) { params.versionID = dataLines[0] + projectStore.setId({nodeId:dataLines[0]}) } if (dataLines.length === 0) continue From 8912e1fa740120899c7bf64be340896487fb04cc Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Mon, 2 Mar 2026 13:45:01 +0800 Subject: [PATCH 7/7] =?UTF-8?q?bugfix:=20nodeId=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/home/agent/components/Agent.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/home/agent/components/Agent.vue b/src/views/home/agent/components/Agent.vue index 56b9c70..c28f9c1 100644 --- a/src/views/home/agent/components/Agent.vue +++ b/src/views/home/agent/components/Agent.vue @@ -252,7 +252,7 @@ // console.log('dataLInes', dataLines) if (isNodeIdEvent) { params.versionID = dataLines[0] - projectStore.setId({nodeId:dataLines[0]}) + projectStore.setProject({nodeId:dataLines[0]}) } if (dataLines.length === 0) continue