mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-13 09:28:14 +08:00
🚸 一些调整
This commit is contained in:
@@ -5,8 +5,8 @@
|
|||||||
<img :src="localCover" alt="cover" v-if="localCover" />
|
<img :src="localCover" alt="cover" v-if="localCover" />
|
||||||
<v-progress-circular color="primary" :indeterminate="true" v-else-if="card.cover !== ''" />
|
<v-progress-circular color="primary" :indeterminate="true" v-else-if="card.cover !== ''" />
|
||||||
<img src="/source/UI/defaultCover.webp" alt="cover" v-else />
|
<img src="/source/UI/defaultCover.webp" alt="cover" v-else />
|
||||||
<div v-if="isAct" class="tpc-act">
|
<div v-if="card.status" class="tpc-act">
|
||||||
<div class="tpc-status">{{ card.status?.status }}</div>
|
<div class="tpc-status">{{ card.status?.label }}</div>
|
||||||
<div class="tpc-time">
|
<div class="tpc-time">
|
||||||
<v-icon>mdi-clock-time-four-outline</v-icon>
|
<v-icon>mdi-clock-time-four-outline</v-icon>
|
||||||
<span>{{ card.subtitle }}</span>
|
<span>{{ card.subtitle }}</span>
|
||||||
@@ -77,15 +77,28 @@ import { createPost } from "@/utils/TGWindow.js";
|
|||||||
|
|
||||||
type TPostCardProps = { modelValue: TGApp.Plugins.Mys.Post.FullData; selectMode?: boolean };
|
type TPostCardProps = { modelValue: TGApp.Plugins.Mys.Post.FullData; selectMode?: boolean };
|
||||||
type TPostCardEmits = (e: "onSelected", v: string) => void;
|
type TPostCardEmits = (e: "onSelected", v: string) => void;
|
||||||
|
type TPostStatus = TGApp.Plugins.Mys.News.RenderStatus & { stat: ActStat };
|
||||||
|
|
||||||
|
enum ActStat {
|
||||||
|
UNKNOWN,
|
||||||
|
STARTED,
|
||||||
|
FINISHED,
|
||||||
|
SELECTION,
|
||||||
|
}
|
||||||
|
|
||||||
|
const stats: Readonly<Array<TPostStatus>> = [
|
||||||
|
{ stat: ActStat.UNKNOWN, label: "未知", color: "var(--tgc-od-red)" },
|
||||||
|
{ stat: ActStat.STARTED, label: "进行中", color: "var(--tgc-od-green)" },
|
||||||
|
{ stat: ActStat.FINISHED, label: "已结束", color: "var(--tgc-od-white)" },
|
||||||
|
{ stat: ActStat.SELECTION, label: "评选中", color: "var(--tgc-od-orange)" },
|
||||||
|
];
|
||||||
const props = withDefaults(defineProps<TPostCardProps>(), { selectMode: false });
|
const props = withDefaults(defineProps<TPostCardProps>(), { selectMode: false });
|
||||||
const emits = defineEmits<TPostCardEmits>();
|
const emits = defineEmits<TPostCardEmits>();
|
||||||
const isAct = ref<boolean>(false);
|
|
||||||
const card = shallowRef<TGApp.Plugins.Mys.News.RenderCard>();
|
const card = shallowRef<TGApp.Plugins.Mys.News.RenderCard>();
|
||||||
const localCover = ref<string>();
|
const localCover = ref<string>();
|
||||||
|
|
||||||
const cardBg = computed<string>(() => {
|
const cardBg = computed<string>(() => {
|
||||||
if (card.value && card.value.status) return card.value.status.colorCss;
|
if (card.value && card.value.status) return card.value.status.color;
|
||||||
return "none";
|
return "none";
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -114,52 +127,12 @@ onUnmounted(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// todo 优化结构
|
|
||||||
/**
|
|
||||||
* @description 活动状态
|
|
||||||
* @since Alpha v0.2.1
|
|
||||||
* @enum {TGApp.Plugins.Mys.News.RenderStatus}
|
|
||||||
* @property {TGApp.Plugins.Mys.News.RenderStatus} STARTED 进行中
|
|
||||||
* @property {TGApp.Plugins.Mys.News.RenderStatus} FINISHED 已结束
|
|
||||||
* @property {TGApp.Plugins.Mys.News.RenderStatus} SELECTION 评选中
|
|
||||||
* @return EnumStatus
|
|
||||||
*/
|
|
||||||
const EnumStatus = {
|
|
||||||
STARTED: {
|
|
||||||
status: "进行中",
|
|
||||||
colorCss: "var(--tgc-od-green)",
|
|
||||||
},
|
|
||||||
FINISHED: {
|
|
||||||
status: "已结束",
|
|
||||||
colorCss: "var(--tgc-od-white)",
|
|
||||||
},
|
|
||||||
SELECTION: {
|
|
||||||
status: "评选中",
|
|
||||||
colorCss: "var(--tgc-od-orange)",
|
|
||||||
},
|
|
||||||
UNKNOWN: {
|
|
||||||
status: "未知",
|
|
||||||
colorCss: "var(--tgc-od-red)",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description 获取活动状态
|
|
||||||
* @since Alpha
|
|
||||||
* @param {number} status 活动状态码
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
function getActivityStatus(status: number): TGApp.Plugins.Mys.News.RenderStatus {
|
function getActivityStatus(status: number): TGApp.Plugins.Mys.News.RenderStatus {
|
||||||
switch (status) {
|
if (status satisfies ActStat) {
|
||||||
case 1:
|
const stat: ActStat = status;
|
||||||
return EnumStatus.STARTED;
|
return stats[stat];
|
||||||
case 2:
|
|
||||||
return EnumStatus.SELECTION;
|
|
||||||
case 3:
|
|
||||||
return EnumStatus.FINISHED;
|
|
||||||
default:
|
|
||||||
return EnumStatus.UNKNOWN;
|
|
||||||
}
|
}
|
||||||
|
return stats[ActStat.UNKNOWN];
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPostCover(item: TGApp.Plugins.Mys.Post.FullData): string {
|
function getPostCover(item: TGApp.Plugins.Mys.Post.FullData): string {
|
||||||
@@ -179,26 +152,28 @@ function getPostCover(item: TGApp.Plugins.Mys.Post.FullData): string {
|
|||||||
* @returns {TGApp.Plugins.Mys.News.RenderCard} 渲染用咨讯列表项
|
* @returns {TGApp.Plugins.Mys.News.RenderCard} 渲染用咨讯列表项
|
||||||
*/
|
*/
|
||||||
function getCommonCard(item: TGApp.Plugins.Mys.Post.FullData): TGApp.Plugins.Mys.News.RenderCard {
|
function getCommonCard(item: TGApp.Plugins.Mys.Post.FullData): TGApp.Plugins.Mys.News.RenderCard {
|
||||||
|
let forumData: TGApp.Plugins.Mys.News.RenderForum | null = null;
|
||||||
|
let statData: TGApp.Plugins.Mys.News.RenderData | null = null;
|
||||||
|
if (item.forum !== null) {
|
||||||
|
forumData = { name: item.forum.name, icon: item.forum.icon, id: item.forum.id };
|
||||||
|
}
|
||||||
|
if (item.stat !== null) {
|
||||||
|
statData = {
|
||||||
|
mark: item.stat.bookmark_num,
|
||||||
|
forward: item.stat.forward_num,
|
||||||
|
like: item.stat.like_num,
|
||||||
|
reply: item.stat.reply_num,
|
||||||
|
view: item.stat.view_num,
|
||||||
|
};
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
title: item.post.subject,
|
title: item.post.subject,
|
||||||
cover: getPostCover(item),
|
cover: getPostCover(item),
|
||||||
postId: Number(item.post.post_id),
|
postId: Number(item.post.post_id),
|
||||||
subtitle: item.post.post_id,
|
subtitle: item.post.post_id,
|
||||||
user: item.user,
|
user: item.user,
|
||||||
forum:
|
forum: forumData,
|
||||||
item.forum === null
|
data: statData,
|
||||||
? null
|
|
||||||
: { name: item.forum.name, icon: item.forum.icon, id: item.forum.id },
|
|
||||||
data:
|
|
||||||
item.stat === null
|
|
||||||
? null
|
|
||||||
: {
|
|
||||||
mark: item.stat.bookmark_num,
|
|
||||||
forward: item.stat.forward_num,
|
|
||||||
like: item.stat.like_num,
|
|
||||||
reply: item.stat.reply_num,
|
|
||||||
view: item.stat.view_num,
|
|
||||||
},
|
|
||||||
topics: item.topics,
|
topics: item.topics,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -210,7 +185,6 @@ function getPostCard(item: TGApp.Plugins.Mys.Post.FullData): TGApp.Plugins.Mys.N
|
|||||||
item.news_meta !== null &&
|
item.news_meta !== null &&
|
||||||
item.news_meta.start_at_sec !== "0"
|
item.news_meta.start_at_sec !== "0"
|
||||||
) {
|
) {
|
||||||
isAct.value = true;
|
|
||||||
const startTime = new Date(Number(item.news_meta.start_at_sec) * 1000).toLocaleDateString();
|
const startTime = new Date(Number(item.news_meta.start_at_sec) * 1000).toLocaleDateString();
|
||||||
const endTime = new Date(Number(item.news_meta.end_at_sec) * 1000).toLocaleDateString();
|
const endTime = new Date(Number(item.news_meta.end_at_sec) * 1000).toLocaleDateString();
|
||||||
const statusInfo = getActivityStatus(item.news_meta.activity_status);
|
const statusInfo = getActivityStatus(item.news_meta.activity_status);
|
||||||
|
|||||||
@@ -1,76 +1,62 @@
|
|||||||
<!-- todo UI调整 -->
|
|
||||||
<template>
|
<template>
|
||||||
<v-navigation-drawer :permanent="true" :rail="rail" class="tsb-box">
|
<v-navigation-drawer :permanent="true" :rail="rail" class="tsb-box">
|
||||||
<v-list class="side-list" density="compact" :nav="true">
|
<v-list class="side-list" density="compact" :nav="true">
|
||||||
<!-- 负责收缩侧边栏 -->
|
<v-list-item
|
||||||
<v-list-item @click="rail = !rail">
|
@click="rail = !rail"
|
||||||
<template v-if="rail" #prepend>
|
:prepend-icon="rail ? 'mdi-chevron-right' : undefined"
|
||||||
<v-list-item-action>
|
:append-icon="!rail ? 'mdi-chevron-left' : undefined"
|
||||||
<v-icon>mdi-chevron-right</v-icon>
|
/>
|
||||||
</v-list-item-action>
|
|
||||||
</template>
|
|
||||||
<template v-else #append>
|
|
||||||
<v-list-item-action>
|
|
||||||
<v-icon>mdi-chevron-left</v-icon>
|
|
||||||
</v-list-item-action>
|
|
||||||
</template>
|
|
||||||
</v-list-item>
|
|
||||||
<!-- 菜单项 -->
|
<!-- 菜单项 -->
|
||||||
<v-list-item :title.attr="'首页'" value="home" :link="true" href="/">
|
<v-list-item :title.attr="'首页'" :link="true" href="/">
|
||||||
<template #title>首页</template>
|
<template #title>首页</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/paimon.webp" alt="homeIcon" class="side-icon paimon" />
|
<img src="/source/UI/paimon.webp" alt="homeIcon" class="side-icon paimon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item :title.attr="'公告'" value="announcements" :link="true" href="/announcements">
|
<v-list-item title.attr="'公告'" :link="true" href="/announcements">
|
||||||
<template #title>公告</template>
|
<template #title>公告</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="@/assets/icons/board.svg" alt="annoIcon" class="side-icon" />
|
<img src="@/assets/icons/board.svg" alt="annoIcon" class="side-icon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item
|
<v-list-item :title.attr="'咨讯'" :link="true" :href="`/news/2/${recentNewsType}`">
|
||||||
:title.attr="'咨讯'"
|
|
||||||
value="news"
|
|
||||||
:link="true"
|
|
||||||
:href="`/news/2/${recentNewsType}`"
|
|
||||||
>
|
|
||||||
<template #title>咨讯</template>
|
<template #title>咨讯</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/platforms/mhy/mys.webp" alt="mihoyo" class="side-icon" />
|
<img src="/platforms/mhy/mys.webp" alt="mihoyo" class="side-icon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item :title.attr="'帖子'" value="posts" :link="true" href="/posts/forum">
|
<v-list-item :title.attr="'帖子'" :link="true" href="/posts/forum">
|
||||||
<template #title>帖子</template>
|
<template #title>帖子</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/posts.png" alt="posts" class="side-icon" />
|
<img src="/source/UI/posts.png" alt="posts" class="side-icon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item :title.attr="'成就'" value="achievements" :link="true" href="/achievements">
|
<v-list-item :title.attr="'成就'" :link="true" href="/achievements">
|
||||||
<template #title>成就</template>
|
<template #title>成就</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="@/assets/icons/achievements.svg" alt="achievementsIcon" class="side-icon" />
|
<img src="@/assets/icons/achievements.svg" alt="achievementsIcon" class="side-icon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-divider />
|
<v-divider />
|
||||||
<v-list-item :title.attr="'原神战绩'" value="record" :link="true" href="/user/record">
|
<v-list-item :title.attr="'原神战绩'" :link="true" href="/user/record">
|
||||||
<template #title>原神战绩</template>
|
<template #title>原神战绩</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/userRecord.webp" alt="record" class="side-icon" />
|
<img src="/source/UI/userRecord.webp" alt="record" class="side-icon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item :title.attr="'我的角色'" value="character" :link="true" href="/user/characters">
|
<v-list-item :title.attr="'我的角色'" :link="true" href="/user/characters">
|
||||||
<template #title>我的角色</template>
|
<template #title>我的角色</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/userAvatar.webp" alt="characters" class="side-icon" />
|
<img src="/source/UI/userAvatar.webp" alt="characters" class="side-icon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item :title.attr="'深渊记录'" value="abyss" :link="true" href="/user/abyss">
|
<v-list-item :title.attr="'深渊记录'" :link="true" href="/user/abyss">
|
||||||
<template #title>深渊记录</template>
|
<template #title>深渊记录</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/userAbyss.webp" alt="abyss" class="side-icon" />
|
<img src="/source/UI/userAbyss.webp" alt="abyss" class="side-icon" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item :title.attr="'祈愿记录'" value="gacha" :link="true" href="/user/gacha">
|
<v-list-item :title.attr="'祈愿记录'" :link="true" href="/user/gacha">
|
||||||
<template #title>祈愿记录</template>
|
<template #title>祈愿记录</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/userGacha.webp" alt="gacha" class="side-icon" />
|
<img src="/source/UI/userGacha.webp" alt="gacha" class="side-icon" />
|
||||||
@@ -80,14 +66,11 @@
|
|||||||
<v-list-item
|
<v-list-item
|
||||||
v-show="isDevEnv"
|
v-show="isDevEnv"
|
||||||
:title.attr="'测试页面'"
|
:title.attr="'测试页面'"
|
||||||
value="test"
|
|
||||||
:link="true"
|
:link="true"
|
||||||
href="/test"
|
href="/test"
|
||||||
|
prepend-icon="mdi-test-tube"
|
||||||
>
|
>
|
||||||
<template #title>测试页面</template>
|
<template #title>测试页面</template>
|
||||||
<template #prepend>
|
|
||||||
<v-icon>mdi-test-tube</v-icon>
|
|
||||||
</template>
|
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-divider v-show="isDevEnv" />
|
<v-divider v-show="isDevEnv" />
|
||||||
<v-menu :open-on-click="true" location="end">
|
<v-menu :open-on-click="true" location="end">
|
||||||
@@ -100,69 +83,36 @@
|
|||||||
</v-list-item>
|
</v-list-item>
|
||||||
</template>
|
</template>
|
||||||
<v-list class="side-list-menu wiki" density="compact" :nav="true">
|
<v-list class="side-list-menu wiki" density="compact" :nav="true">
|
||||||
<v-list-item
|
<v-list-item class="side-item-menu" title="深渊数据库" :link="true" href="/wiki/abyss">
|
||||||
class="side-item-menu"
|
|
||||||
title="深渊数据库"
|
|
||||||
value="wiki-abyss"
|
|
||||||
:link="true"
|
|
||||||
href="/wiki/abyss"
|
|
||||||
>
|
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/wikiAbyss.webp" alt="abyssIcon" class="side-icon-menu" />
|
<img src="/source/UI/wikiAbyss.webp" alt="abyssIcon" class="side-icon-menu" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item
|
<v-list-item class="side-item-menu" title="角色图鉴" :link="true" href="/wiki/character">
|
||||||
class="side-item-menu"
|
|
||||||
title="角色图鉴"
|
|
||||||
value="wiki-character"
|
|
||||||
:link="true"
|
|
||||||
href="/wiki/character/0"
|
|
||||||
>
|
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/wikiAvatar.webp" alt="characterIcon" class="side-icon-menu" />
|
<img src="/source/UI/wikiAvatar.webp" alt="characterIcon" class="side-icon-menu" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item
|
<v-list-item class="side-item-menu" title="武器图鉴" :link="true" href="/wiki/weapon">
|
||||||
class="side-item-menu"
|
|
||||||
title="武器图鉴"
|
|
||||||
value="wiki-weapon"
|
|
||||||
:link="true"
|
|
||||||
href="/wiki/weapon/0"
|
|
||||||
>
|
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/wikiWeapon.webp" alt="weaponIcon" class="side-icon-menu" />
|
<img src="/source/UI/wikiWeapon.webp" alt="weaponIcon" class="side-icon-menu" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item
|
<v-list-item
|
||||||
class="side-item-menu"
|
class="side-item-menu"
|
||||||
value="wiki-nameCard"
|
|
||||||
:link="true"
|
:link="true"
|
||||||
href="/wiki/nameCard"
|
href="/wiki/nameCard"
|
||||||
>
|
prepend-icon="mdi-credit-card-outline"
|
||||||
<template #default>
|
title="名片图鉴"
|
||||||
<v-icon size="20" color="var(--tgc-yellow-2)">mdi-credit-card-outline</v-icon>
|
/>
|
||||||
<span style="margin-left: 10px; font-size: 0.8125rem">名片图鉴</span>
|
<v-list-item class="side-item-menu" title="材料图鉴" :link="true" href="/wiki/material">
|
||||||
</template>
|
|
||||||
</v-list-item>
|
|
||||||
<v-list-item
|
|
||||||
class="side-item-menu"
|
|
||||||
title="材料图鉴"
|
|
||||||
value="wiki-material"
|
|
||||||
:link="true"
|
|
||||||
href="/wiki/material"
|
|
||||||
>
|
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/wikiGCG.webp" alt="gcgIcon" class="side-icon-menu" />
|
<img src="/source/UI/wikiGCG.webp" alt="gcgIcon" class="side-icon-menu" />
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-menu>
|
</v-menu>
|
||||||
<v-list-item
|
<v-list-item :title.attr="'留影叙佳期'" :link="true" href="/archive/birthday">
|
||||||
:title.attr="'留影叙佳期'"
|
|
||||||
value="archive-birthday"
|
|
||||||
:link="true"
|
|
||||||
href="/archive/birthday"
|
|
||||||
>
|
|
||||||
<template #title>留影叙佳期</template>
|
<template #title>留影叙佳期</template>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img src="/source/UI/act_birthday.png" alt="archive_birthday_icon" class="side-icon" />
|
<img src="/source/UI/act_birthday.png" alt="archive_birthday_icon" class="side-icon" />
|
||||||
@@ -201,13 +151,12 @@
|
|||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-menu>
|
</v-menu>
|
||||||
<v-list-item :title.attr="themeTitle" @click="switchTheme()">
|
<v-list-item
|
||||||
|
:title.attr="themeTitle"
|
||||||
|
@click="switchTheme()"
|
||||||
|
:prepend-icon="theme === 'default' ? 'mdi-weather-night' : 'mdi-weather-sunny'"
|
||||||
|
>
|
||||||
<template #title>{{ themeTitle }}</template>
|
<template #title>{{ themeTitle }}</template>
|
||||||
<template #prepend>
|
|
||||||
<v-icon>
|
|
||||||
{{ theme === "default" ? "mdi-weather-night" : "mdi-weather-sunny" }}
|
|
||||||
</v-icon>
|
|
||||||
</template>
|
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item :title.attr="'设置'" value="config" :link="true" href="/config">
|
<v-list-item :title.attr="'设置'" value="config" :link="true" href="/config">
|
||||||
<template #title>设置</template>
|
<template #title>设置</template>
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
<!-- todo 调整逻辑 -->
|
|
||||||
<template>
|
<template>
|
||||||
<div class="tuc-do-box">
|
<div class="tuc-do-box">
|
||||||
<img :src="bg" alt="role" class="tuc-do-bg" />
|
<img :src="bg" alt="role" class="tuc-do-bg" />
|
||||||
@@ -7,7 +6,7 @@
|
|||||||
<div class="tuc-do-left">
|
<div class="tuc-do-left">
|
||||||
<div
|
<div
|
||||||
class="tuc-dol-item"
|
class="tuc-dol-item"
|
||||||
:style="`opacity: ${selected.pos === 0 ? '1' : '0.5'}`"
|
:class="{ selected: selected.pos === 0 }"
|
||||||
@click="showDetail(props.modelValue.weapon, '武器', 0)"
|
@click="showDetail(props.modelValue.weapon, '武器', 0)"
|
||||||
>
|
>
|
||||||
<TucDetailItemBox
|
<TucDetailItemBox
|
||||||
@@ -19,10 +18,7 @@
|
|||||||
v-for="(item, index) in relicList"
|
v-for="(item, index) in relicList"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="tuc-dol-item"
|
class="tuc-dol-item"
|
||||||
:style="{
|
:class="{ selected: selected.pos === index + 1 }"
|
||||||
cursor: item ? 'pointer' : 'default',
|
|
||||||
opacity: selected.pos === index + 1 ? '1' : item ? '0.5' : '1',
|
|
||||||
}"
|
|
||||||
@click="showDetail(item, '圣遗物', index + 1)"
|
@click="showDetail(item, '圣遗物', index + 1)"
|
||||||
>
|
>
|
||||||
<TucDetailRelic :model-value="item" :pos="index + 1" />
|
<TucDetailRelic :model-value="item" :pos="index + 1" />
|
||||||
@@ -35,9 +31,7 @@
|
|||||||
:key="item.pos"
|
:key="item.pos"
|
||||||
class="tuc-dor-item"
|
class="tuc-dor-item"
|
||||||
:model-value="item"
|
:model-value="item"
|
||||||
:style="{
|
:class="{ selected: selected.pos === item.pos + 5 }"
|
||||||
border: selected.pos === item.pos + 5 ? '2px solid var(--tgc-yellow-1)' : '',
|
|
||||||
}"
|
|
||||||
@click="showDetail(item, '命座', item.pos + 5)"
|
@click="showDetail(item, '命座', item.pos + 5)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -269,6 +263,28 @@ function switchBg(): void {
|
|||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
margin-top: 50px;
|
margin-top: 50px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
opacity: 0.5;
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2),
|
||||||
|
&:nth-child(3),
|
||||||
|
&:nth-child(4),
|
||||||
|
&:nth-child(5),
|
||||||
|
&:nth-child(6) {
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0.5;
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
cursor: default;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 右侧显示区域 */
|
/* 右侧显示区域 */
|
||||||
@@ -280,7 +296,12 @@ function switchBg(): void {
|
|||||||
|
|
||||||
.tuc-dor-item {
|
.tuc-dor-item {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
border: unset;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
border: 2px solid var(--tgc-yellow-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 环状排列6个命座 */
|
/* 环状排列6个命座 */
|
||||||
|
|||||||
55
src/plugins/Mys/types/News.d.ts
vendored
55
src/plugins/Mys/types/News.d.ts
vendored
@@ -1,15 +1,9 @@
|
|||||||
/**
|
/**
|
||||||
* @file plugins/Mys/types/news.d.ts
|
* @file plugins/Mys/types/news.d.ts
|
||||||
* @description Mys 插件咨讯类型定义文件
|
* @description Mys 插件咨讯类型定义文件
|
||||||
* @since Beta v0.6.3
|
* @since Beta v0.6.7
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* @description Mys 插件咨讯类型
|
|
||||||
* @since Beta v0.4.5
|
|
||||||
* @namespace TGApp.Plugins.Mys.News
|
|
||||||
* @memberof TGApp.Plugins.Mys
|
|
||||||
*/
|
|
||||||
declare namespace TGApp.Plugins.Mys.News {
|
declare namespace TGApp.Plugins.Mys.News {
|
||||||
/**
|
/**
|
||||||
* @description 咨讯返回数据
|
* @description 咨讯返回数据
|
||||||
@@ -19,9 +13,7 @@ declare namespace TGApp.Plugins.Mys.News {
|
|||||||
* @property {FullData} data 咨讯数据
|
* @property {FullData} data 咨讯数据
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
interface Response extends TGApp.BBS.Response.BaseWithData {
|
type Response = TGApp.BBS.Response.BaseWithData & { data: FullData };
|
||||||
data: FullData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 咨讯数据
|
* @description 咨讯数据
|
||||||
@@ -32,11 +24,11 @@ declare namespace TGApp.Plugins.Mys.News {
|
|||||||
* @property {Item[]} list 咨讯列表
|
* @property {Item[]} list 咨讯列表
|
||||||
* @return FullData
|
* @return FullData
|
||||||
*/
|
*/
|
||||||
interface FullData {
|
type FullData = {
|
||||||
last_id: number;
|
last_id: number;
|
||||||
is_last: boolean;
|
is_last: boolean;
|
||||||
list: TGApp.Plugins.Mys.Post.FullData[];
|
list: Array<TGApp.Plugins.Mys.Post.FullData>;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 咨讯元数据,只有活动咨讯才有
|
* @description 咨讯元数据,只有活动咨讯才有
|
||||||
@@ -47,11 +39,7 @@ declare namespace TGApp.Plugins.Mys.News {
|
|||||||
* @property {string} end_at_sec 活动结束时间戳,单位秒
|
* @property {string} end_at_sec 活动结束时间戳,单位秒
|
||||||
* @return Meta
|
* @return Meta
|
||||||
*/
|
*/
|
||||||
interface Meta {
|
type Meta = { activity_status: number; start_at_sec: string; end_at_sec: string };
|
||||||
activity_status: number;
|
|
||||||
start_at_sec: string;
|
|
||||||
end_at_sec: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 用于渲染的咨讯卡片
|
* @description 用于渲染的咨讯卡片
|
||||||
@@ -88,16 +76,15 @@ declare namespace TGApp.Plugins.Mys.News {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 活动状态
|
* @description 用于渲染的咨讯状态
|
||||||
* @since Alpha v0.2.1
|
* @since Beta v0.6.7
|
||||||
* @property {string} status 活动状态
|
* @interface RenderStatus
|
||||||
* @property {string} colorCss 活动状态按钮背景色
|
* @property {number} stat 活动状态
|
||||||
* @returns RenderStatus
|
* @property {string} label 活动状态标签
|
||||||
|
* @property {string} color 活动状态颜色
|
||||||
|
* @return RenderStatus
|
||||||
*/
|
*/
|
||||||
interface RenderStatus {
|
type RenderStatus = { stat: number; label: string; color: string };
|
||||||
status: string;
|
|
||||||
colorCss: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 用于渲染的咨讯信息
|
* @description 用于渲染的咨讯信息
|
||||||
@@ -110,13 +97,7 @@ declare namespace TGApp.Plugins.Mys.News {
|
|||||||
* @property {number} view 帖子浏览数
|
* @property {number} view 帖子浏览数
|
||||||
* @return RenderData
|
* @return RenderData
|
||||||
*/
|
*/
|
||||||
interface RenderData {
|
type RenderData = { mark: number; forward: number; like: number; reply: number; view: number };
|
||||||
mark: number;
|
|
||||||
forward: number;
|
|
||||||
like: number;
|
|
||||||
reply: number;
|
|
||||||
view: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 用于渲染的版块信息
|
* @description 用于渲染的版块信息
|
||||||
@@ -127,9 +108,5 @@ declare namespace TGApp.Plugins.Mys.News {
|
|||||||
* @property {string} id 版块 ID
|
* @property {string} id 版块 ID
|
||||||
* @return RenderForum
|
* @return RenderForum
|
||||||
*/
|
*/
|
||||||
interface RenderForum {
|
type RenderForum = { name: string; icon: string; id: number };
|
||||||
name: string;
|
|
||||||
icon: string;
|
|
||||||
id: number;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,9 +156,6 @@ export async function copyToClipboard(buffer: Uint8Array): Promise<void> {
|
|||||||
const blob = new Blob([buffer], { type: "image/png" });
|
const blob = new Blob([buffer], { type: "image/png" });
|
||||||
const url = URL.createObjectURL(blob);
|
const url = URL.createObjectURL(blob);
|
||||||
// todo mac 会报错: https://bugs.webkit.org/show_bug.cgi?id=222262
|
// todo mac 会报错: https://bugs.webkit.org/show_bug.cgi?id=222262
|
||||||
// NotAllowedError:
|
|
||||||
// The request is not allowed by the user agent or the platform in the current context,
|
|
||||||
// possibly because the user denied permission.
|
|
||||||
await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })]);
|
await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })]);
|
||||||
URL.revokeObjectURL(url);
|
URL.revokeObjectURL(url);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user