1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-07-04 10:29:23 +00:00
SunWuyuan 3988773341
1
2025-03-22 18:36:43 +08:00

228 lines
7.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<v-card border>
<v-card-item>
<template #prepend>
<v-icon icon="mdi-information" size="large" class="mr-2" />
</template>
<v-card-title class="text-h6">关于</v-card-title>
</v-card-item>
<v-card-text>
<v-row>
<v-col cols="12" md="8" class="mx-auto">
<div class="d-flex flex-column align-start">
<v-avatar size="120" class="mb-4">
<v-img
src="https://github.com/SunWuyuan.png"
alt="Sunwuyuan"
/>
</v-avatar>
<h2 class="text-h5 mb-2">Classworks</h2>
<p class="text-body-1 mb-4">适用于班级大屏的作业板小工具</p>
<div class="d-flex gap-2 flex-wrap mb-6">
<v-btn
color="red"
variant="tonal"
href="https://github.com/ClassworksDev/Classworks/issues"
target="_blank"
prepend-icon="mdi-bug"
>
报告问题
</v-btn>
<v-btn
variant="text"
href="https://github.com/ClassworksDev/Classworks"
target="_blank"
prepend-icon="mdi-github"
>
前端
</v-btn>
<v-btn
variant="text"
href="https://github.com/ClassworksDev/ClassworksServer"
target="_blank"
prepend-icon="mdi-github"
>
后端
</v-btn>
</div>
<v-divider class="mb-4 w-100"></v-divider>
<h3 class="text-h6 mb-2">备注与致谢</h3>
<v-list class="mb-4 bg-transparent">
<v-list-item
href="https://github.com/EnderWolf006/HomeworkBoard"
target="_blank"
append-icon="mdi-link"
>
<v-list-item-title>
本项目受到 HomeworkBoard 的启发而开发
</v-list-item-title>
<v-list-item-subtitle>
感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac
等人的贡献
</v-list-item-subtitle>
</v-list-item>
<v-list-item
href="https://houlangs.com"
target="_blank"
append-icon="mdi-link"
>
<v-list-item-title>
Classworks <strong>厚浪云</strong>提供
</v-list-item-title>
<v-list-item-subtitle>
长江后浪推前浪 浮事新人换旧人
</v-list-item-subtitle>
</v-list-item>
<v-list-item
href="https://zerocat.houlangs.com"
target="_blank"
append-icon="mdi-link"
>
<v-list-item-title>
感谢 ZeroCat 社区的开发者们
</v-list-item-title>
<v-list-item-subtitle>
新一代开源编程社区
</v-list-item-subtitle>
</v-list-item>
<v-divider class="ma-1"></v-divider>
<v-list-item
href="https://github.com/HUSX100/IslandCaller"
target="_blank"
append-icon="mdi-link"
>
<v-list-item-title>
本项目与 IslandCaller 无关
</v-list-item-title>
<v-list-item-subtitle>
IslandCaller 是由 HUSX100 开发的基于 ClassIsland
提醒服务的轻量级点名器
</v-list-item-subtitle>
</v-list-item>
<v-list-item
href="https://classisland.tech"
target="_blank"
append-icon="mdi-link"
>
<v-list-item-title>
本项目与 ClassIsland 无关
</v-list-item-title>
<v-list-item-subtitle>
ClassIsland 是由 HelloWRC
开发的适用于班级大屏的课表信息显示工具
</v-list-item-subtitle>
</v-list-item>
</v-list>
<v-btn
variant="text"
class="mb-4"
prepend-icon="mdi-package-variant"
@click="showDeps = true"
>
查看使用的第三方库
</v-btn>
<v-dialog
v-model="showDeps"
transition="dialog-bottom-transition"
fullscreen
>
<v-card
><v-toolbar>
<v-btn icon="mdi-close" @click="showDeps = false"></v-btn>
<v-toolbar-title>使用的第三方库</v-toolbar-title>
<v-spacer></v-spacer>
</v-toolbar>
<v-card-text>
<v-list>
<v-list-item
v-for="dep in Dependencies"
:key="dep.name"
:href="'https://www.npmjs.com/package/' + dep.name"
target="_blank"
append-icon="mdi-link"
>
<v-list-item-title>
{{ dep.name }}
</v-list-item-title>
<v-list-item-subtitle>
v{{ dep.version }}
</v-list-item-subtitle>
</v-list-item>
</v-list>
</v-card-text>
</v-card>
</v-dialog>
<p class="text-caption text-medium-emphasis">
Copyright © {{ new Date().getFullYear() }} Sunwuyuan
</p>
</div>
</v-col>
</v-row>
</v-card-text>
</v-card>
</template>
<script>
import { ref, onMounted } from "vue";
import packageJson from "../../../package.json";
export default {
name: "AboutCard",
setup() {
const Dependencies = ref([]);
const showDeps = ref(false); // 添加对话框显示状态
const loadDependencies = () => {
try {
// 合并 dependencies 和 devDependencies
const allDependencies = {
...(packageJson.dependencies || {}),
...(packageJson.devDependencies || {}),
};
// 转换为数组并过滤掉不需要显示的依赖
const deps = Object.entries(allDependencies).map(([name, version]) => ({
name,
version: version.replace(/[\^~]/g, ""),
description: getDependencyDescription(name),
}));
Dependencies.value = deps;
} catch (error) {
console.error("加载依赖信息失败:", error);
Dependencies.value = [];
}
};
const getDependencyDescription = (name) => {
const descriptions = {
vue: "渐进式 JavaScript 框架",
vuetify: "材料设计组件框架",
axios: "Promise 基础的 HTTP 客户端",
pinia: "Vue 状态管理库",
"vue-router": "Vue.js 官方路由管理器",
"@vitejs/plugin-vue": "Vite 的 Vue 插件",
};
return descriptions[name] || "";
};
onMounted(() => {
loadDependencies();
});
return {
Dependencies,
showDeps,
};
},
};
</script>