cloudroam
7 天以前 c31a8def0ac90d86b8e8e345441bd28002a9ef2f
sub-pages/film-list/film-list.vue
@@ -30,23 +30,37 @@
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { onLoad, onShow, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
import { FilmCategoryTree,FilmWorks } from '@/types/index'
import { FilmCategoryTree,FilmWorks,FilmWorksQueryDTO } from '@/types/index'
import { useGlobal } from '@/composables/useGlobal'
const { $http, $message, $store } = useGlobal()
import { FilmTabCategory,FilmWorksCategory } from '@/enums/dict'
import { useNavigator } from '@/composables/useNavigator'
const { navigateTo } = useNavigator()
import { getTabList } from '@/sub-pages/utils/api'
import { getTabList,getFilmWorksBase } from '@/sub-pages/utils/api'
const theme = ref('light')
const search = ref('')
const keywords = ref('') // 新增关键词状态
const tabList = ref<FilmCategoryTree[]>([])
const currentCategory = ref('') // 默认为空表示全部
const onSearch = (value: string) => {
  uni.showToast({
    title: `搜索:${value}`,
    icon: 'none'
  })
  const searchValue = typeof value === 'string' ? value : search.value
  keywords.value = searchValue
  filmPage.value = 1
  films.value = []
  filmStatus.value = 'loadmore'
  getfilms()
}
const click = (item: FilmCategoryTree) => {
  currentCategory.value = item.name // 更新当前分类
  keywords.value = search.value
  filmPage.value = 1             // 重置页码
  films.value = []               // 清空电影列表
  filmStatus.value = 'loadmore'  // 重置加载状态
  getfilms()                     // 重新加载数据
}
const handleDetailClick = (item: FilmCategoryTree) => {
@@ -66,7 +80,7 @@
onMounted(() => {
  flowList.value = items
})
onShow(() => {
@@ -96,11 +110,18 @@
const filmStatus = ref('loading')
const getfilms = async () => {
  if (filmStatus.value === 'nomore') return
  filmStatus.value = 'loading'
  // TODO 暂时使用光影社区的类别
  const records = await getFilmWorksBase('', filmSize, filmPage.value)
  const query: FilmWorksQueryDTO = {
   category: currentCategory.value, // 将当前分类ID加入查询参数
    classify: '',
    type: '',
    current: filmPage.value,
    size: filmSize,
   keywords: keywords.value // 关键修改
  };
  const records = await getFilmWorksBase(query)
  if (records && records.length > 0) {
    // 使用 Set 进行去重
@@ -120,23 +141,8 @@
  }
}
const getFilmWorksBase = async (type: String, pageSize: Number, currentPage: Number) => {
  const {
    code, data
  } = await $http.request('get', '/api/filmWorks/list', {
    params: {
      classify: type,
      size: pageSize,
      current: currentPage
    }
  })
  if (code == 0) {
    return data.records
  } else {
    $message.showToast('系统异常,无法获取数据')
    return null;
  }
}