From 635b1e9c3ad18706f0921322b2ac39ef813308d2 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Fri, 20 Mar 2026 17:07:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96sketch=E6=98=BE?= =?UTF-8?q?=E7=A4=BA&=E6=B7=BB=E5=8A=A0sketch=E5=8D=A1=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/icons/arrowDown.svg | 3 + src/assets/icons/checked.svg | 3 + src/assets/images/sketch-card.png | Bin 0 -> 3837 bytes src/lang/en.ts | 1 + src/lang/zh-cn.ts | 3 +- src/views/home/agent/components/Agent.vue | 15 +++- src/views/home/agent/components/Item.vue | 77 ++++++++++++---- src/views/home/agent/components/List.vue | 3 +- src/views/home/agent/components/Preview.vue | 82 +++++++++++++----- .../home/agent/components/ReportCard.vue | 22 +++-- .../home/agent/components/SketchCard.vue | 10 +++ src/views/home/components/Input.vue | 4 +- 12 files changed, 175 insertions(+), 48 deletions(-) create mode 100644 src/assets/icons/arrowDown.svg create mode 100644 src/assets/icons/checked.svg create mode 100644 src/assets/images/sketch-card.png create mode 100644 src/views/home/agent/components/SketchCard.vue diff --git a/src/assets/icons/arrowDown.svg b/src/assets/icons/arrowDown.svg new file mode 100644 index 0000000..bf1e98b --- /dev/null +++ b/src/assets/icons/arrowDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/checked.svg b/src/assets/icons/checked.svg new file mode 100644 index 0000000..661a55c --- /dev/null +++ b/src/assets/icons/checked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/sketch-card.png b/src/assets/images/sketch-card.png new file mode 100644 index 0000000000000000000000000000000000000000..2a9ec5f7fd226808da6a5bae6d0f90ee792fb9dd GIT binary patch literal 3837 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 } if (eventName === 'report') { reportsContent.value += jsonData.report @@ -575,6 +577,15 @@ // 延迟设置新数据,确保 UI 有时间响应清空操作 nextTick(() => { + // 找到每个 sessionId 对应的最后一项,插入sketch卡片 + const sessionLastIndexMap = new Map() + ancestorsList.forEach((item, index) => { + sessionLastIndexMap.set(item.sessionId, index) + }) + sessionLastIndexMap.forEach((lastIndex) => { + ancestorsList[lastIndex].text += '' + }) + messageList.value = [...ancestorsList] params.versionID = current?.id sketchList.value = imgList diff --git a/src/views/home/agent/components/Item.vue b/src/views/home/agent/components/Item.vue index fbc7638..1597d49 100644 --- a/src/views/home/agent/components/Item.vue +++ b/src/views/home/agent/components/Item.vue @@ -16,22 +16,40 @@ class="img-item" /> -
+ +
+ {{ + t('agent.thinking') + }} + + {{ + t('agent.thinkComplete') + }} +
+
-
+
{{ content.thinkingText }}
- + -->
- +
{ - props.content.thinkingCollapsed = !props.content.thinkingCollapsed + thinkingCollapsed.value = !thinkingCollapsed.value } const handleClickReport = () => { @@ -241,6 +263,9 @@ MyEvent.emit('openUrls', props.content.webAddress) // 点击显示来源 } + const handleClickSketch = () => { + MyEvent.emit('openSketch') + } \ No newline at end of file diff --git a/src/views/home/components/Input.vue b/src/views/home/components/Input.vue index 8918dac..f3062d1 100644 --- a/src/views/home/components/Input.vue +++ b/src/views/home/components/Input.vue @@ -465,7 +465,7 @@ // 打字机效果显示placeholder文本 const placeholderText = - 'Generate a furniture trending report for 2025, including popular styles and design directions.' + 'Generate a furniture trending report for 2026, including popular styles and design directions.' typeWriterEffect(placeholderSpan, placeholderText) const removePlaceholderOnInput = () => { @@ -1378,6 +1378,7 @@ .agent-modal { // width: 14.6rem; // height: 8.5rem; + row-gap: 1.2rem; font-family: 'Medium'; font-weight: 500; @@ -1388,6 +1389,7 @@ box-shadow: 0px 6.53px 32.63px 0px #0000000d; border-radius: 1rem; padding: 1.2rem 1.4rem; + transform: translateX(calc(50% - 1.6rem)); .c-svg { width: initial; width: 1rem;