♻️ 调整目录结构

This commit is contained in:
目棃
2024-11-19 14:45:29 +08:00
parent e1f85d1d92
commit 3fef8467f4
121 changed files with 532 additions and 554 deletions

View File

@@ -22,7 +22,8 @@ import { createPost } from "../../utils/TGWindow.js";
import OtherApi from "../../web/request/otherReq.js";
import showDialog from "../func/dialog.js";
import showSnackbar from "../func/snackbar.js";
import ToLivecode from "../overlay/to-livecode.vue";
import ToLivecode from "./to-livecode.vue";
interface TGameNavProps {
modelValue: number;

View File

@@ -72,7 +72,7 @@ import { computed, onMounted, onUnmounted, ref, watch } from "vue";
import { generateShareImg, saveImgLocal } from "../../utils/TGShare.js";
import { createPost } from "../../utils/TGWindow.js";
import TpAvatar from "../post/tp-avatar.vue";
import TpAvatar from "../viewPost/tp-avatar.vue";
interface TPostCardProps {
modelValue: TGApp.Plugins.Mys.Post.FullData;

View File

@@ -55,7 +55,8 @@ import { computed } from "vue";
import { generateShareImg } from "../../utils/TGShare.js";
import { timestampToDate } from "../../utils/toolFunc.js";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
import TOverlay from "./t-overlay.vue";
interface ToLiveCodeProps {
data: TGApp.BBS.Navigator.CodeData[];

View File

@@ -29,7 +29,8 @@
import { computed, ref } from "vue";
import { generateShareImg } from "../../utils/TGShare.js";
import TOverlay from "../main/t-overlay.vue";
import TOverlay from "./t-overlay.vue";
interface ToNamecardProps {
modelValue: boolean;

View File

@@ -58,7 +58,7 @@ import { computed, ref } from "vue";
import { AbyssDataItem } from "../../pages/WIKI/Abyss.vue";
import { generateShareImg } from "../../utils/TGShare.js";
import { timestampToDate } from "../../utils/toolFunc.js";
import TOverlay from "../main/t-overlay.vue";
import TOverlay from "../app/t-overlay.vue";
import HtaOverviewLine from "./hta-overview-line.vue";

View File

@@ -3,7 +3,7 @@
<template v-slot:item="{ item }">
<tr class="hta-th-tr">
<td class="hta-th-icon">
<TibWikiAbyss2 v-model="item.AvatarId" />
<TItemBox :model-value="getBoxData(item.AvatarId)" />
</td>
<td>
<span>{{ (item.HoldingRate.cur * 100).toFixed(3) }}%</span>
@@ -31,8 +31,9 @@
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import { AppCharacterData } from "../../data/index.js";
import { AbyssDataItem } from "../../pages/WIKI/Abyss.vue";
import TibWikiAbyss2 from "../itembox/tib-wiki-abyss-2.vue";
import TItemBox, { TItemBoxData } from "../app/t-item-box.vue";
interface HtaTabHoldProps {
data: AbyssDataItem<TGApp.Plugins.Hutao.Abyss.AvatarHold[]>;
@@ -101,6 +102,29 @@ function getRateStr(cur: number, last: number): string {
const diff = Math.abs(cur - last) * 100;
return `(${cur > last ? "↑" : "↓"}${diff.toFixed(3)}%)`;
}
function getBoxData(id: number): TItemBoxData {
const avatar = AppCharacterData.find((a) => a.id === id);
return {
bg: `/icon/bg/${avatar?.star ?? 5}-Star.webp`,
clickable: false,
display: "inner",
height: "80px",
icon: `/WIKI/character/${id}.webp`,
innerHeight: 20,
innerText: avatar?.name ?? "旅行者",
lt:
avatar === undefined
? ""
: avatar.element !== ""
? `/icon/element/${avatar.element}元素.webp`
: `/icon/weapon/${avatar.weapon}.webp`,
ltSize: "20px",
size: "80px",
innerIcon: `/icon/weapon/${avatar?.weapon ?? "单手剑"}.webp`,
innerBlur: "5px",
};
}
</script>
<style lang="css" scoped>
.hta-th-tr {

View File

@@ -26,7 +26,8 @@
import { onMounted, ref } from "vue";
import { AbyssDataItem } from "../../pages/WIKI/Abyss.vue";
import TibWikiAbyss from "../itembox/tib-wiki-abyss.vue";
import TibWikiAbyss from "./tib-wiki-abyss.vue";
interface HtaTabUpProps {
data: AbyssDataItem<TGApp.Plugins.Hutao.Abyss.AvatarUse[]>;

View File

@@ -26,7 +26,8 @@
import { onMounted, ref } from "vue";
import { AbyssDataItem } from "../../pages/WIKI/Abyss.vue";
import TibWikiAbyss from "../itembox/tib-wiki-abyss.vue";
import TibWikiAbyss from "./tib-wiki-abyss.vue";
interface HtaTabUseProps {
data: AbyssDataItem<TGApp.Plugins.Hutao.Abyss.AvatarUse[]>;

View File

@@ -1,23 +1,47 @@
<template>
<div class="hta-tl-box">
<div class="hta-tl-item">
<TibWikiAbyss2
<TItemBox
v-for="item in props.modelValue.Item.split(',')"
:key="item"
:model-value="item"
:model-value="getBoxData(item)"
/>
</div>
<div class="hta-tl-rate">上场{{ props.modelValue.Rate }}</div>
</div>
</template>
<script lang="ts" setup>
import TibWikiAbyss2 from "../itembox/tib-wiki-abyss-2.vue";
import { AppCharacterData } from "../../data/index.js";
import TItemBox, { TItemBoxData } from "../app/t-item-box.vue";
interface HtaTeamLineProps {
modelValue: { Item: string; Rate: number };
}
const props = defineProps<HtaTeamLineProps>();
function getBoxData(id: string): TItemBoxData {
const avatar = AppCharacterData.find((i) => i.id.toString() === id);
return {
bg: `/icon/bg/${avatar?.star ?? 5}-Star.webp`,
clickable: false,
display: "inner",
height: "80px",
icon: `/WIKI/character/${id}.webp`,
innerHeight: 20,
innerText: avatar?.name ?? "旅行者",
lt:
avatar === undefined
? ""
: avatar.element !== ""
? `/icon/element/${avatar.element}元素.webp`
: `/icon/weapon/${avatar.weapon}.webp`,
ltSize: "20px",
size: "80px",
innerIcon: `/icon/weapon/${avatar?.weapon ?? "单手剑"}.webp`,
innerBlur: "5px",
};
}
</script>
<style lang="css" scoped>
.hta-tl-box {

View File

@@ -13,7 +13,7 @@ import { ref, onMounted, computed } from "vue";
import { AppCharacterData } from "../../data/index.js";
import { AbyssDataItem } from "../../pages/WIKI/Abyss.vue";
import TItemBox, { type TItemBoxData } from "../main/t-itembox.vue";
import TItemBox, { type TItemBoxData } from "../app/t-item-box.vue";
interface TibWikiAbyssProps {
modelValue: AbyssDataItem<{ Item: number; Rate: number }>;

View File

@@ -1,49 +0,0 @@
<template>
<TItemBox :model-value="box" v-if="box" />
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import { AppCharacterData } from "../../data/index.js";
import TItemBox from "../main/t-itembox.vue";
import type { TItemBoxData } from "../main/t-itembox.vue";
interface TibAbyssDetailProps {
modelValue: TGApp.Sqlite.Abyss.CharacterInfo;
}
const props = defineProps<TibAbyssDetailProps>();
const box = ref<TItemBoxData>();
onMounted(async () => {
const res = AppCharacterData.find((a) => a.id === props.modelValue.id);
if (res === undefined) return;
if (props.modelValue.id === 10000005 || props.modelValue.id === 10000007) {
box.value = {
clickable: false,
height: "70px",
ltSize: "20px",
bg: `/icon/bg/${props.modelValue.star}-Star.webp`,
icon: `/WIKI/character/${props.modelValue.id}.webp`,
lt: `/icon/weapon/${res.weapon}.webp`,
innerText: `Lv.${props.modelValue.level}`,
innerHeight: 20,
display: "inner",
size: "70px",
};
} else {
box.value = {
clickable: false,
height: "70px",
ltSize: "20px",
bg: `/icon/bg/${props.modelValue.star}-Star.webp`,
icon: `/WIKI/character/${props.modelValue.id}.webp`,
lt: `/icon/element/${res.element}元素.webp`,
innerText: `Lv.${props.modelValue.level}`,
innerHeight: 20,
display: "inner",
size: "70px",
};
}
});
</script>

View File

@@ -1,34 +0,0 @@
<template>
<TItemBox v-model="box" v-if="box" />
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import { AppCharacterData } from "../../data/index.js";
import TItemBox from "../main/t-itembox.vue";
import type { TItemBoxData } from "../main/t-itembox.vue";
interface TibAbyssOverviewProps {
modelValue: TGApp.Sqlite.Abyss.Character;
}
const props = defineProps<TibAbyssOverviewProps>();
const box = ref<TItemBoxData>();
onMounted(() => {
const res = AppCharacterData.find((a) => a.id === props.modelValue.id);
if (res === undefined) return;
box.value = {
height: "80px",
ltSize: "20px",
clickable: false,
bg: `/icon/bg/${props.modelValue.star}-Star.webp`,
icon: `/WIKI/character/${props.modelValue.id}.webp`,
lt: `/icon/element/${res.element}元素.webp`,
innerText: props.modelValue.value.toString(),
display: "inner",
size: "80px",
innerHeight: 20,
};
});
</script>

View File

@@ -1,61 +0,0 @@
<template>
<TItemBox :model-value="box" />
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import TItemBox from "../main/t-itembox.vue";
import type { TItemBoxData } from "../main/t-itembox.vue";
interface TibCalendarItemProps {
model: "avatar" | "weapon";
data: TGApp.App.Calendar.Item;
clickable: boolean;
}
const props = defineProps<TibCalendarItemProps>();
const box = ref<TItemBoxData>({
bg: "",
icon: "",
size: "100px",
height: "100px",
display: "inner",
clickable: false,
lt: "",
ltSize: "20px",
innerHeight: 25,
innerIcon: "",
innerText: "",
});
onMounted(() => {
if (props.model === "avatar") {
box.value = {
bg: props.data.bg,
icon: props.data.icon,
size: "100px",
height: "100px",
display: "inner",
clickable: props.clickable,
lt: props.data.elementIcon ?? "",
ltSize: "20px",
innerHeight: 25,
innerIcon: props.data.weaponIcon,
innerText: props.data.name,
};
} else {
box.value = {
bg: props.data.bg,
icon: props.data.icon,
size: "100px",
height: "100px",
display: "inner",
clickable: props.clickable,
lt: props.data.weaponIcon,
ltSize: "20px",
innerHeight: 25,
innerText: props.data.name,
};
}
});
</script>

View File

@@ -1,44 +0,0 @@
<template>
<TItemBox :model-value="getBox()" :title="hoverTitle" />
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import TItemBox from "../main/t-itembox.vue";
import type { TItemBoxData } from "../main/t-itembox.vue";
interface TibUrAvatarProps {
modelValue: TGApp.Sqlite.Record.Avatar;
}
const props = defineProps<TibUrAvatarProps>();
const hoverTitle = ref<string>("点击查看详情");
const getName = (): string => {
return props.modelValue.id === 10000005
? "旅行者-空"
: props.modelValue.id === 10000007
? "旅行者-荧"
: props.modelValue.name;
};
function getBox(): TItemBoxData {
return {
size: "80px",
height: "80px",
ltSize: "20px",
clickable: false,
bg: `/icon/bg/${props.modelValue.star}-Star.webp`,
icon: `/WIKI/character/${props.modelValue.id}.webp`,
lt: `/icon/element/${props.modelValue.element}元素.webp`,
rt: props.modelValue.constellation.toString() || "0",
rtSize: "20px",
innerText: `${getName()}`,
innerHeight: 20,
display: "inner",
};
}
onMounted(async () => {
hoverTitle.value = `等级:${props.modelValue.level}\n好感${props.modelValue.fetter}\n角色ID${props.modelValue.id}`;
});
</script>

View File

@@ -1,43 +0,0 @@
<template>
<TItemBox :model-value="box" />
</template>
<script setup lang="ts">
import { ref, onMounted, computed } from "vue";
import { AppCharacterData } from "../../data/index.js";
import TItemBox, { type TItemBoxData } from "../main/t-itembox.vue";
interface TibWikiAbyssProps {
modelValue: string | number;
}
const props = defineProps<TibWikiAbyssProps>();
const avatar = ref<TGApp.App.Character.WikiBriefInfo>();
const box = computed<TItemBoxData>(() => {
return {
bg: `/icon/bg/${avatar.value?.star ?? 5}-Star.webp`,
clickable: false,
display: "inner",
height: "80px",
icon: `/WIKI/character/${props.modelValue}.webp`,
innerHeight: 20,
innerText: avatar.value?.name ?? "旅行者",
lt:
avatar.value === undefined
? ""
: avatar.value.element !== ""
? `/icon/element/${avatar.value.element}元素.webp`
: `/icon/weapon/${avatar.value.weapon}.webp`,
ltSize: "20px",
size: "80px",
innerIcon: `/icon/weapon/${avatar.value?.weapon}.webp`,
innerBlur: "5px",
};
});
onMounted(async () => {
avatar.value = AppCharacterData.find((a) => a.id.toString() === props.modelValue.toString())!;
});
</script>

View File

@@ -8,11 +8,11 @@
</template>
<script lang="ts" setup>
import { parseAnnoContent } from "../../web/utils/annoParser.js";
import TpBackupText from "../post/tp-backupText.vue";
import TpImage from "../post/tp-image.vue";
import TpText from "../post/tp-text.vue";
import TpTexts from "../post/tp-texts.vue";
import TpUnknown from "../post/tp-unknown.vue";
import TpBackupText from "../viewPost/tp-backupText.vue";
import TpImage from "../viewPost/tp-image.vue";
import TpText from "../viewPost/tp-text.vue";
import TpTexts from "../viewPost/tp-texts.vue";
import TpUnknown from "../viewPost/tp-unknown.vue";
import TaTable from "./ta-table.vue";

View File

@@ -34,8 +34,8 @@ import { xml2json } from "xml-js";
import { copyToClipboard, getImageBuffer, saveCanvasImg } from "../../utils/TGShare.js";
import { bytesToSize } from "../../utils/toolFunc.js";
import TOverlay from "../app/t-overlay.vue";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
interface ToArcBirthProps {
modelValue: boolean;

View File

@@ -25,9 +25,9 @@
import { computed, ref, watch } from "vue";
import TSUserCollection from "../../plugins/Sqlite/modules/userCollect.js";
import TOverlay from "../app/t-overlay.vue";
import showDialog from "../func/dialog.js";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
interface ToPostCollectProps {
modelValue: boolean;

View File

@@ -1,19 +1,13 @@
<template>
<div class="tcm-box">
<div class="tcm-left">
<div class="tcm-bg">
<img :src="props.item.bg" alt="bg" />
</div>
<div class="tcm-icon">
<img :src="props.item.icon" alt="icon" />
</div>
<div class="tcm-bg"><img :src="props.item.bg" alt="bg" /></div>
<div class="tcm-icon"><img :src="props.item.icon" alt="icon" /></div>
<div class="tcm-star" v-if="props.item.star !== 0">
<img :src="props.item.starIcon" alt="element" />
</div>
</div>
<div class="tcm-right">
{{ props.item.name }}
</div>
<div class="tcm-right">{{ props.item.name }}</div>
</div>
</template>
<script lang="ts" setup>

View File

@@ -1,13 +1,9 @@
<template>
<TOverlay v-model="visible" hide :to-click="onCancel" blur-val="20px">
<TOverlay v-model="visible" :to-click="onCancel" blur-val="20px" hide>
<div class="toc-box">
<div class="box-div">
<div class="toc-top">
<TibCalendarItem
:model="itemType"
:data="<TGApp.App.Calendar.Item>itemVal"
:clickable="false"
/>
<TItemBox :model-value="getBoxData()" />
<div class="toc-material-grid">
<TibCalendarMaterial
v-for="(item, index) in itemVal.materials"
@@ -16,7 +12,7 @@
/>
</div>
</div>
<img src="/source/UI/item-line.webp" alt="line" class="toc-line" />
<img alt="line" class="toc-line" src="/source/UI/item-line.webp" />
<div class="toc-bottom">
<div class="toc-src-box">
<div class="toc-src-text">来源</div>
@@ -29,13 +25,14 @@
</div>
</TOverlay>
</template>
<script setup lang="ts">
<script lang="ts" setup>
import { computed } from "vue";
import { useRouter } from "vue-router";
import TibCalendarItem from "../itembox/tib-calendar-item.vue";
import TibCalendarMaterial from "../itembox/tib-calendar-material.vue";
import TOverlay from "../main/t-overlay.vue";
import TItemBox, { TItemBoxData } from "../app/t-item-box.vue";
import TOverlay from "../app/t-overlay.vue";
import TibCalendarMaterial from "./ph-calendar-material.vue";
interface ToCalendarProps {
modelValue: boolean;
@@ -60,7 +57,6 @@ const visible = computed({
emits("update:modelValue", value);
},
});
const itemType = computed(() => props.dataType);
const itemVal = computed<TGApp.App.Calendar.Item>(() => props.dataVal);
const onCancel = (): void => {
@@ -75,9 +71,39 @@ async function toDetail(item: TGApp.App.Calendar.Item): Promise<void> {
await router.push(`/wiki/weapon/${item.id}`);
}
}
function getBoxData(): TItemBoxData {
if (props.dataType === "avatar") {
return {
bg: props.dataVal.bg,
icon: props.dataVal.icon,
size: "100px",
height: "100px",
display: "inner",
clickable: false,
lt: props.dataVal.elementIcon ?? "",
ltSize: "20px",
innerHeight: 25,
innerIcon: props.dataVal.weaponIcon,
innerText: props.dataVal.name,
};
} else {
return {
bg: props.dataVal.bg,
icon: props.dataVal.icon,
size: "100px",
height: "100px",
display: "inner",
clickable: false,
lt: props.dataVal.weaponIcon,
ltSize: "20px",
innerHeight: 25,
innerText: props.dataVal.name,
};
}
}
</script>
<style scoped>
/* overlay 盒子 */
<style lang="css" scoped>
.toc-box {
display: flex;
flex-direction: column;

View File

@@ -10,7 +10,7 @@
</template>
<template #default>
<div class="tc-top">
<div class="tc-btns">
<div class="tc-btn-list">
<v-btn
v-for="text of btnText"
:key="text.week"
@@ -31,7 +31,8 @@
: 'var(--btn-text)',
}"
@click="getContents(text.week)"
>{{ text.text }}
>
{{ text.text }}
</v-btn>
</div>
<v-pagination class="tc-page" v-model="page" :total-visible="visible" :length="length" />
@@ -39,13 +40,12 @@
<div class="tc-content">
<TCalendarBirth />
<div class="calendar-grid">
<div v-for="item in renderItems" :key="item.id" @click="selectItem(item)">
<TibCalendarItem
:data="<TGApp.App.Calendar.Item>item"
:model="switchType"
:clickable="true"
/>
</div>
<TItemBoxData
v-for="item in renderItems"
:key="item.id"
@click="selectItem(item)"
:model-value="getBoxData(item)"
/>
</div>
</div>
</template>
@@ -56,11 +56,12 @@
import { onMounted, ref, watch } from "vue";
import { AppCalendarData } from "../../data/index.js";
import TibCalendarItem from "../itembox/tib-calendar-item.vue";
import ToCalendar from "../overlay/to-calendar.vue";
import { timestampToDate } from "../../utils/toolFunc.js";
import type { TItemBoxData } from "../app/t-item-box.vue";
import TCalendarBirth from "./t-calendar-birth.vue";
import THomeCard from "./t-homecard.vue";
import TCalendarBirth from "./ph-calendar-birth.vue";
import ToCalendar from "./ph-calendar-overlay.vue";
import THomeCard from "./ph-comp-card.vue";
const weekNow = ref<number>(0);
const btnNow = ref<number>(0);
@@ -84,34 +85,13 @@ const selectedType = ref<"avatar" | "weapon">("avatar");
const renderItems = ref<TGApp.App.Calendar.Item[]>([]);
const btnText = [
{
week: 7,
text: "周日",
},
{
week: 1,
text: "周一",
},
{
week: 2,
text: "周二",
},
{
week: 3,
text: "周三",
},
{
week: 4,
text: "周四",
},
{
week: 5,
text: "周五",
},
{
week: 6,
text: "周六",
},
{ week: 7, text: "周日" },
{ week: 1, text: "周一" },
{ week: 2, text: "周二" },
{ week: 3, text: "周三" },
{ week: 4, text: "周四" },
{ week: 5, text: "周五" },
{ week: 6, text: "周六" },
];
interface TCalendarEmits {
@@ -123,14 +103,7 @@ const emits = defineEmits<TCalendarEmits>();
onMounted(async () => {
const dayNow = new Date().getDay() === 0 ? 7 : new Date().getDay();
const week = <{ week: number; text: string }>btnText.find((item) => item.week === dayNow);
dateNow.value =
new Date()
.toLocaleDateString("zh-CN", {
year: "numeric",
month: "2-digit",
day: "2-digit",
})
.replace(/\//g, "-") + ` ${week.text}`;
dateNow.value = `${timestampToDate(new Date().getTime())} ${week.text}`;
weekNow.value = dayNow;
btnNow.value = dayNow;
calendarNow.value = getCalendar(dayNow);
@@ -150,11 +123,8 @@ watch(
watch(
() => switchType.value,
() => {
if (page.value !== 1) {
page.value = 1;
} else {
renderItems.value = getGrid();
}
if (page.value !== 1) page.value = 1;
else renderItems.value = getGrid();
},
);
@@ -165,11 +135,8 @@ function getCalendar(day: number): TGApp.App.Calendar.Item[] {
function getGrid(): TGApp.App.Calendar.Item[] {
let selectedCards: TGApp.App.Calendar.Item[];
if (switchType.value === "avatar") {
selectedCards = characterCards.value;
} else {
selectedCards = weaponCards.value;
}
if (switchType.value === "avatar") selectedCards = characterCards.value;
else selectedCards = weaponCards.value;
length.value = Math.ceil(selectedCards.length / visible);
return selectedCards.slice((page.value - 1) * visible, page.value * visible);
}
@@ -185,10 +152,38 @@ function getContents(day: number): void {
calendarNow.value = getCalendar(day);
characterCards.value = calendarNow.value.filter((item) => item.itemType === "character");
weaponCards.value = calendarNow.value.filter((item) => item.itemType === "weapon");
if (page.value !== 1) {
page.value = 1;
if (page.value !== 1) page.value = 1;
else renderItems.value = getGrid();
}
function getBoxData(item: TGApp.App.Calendar.Item): TItemBoxData {
if (switchType.value === "avatar") {
return {
bg: item.bg,
icon: item.icon,
size: "100px",
height: "100px",
display: "inner",
clickable: true,
lt: item.elementIcon ?? "",
ltSize: "20px",
innerHeight: 25,
innerIcon: item.weaponIcon,
innerText: item.name,
};
} else {
renderItems.value = getGrid();
return {
bg: item.bg,
icon: item.icon,
size: "100px",
height: "100px",
display: "inner",
clickable: true,
lt: item.weaponIcon,
ltSize: "20px",
innerHeight: 25,
innerText: item.name,
};
}
}
</script>
@@ -210,7 +205,7 @@ function getContents(day: number): void {
margin-right: 5px;
}
.tc-btns {
.tc-btn-list {
display: flex;
align-items: center;
justify-content: center;

View File

@@ -3,7 +3,7 @@
<div class="thc-title">
<slot name="title"></slot>
</div>
<div class="thc-append" v-if="props.append">
<div v-if="props.append" class="thc-append">
<slot name="title-append"></slot>
</div>
<div class="thc-box">

View File

@@ -61,10 +61,10 @@ import Mys from "../../plugins/Mys/index.js";
import { useHomeStore } from "../../store/modules/home.js";
import { createPost, createTGWindow } from "../../utils/TGWindow.js";
import { stamp2LastTime } from "../../utils/toolFunc.js";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
import showSnackbar from "../func/snackbar.js";
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
import THomeCard from "./t-homecard.vue";
import THomeCard from "./ph-comp-card.vue";
// store
const homeStore = storeToRefs(useHomeStore());

View File

@@ -3,9 +3,9 @@
<template #title>近期活动</template>
<template #default>
<div class="position-grid">
<v-card v-for="(card, index) in positionCards" :key="index" rounded class="position-card">
<v-card v-for="(card, index) in positionCards" :key="index" class="position-card" rounded>
<v-list class="position-list">
<v-list-item :title="card.title" :subtitle="card.abstract">
<v-list-item :subtitle="card.abstract" :title="card.title">
<template #prepend>
<v-avatar rounded="0" @click="openPosition(card)">
<v-img :src="card.icon" class="position-icon" />
@@ -36,7 +36,7 @@
</THomeCard>
</template>
<script lang="ts" setup>
import { ref, onMounted, onUnmounted } from "vue";
import { onMounted, onUnmounted, ref } from "vue";
import Mys from "../../plugins/Mys/index.js";
import { parseLink } from "../../utils/linkParser.js";
@@ -44,7 +44,7 @@ import { createPost } from "../../utils/TGWindow.js";
import { stamp2LastTime } from "../../utils/toolFunc.js";
import showSnackbar from "../func/snackbar.js";
import THomeCard from "./t-homecard.vue";
import THomeCard from "./ph-comp-card.vue";
// data
const positionCards = ref<TGApp.Plugins.Mys.Position.RenderCard[]>([]);

View File

@@ -32,8 +32,8 @@ import { useRouter } from "vue-router";
import { useAppStore } from "../../store/modules/app.js";
import { ToChannelItem } from "../../web/constant/bbs.js";
import TGConstant from "../../web/constant/TGConstant.js";
import TOverlay from "../app/t-overlay.vue";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
interface ToChannelProps {
gid?: string;

View File

@@ -103,10 +103,10 @@ import { useRouter } from "vue-router";
import { WikiCharacterData, AppNameCardsData, AppCharacterData } from "../../data/index.js";
import { createObc } from "../../utils/TGWindow.js";
import { parseHtmlText } from "../../utils/toolFunc.js";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
import ToNamecard from "../app/to-namecard.vue";
import TopNamecard from "../app/top-namecard.vue";
import showSnackbar from "../func/snackbar.js";
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
import ToNamecard from "../overlay/to-namecard.vue";
import TopNamecard from "../overlay/top-namecard.vue";
import TwcConstellations from "./twc-constellations.vue";
import TwcMaterials from "./twc-materials.vue";

View File

@@ -56,8 +56,8 @@ import { computed, onMounted, ref, watch } from "vue";
import { WikiWeaponData } from "../../data/index.js";
import { createObc } from "../../utils/TGWindow.js";
import { parseHtmlText } from "../../utils/toolFunc.js";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
import showSnackbar from "../func/snackbar.js";
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
import TwcMaterials from "./twc-materials.vue";

View File

@@ -31,7 +31,7 @@ import { computed } from "vue";
import { generateShareImg } from "../../utils/TGShare.js";
import { parseHtmlText } from "../../utils/toolFunc.js";
import TOverlay from "../main/t-overlay.vue";
import TOverlay from "../app/t-overlay.vue";
import TwoConvert from "./two-convert.vue";
import TwoSource from "./two-source.vue";

View File

@@ -67,7 +67,7 @@
<script setup lang="ts">
import { computed, ref, watch } from "vue";
import TOverlay from "../main/t-overlay.vue";
import TOverlay from "../app/t-overlay.vue";
//
const selectStarList = [4, 5];

View File

@@ -37,7 +37,7 @@
<script setup lang="ts">
import { computed, ref, watch } from "vue";
import TOverlay from "../main/t-overlay.vue";
import TOverlay from "../app/t-overlay.vue";
//
const selectStarList = [4, 5];

View File

@@ -2,16 +2,17 @@
<div class="tud-db-box">
<div class="tud-db-time">{{ props.title }} {{ props.modelValue.time }}</div>
<div class="tud-db-icons-grid">
<TibAbyssDetail
<TItemBox
v-for="avatar in props.modelValue.characters"
:key="avatar.id"
:model-value="avatar"
:model-value="getBoxData(avatar)"
/>
</div>
</div>
</template>
<script lang="ts" setup>
import TibAbyssDetail from "../itembox/tib-abyss-detail.vue";
import { AppCharacterData } from "../../data/index.js";
import TItemBox, { TItemBoxData } from "../app/t-item-box.vue";
interface TuaDetailBattleProps {
title: string;
@@ -19,6 +20,36 @@ interface TuaDetailBattleProps {
}
const props = defineProps<TuaDetailBattleProps>();
function getBoxData(avatar: TGApp.Sqlite.Abyss.CharacterInfo): TItemBoxData {
const res = AppCharacterData.find((i) => i.id === avatar.id);
if (avatar.id === 10000005 || avatar.id === 10000007) {
return {
clickable: false,
height: "70px",
ltSize: "20px",
bg: `/icon/bg/${avatar.star}-Star.webp`,
icon: `/WIKI/character/${avatar.id}.webp`,
lt: `/icon/weapon/${res?.weapon ?? "单手剑"}.webp`,
innerText: `Lv.${avatar.level}`,
innerHeight: 20,
display: "inner",
size: "70px",
};
}
return {
clickable: false,
height: "70px",
ltSize: "20px",
bg: `/icon/bg/${avatar.star}-Star.webp`,
icon: `/WIKI/character/${avatar.id}.webp`,
lt: `/icon/element/${res?.element ?? "风"}元素.webp`,
innerText: `Lv.${avatar.level}`,
innerHeight: 20,
display: "inner",
size: "70px",
};
}
</script>
<style lang="css" scoped>
.tud-db-icons-grid {

View File

@@ -12,10 +12,10 @@
</div>
<div v-if="props.valIcons" class="tuao-val-icons">
<slot name="val-icons">
<TibAbyssOverview
v-for="avatar in JSON.parse(props.valIcons) as TGApp.Sqlite.Abyss.Character[]"
<TItemBox
v-for="avatar in props.valIcons"
:key="avatar.id"
:model-value="avatar"
:model-value="getBoxData(avatar)"
/>
</slot>
</div>
@@ -24,17 +24,34 @@
<script lang="ts" setup>
import { computed } from "vue";
import TibAbyssOverview from "../itembox/tib-abyss-overview.vue";
import { AppCharacterData } from "../../data/index.js";
import TItemBox, { TItemBoxData } from "../app/t-item-box.vue";
interface TAOProps {
title: string;
valText?: string | number;
valIcons?: string;
valIcons?: TGApp.Sqlite.Abyss.Character[];
multi4?: boolean;
}
const props = defineProps<TAOProps>();
const getIconNum = computed(() => (props.multi4 ? 4 : 1));
function getBoxData(avatar: TGApp.Sqlite.Abyss.Character): TItemBoxData {
const res = AppCharacterData.find((a) => a.id === avatar.id);
return {
height: "80px",
ltSize: "20px",
clickable: false,
bg: `/icon/bg/${avatar.star}-Star.webp`,
icon: `/WIKI/character/${avatar.id}.webp`,
lt: `/icon/element/${res?.element ?? "风"}元素.webp`,
innerText: avatar.value.toString(),
display: "inner",
size: "80px",
innerHeight: 20,
};
}
</script>
<style lang="css" scoped>
.tuao-box {

View File

@@ -34,9 +34,9 @@ import { ref, computed, watch, onMounted } from "vue";
import { AppAchievementSeriesData, AppNameCardsData } from "../../data/index.js";
import TSUserAchi from "../../plugins/Sqlite/modules/userAchi.js";
import ToNameCard from "../app/to-namecard.vue";
import TopNameCard from "../app/top-namecard.vue";
import showSnackbar from "../func/snackbar.js";
import ToNameCard from "../overlay/to-namecard.vue";
import TopNameCard from "../overlay/top-namecard.vue";
import ToAchiInfo from "./tua-achi-overlay.vue";
import TuaAchi from "./tua-achi.vue";

View File

@@ -49,15 +49,15 @@
<slot name="right"></slot>
</div>
</TOverlay>
<ToPostSearch gid="2" v-model="showSearch" :keyword="search" />
<VpOverlaySearch gid="2" v-model="showSearch" :keyword="search" />
</template>
<script lang="ts" setup>
import { computed, ref } from "vue";
import { AppAchievementSeriesData } from "../../data/index.js";
import TGLogger from "../../utils/TGLogger.js";
import TOverlay from "../main/t-overlay.vue";
import ToPostSearch from "../post/to-postSearch.vue";
import TOverlay from "../app/t-overlay.vue";
import VpOverlaySearch from "../viewPost/vp-overlay-search.vue";
interface ToAchiInfoProps {
modelValue: boolean;

View File

@@ -50,7 +50,7 @@ import { computed } from "vue";
import TSUserAvatar from "../../plugins/Sqlite/modules/userAvatar.js";
import { useUserStore } from "../../store/modules/user.js";
import { getZhElement } from "../../utils/toolFunc.js";
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
import TuaRelicBox from "./tua-relic-box.vue";

View File

@@ -46,7 +46,7 @@
<script lang="ts" setup>
import { computed, ref, watch } from "vue";
import TOverlay from "../main/t-overlay.vue";
import TOverlay from "../app/t-overlay.vue";
import TucDetailCard from "../userAvatarCard/tuc-detail-card.vue";
import TucDetailOld from "../userAvatarOld/tuc-detail-old.vue";

View File

@@ -14,7 +14,7 @@
import { computed } from "vue";
import { getZhElement } from "../../utils/toolFunc.js";
import TItemBox, { TItemBoxData } from "../main/t-itembox.vue";
import TItemBox, { TItemBoxData } from "../app/t-item-box.vue";
type DucDetailOltProps =
| {

View File

@@ -7,7 +7,7 @@
import { computed } from "vue";
import { getZhElement } from "../../utils/toolFunc.js";
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
interface TucAvatarsProps {
modelValue: TGApp.Game.Combat.Avatar[];

View File

@@ -14,7 +14,7 @@
</div>
</template>
<script lang="ts" setup>
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
interface TucFightProps {
label: string;

View File

@@ -57,9 +57,9 @@ import { useRouter } from "vue-router";
import { AppGachaData, AppCharacterData, AppWeaponData } from "../../data/index.js";
import { createPost } from "../../utils/TGWindow.js";
import { timestampToDate } from "../../utils/toolFunc.js";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
import showDialog from "../func/dialog.js";
import showSnackbar from "../func/snackbar.js";
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
interface GroHistoryMap {
tab: string;

View File

@@ -1,18 +1,46 @@
<template>
<div v-if="props.modelValue.length === 0">暂无数据</div>
<div v-else class="tur-ag-box">
<TibUrAvatar v-for="avatar in props.modelValue" :key="avatar.id" :model-value="avatar" />
<TItembox
v-for="avatar in props.modelValue"
:key="avatar.id"
:model-value="getBoxData(avatar)"
:title="getTitle(avatar)"
/>
</div>
</template>
<script lang="ts" setup>
import TibUrAvatar from "../itembox/tib-ur-avatar.vue";
import TItembox, { TItemBoxData } from "../app/t-item-box.vue";
interface TurAvatarGridProps {
modelValue: TGApp.Sqlite.Record.Avatar[];
}
const props = defineProps<TurAvatarGridProps>();
function getBoxData(avatar: TGApp.Sqlite.Record.Avatar): TItemBoxData {
let name = avatar.name;
if (avatar.id === 10000005) name = "旅行者-空";
if (avatar.id === 10000007) name = "旅行者-荧";
return {
size: "80px",
height: "80px",
ltSize: "20px",
clickable: false,
bg: `/icon/bg/${avatar.star}-Star.webp`,
icon: `/WIKI/character/${avatar.id}.webp`,
lt: `/icon/element/${avatar.element}元素.webp`,
rt: avatar.constellation.toString() || "0",
rtSize: "20px",
innerText: name,
innerHeight: 20,
display: "inner",
};
}
function getTitle(avatar: TGApp.Sqlite.Record.Avatar): string {
return `等级:${avatar.level}\n好感${avatar.fetter}\n角色ID${avatar.id}`;
}
</script>
<style lang="css" scoped>
.tur-ag-box {

View File

@@ -1,10 +1,10 @@
<template>
<div
class="tur-hs-box"
:style="{
backgroundImage: 'url(' + getUrl.bg + ')',
backgroundSize: 'cover',
}"
class="tur-hs-box"
>
<div class="tur-hs-name">
{{ data.name }}

View File

@@ -3,83 +3,83 @@
<div v-else>
<div class="tur-og-box-3">
<TurOverviewSub
title="活跃天数"
:text="props.modelValue.activeDays"
icon="/source/UI/userRecord.webp"
title="活跃天数"
/>
<TurOverviewSub
title="深境螺旋"
:text="props.modelValue.sprialAbyss"
icon="/source/UI/userAbyss.webp"
title="深境螺旋"
/>
<TurOverviewSub
title="幻想真境剧诗"
:text="props.modelValue.combatRole"
icon="/icon/material/201.webp"
title="幻想真境剧诗"
/>
</div>
<div class="tur-og-box">
<TurOverviewSub
title="获得角色数"
:text="props.modelValue.avatarNumber"
icon="/source/UI/userAvatar.webp"
title="获得角色数"
/>
<TurOverviewSub
title="满好感角色数"
:text="props.modelValue.avatarFetter"
icon="/icon/material/105.webp"
title="满好感角色数"
/>
<TurOverviewSub title="成就达成数" :text="props.modelValue.achievementNumber" icon="icon">
<TurOverviewSub :text="props.modelValue.achievementNumber" icon="icon" title="成就达成数">
<template #icon>
<img
src="../../assets/icons/achievements.svg"
alt="achievement-icon"
width="25px"
height="25px"
src="../../assets/icons/achievements.svg"
width="25px"
/>
</template>
</TurOverviewSub>
<TurOverviewSub
title="解锁传送点"
:text="props.modelValue.wayPoints"
icon="/icon/material/220005.webp"
title="解锁传送点"
/>
<TurOverviewSub title="解锁秘境" :text="props.modelValue.domainNumber" />
<TurOverviewSub :text="props.modelValue.domainNumber" title="解锁秘境" />
<TurOverviewSub
title="火神瞳"
:text="props.modelValue.pyroCulus"
icon="/icon/material/107028.webp"
title="火神瞳"
/>
<TurOverviewSub
title="风神瞳"
:text="props.modelValue.anemoCulus"
icon="/icon/material/107001.webp"
title="风神瞳"
/>
<TurOverviewSub
title="岩神瞳"
:text="props.modelValue.geoCulus"
icon="/icon/material/107003.webp"
title="岩神瞳"
/>
<TurOverviewSub
title="雷神瞳"
:text="props.modelValue.electroCulus"
icon="/icon/material/107014.webp"
title="雷神瞳"
/>
<TurOverviewSub
title="草神瞳"
:text="props.modelValue.dendroCulus"
icon="/icon/material/107017.webp"
title="草神瞳"
/>
<TurOverviewSub
title="水神瞳"
:text="props.modelValue.hydroCulus"
icon="/icon/material/107023.webp"
title="水神瞳"
/>
<TurOverviewSub title="华丽宝箱数" :text="props.modelValue.luxuriousChest" />
<TurOverviewSub title="珍贵宝箱数" :text="props.modelValue.preciousChest" />
<TurOverviewSub title="精致宝箱数" :text="props.modelValue.exquisiteChest" />
<TurOverviewSub title="普通宝箱数" :text="props.modelValue.commonChest" />
<TurOverviewSub title="奇馈宝箱数" :text="props.modelValue.magicChest" />
<TurOverviewSub :text="props.modelValue.luxuriousChest" title="华丽宝箱数" />
<TurOverviewSub :text="props.modelValue.preciousChest" title="珍贵宝箱数" />
<TurOverviewSub :text="props.modelValue.exquisiteChest" title="精致宝箱数" />
<TurOverviewSub :text="props.modelValue.commonChest" title="普通宝箱数" />
<TurOverviewSub :text="props.modelValue.magicChest" title="奇馈宝箱数" />
</div>
</div>
</template>

View File

@@ -1,7 +1,7 @@
<template>
<div class="tur-ri-box">
<div class="tur-ri-avatar">
<img alt="avatar" :src="props.modelValue.avatar" />
<img :src="props.modelValue.avatar" alt="avatar" />
</div>
<div class="tur-ri-content">
<div class="tur-ri-title">

View File

@@ -13,18 +13,18 @@
<span></span>
</span>
</div>
<div class="tur-ws-sub" v-if="data.children.length === 0">
<div v-if="data.children.length === 0" class="tur-ws-sub">
<span>探索度</span>
<span>{{ data.exploration / 10 }}</span>
<span>%</span>
</div>
<div v-else>
<div class="tur-ws-sub" v-if="data.exploration !== 0">
<div v-if="data.exploration !== 0" class="tur-ws-sub">
<span>{{ data.name }}探索度</span>
<span>{{ data.exploration / 10 }}</span>
<span>%</span>
</div>
<div class="tur-ws-sub" v-for="item in data.children" :key="item.id">
<div v-for="item in data.children" :key="item.id" class="tur-ws-sub">
<span>{{ item.name }}探索度</span>
<span>{{ item.exploration / 10 }}</span>
<span>%</span>

View File

@@ -8,7 +8,7 @@
<v-icon size="small">mdi-gift</v-icon>
<span>{{ props.data.insert.lottery.toast }}</span>
</div>
<TpoLottery
<VpOverlayLottery
v-if="props.data.insert.lottery"
v-model="showLottery"
:lottery="props.data.insert.lottery.id"
@@ -29,7 +29,7 @@ import { ref, toRaw } from "vue";
import TpParser from "./tp-parser.vue";
import TpUnknown from "./tp-unknown.vue";
import TpoLottery from "./tpo-lottery.vue";
import VpOverlayLottery from "./vp-overlay-lottery.vue";
interface TpBackupText {
insert: {

View File

@@ -6,7 +6,7 @@
<v-progress-circular :indeterminate="true" color="primary" size="small" />
<span>加载中...</span>
</div>
<TpoImage :image="props.data" v-model="showOverlay" />
<VpOverlayImage :image="props.data" v-model="showOverlay" />
</template>
<script lang="ts" setup>
import { computed, ref, onMounted, onUnmounted } from "vue";
@@ -14,7 +14,7 @@ import { computed, ref, onMounted, onUnmounted } from "vue";
import { saveImgLocal } from "../../utils/TGShare.js";
import { bytesToSize } from "../../utils/toolFunc.js";
import TpoImage from "./tpo-image.vue";
import VpOverlayImage from "./vp-overlay-image.vue";
export interface TpImage {
insert: {

View File

@@ -1,3 +1,4 @@
<!-- 收藏按钮 -->
<template>
<div class="tbc-box" data-html2canvas-ignore>
<div class="tbc-btn" @click="switchCollect()" :title="isCollected ? '取消收藏' : '收藏'">
@@ -9,7 +10,7 @@
<v-icon size="small">mdi-pencil</v-icon>
</div>
</div>
<ToPostCollect v-model="showEdit" :post="props.data" @submit="refresh()" />
<VpOverlayCollect v-model="showEdit" :post="props.data" @submit="refresh()" />
</template>
<script lang="ts" setup>
import { event } from "@tauri-apps/api";
@@ -19,7 +20,8 @@ import TSUserCollection from "../../plugins/Sqlite/modules/userCollect.js";
import TGLogger from "../../utils/TGLogger.js";
import showDialog from "../func/dialog.js";
import showSnackbar from "../func/snackbar.js";
import ToPostCollect from "../overlay/to-postCollect.vue";
import VpOverlayCollect from "./vp-overlay-collect.vue";
const isCollected = ref(false);
const collect = ref<Array<TGApp.Sqlite.UserCollection.UFMap>>([]);

View File

@@ -1,3 +1,4 @@
<!-- 查看回复按钮 -->
<template>
<div class="tpr-main-box" title="查看回复">
<v-menu
@@ -42,7 +43,7 @@
<v-btn @click="showOverlay = false" icon="mdi-close" class="tpr-btn-close" size="small" />
</div>
<v-list class="tpr-reply-list">
<TprReply
<VpReplyItem
v-for="(item, index) in reply"
:key="index"
:modelValue="item"
@@ -59,7 +60,7 @@
</div>
</v-menu>
</div>
<TprDebug v-if="appStore.devMode" v-model="showDebug" />
<VpReplyDebug v-if="appStore.devMode" v-model="showDebug" />
</template>
<script lang="ts" setup>
import { computed, ref, watch } from "vue";
@@ -68,8 +69,8 @@ import Mys from "../../plugins/Mys/index.js";
import { useAppStore } from "../../store/modules/app.js";
import showSnackbar from "../func/snackbar.js";
import TprDebug from "./tpr-debug.vue";
import TprReply from "./tpr-reply.vue";
import VpReplyDebug from "./vp-reply-debug.vue";
import VpReplyItem from "./vp-reply-item.vue";
interface TprMainProps {
gid: number;

View File

@@ -37,9 +37,9 @@
import { computed, ref, watch } from "vue";
import TSUserCollection from "../../plugins/Sqlite/modules/userCollect.js";
import TOverlay from "../app/t-overlay.vue";
import showDialog from "../func/dialog.js";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
interface ToPostCollectProps {
modelValue: boolean;

View File

@@ -51,8 +51,8 @@ import { computed, onMounted, ref, useTemplateRef, watch } from "vue";
import { useRouter } from "vue-router";
import Mys from "../../plugins/Mys/index.js";
import TOverlay from "../app/t-overlay.vue";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
interface TpoCollectionProps {
collection: TGApp.Plugins.Mys.Post.Collection;

View File

@@ -27,8 +27,8 @@ import { computed, onUnmounted, ref } from "vue";
import { copyToClipboard, getImageBuffer, saveCanvasImg } from "../../utils/TGShare.js";
import { bytesToSize } from "../../utils/toolFunc.js";
import TOverlay from "../app/t-overlay.vue";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
import { TpImage } from "./tp-image.vue";

View File

@@ -45,8 +45,8 @@
import { computed, ref, watch } from "vue";
import Mys from "../../plugins/Mys/index.js";
import TOverlay from "../app/t-overlay.vue";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
interface TpoLotteryProps {
modelValue: boolean;

View File

@@ -20,9 +20,9 @@
import { computed, onMounted, ref, watch } from "vue";
import Mys from "../../plugins/Mys/index.js";
import TOverlay from "../app/t-overlay.vue";
import TPostCard from "../app/t-postcard.vue";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
import TPostCard from "../main/t-postcard.vue";
// data
const search = ref("");

View File

@@ -17,10 +17,10 @@ import { open } from "@tauri-apps/plugin-dialog";
import { readTextFile } from "@tauri-apps/plugin-fs";
import { computed, ref } from "vue";
import TOverlay from "../app/t-overlay.vue";
import showSnackbar from "../func/snackbar.js";
import TOverlay from "../main/t-overlay.vue";
import TprReply from "./tpr-reply.vue";
import TprReply from "./vp-reply-item.vue";
interface TprDebugProps {
modelValue: boolean;

View File

@@ -110,7 +110,8 @@ import Mys from "../../plugins/Mys/index.js";
import { generateShareImg } from "../../utils/TGShare.js";
import showDialog from "../func/dialog.js";
import showSnackbar from "../func/snackbar.js";
import TpParser from "../post/tp-parser.vue";
import TpParser from "./tp-parser.vue";
type TprReplyProps =
| {

View File

@@ -37,7 +37,7 @@
import { onMounted, ref, watch } from "vue";
import { useRoute } from "vue-router";
import ToArcBrith from "../../components/overlay/to-arcBrith.vue";
import ToArcBrith from "../../components/pageArchive/to-arcBrith.vue";
import { ArcBirDraw, ArcBirRole } from "../../data/index.js";
import TGClient from "../../utils/TGClient.js";

View File

@@ -93,11 +93,7 @@
</div>
<TSubLine>详情</TSubLine>
<div class="uaw-d-box">
<TuaDetail
v-for="floor in JSON.parse(item.floors) as TGApp.Sqlite.Abyss.Floor[]"
:key="floor.id"
:model-value="floor"
/>
<TuaDetail v-for="floor in item.floors" :key="floor.id" :model-value="floor" />
</div>
</div>
</v-window-item>
@@ -111,13 +107,13 @@
<script lang="ts" setup>
import { getVersion } from "@tauri-apps/api/app";
import { storeToRefs } from "pinia";
import { onMounted, ref, watch, computed } from "vue";
import { computed, onMounted, ref, watch } from "vue";
import { useRouter } from "vue-router";
import TSubLine from "../../components/app/t-subline.vue";
import showDialog from "../../components/func/dialog.js";
import showLoading from "../../components/func/loading.js";
import showSnackbar from "../../components/func/snackbar.js";
import TSubLine from "../../components/main/t-subline.vue";
import TuaDetail from "../../components/userAbyss/tua-detail.vue";
import TuaOverview from "../../components/userAbyss/tua-overview.vue";
import Hutao from "../../plugins/Hutao/index.js";
@@ -136,7 +132,7 @@ const userStore = storeToRefs(useUserStore());
const userTab = ref<number>(0);
const user = computed<TGApp.Sqlite.Account.Game>(() => userStore.account.value);
const localAbyss = ref<TGApp.Sqlite.Abyss.SingleTable[]>([]);
const localAbyss = ref<TGApp.Sqlite.Abyss.TableData[]>([]);
const abyssRef = ref<HTMLElement>(<HTMLElement>{});
const version = ref<string>();
const router = useRouter();

View File

@@ -107,9 +107,9 @@ import { onMounted, ref, watch, computed } from "vue";
import showDialog from "../../components/func/dialog.js";
import showLoading from "../../components/func/loading.js";
import showSnackbar from "../../components/func/snackbar.js";
import TwoSelectC, { SelectedCValue } from "../../components/pageWiki/two-select-c.vue";
import TuaAvatarBox from "../../components/userAvatar/tua-avatar-box.vue";
import TuaDetailOverlay from "../../components/userAvatar/tua-detail-overlay.vue";
import TwoSelectC, { SelectedCValue } from "../../components/wiki/two-select-c.vue";
import { AppCharacterData } from "../../data/index.js";
import TSUserAvatar from "../../plugins/Sqlite/modules/userAvatar.js";
import TSUserRecord from "../../plugins/Sqlite/modules/userRecord.js";

View File

@@ -95,10 +95,10 @@ import { storeToRefs } from "pinia";
import { onMounted, ref, watch, computed } from "vue";
import { useRouter } from "vue-router";
import TSubLine from "../../components/app/t-subline.vue";
import showDialog from "../../components/func/dialog.js";
import showLoading from "../../components/func/loading.js";
import showSnackbar from "../../components/func/snackbar.js";
import TSubLine from "../../components/main/t-subline.vue";
import TucAvatars from "../../components/userCombat/tuc-avatars.vue";
import TucOverview from "../../components/userCombat/tuc-overview.vue";
import TucRound from "../../components/userCombat/tuc-round.vue";

View File

@@ -57,10 +57,10 @@ import { onMounted, ref, watch, computed } from "vue";
import showDialog from "../../components/func/dialog.js";
import showLoading from "../../components/func/loading.js";
import showSnackbar from "../../components/func/snackbar.js";
import GroEcharts from "../../components/gachaRecord/gro-echarts.vue";
import GroHistory from "../../components/gachaRecord/gro-history.vue";
import GroOverview from "../../components/gachaRecord/gro-overview.vue";
import GroTable from "../../components/gachaRecord/gro-table.vue";
import GroEcharts from "../../components/userGacha/gro-echarts.vue";
import GroHistory from "../../components/userGacha/gro-history.vue";
import GroOverview from "../../components/userGacha/gro-overview.vue";
import GroTable from "../../components/userGacha/gro-table.vue";
import { AppCharacterData, AppWeaponData } from "../../data/index.js";
import TSUserGacha from "../../plugins/Sqlite/modules/userGacha.js";
import { useUserStore } from "../../store/modules/user.js";

View File

@@ -59,10 +59,10 @@ import { getVersion } from "@tauri-apps/api/app";
import { storeToRefs } from "pinia";
import { computed, onMounted, ref, watch } from "vue";
import TSubLine from "../../components/app/t-subline.vue";
import showDialog from "../../components/func/dialog.js";
import showLoading from "../../components/func/loading.js";
import showSnackbar from "../../components/func/snackbar.js";
import TSubLine from "../../components/main/t-subline.vue";
import TurAvatarGrid from "../../components/userRecord/tur-avatar-grid.vue";
import TurHomeGrid from "../../components/userRecord/tur-home-grid.vue";
import TurOverviewGrid from "../../components/userRecord/tur-overview-grid.vue";

Some files were not shown because too many files have changed in this diff Show More