api
tj
2025-05-29 05d1310a6ec27656712c0c5e5e57b3365d3faf56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<template>
  <view :class="['app', theme]">
    <up-sticky bgColor="#ffffff">
      <view class="header">
        <up-icon name="list" size="40rpx" color="#333333" @click="onSettingClick" />
        <view>
          <!-- <up-tabs :list="list1"> -->
          <up-tabs :list="userTabList">
            <!-- <template #left>
            <up-icon name="list" size="40rpx" color="#333333" />
          </template> -->
            <!-- <template #right>
            <up-icon name="search" size="48rpx" color="#333333" />
          </template> -->
          </up-tabs>
        </view>
        <up-icon name="search" size="48rpx" color="#333333" @click="toSearchPage()" />
      </view>
    </up-sticky>
 
    <view style="margin: 10px 10px 10px 10px; ">
      <up-tabs :list="tabList" :itemStyle="{ padding: '0 16rpx', textAlign: 'center', flex: '1' }">
        <template #right>
          <up-icon name="arrow-down" size="15" color="#333333" />
        </template>
      </up-tabs>
    </view>
    <view class="content-area">
      <up-waterfall v-model="flowList">
        <template #left="{ leftList }">
          <FlowCard v-for="(item, index) in leftList" :key="index" :item="item" @click="handleDetailClick" />
        </template>
 
        <template #right="{ rightList }">
          <FlowCard v-for="(item, index) in rightList" :key="index" :item="item" @click="handleDetailClick" />
        </template>
      </up-waterfall>
    </view>
    <!-- <view v-for="(item, index) in 100">safsafda</view> -->
    <common-footer flg="0"></common-footer>
    <setting-popup v-model="settingShow" />
  </view>
</template>
<script setup lang="ts">
import SettingPopup from '@/components/setting/setting-popup.vue';
import { reactive, ref, onMounted } from 'vue';
import { FilmCategoryTree, FilmWorks } from '@/types/index'
import { onLoad, onShow, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
import { FilmTabCategory, FilmWorksCategory } from '@/enums/dict'
import { useGlobal } from '@/composables/useGlobal'
const { $http, $message, $store } = useGlobal()
import { getTabList } from '@/sub-pages/utils/api'
// 控制设置弹窗显示
const settingShow = ref(false);
// 方法定义
function onSettingClick() {
  settingShow.value = true;
}
 
// 创建响应式数据  
// const list1 = reactive([
//   { name: '关注' },
//   { name: '发现' },
//   { name: '苏州' },
// ]);
const userTabList = ref<FilmCategoryTree[]>([])
const tabList = ref<FilmCategoryTree[]>([])
 
const flowList = ref([
  {
    id: 1,
    title: 'iPhone 高清全屏壁纸,划走就后悔',
    imgurl: 'https://ai-public.mastergo.com/ai/img_res/6a226f9e9652c51cd535c3490535dfeb.jpg',
    username: '草莓喵喵',
    avatar: '/static/avatar1.jpg',
    likes: 1397
  },
  {
    id: 2,
    title: '高清 4K 全屏手机壁纸 #高质量壁纸',
    imgurl: 'https://img.yzcdn.cn/vant/cat.jpeg',
    username: '4K wallpaper',
    avatar: '/static/avatar2.jpg',
    likes: 167
  },
  {
    id: 3,
    title: 'iPhone 实况动态壁纸 #动态壁纸',
    imgurl: 'https://img.yzcdn.cn/vant/cat.jpeg',
    username: '图墙精选',
    avatar: '/static/avatar3.jpg',
    likes: 980
  },
  {
    id: 4,
    title: '高清小清新壁纸 浪漫的人都有自己的海',
    imgurl: 'https://ai-public.mastergo.com/ai/img_res/6a226f9e9652c51cd535c3490535dfeb.jpg',
    username: 'wallpaper',
    avatar: '/static/avatar4.jpg',
    likes: 456
  }
])
 
const handleDetailClick = (item: Item) => {
  const url =
    item.id === 1
      ? `/sub-pages/film-list/film-official-detail?id=${item.id}`
      : `/sub-pages/film-list/film-detail?id=${item.id}`
  uni.navigateTo({ url })
}
 
const toSearchPage = () => {
  uni.navigateTo({
    url: '/sub-pages/community/search-page'
  })
}
 
const theme = ref('light')
onLoad(() => {
  const storedTheme = uni.getStorageSync('theme') || 'light'
  theme.value = storedTheme
})
 
 
onShow(() => {
  getTabList(FilmTabCategory.USER_TYPE,userTabList,false)
  getTabList(FilmTabCategory.FILM_TYPE, tabList)
});
 
</script>
<style lang="scss" scoped>
.header {
  display: flex;
  justify-content: space-between;
}
 
.content-area {
  // padding: 20rpx;
}
</style>