|
30 | 30 | </n-gi> |
31 | 31 | </n-grid> |
32 | 32 | <!-- 公共推荐 --> |
33 | | - <div v-for="(item, index) in recData" :key="index" class="rec-public"> |
| 33 | + <div v-for="(item, index) in sortedRecData" :key="index" class="rec-public"> |
34 | 34 | <n-flex |
35 | 35 | class="title" |
36 | 36 | align="center" |
|
52 | 52 | <script setup lang="ts"> |
53 | 53 | import type { ArtistType, CoverType } from "@/types/main"; |
54 | 54 | import { NText } from "naive-ui"; |
55 | | -import { useDataStore, useMusicStore } from "@/stores"; |
| 55 | +import { useDataStore, useMusicStore, useSettingStore } from "@/stores"; |
56 | 56 | import { newAlbumsAll, personalized, radarPlaylist, topArtists } from "@/api/rec"; |
57 | 57 | import { allMv } from "@/api/video"; |
58 | 58 | import { radioRecommend } from "@/api/radio"; |
@@ -82,6 +82,7 @@ interface RecDataType { |
82 | 82 | const router = useRouter(); |
83 | 83 | const dataStore = useDataStore(); |
84 | 84 | const musicStore = useMusicStore(); |
| 85 | +const settingStore = useSettingStore(); |
85 | 86 |
|
86 | 87 | // 日推标题 |
87 | 88 | const dailySongsTitle = computed(() => { |
@@ -133,6 +134,19 @@ const recData = ref<RecDataType>({ |
133 | 134 | }, |
134 | 135 | }); |
135 | 136 |
|
| 137 | +// 根据设置过滤和排序推荐数据 |
| 138 | +const sortedRecData = computed(() => { |
| 139 | + const sections = settingStore.homePageSections |
| 140 | + .filter((section) => section.visible) |
| 141 | + .sort((a, b) => a.order - b.order) |
| 142 | + .map((section) => { |
| 143 | + const key = section.key as keyof RecDataType; |
| 144 | + return recData.value[key]; |
| 145 | + }) |
| 146 | + .filter((item) => item); |
| 147 | + return sections; |
| 148 | +}); |
| 149 | +
|
136 | 150 | // 获取全部推荐 |
137 | 151 | const getAllRecData = async () => { |
138 | 152 | try { |
|
0 commit comments