fix(achievements): 修复 dev 报错

This commit is contained in:
BTMuli
2023-03-09 16:25:55 +08:00
parent 9aab38e405
commit d6da722074
4 changed files with 41 additions and 30 deletions

View File

@@ -73,7 +73,7 @@ const router = useRouter();
const appStore = useAppStore(); const appStore = useAppStore();
const devStore = useDevStore(); const devStore = useDevStore();
const rail = ref(appStore.sidebar.expand); const rail = ref(appStore.sidebar);
const showDev = ref(devStore.showDev); const showDev = ref(devStore.showDev);
const back = () => { const back = () => {
@@ -85,6 +85,7 @@ const back = () => {
}; };
function collapse() { function collapse() {
rail.value = !rail.value; rail.value = !rail.value;
appStore.sidebar = rail.value;
} }
function magicClick() { function magicClick() {
if (!showDev.value) { if (!showDev.value) {

View File

@@ -3,7 +3,7 @@
<v-app-bar app> <v-app-bar app>
<template v-slot:prepend> <template v-slot:prepend>
<!-- 标题 --> <!-- 标题 -->
<v-card-text class="text-h5">{{ getTitle() }}</v-card-text> <v-card-text class="text-h5">{{ title }}</v-card-text>
</template> </template>
<template v-slot:append> <template v-slot:append>
<!-- 导入按钮 --> <!-- 导入按钮 -->
@@ -39,18 +39,11 @@ import { onMounted, ref } from "vue";
const appStore = useAppStore(); const appStore = useAppStore();
const achievementsStore = useAchievementsStore(); const achievementsStore = useAchievementsStore();
// FileData
const mergeAchievementMap: TGMap<TGAchievementMap> = new TGMap<TGAchievementMap>(
JSON.parse(await fs.readTextFile(appStore.mergePath.achievements))
);
const mergeSeriesMap: TGMap<TGSeriesMap> = new TGMap<TGSeriesMap>(
JSON.parse(await fs.readTextFile(appStore.mergePath.achievementSeries))
);
// Data // Data
let seriesList = ref(mergeSeriesMap.getMap() as Map<TGSeriesMap>); const title = ref("");
let achievementsList = ref(mergeAchievementMap.getMap() as Map<TGAchievementMap>); const seriesList = ref({} as Map<TGSeriesMap>);
let selectedSeries = ref(-1); const achievementsList = ref({} as Map<TGAchievementMap>);
const selectedSeries = ref(-1);
onMounted(async () => { onMounted(async () => {
await loadData(); await loadData();
@@ -58,7 +51,16 @@ onMounted(async () => {
// 加载数据,数据源:合并后的本地数据 // 加载数据,数据源:合并后的本地数据
async function loadData() { async function loadData() {
await achievementsStore.flushData(mergeSeriesMap); const mergeAchievementMap: TGMap<TGAchievementMap> = new TGMap<TGAchievementMap>(
JSON.parse(await fs.readTextFile(appStore.mergePath.achievements))
);
const mergeSeriesMap: TGMap<TGSeriesMap> = new TGMap<TGSeriesMap>(
JSON.parse(await fs.readTextFile(appStore.mergePath.achievementSeries))
);
seriesList.value = mergeSeriesMap.getMap();
achievementsList.value = mergeAchievementMap.getMap();
achievementsStore.flushData(mergeSeriesMap);
title.value = await getTitle();
} }
// 获取标题 // 获取标题
async function getTitle() { async function getTitle() {
@@ -71,6 +73,12 @@ async function getTitle() {
} }
// 导入 UIAF 数据,进行数据合并、刷新 // 导入 UIAF 数据,进行数据合并、刷新
async function importJson() { async function importJson() {
const mergeAchievementMap: TGMap<TGAchievementMap> = new TGMap<TGAchievementMap>(
JSON.parse(await fs.readTextFile(appStore.mergePath.achievements))
);
const mergeSeriesMap: TGMap<TGSeriesMap> = new TGMap<TGSeriesMap>(
JSON.parse(await fs.readTextFile(appStore.mergePath.achievementSeries))
);
const localPath = appStore.userPath.achievements; const localPath = appStore.userPath.achievements;
const selectedFile = await dialog.open({ const selectedFile = await dialog.open({
multiple: false, multiple: false,

View File

@@ -2,13 +2,13 @@
<h1>开发</h1> <h1>开发</h1>
<v-card> <v-card>
<v-list> <v-list>
<v-list-item @click="devStore.init()" prepend-icon="mdi-refresh"> <v-list-item @click="devInit" prepend-icon="mdi-refresh">
<v-list-item-title>初始化开发</v-list-item-title> <v-list-item-title>初始化开发</v-list-item-title>
</v-list-item> </v-list-item>
<v-list-item @click="parseAchievement()" prepend-icon="mdi-export"> <v-list-item @click="parseAchievement" prepend-icon="mdi-export">
<v-list-item-title>解析成就数据</v-list-item-title> <v-list-item-title>解析成就数据</v-list-item-title>
</v-list-item> </v-list-item>
<v-list-item @click="mergeAchievement()" prepend-icon="mdi-export"> <v-list-item @click="mergeAchievement" prepend-icon="mdi-export">
<v-list-item-title>合并成就数据</v-list-item-title> <v-list-item-title>合并成就数据</v-list-item-title>
</v-list-item> </v-list-item>
</v-list> </v-list>
@@ -39,6 +39,10 @@ import { TGAppData } from "../data";
const appStore = useAppStore(); const appStore = useAppStore();
const devStore = useDevStore(); const devStore = useDevStore();
async function devInit() {
await devStore.init();
}
async function parseAchievement() { async function parseAchievement() {
const appDataDir = appStore.devPath.app; const appDataDir = appStore.devPath.app;
// 读取原始数据 // 读取原始数据

View File

@@ -91,18 +91,14 @@ interface CardDataType {
} }
// 数据 // 数据
const tab = ref("activity"); const tab = ref("");
let postData = { const postData = ref({
activity: {} as CardDataType[], activity: [] as CardDataType[],
news: {} as CardDataType[], news: [] as CardDataType[],
notice: {} as CardDataType[], notice: [] as CardDataType[],
};
onMounted(async () => {
await getPosts();
}); });
async function getPosts() { onMounted(async () => {
const activityRaw: ResponseNewsList = await http const activityRaw: ResponseNewsList = await http
.fetch(MysNewsApi + EnumPostType.Activity) .fetch(MysNewsApi + EnumPostType.Activity)
.then(res => res.data as Promise<ResponseNewsList>); .then(res => res.data as Promise<ResponseNewsList>);
@@ -112,13 +108,15 @@ async function getPosts() {
const noticeRaw: ResponseNewsList = await http const noticeRaw: ResponseNewsList = await http
.fetch(MysNewsApi + EnumPostType.Notice) .fetch(MysNewsApi + EnumPostType.Notice)
.then(res => res.data as Promise<ResponseNewsList>); .then(res => res.data as Promise<ResponseNewsList>);
postData = { postData.value = {
activity: transData(activityRaw), activity: transData(activityRaw),
news: transData(newsRaw), news: transData(newsRaw),
notice: transData(noticeRaw), notice: transData(noticeRaw),
}; };
} tab.value = "activity";
function transData(rawData: ResponseNewsList) { });
function transData(rawData: ResponseNewsList): CardDataType[] {
let cardData: CardDataType[] = []; let cardData: CardDataType[] = [];
rawData.data.list.map((item: ResponseNews) => { rawData.data.list.map((item: ResponseNews) => {
const postData: MysPostType = item.post; const postData: MysPostType = item.post;