diff --git a/frontend/src/components.d.ts b/frontend/src/components.d.ts index 4fb06c4..799b75b 100644 --- a/frontend/src/components.d.ts +++ b/frontend/src/components.d.ts @@ -8,6 +8,7 @@ export {} declare module 'vue' { export interface GlobalComponents { AdvancedSearchPanel: typeof import('./components/search/AdvancedSearchPanel.vue')['default'] + DisplaySettingsPopover: typeof import('./components/literature/DisplaySettingsPopover.vue')['default'] LiteratureCard: typeof import('./components/literature/LiteratureCard.vue')['default'] LiteraturePreviewDrawer: typeof import('./components/literature/LiteraturePreviewDrawer.vue')['default'] NDescriptionsItem: typeof import('naive-ui')['NDescriptionsItem'] diff --git a/frontend/src/components/literature/DisplaySettingsPopover.vue b/frontend/src/components/literature/DisplaySettingsPopover.vue new file mode 100644 index 0000000..7c71feb --- /dev/null +++ b/frontend/src/components/literature/DisplaySettingsPopover.vue @@ -0,0 +1,29 @@ + + + + + + + + 显示设置 + + 作者 + 机构 + 期刊+分区 + PMID + DOI + 研究类型+OA+NCT + MeSH 标签 + 被引次数 + AI 摘要 + 徽章 + 操作按钮 + + + diff --git a/frontend/src/views/app/SearchView.vue b/frontend/src/views/app/SearchView.vue index 817c39f..4bbec39 100644 --- a/frontend/src/views/app/SearchView.vue +++ b/frontend/src/views/app/SearchView.vue @@ -2,8 +2,8 @@ import { ref, computed, onMounted, onUnmounted, watch } from 'vue' import { useRouter, useRoute, onBeforeRouteUpdate } from 'vue-router' import { useAuthStore } from '../../stores/auth' -import { NInput, NButton, NEmpty, NSelect, NCheckboxGroup, NCheckbox, NPagination, NIcon, NRadioGroup, NRadio, NSlider, NModal, NPopover } from 'naive-ui' -import { SearchOutline, FilterOutline, EyeOffOutline, SettingsOutline } from '@vicons/ionicons5' +import { NInput, NButton, NEmpty, NSelect, NCheckboxGroup, NCheckbox, NPagination, NIcon, NRadioGroup, NRadio, NSlider, NModal } from 'naive-ui' +import { SearchOutline, FilterOutline, EyeOffOutline } from '@vicons/ionicons5' import { api } from '../../api/client' import { useToast } from '../../composables/useToast' import { useLiteraturePreview } from '../../composables/useLiteraturePreview' @@ -13,6 +13,7 @@ import { trackAction } from '../../composables/useAnalytics' import PageSkeleton from '../../components/common/PageSkeleton.vue' import LiteratureCard from '../../components/literature/LiteratureCard.vue' import LiteraturePreviewDrawer from '../../components/literature/LiteraturePreviewDrawer.vue' +import DisplaySettingsPopover from '../../components/literature/DisplaySettingsPopover.vue' import type { LiteratureItem, TagOption, SearchRequestBody, SavedFilter } from '../../types' const router = useRouter(); const route = useRoute() @@ -903,25 +904,7 @@ const specialTags = computed(() => filterOptions.value?.special_tags || {}) {label:'20条/页',value:20}, {label:'50条/页',value:50}, ]" size="tiny" style="width:100px" /> - - - - - 显示设置 - - 作者 - 机构 - 期刊+分区 - PMID - DOI - 研究类型+OA+NCT - MeSH 标签 - 被引次数 - AI 摘要 - 徽章 - 操作按钮 - - + diff --git a/frontend/src/views/public/HomeView.vue b/frontend/src/views/public/HomeView.vue index d8fba97..2302966 100644 --- a/frontend/src/views/public/HomeView.vue +++ b/frontend/src/views/public/HomeView.vue @@ -8,13 +8,16 @@ import { useAuthStore } from '../../stores/auth' import { useToast } from '../../composables/useToast' import { trackAction } from '../../composables/useAnalytics' import { useLiteraturePreview } from '../../composables/useLiteraturePreview' +import { useDisplaySettings } from '../../composables/useDisplaySettings' import PageSkeleton from '../../components/common/PageSkeleton.vue' +import DisplaySettingsPopover from '../../components/literature/DisplaySettingsPopover.vue' import type { LiteratureItem, TagOption } from '../../types' const router = useRouter() const route = useRoute() const auth = useAuthStore() const toast = useToast() +const displaySettings = useDisplaySettings() // ── 搜索状态(统一数据源) ── const searchParams = ref({ @@ -502,6 +505,10 @@ onBeforeUnmount(() => { + + 最新文献 + + 共 0 条结果 @@ -518,6 +525,7 @@ onBeforeUnmount(() => { :showSave="auth.isAuthenticated" :savedPmids="savedPmids" :searchQuery="searchParams.query" + :displaySettings="displaySettings" @detail="goDetail" @preview="openPreview" @save="saveLiterature" @@ -620,6 +628,7 @@ onBeforeUnmount(() => { .home { max-width: 1100px; margin: 0 auto; padding: 0 24px; color: var(--text-primary); } .section { padding: 3px 0; } .section-list { padding-bottom: 16px; } +.list-header { display: flex; align-items: center; justify-content: space-between; font-size: 14px; font-weight: 600; color: var(--text-primary); margin-bottom: 8px; } .section-cta { padding: 12px 0 24px; } /* 内容网格:文献列表 + 热榜侧栏 */