Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
inscode
NodeJS_639770
提交
c5310fa0
N
NodeJS_639770
项目概览
inscode
/
NodeJS_639770
与 Fork 源项目一致
Fork自
inscode / NodeJS
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
NodeJS_639770
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
c5310fa0
编写于
5月 22, 2024
作者:
View Design
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'main' of gitcode.com:git_bot/ai-fe
上级
a1fd24aa
0cf620a1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
125 addition
and
81 deletion
+125
-81
components/i/search/Content.vue
components/i/search/Content.vue
+115
-0
pages/search/[id].vue
pages/search/[id].vue
+10
-81
未找到文件。
components/i/search/Content.vue
浏览文件 @
c5310fa0
<
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
pages/search/[id].vue
浏览文件 @
c5310fa0
...
...
@@ -35,73 +35,14 @@
<div
class=
"grid"
v-if=
"index !== 0"
>
<h1
class=
"text-3xl"
:id=
"index + 1"
>
{{
item
.
question
}}
</h1>
</div>
<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(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
>
<ISearchContent
:item=
"item"
:source-count=
"sourceCount"
:asking=
"asking"
:is-last-index=
"data.length - 1 === index"
:index=
"index"
@
regenerate=
"handleReGenerate"
/>
<UDivider
v-if=
"index !== data.length - 1"
class=
"pt-3 pb-2"
/>
</
template
>
<ISearchRecommendQuestion
...
...
@@ -138,7 +79,6 @@ useHead({
// 是否停止自动滚动到底部
const
isAutoToBottom
=
ref
(
true
)
let
markedWindowScrollTop
=
0
const
handleScroll
=
(
event
,
params
)
=>
{
// 在asking操作的时候生效
if
(
!
asking
.
value
||
!
isAutoToBottom
.
value
)
return
...
...
@@ -146,8 +86,6 @@ const handleScroll = (event, params) => {
const
top
=
window
.
scrollY
;
if
(
top
<
y
.
value
)
{
isAutoToBottom
.
value
=
false
}
else
{
markedWindowScrollTop
=
top
}
})
}
...
...
@@ -166,23 +104,14 @@ const handleFocusTitle = () => {
const
handleBlurTitle
=
()
=>
{
isEditTitle
.
value
=
false
}
const
handleShare
=
(
hash
)
=>
{
useCopyToClipboard
().
copy
(
window
.
location
.
href
+
(
hash
?
'
#
'
+
hash
:
''
)
)
function
handleShare
()
{
useCopyToClipboard
().
copy
(
window
.
location
.
href
)
toast
.
add
({
icon
:
'
i-heroicons-information-circle-20-solid
'
,
timeout
:
2000
,
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
)
=>
{
editIndex
.
value
=
index
const
question
=
data
.
value
[
editIndex
.
value
].
question
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录