Files
public/Tools/quickly/frontend/src/views/Home.vue

136 lines
2.8 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.
<script lang="ts" setup>
import {reactive} from 'vue'
const features = reactive([
{
title: '更新 Common',
description: '批量更新多个项目中 Common 库的版本,支持自定义 Go Module Name自动执行 go get 和 go mod tidy 命令。',
icon: '🔄',
path: '/update-common'
},
{
title: 'MySQL Model',
description: '执行 gen.ps1 脚本生成 model 和 query 文件,自动替换 import 路径,支持多数据库配置管理。',
icon: '🗄️',
path: '/mysql-model'
},
{
title: 'Swagger',
description: '配置 Swagger 目录,自动扫描所有 .swagger.json 文件,启动本地 HTTP 服务查看 API 文档。',
icon: '📚',
path: '/swagger'
},
{
title: '设置',
description: '自定义主题、语言、通知等应用设置,管理全局配置。',
icon: '⚙️',
path: '/settings'
}
])
</script>
<template>
<div class="home-container">
<div class="welcome-section">
<h1 class="welcome-title">欢迎使用 Quickly</h1>
<p class="welcome-subtitle">高效开发工具提升工作效率</p>
</div>
<div class="features-section">
<div class="features-grid">
<el-card v-for="(feature, index) in features" :key="index" class="feature-card">
<div class="feature-icon">{{ feature.icon }}</div>
<h3 class="feature-title">{{ feature.title }}</h3>
<p class="feature-description">{{ feature.description }}</p>
</el-card>
</div>
</div>
</div>
</template>
<style scoped>
.home-container {
padding: 20px;
max-width: 1200px;
margin: 0 auto;
}
.welcome-section {
text-align: center;
margin: 40px 0;
}
.welcome-title {
font-size: 48px;
font-weight: 700;
margin: 0 0 10px 0;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.welcome-subtitle {
font-size: 18px;
color: #666;
margin: 0;
}
.features-section {
margin: 40px 0;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 20px;
}
.feature-card {
text-align: center;
transition: transform 0.3s, box-shadow 0.3s;
cursor: pointer;
padding: 30px 20px;
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
}
.feature-icon {
font-size: 64px;
margin-bottom: 20px;
}
.feature-title {
font-size: 22px;
font-weight: 600;
margin: 0 0 15px 0;
color: #333;
}
.feature-description {
font-size: 14px;
color: #666;
line-height: 1.6;
margin: 0;
}
.info-card {
margin: 40px 0;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 600;
}
.info-content {
padding: 20px 0;
}
</style>