diff --git a/pages.config.ts b/pages.config.ts index ed247ea..5732365 100644 --- a/pages.config.ts +++ b/pages.config.ts @@ -52,16 +52,7 @@ export default defineUniPages({ }, ], }, - pages: [ - { - path: 'pages/home/index/index', - type: 'home', - style: { - navigationBarTitleText: '六维志愿', - navigationStyle: 'custom', - }, - }, - ], + pages: [], preloadRule: { 'pages/home/index/index': { network: 'all', diff --git a/src/components/home/HotRank.vue b/src/components/home/HotRank.vue index cfaaca0..f3e09db 100644 --- a/src/components/home/HotRank.vue +++ b/src/components/home/HotRank.vue @@ -18,11 +18,34 @@ hover-class="none" :hover-stop-propagation="false" > + + + + + + + + + + + + + + + { const { unSortTypeList } = useUnSortType() let universityTypeRankList = ref([]) +const isLoading = ref(true) + +// 创建默认的骨架屏数据 +const skeletonItems = ref([ + { type: 'skeleton-1', name: '综合排名', rows: [] }, + { type: 'skeleton-2', name: '理工排名', rows: [] }, + { type: 'skeleton-3', name: '文科排名', rows: [] }, + { type: 'skeleton-4', name: '医科排名', rows: [] }, +]) watch( () => unSortTypeList.value, (newVal) => { - Promise.all( - newVal.map((item) => - getUniversityRank({ - Year: 2023, - Type: item.type, - PageIndex: 1, - PageSize: 3, - }), - ), - ).then((res) => { - res.forEach((item, index) => { - universityTypeRankList.value.push({ - ...newVal[index], - rows: (item.result as { rows: any[] }).rows, + if (newVal && newVal.length > 0) { + Promise.all( + newVal.map((item) => + getUniversityRank({ + Year: 2023, + Type: item.type, + PageIndex: 1, + PageSize: 3, + }), + ), + ) + .then((res) => { + universityTypeRankList.value = [] + res.forEach((item, index) => { + universityTypeRankList.value.push({ + ...newVal[index], + rows: (item.result as { rows: any[] }).rows, + loaded: true, + }) + }) + isLoading.value = false }) - }) - }) + .catch(() => { + isLoading.value = false + }) + } }, + { immediate: true }, ) @@ -156,4 +198,26 @@ watch( .hot-rank-outer .hot-rank-item:nth-child(5) { background: linear-gradient(180deg, #e5ffc4 0%, rgba(213, 255, 196, 0) 23%, #fff 100%); } + +/* 骨架屏样式 */ +.skeleton-text, +.skeleton-image { + background-color: #e0e0e0; + animation: pulse 1.5s infinite; +} + +.skeleton-item { + background: linear-gradient(180deg, #eaeaea 0%, #f5f5f5 23%, #fff 100%); +} +@keyframes pulse { + 0% { + opacity: 0.5; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0.5; + } +} diff --git a/src/components/home/SubMenu.vue b/src/components/home/SubMenu.vue index 17c1094..da91175 100644 --- a/src/components/home/SubMenu.vue +++ b/src/components/home/SubMenu.vue @@ -6,20 +6,33 @@ class="flex items-center justify-center flex-col" @click="goPath(item.path, item.isTab)" > - + + + + {{ item.name }} + + diff --git a/src/pages-sub/home/inputScore/useRules.ts b/src/pages-sub/home/inputScore/useRules.ts index 020f8c0..f8431a1 100644 --- a/src/pages-sub/home/inputScore/useRules.ts +++ b/src/pages-sub/home/inputScore/useRules.ts @@ -26,7 +26,7 @@ export const useRules = (callback?: any) => { return } splitSubject(requireSubjectList.value, optionalSubjectList.value) - callback() + callback ? callback() : false } }) } diff --git a/src/pages.json b/src/pages.json index bcaa9da..fcc0420 100644 --- a/src/pages.json +++ b/src/pages.json @@ -53,8 +53,9 @@ "path": "pages/home/index/index", "type": "home", "style": { - "navigationBarTitleText": "六维志愿", - "navigationStyle": "custom" + "navigationStyle": "custom", + "enableShareAppMessage": true, + "enableShareTimeline": true } }, { diff --git a/src/pages/home/index/index.vue b/src/pages/home/index/index.vue index 15b5ddd..25f3e94 100644 --- a/src/pages/home/index/index.vue +++ b/src/pages/home/index/index.vue @@ -1,4 +1,4 @@ - + { style: { navigationStyle: 'custom',