🌱 武器图鉴基本完成

This commit is contained in:
BTMuli
2023-12-22 22:32:20 +08:00
parent d94f4cff9d
commit dc655d89da
2 changed files with 131 additions and 13 deletions

View File

@@ -142,7 +142,6 @@ onMounted(async () => {
if (res === undefined) return; if (res === undefined) return;
data.value = res.default; data.value = res.default;
await appWindow.setTitle(`Wiki_Character - ${data.value.name}`); await appWindow.setTitle(`Wiki_Character - ${data.value.name}`);
await appWindow.setAlwaysOnTop(true);
loading.value = false; loading.value = false;
} catch (error) { } catch (error) {
loadingEmpty.value = true; loadingEmpty.value = true;
@@ -226,12 +225,6 @@ onMounted(async () => {
font-weight: bold; font-weight: bold;
} }
.twc-text {
display: flex;
flex-direction: column;
row-gap: 10px;
}
.twc-text-title { .twc-text-title {
color: var(--common-text-title); color: var(--common-text-title);
font-family: var(--font-title); font-family: var(--font-title);

View File

@@ -1,17 +1,66 @@
<template> <template>
<TSwitchTheme />
<ToLoading v-model="loading" :empty="loadingEmpty" :title="loadingTitle" :subtitle="loadingSub" /> <ToLoading v-model="loading" :empty="loadingEmpty" :title="loadingTitle" :subtitle="loadingSub" />
<div class="ww-box"> <div class="tww-box" v-if="data !== undefined">
{{ data }} <div class="tww-brief">
<TItembox :model-value="box" />
<div class="tww-brief-info">
<div class="tww-brief-title">{{ data.name }}</div>
<v-rating
class="tww-brief-rating"
v-model="select"
:length="selectItems.length"
:size="24"
dense
/>
<div class="tww-brief-desc">{{ data.description }}</div>
</div>
</div>
<TwcMaterials :data="data.materials" />
<v-expansion-panels :theme="vuetifyTheme" class="tww-affix">
<v-expansion-panel expand-icon="mdi-menu-down">
<template #title>
<span class="tww-text-title">{{ data.affix.Name }}-精炼 {{ select }}</span>
</template>
<template #text>
<span
class="tww-text-content"
v-html="parseHtmlText(data.affix.Descriptions[select - 1].Description)"
/>
</template>
</v-expansion-panel>
</v-expansion-panels>
<v-expansion-panels :theme="vuetifyTheme" class="tww-story">
<v-expansion-panel
expand-icon="mdi-menu-down"
v-for="(story, index) in data.story"
:key="index"
>
<template #title>
<span class="tww-text-title">
{{ data.story.length > 1 ? `故事 ${index + 1}` : "故事" }}
</span>
</template>
<template #text>
<span class="tww-text-content">{{ parseHtmlText(story) }}</span>
</template>
</v-expansion-panel>
</v-expansion-panels>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { appWindow } from "@tauri-apps/api/window"; import { appWindow } from "@tauri-apps/api/window";
import { onMounted, ref } from "vue"; import { computed, onMounted, ref, toRaw } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import TSwitchTheme from "../components/app/t-switchTheme.vue";
import showSnackbar from "../components/func/snackbar"; import showSnackbar from "../components/func/snackbar";
import TItembox, { TItemBoxData } from "../components/main/t-itembox.vue";
import ToLoading from "../components/overlay/to-loading.vue"; import ToLoading from "../components/overlay/to-loading.vue";
import TwcMaterials from "../components/wiki/twc-materials.vue";
import { getWikiData } from "../data"; import { getWikiData } from "../data";
import { useAppStore } from "../store/modules/app";
import { parseHtmlText } from "../utils/toolFunc";
// 路由数据 // 路由数据
const id = <string>useRoute().params.id; const id = <string>useRoute().params.id;
@@ -21,8 +70,29 @@ const loadingEmpty = ref<boolean>(false);
const loadingTitle = ref<string>("正在加载"); const loadingTitle = ref<string>("正在加载");
const loadingSub = ref<string>(); const loadingSub = ref<string>();
// 主题
const appStore = useAppStore();
const vuetifyTheme = computed(() => {
return appStore.theme === "dark" ? "dark" : "light";
});
// 数据 // 数据
const data = ref<TGApp.App.Weapon.WikiItem>(); const data = ref<TGApp.App.Weapon.WikiItem>();
const box = computed(() => {
return <TItemBoxData>{
bg: `/icon/bg/${data.value?.star}-Star.webp`,
icon: `/WIKI/weapon/${data.value?.id}.webp`,
size: "128px",
height: "128px",
display: "inner",
lt: `/icon/weapon/${data.value?.weapon}.webp`,
ltSize: "40px",
innerHeight: 0,
clickable: false,
};
});
const select = ref<number>(1);
const selectItems = ref<number[]>([]);
onMounted(async () => { onMounted(async () => {
await appWindow.show(); await appWindow.show();
@@ -30,7 +100,9 @@ onMounted(async () => {
const res = await getWikiData("Weapon", id); const res = await getWikiData("Weapon", id);
if (res !== undefined) { if (res !== undefined) {
data.value = res.default; data.value = res.default;
console.log(toRaw(data.value));
} }
selectItems.value = data.value?.affix.Descriptions.map((item) => item.Level) ?? [];
loading.value = false; loading.value = false;
} catch (error) { } catch (error) {
loadingEmpty.value = true; loadingEmpty.value = true;
@@ -45,9 +117,62 @@ onMounted(async () => {
text: "Wiki 数据获取失败,即将关闭窗口", text: "Wiki 数据获取失败,即将关闭窗口",
color: "error", color: "error",
}); });
// setTimeout(() => { setTimeout(() => {
// appWindow.close(); appWindow.close();
// }, 3000); }, 3000);
} }
}); });
</script> </script>
<style lang="css" scoped>
.tww-box {
display: flex;
width: 800px;
flex-direction: column;
margin: 0 auto;
row-gap: 10px;
}
.tww-brief {
display: flex;
align-items: flex-start;
column-gap: 10px;
}
.tww-brief-info {
display: flex;
flex-direction: column;
justify-content: space-between;
}
.tww-brief-title {
color: var(--common-text-title);
font-family: var(--font-title);
font-size: 20px;
}
.tww-brief-rating {
color: var(--common-text-title);
}
.tww-brief-desc {
display: flex;
align-items: flex-end;
opacity: 0.8;
}
.tww-story {
display: flex;
flex-direction: column;
row-gap: 5px;
}
.tww-text-title {
font-weight: bold;
}
.tww-text-content {
font-size: 14px;
white-space: pre-wrap;
word-break: break-all;
}
</style>