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

70
app/config/console-nav.ts Normal file
View File

@@ -0,0 +1,70 @@
import type { Component } from 'vue'
import {
AppstoreOutlined,
FileTextOutlined,
GiftOutlined,
IdcardOutlined,
LogoutOutlined,
SafetyCertificateOutlined,
SettingOutlined,
ShoppingCartOutlined,
ShoppingOutlined,
TeamOutlined,
UnorderedListOutlined,
UserOutlined
} from '@ant-design/icons-vue'
export type ConsoleNavItem = {
key: string
label: string
icon?: Component
to: string
}
export type ConsoleNavGroup = {
key: string
label: string
icon?: Component
iconColor?: string
badge?: string
disabled?: boolean
children: ConsoleNavItem[]
}
export type ConsoleNavLink = Omit<ConsoleNavGroup, 'children'> & {
to: string
}
export type ConsoleNavEntry = ConsoleNavGroup | ConsoleNavLink
export const consoleNav: ConsoleNavEntry[] = [
{
key: 'console-tenant',
label: '管理中心',
icon: AppstoreOutlined,
to: '/console'
},
{
key: 'console-orders',
label: '我的订单',
icon: ShoppingCartOutlined,
children: [
{ key: 'console-orders-orders', label: '订单管理', icon: UnorderedListOutlined, to: '/console/orders' },
{ key: 'console-orders-invoices', label: '发票记录', icon: FileTextOutlined, to: '/console/invoices' },
{ key: 'console-orders-products', label: '已购产品', icon: ShoppingOutlined, to: '/console/products' },
{ key: 'console-orders-coupons', label: '优惠券', icon: GiftOutlined, to: '/console/coupons' }
]
},
{
key: 'console-account',
label: '账号设置',
icon: SettingOutlined,
children: [
{ key: 'console-account-info', label: '账号信息', icon: UserOutlined, to: '/console/account' },
{ key: 'console-account-members', label: '成员管理', icon: TeamOutlined, to: '/console/account/members' },
{ key: 'console-account-security', label: '账号安全', icon: SafetyCertificateOutlined, to: '/console/account/security' },
{ key: 'console-account-kyc', label: '实名认证', icon: IdcardOutlined, to: '/console/account/kyc' },
{ key: 'console-account-logout', label: '退出登录', icon: LogoutOutlined, to: '/console/logout' }
]
}
]

View File

@@ -0,0 +1,16 @@
export type DeveloperNavItem = {
key: string
label: string
to: string
}
export const developerNav: DeveloperNavItem[] = [
{ key: 'developer-home', label: '概览', to: '/developer' },
{ key: 'developer-apps', label: '应用中心', to: '/developer/apps' },
{ key: 'developer-source', label: '源码与仓库', to: '/developer/source' },
{ key: 'developer-tutorial', label: '开发教程', to: '/developer/tutorial' },
{ key: 'developer-git', label: 'Git 账号绑定', to: '/developer/git' },
{ key: 'developer-requests', label: '权限申请记录', to: '/developer/requests' },
{ key: 'developer-support', label: '支持与反馈', to: '/developer/support' }
]

10
app/config/mp-nav.ts Normal file
View File

@@ -0,0 +1,10 @@
export type MpNavItem = {
key: string
label: string
to: string
}
export const mpNav: MpNavItem[] = [
{ key: 'mp-home', label: '概览', to: '/mp' }
]

15
app/config/nav.ts Normal file
View File

@@ -0,0 +1,15 @@
export type NavItem = {
key: string
label: string
to: string
}
export const mainNav: NavItem[] = [
{key: 'home', label: '首页', to: '/'},
{key: 'products', label: '产品矩阵', to: '/products'},
{key: 'platform', label: '平台能力', to: '/platform'},
{key: 'market', label: '模板/插件市场', to: '/market'},
{key: 'deploy', label: '部署方案', to: '/deploy'},
{key: 'flow', label: '开通流程', to: '/flow'},
{key: 'contact', label: '联系我们', to: '/contact'}
]

10
app/config/oa-nav.ts Normal file
View File

@@ -0,0 +1,10 @@
export type OaNavItem = {
key: string
label: string
to: string
}
export const oaNav: OaNavItem[] = [
{ key: 'oa-home', label: '概览', to: '/oa' }
]

7
app/config/setting.ts Normal file
View File

@@ -0,0 +1,7 @@
export const SERVER_API_URL = '/api/_server'
export const MODULES_API_URL = '/api/_modules'
export const FILE_SERVER = '/api/_file'
// Some endpoints use this as a special TenantId override (defaults to current tenant)
export const TEMPLATE_ID = '10398'

10
app/config/site-nav.ts Normal file
View File

@@ -0,0 +1,10 @@
export type SiteNavItem = {
key: string
label: string
to: string
}
export const siteNav: SiteNavItem[] = [
{ key: 'site-home', label: '概览', to: '/site' }
]