From 9566c6e0c4f645a3118e865eeb7b3b0813aa0c4a Mon Sep 17 00:00:00 2001 From: MT-Mint <798521692@qq.com> Date: Wed, 25 Mar 2026 15:38:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=86=E4=BA=AB=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E7=8B=AC=E7=AB=8B=E8=B7=AF=E7=94=B1=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 vue-router,配置 / 和 /share/:id 两个路由 - 新增 ShareView.vue 独立页面,复用 MessageBubble 组件渲染消息 - 新增 HomeView.vue 提取主应用逻辑 - 分享链接格式改为 /chat-ui/share/{id} - 删除废弃的 ShareViewModal.vue 对话框组件 - 清理 settingsStore 中废弃的 showShareViewModal 状态 Co-Authored-By: Claude Opus 4.6 --- src/App.vue | 110 +--- src/components/modals/ShareModal.vue | 9 +- src/components/modals/ShareResultModal.vue | 2 - src/components/modals/ShareViewModal.vue | 550 ------------------- src/components/sidebar/ConversationItem.vue | 6 - src/components/sidebar/ShareButton.vue | 1 - src/main.ts | 4 + src/router/index.ts | 20 + src/services/shareApi.ts | 1 - src/stores/settings.ts | 12 - src/views/HomeView.vue | 90 +++ src/views/ShareView.vue | 571 ++++++++++++++++++++ 12 files changed, 695 insertions(+), 681 deletions(-) delete mode 100644 src/components/modals/ShareViewModal.vue create mode 100644 src/router/index.ts create mode 100644 src/views/HomeView.vue create mode 100644 src/views/ShareView.vue diff --git a/src/App.vue b/src/App.vue index bf2cdc9..f41da5c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,19 +1,6 @@ @@ -249,4 +147,4 @@ window.$toast = showToast; .toast-move { transition: transform 0.3s ease; } - + \ No newline at end of file diff --git a/src/components/modals/ShareModal.vue b/src/components/modals/ShareModal.vue index 9f623c5..fbcec89 100644 --- a/src/components/modals/ShareModal.vue +++ b/src/components/modals/ShareModal.vue @@ -143,15 +143,18 @@ async function handleCreateShare() { }); // 关闭当前模态框,打开结果模态框 - handleClose(); + handleClose() + + // 前端生成分享 URL + const shareUrl = `${window.location.origin}/chat-ui/share/${result.id}` // 存储分享信息并打开结果模态框 settingsStore.setShareResult({ shareId: result.id, - shareUrl: result.shareUrl, + shareUrl, password: password.value, expiresAt: result.expiresAt, - }); + }) settingsStore.openShareResultModal(); // 清空密码和退出选择模式 diff --git a/src/components/modals/ShareResultModal.vue b/src/components/modals/ShareResultModal.vue index f9d13cf..228c750 100644 --- a/src/components/modals/ShareResultModal.vue +++ b/src/components/modals/ShareResultModal.vue @@ -95,8 +95,6 @@ const shareUrl = computed(() => shareResult.value?.shareUrl || ''); const password = computed(() => shareResult.value?.password || ''); const expiresAt = computed(() => shareResult.value?.expiresAt || 0); -const linkInput = ref(null); -const passwordInput = ref(null); const linkCopied = ref(false); const passwordCopied = ref(false); diff --git a/src/components/modals/ShareViewModal.vue b/src/components/modals/ShareViewModal.vue deleted file mode 100644 index ef06d44..0000000 --- a/src/components/modals/ShareViewModal.vue +++ /dev/null @@ -1,550 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/sidebar/ConversationItem.vue b/src/components/sidebar/ConversationItem.vue index 716ea52..f9f2a37 100644 --- a/src/components/sidebar/ConversationItem.vue +++ b/src/components/sidebar/ConversationItem.vue @@ -117,12 +117,6 @@ function handleToggleSelect() { emit("toggleSelect", props.conversation.id); } -function handleSelect() { - if (!isEditing.value) { - emit("select", props.conversation.id); - } -} - function handleTogglePin() { emit("togglePin", props.conversation.id); } diff --git a/src/components/sidebar/ShareButton.vue b/src/components/sidebar/ShareButton.vue index 71f8c3e..0d9ab1d 100644 --- a/src/components/sidebar/ShareButton.vue +++ b/src/components/sidebar/ShareButton.vue @@ -31,7 +31,6 @@ + + \ No newline at end of file diff --git a/src/views/ShareView.vue b/src/views/ShareView.vue new file mode 100644 index 0000000..edf6c87 --- /dev/null +++ b/src/views/ShareView.vue @@ -0,0 +1,571 @@ + + + + + \ No newline at end of file