feat(app): 初始化项目配置和页面结构

- 添加 .dockerignore 和 .env.example 配置文件
- 添加 .gitignore 忽略规则配置
- 创建服务端代理API路由(_file、_modules、_server)
- 集成 Ant Design Vue 组件库并配置SSR样式提取
- 定义API响应类型封装
- 创建基础布局组件(blank、console)
- 实现应用中心页面和组件(AppsCenter)
- 添加文章列表测试页面
- 配置控制台导航菜单结构
- 实现控制台头部组件
- 创建联系页面表单
This commit is contained in:
2026-01-17 18:23:37 +08:00
commit 5e26fdc7fb
439 changed files with 56219 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
<template>
<div>
<a-page-header title="应用中心" sub-title="订阅应用与交付入口" />
<AppsCenter />
</div>
</template>
<script setup lang="ts">
import AppsCenter from '@/components/developer/AppsCenter.vue'
definePageMeta({ layout: 'developer' })
</script>

View File

@@ -0,0 +1,34 @@
<template>
<div class="space-y-4">
<a-page-header title="Git 账号绑定" sub-title="用于开通 Gitea 仓库访问权限" />
<a-card :bordered="false" class="card">
<a-alert
type="info"
show-icon
message="待接入接口:保存你的 Gitea 用户名(或邮箱),用于运营加组。"
/>
<a-form class="mt-4" layout="vertical">
<a-form-item label="Gitea 用户名">
<a-input placeholder="例如lily" />
</a-form-item>
<a-form-item label="备注(可选)">
<a-textarea :rows="3" placeholder="例如:公司/项目/联系方式" />
</a-form-item>
<a-button type="primary" disabled>保存</a-button>
</a-form>
</a-card>
</div>
</template>
<script setup lang="ts">
definePageMeta({ layout: 'developer' })
</script>
<style scoped>
.card {
border-radius: 12px;
}
</style>

View File

@@ -0,0 +1,49 @@
<template>
<div class="space-y-4">
<a-page-header title="概览" sub-title="开发者能力与交付入口" />
<a-row :gutter="[16, 16]">
<a-col :xs="24" :md="12" :lg="8">
<a-card :bordered="false" class="card">
<div class="text-gray-500">可开发应用</div>
<div class="text-2xl font-semibold mt-1">-</div>
<div class="text-gray-400 mt-2">订阅有效且已购买源码权益</div>
</a-card>
</a-col>
<a-col :xs="24" :md="12" :lg="8">
<a-card :bordered="false" class="card">
<div class="text-gray-500">待处理申请</div>
<div class="text-2xl font-semibold mt-1">-</div>
<div class="text-gray-400 mt-2">Git 加组申请处理状态</div>
</a-card>
</a-col>
<a-col :xs="24" :md="12" :lg="8">
<a-card :bordered="false" class="card">
<div class="text-gray-500">教程更新</div>
<div class="text-2xl font-semibold mt-1">-</div>
<div class="text-gray-400 mt-2">后续接入教程内容源</div>
</a-card>
</a-col>
</a-row>
<a-card title="快捷入口" :bordered="false" class="card">
<div class="flex flex-wrap gap-3">
<a-button type="primary" @click="navigateTo('/developer/apps')">应用中心</a-button>
<a-button @click="navigateTo('/developer/source')">源码与仓库</a-button>
<a-button @click="navigateTo('/developer/tutorial')">开发教程</a-button>
<a-button @click="navigateTo('/developer/git')">Git 账号绑定</a-button>
<a-button @click="navigateTo('/developer/requests')">权限申请记录</a-button>
</div>
</a-card>
</div>
</template>
<script setup lang="ts">
definePageMeta({ layout: 'developer' })
</script>
<style scoped>
.card {
border-radius: 12px;
}
</style>

View File

@@ -0,0 +1,20 @@
<template>
<div class="space-y-4">
<a-page-header title="权限申请记录" sub-title="Git 加组申请与处理状态" />
<a-card :bordered="false" class="card">
<a-empty description="待接入:/developer/git-access-requests" />
</a-card>
</div>
</template>
<script setup lang="ts">
definePageMeta({ layout: 'developer' })
</script>
<style scoped>
.card {
border-radius: 12px;
}
</style>

View File

@@ -0,0 +1,40 @@
<template>
<div class="space-y-4">
<a-page-header title="源码与仓库" sub-title="Gitea 仓库访问与源码交付" />
<a-alert
type="info"
show-icon
message="当前版本为页面骨架:后续将接入“订阅有效 + 已购买源码权益”的可见性与申请流程。"
/>
<a-card title="仓库访问" :bordered="false" class="card">
<a-steps :current="1" size="small">
<a-step title="绑定 Git 账号" />
<a-step title="提交加组申请" />
<a-step title="运营处理加组" />
<a-step title="获得仓库访问权限" />
</a-steps>
<div class="mt-4 flex flex-wrap gap-3">
<a-button type="primary" @click="navigateTo('/developer/git')">去绑定 Git 账号</a-button>
<a-button @click="navigateTo('/developer/requests')">查看申请记录</a-button>
</div>
</a-card>
<a-card title="我的源码列表" :bordered="false" class="card">
<a-empty description="待接入:按 templateId 映射仓库 + 权益校验" />
</a-card>
</div>
</template>
<script setup lang="ts">
definePageMeta({ layout: 'developer' })
</script>
<style scoped>
.card {
border-radius: 12px;
}
</style>

View File

@@ -0,0 +1,24 @@
<template>
<div class="space-y-4">
<a-page-header title="支持与反馈" sub-title="开发相关问题工单与联系渠道" />
<a-card :bordered="false" class="card">
<a-descriptions bordered :column="1">
<a-descriptions-item label="常见问题">待补充</a-descriptions-item>
<a-descriptions-item label="工单/反馈">待接入</a-descriptions-item>
<a-descriptions-item label="联系方式">待补充</a-descriptions-item>
</a-descriptions>
</a-card>
</div>
</template>
<script setup lang="ts">
definePageMeta({ layout: 'developer' })
</script>
<style scoped>
.card {
border-radius: 12px;
}
</style>

View File

@@ -0,0 +1,43 @@
<template>
<div class="space-y-4">
<a-page-header title="开发教程" sub-title="快速开始二次开发与部署" />
<a-row :gutter="[16, 16]">
<a-col :xs="24" :md="12" :lg="8">
<a-card title="快速开始" :bordered="false" class="card">
<p class="text-gray-600">拉代码安装依赖配置环境变量本地运行</p>
<a-button type="link" class="px-0" disabled>查看</a-button>
</a-card>
</a-col>
<a-col :xs="24" :md="12" :lg="8">
<a-card title="二次开发" :bordered="false" class="card">
<p class="text-gray-600">扩展点模块/插件机制权限/菜单接入规范</p>
<a-button type="link" class="px-0" disabled>查看</a-button>
</a-card>
</a-col>
<a-col :xs="24" :md="12" :lg="8">
<a-card title="部署上线" :bordered="false" class="card">
<p class="text-gray-600">Docker/PM2域名 HTTPS升级回滚</p>
<a-button type="link" class="px-0" disabled>查看</a-button>
</a-card>
</a-col>
</a-row>
<a-alert
type="warning"
show-icon
message="教程内容源待接入:可先用 Markdown/远端 CMS/静态页面三选一实现。"
/>
</div>
</template>
<script setup lang="ts">
definePageMeta({ layout: 'developer' })
</script>
<style scoped>
.card {
border-radius: 12px;
}
</style>