提交 c5310fa0 编写于 作者: View Design's avatar View Design

Merge branch 'main' of gitcode.com:git_bot/ai-fe

<template>
<UCard :ui="{ body: { padding: 'p-4 sm:p-4' } }">
<UAccordion :items="[{}]" default-open>
<template #default="{ open }">
<div class="flex justify-between items-center">
<div class="flex items-center gap-2 text-lg">
<UIcon name="i-heroicons-sparkles-20-solid" />
搜索过程
</div>
<UButton
size="md"
color="gray"
variant="ghost"
:icon="open ? 'i-heroicons-chevron-up-20-solid' : 'i-heroicons-chevron-down-20-solid'"
:ui="{ rounded: 'rounded-full' }"
/>
</div>
</template>
<template #item>
<div class="flex flex-col gap-2">
<div class="text-base flex items-center gap-1">
<UIcon name="i-heroicons-inbox-arrow-down" />
理解问题
</div>
<template v-if="item.desLoading">
<USkeleton class="h-4" />
<USkeleton class="h-4 w-2/3" />
</template>
<IMdMdc v-else :content="item.description" />
<template v-if="item.searchLoading !== undefined">
<div class="text-base flex items-center gap-1">
<UIcon name="i-heroicons-magnifying-glass" />
搜索项目
</div>
<template v-if="item.searchLoading">
<USkeleton class="h-4" />
<USkeleton class="h-4 w-2/3" />
</template>
<div class="text-xs pl-5" v-else>找到 {{ sourceCount }} 条来源</div>
</template>
<div class="text-base flex items-center gap-1" v-if="item.ansLoading !== undefined">
<UIcon name="i-heroicons-pencil-square" />
整理答案
</div>
</div>
</template>
</UAccordion>
</UCard>
<div class="text-xl flex items-center space-x-1" v-if="item.ansLoading !== undefined">
<UIcon name="i-heroicons-chat-bubble-left-right-20-solid" />
<span>{{ item.ansLoading ? '回答中' : '回答' }}</span>
</div>
<IMdMdc :content="item.article" />
<div class="space-x-2" v-if="item.showActions">
<UButton size="xs" color="gray" @click="handleCopyMD" leading-icon="i-heroicons-document-duplicate-20-solid" label="复制" />
<UButton size="xs" color="gray" @click="handleShare" leading-icon="i-heroicons-share-20-solid" label="分享" />
<UButton v-if="isLastIndex" size="xs" color="gray" @click="handleReGenerate" leading-icon="i-heroicons-arrow-path-rounded-square-20-solid" label="重写" />
</div>
<template v-if="!asking && item.source && item.source.length > 0">
<div class="text-xl flex items-center space-x-1">
<UIcon name="i-heroicons-link-20-solid" />
<span>来源</span>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4">
<ISearchSource :source="item.source" />
</div>
</template>
</template>
<script setup>
const toast = useToast()
const props = defineProps({
item: {
type: Object,
default: (() => {})
},
sourceCount: {
type: Number,
default: 0
},
asking: {
type: Boolean,
default: false
},
isLastIndex: {
type: Boolean,
default: false
},
index: {
type: Number,
default: 0
}
})
const emits = defineEmits(['regenerate'])
function handleReGenerate () {
emits('regenerate', props.index)
}
function handleCopyMD () {
useCopyToClipboard().copy(props.item.article)
toast.add({
icon: 'i-heroicons-information-circle-20-solid',
timeout: 1000,
title: '复制成功'
})
}
function handleShare () {
const hash = props.index + 1;
useCopyToClipboard().copy(window.location.href + (hash ? '#' + hash : ''))
toast.add({
icon: 'i-heroicons-information-circle-20-solid',
timeout: 2000,
title: '链接已复制到剪贴板'
})
}
</script>
\ No newline at end of file
...@@ -35,73 +35,14 @@ ...@@ -35,73 +35,14 @@
<div class="grid" v-if="index !== 0"> <div class="grid" v-if="index !== 0">
<h1 class="text-3xl" :id="index + 1">{{ item.question }}</h1> <h1 class="text-3xl" :id="index + 1">{{ item.question }}</h1>
</div> </div>
<UCard :ui="{ body: { padding: 'p-4 sm:p-4' } }"> <ISearchContent
<UAccordion :items="[{}]" default-open> :item="item"
<template #default="{ open }"> :source-count="sourceCount"
<div class="flex justify-between items-center"> :asking="asking"
<div class="flex items-center gap-2 text-lg"> :is-last-index="data.length - 1 === index"
<UIcon name="i-heroicons-sparkles-20-solid" /> :index="index"
搜索过程 @regenerate="handleReGenerate"
</div>
<UButton
size="md"
color="gray"
variant="ghost"
:icon="open ? 'i-heroicons-chevron-up-20-solid' : 'i-heroicons-chevron-down-20-solid'"
:ui="{ rounded: 'rounded-full' }"
/> />
</div>
</template>
<template #item>
<div class="flex flex-col gap-2">
<div class="text-base flex items-center gap-1">
<UIcon name="i-heroicons-inbox-arrow-down" />
理解问题
</div>
<template v-if="item.desLoading">
<USkeleton class="h-4" />
<USkeleton class="h-4 w-2/3" />
</template>
<IMdMdc v-else :content="item.description" />
<template v-if="item.searchLoading !== undefined">
<div class="text-base flex items-center gap-1">
<UIcon name="i-heroicons-magnifying-glass" />
搜索项目
</div>
<template v-if="item.searchLoading">
<USkeleton class="h-4" />
<USkeleton class="h-4 w-2/3" />
</template>
<div class="text-xs pl-5" v-else>找到 {{ sourceCount }} 条来源</div>
</template>
<div class="text-base flex items-center gap-1" v-if="item.ansLoading !== undefined">
<UIcon name="i-heroicons-pencil-square" />
整理答案
</div>
</div>
</template>
</UAccordion>
</UCard>
<div class="text-xl flex items-center space-x-1" v-if="item.ansLoading !== undefined">
<UIcon name="i-heroicons-chat-bubble-left-right-20-solid" />
<span>{{ item.ansLoading ? '回答中' : '回答' }}</span>
</div>
<IMdMdc :content="item.article" />
<div class="space-x-2" v-if="item.showActions">
<UButton size="xs" color="gray" @click="handleCopyMD(index)" leading-icon="i-heroicons-document-duplicate-20-solid" label="复制" />
<UButton size="xs" color="gray" @click="handleShare(index + 1)" leading-icon="i-heroicons-share-20-solid" label="分享" />
<UButton v-if="index === data.length - 1" size="xs" color="gray" @click="handleReGenerate(index)" leading-icon="i-heroicons-arrow-path-rounded-square-20-solid" label="重写" />
</div>
<template v-if="!asking && item.source && item.source.length > 0">
<div class="text-xl flex items-center space-x-1">
<UIcon name="i-heroicons-link-20-solid" />
<span>来源</span>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4">
<ISearchSource :source="item.source" />
</div>
</template>
<UDivider v-if="index !== data.length - 1" class="pt-3 pb-2" /> <UDivider v-if="index !== data.length - 1" class="pt-3 pb-2" />
</template> </template>
<ISearchRecommendQuestion <ISearchRecommendQuestion
...@@ -138,7 +79,6 @@ useHead({ ...@@ -138,7 +79,6 @@ useHead({
// 是否停止自动滚动到底部 // 是否停止自动滚动到底部
const isAutoToBottom = ref(true) const isAutoToBottom = ref(true)
let markedWindowScrollTop = 0
const handleScroll = (event, params) => { const handleScroll = (event, params) => {
// 在asking操作的时候生效 // 在asking操作的时候生效
if (!asking.value || !isAutoToBottom.value) return if (!asking.value || !isAutoToBottom.value) return
...@@ -146,8 +86,6 @@ const handleScroll = (event, params) => { ...@@ -146,8 +86,6 @@ const handleScroll = (event, params) => {
const top = window.scrollY; const top = window.scrollY;
if (top < y.value) { if (top < y.value) {
isAutoToBottom.value = false isAutoToBottom.value = false
} else {
markedWindowScrollTop = top
} }
}) })
} }
...@@ -166,23 +104,14 @@ const handleFocusTitle = () => { ...@@ -166,23 +104,14 @@ const handleFocusTitle = () => {
const handleBlurTitle = () => { const handleBlurTitle = () => {
isEditTitle.value = false isEditTitle.value = false
} }
const handleShare = (hash) => { function handleShare () {
useCopyToClipboard().copy(window.location.href + (hash ? '#' + hash : '')) useCopyToClipboard().copy(window.location.href)
toast.add({ toast.add({
icon: 'i-heroicons-information-circle-20-solid', icon: 'i-heroicons-information-circle-20-solid',
timeout: 2000, timeout: 2000,
title: '链接已复制到剪贴板' title: '链接已复制到剪贴板'
}) })
} }
const handleCopyMD = (index) => {
const article = data.value[index].article
useCopyToClipboard().copy(article)
toast.add({
icon: 'i-heroicons-information-circle-20-solid',
timeout: 1000,
title: '复制成功'
})
}
const handleReGenerate = (index) => { const handleReGenerate = (index) => {
editIndex.value = index editIndex.value = index
const question = data.value[editIndex.value].question const question = data.value[editIndex.value].question
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册