diff --git a/db/repo/resource_repository.go b/db/repo/resource_repository.go
index 111ec54..1045c62 100644
--- a/db/repo/resource_repository.go
+++ b/db/repo/resource_repository.go
@@ -239,9 +239,28 @@ func (r *ResourceRepositoryImpl) SearchWithFilters(params map[string]interface{}
Where("resource_tags.tag_id = ?", tagEntity.ID)
}
}
+ case "pan_id": // 添加pan_id参数支持
+ if panID, ok := value.(uint); ok {
+ db = db.Where("pan_id = ?", panID)
+ }
+ case "is_valid":
+ if isValid, ok := value.(bool); ok {
+ db = db.Where("is_valid = ?", isValid)
+ }
+ case "is_public":
+ if isPublic, ok := value.(bool); ok {
+ db = db.Where("is_public = ?", isPublic)
+ }
}
}
- db = db.Where("is_valid = true and is_public = true")
+
+ // 如果没有明确指定is_valid和is_public,则默认只显示有效的公开资源
+ if _, hasIsValid := params["is_valid"]; !hasIsValid {
+ db = db.Where("is_valid = ?", true)
+ }
+ if _, hasIsPublic := params["is_public"]; !hasIsPublic {
+ db = db.Where("is_public = ?", true)
+ }
// 获取总数
if err := db.Count(&total).Error; err != nil {
diff --git a/web/pages/index.vue b/web/pages/index.vue
index d7b8b81..fc5f9de 100644
--- a/web/pages/index.vue
+++ b/web/pages/index.vue
@@ -58,29 +58,31 @@
-
+
-
-
+
+
@@ -163,61 +165,9 @@
-
-
-
-
+
-
-
-
-
-
-
-
-
- ...
-
-
-
-
-
@@ -275,17 +225,9 @@ const route = useRoute()
const router = useRouter()
// 响应式数据
-const initSerch = route.query.search || ''
-const oldQuery = ref(initSerch)
-const searchQuery = ref(oldQuery)
-const currentPage = ref(parseInt(route.query.page as string) || 1)
-const pageSize = ref(200)
-const selectedPlatform = ref(route.query.platform as string || '')
const showLinkModal = ref(false)
const selectedResource = ref(null)
const authInitialized = ref(true) // 在app.vue中已经初始化,这里直接设为true
-const isLoadingMore = ref(false)
-const hasMoreData = ref(true)
const pageLoading = ref(false)
// 用户状态管理
@@ -293,12 +235,12 @@ const userStore = useUserStore()
// 使用 useAsyncData 获取资源数据
const { data: resourcesData, pending, refresh } = await useAsyncData(
- () => `resources-${currentPage.value}-${searchQuery.value}-${selectedPlatform.value}`,
+ () => `resources-1-${route.query.search || ''}-${route.query.platform || ''}`,
() => resourceApi.getResources({
- page: currentPage.value,
- page_size: pageSize.value,
- search: searchQuery.value,
- pan_id: selectedPlatform.value
+ page: 1,
+ page_size: 200,
+ search: route.query.search as string || '',
+ pan_id: route.query.platform as string || ''
})
)
@@ -318,69 +260,24 @@ const platforms = computed(() => (platformsData.value as any) || [])
const systemConfig = computed(() => (systemConfigData.value as any).data || { site_title: '老九网盘资源数据库' })
const safeLoading = computed(() => pending.value)
-// 计算属性
-const totalPages = computed(() => {
- const total = (resourcesData.value as any)?.total || 0
- return Math.ceil(total / pageSize.value)
-})
+
+// 从路由参数获取当前状态
+const searchQuery = ref(route.query.search as string || '')
+const selectedPlatform = computed(() => route.query.platform as string || '')
+
+const handleSearch = () => {
+ const params = new URLSearchParams()
+ if (searchQuery.value) params.set('search', searchQuery.value)
+ if (selectedPlatform.value) params.set('platform', selectedPlatform.value)
+ window.location.href = `/?${params.toString()}`
+}
// 初始化认证状态
onMounted(() => {
animateCounters()
})
-// 搜索处理
-const handleSearch = async (e?: any) => {
- if (e && e.target && typeof e.target.value === 'string') {
- searchQuery.value = e.target.value
- }
- if (oldQuery.value === searchQuery.value) {
- return
- }
- oldQuery.value = searchQuery.value
- currentPage.value = 1
-
- // 更新URL参数
- const query = { ...route.query }
- if ((searchQuery.value as string).trim()) {
- query.search = (searchQuery.value as string).trim()
- } else {
- delete query.search
- }
- if (selectedPlatform.value) {
- query.platform = selectedPlatform.value
- } else {
- delete query.platform
- }
- delete query.page // 重置页码
-
- // 更新URL(不刷新页面)
- await router.push({ query })
-
- // 刷新数据
- await refresh()
-}
-// 平台筛选
-const filterByPlatform = async (platformId: string) => {
- selectedPlatform.value = platformId
- currentPage.value = 1
-
- // 更新URL参数
- const query = { ...route.query }
- if (platformId) {
- query.platform = platformId
- } else {
- delete query.platform
- }
- delete query.page // 重置页码
-
- // 更新URL(不刷新页面)
- await router.push({ query })
-
- // 刷新数据
- await refresh()
-}
// 获取平台名称
const getPlatformIcon = (panId: string) => {
@@ -498,53 +395,11 @@ const animateCounters = () => {
})
}
-// 页面跳转
-const goToPage = async (page: number) => {
- currentPage.value = page
-
- // 更新URL参数
- const query = { ...route.query }
- query.page = page.toString()
- await router.push({ query })
-
- // 刷新数据
- await refresh()
-
- // 滚动到顶部(只在客户端执行)
- if (process.client) {
- window.scrollTo({
- top: 0,
- behavior: 'smooth'
- })
- }
-}
-const loadMore = async () => {
- if (isLoadingMore.value || !hasMoreData.value) return
-
- isLoadingMore.value = true
- try {
- currentPage.value++
-
- // 使用 refresh 获取更多数据
- await refresh()
-
- // 检查是否还有更多数据
- const currentTotal = (resourcesData.value as any)?.data?.total || 0
- const currentLoaded = safeResources.value.length
-
- if (currentLoaded >= currentTotal) {
- hasMoreData.value = false
- }
- } catch (error) {
- console.error('加载更多失败:', error)
- currentPage.value-- // 回退页码
- } finally {
- isLoadingMore.value = false
- }
-}
+
+