mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-25 05:29:45 +08:00
fix(news): 优化性能
This commit is contained in:
@@ -55,7 +55,7 @@
|
|||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<img src="../assets/icons/arrow-left.svg" alt="right" />
|
<img src="../assets/icons/arrow-left.svg" alt="right" />
|
||||||
</template>
|
</template>
|
||||||
已加载:{{ noticeData.last_id }},加载更多
|
已加载:{{ rawData.notice.last_id }},加载更多
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</div>
|
</div>
|
||||||
</v-window-item>
|
</v-window-item>
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<img src="../assets/icons/arrow-left.svg" alt="right" />
|
<img src="../assets/icons/arrow-left.svg" alt="right" />
|
||||||
</template>
|
</template>
|
||||||
已加载:{{ activityData.last_id }},加载更多
|
已加载:{{ rawData.activity.last_id }},加载更多
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</div>
|
</div>
|
||||||
</v-window-item>
|
</v-window-item>
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<img src="../assets/icons/arrow-left.svg" alt="right" />
|
<img src="../assets/icons/arrow-left.svg" alt="right" />
|
||||||
</template>
|
</template>
|
||||||
已加载:{{ newsData.last_id }},加载更多
|
已加载:{{ rawData.news.last_id }},加载更多
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</div>
|
</div>
|
||||||
</v-window-item>
|
</v-window-item>
|
||||||
@@ -153,7 +153,7 @@ import MysOper from "../plugins/Mys";
|
|||||||
// utils
|
// utils
|
||||||
import { createTGWindow } from "../utils/TGWindow";
|
import { createTGWindow } from "../utils/TGWindow";
|
||||||
// interface
|
// interface
|
||||||
import { NewsCard, NewsData } from "../plugins/Mys/interface/news";
|
import { NewsCard } from "../plugins/Mys/interface/news";
|
||||||
|
|
||||||
// Store
|
// Store
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
@@ -174,22 +174,39 @@ const postData = ref({
|
|||||||
activity: [] as NewsCard[],
|
activity: [] as NewsCard[],
|
||||||
news: [] as NewsCard[],
|
news: [] as NewsCard[],
|
||||||
});
|
});
|
||||||
const noticeData = ref({} as NewsData);
|
const rawData = ref({
|
||||||
const activityData = ref({} as NewsData);
|
notice: {
|
||||||
const newsData = ref({} as NewsData);
|
is_last: false,
|
||||||
|
last_id: 0,
|
||||||
|
},
|
||||||
|
activity: {
|
||||||
|
is_last: false,
|
||||||
|
last_id: 0,
|
||||||
|
},
|
||||||
|
news: {
|
||||||
|
is_last: false,
|
||||||
|
last_id: 0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
loadingTitle.value = "正在获取公告数据...";
|
loadingTitle.value = "正在获取公告数据...";
|
||||||
noticeData.value = await MysOper.News.get.notice();
|
const noticeData = await MysOper.News.get.notice();
|
||||||
|
rawData.value.notice.is_last = noticeData.is_last;
|
||||||
|
rawData.value.notice.last_id = noticeData.last_id;
|
||||||
loadingTitle.value = "正在获取活动数据...";
|
loadingTitle.value = "正在获取活动数据...";
|
||||||
activityData.value = await MysOper.News.get.activity();
|
const activityData = await MysOper.News.get.activity();
|
||||||
|
rawData.value.activity.is_last = activityData.is_last;
|
||||||
|
rawData.value.activity.last_id = activityData.last_id;
|
||||||
loadingTitle.value = "正在获取新闻数据...";
|
loadingTitle.value = "正在获取新闻数据...";
|
||||||
newsData.value = await MysOper.News.get.news();
|
const newsData = await MysOper.News.get.news();
|
||||||
|
rawData.value.news.is_last = newsData.is_last;
|
||||||
|
rawData.value.news.last_id = newsData.last_id;
|
||||||
loadingTitle.value = "正在渲染数据...";
|
loadingTitle.value = "正在渲染数据...";
|
||||||
postData.value = {
|
postData.value = {
|
||||||
notice: MysOper.News.card.notice(noticeData.value),
|
notice: MysOper.News.card.notice(noticeData),
|
||||||
activity: MysOper.News.card.activity(activityData.value),
|
activity: MysOper.News.card.activity(activityData),
|
||||||
news: MysOper.News.card.news(newsData.value),
|
news: MysOper.News.card.news(newsData),
|
||||||
};
|
};
|
||||||
tab.value = "notice";
|
tab.value = "notice";
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@@ -204,42 +221,42 @@ async function loadMore(data: string) {
|
|||||||
loadingSub.value = true;
|
loadingSub.value = true;
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case "notice":
|
case "notice":
|
||||||
if (noticeData.value.is_last) {
|
if (rawData.value.notice.is_last) {
|
||||||
await dialog.message("已经是最后一页了");
|
await dialog.message("已经是最后一页了");
|
||||||
loadingSub.value = false;
|
loadingSub.value = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const getNotice = await MysOper.News.get.notice(20, noticeData.value.last_id);
|
const getNotice = await MysOper.News.get.notice(20, rawData.value.notice.last_id);
|
||||||
noticeData.value.last_id = getNotice.last_id;
|
rawData.value.notice.last_id = getNotice.last_id;
|
||||||
noticeData.value.is_last = getNotice.is_last;
|
rawData.value.notice.is_last = getNotice.is_last;
|
||||||
noticeData.value.list = noticeData.value.list.concat(getNotice.list);
|
const noticeCard = MysOper.News.card.notice(getNotice);
|
||||||
postData.value.notice = MysOper.News.card.notice(noticeData.value);
|
postData.value.notice = postData.value.notice.concat(noticeCard);
|
||||||
loadingSub.value = false;
|
loadingSub.value = false;
|
||||||
break;
|
break;
|
||||||
case "activity":
|
case "activity":
|
||||||
if (activityData.value.is_last) {
|
if (rawData.value.activity.is_last) {
|
||||||
await dialog.message("已经是最后一页了");
|
await dialog.message("已经是最后一页了");
|
||||||
loadingSub.value = false;
|
loadingSub.value = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const getActivity = await MysOper.News.get.activity(20, activityData.value.last_id);
|
const getActivity = await MysOper.News.get.activity(20, rawData.value.activity.last_id);
|
||||||
activityData.value.last_id = getActivity.last_id;
|
rawData.value.activity.last_id = getActivity.last_id;
|
||||||
activityData.value.is_last = getActivity.is_last;
|
rawData.value.activity.is_last = getActivity.is_last;
|
||||||
activityData.value.list = activityData.value.list.concat(getActivity.list);
|
const activityCard = MysOper.News.card.activity(getActivity);
|
||||||
postData.value.activity = MysOper.News.card.activity(activityData.value);
|
postData.value.activity = postData.value.activity.concat(activityCard);
|
||||||
loadingSub.value = false;
|
loadingSub.value = false;
|
||||||
break;
|
break;
|
||||||
case "news":
|
case "news":
|
||||||
if (newsData.value.is_last) {
|
if (rawData.value.news.is_last) {
|
||||||
await dialog.message("已经是最后一页了");
|
await dialog.message("已经是最后一页了");
|
||||||
loadingSub.value = false;
|
loadingSub.value = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const getNews = await MysOper.News.get.news(20, newsData.value.last_id);
|
const getNews = await MysOper.News.get.news(20, rawData.value.news.last_id);
|
||||||
newsData.value.last_id = getNews.last_id;
|
rawData.value.news.last_id = getNews.last_id;
|
||||||
newsData.value.is_last = getNews.is_last;
|
rawData.value.news.is_last = getNews.is_last;
|
||||||
newsData.value.list = newsData.value.list.concat(getNews.list);
|
const newsCard = MysOper.News.card.news(getNews);
|
||||||
postData.value.news = MysOper.News.card.news(newsData.value);
|
postData.value.news = postData.value.news.concat(newsCard);
|
||||||
loadingSub.value = false;
|
loadingSub.value = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user