feat(pages): 添加文章和商品详情页及API代理配置

- 添加了.dockerignore、.env.example和.gitignore配置文件
- 实现了文件服务器、模块API和服务器API的代理功能
- 创建了动态路由页面用于展示文章列表和详情
- 实现了商品详情页面包括图片展示和价格信息
- 添加了静态页面展示功能支持富文本内容渲染
- 配置了SEO元数据和面包屑导航组件
This commit is contained in:
2026-02-12 13:52:55 +08:00
commit 91e9a8c20f
322 changed files with 48203 additions and 0 deletions

11
app/config/company.ts Normal file
View File

@@ -0,0 +1,11 @@
export const COMPANY = {
projectName: '桂乐淘',
address: '南宁市江南区国凯大道东13号神冠胶原智库项目加工厂房',
scope: {
general:
'生物基材料技术研发;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;食品销售(仅销售预包装食品);保健食品(预包装)销售;鲜肉零售;新鲜水果批发;特殊医学用途配方食品销售;水产品零售;鲜肉批发;鲜蛋零售;食品互联网销售(仅销售预包装食品);食用农产品零售;新鲜水果零售;新鲜蔬菜零售;鲜蛋批发(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)。',
licensed:
'食品销售;酒类经营;食品互联网销售;食品经营管理(依法须经批准的项目,经相关部门批准后方可开展经营活动,具体经营项目以相关部门批准文件或许可证件为准)。'
},
tags: ['生物基材料', '技术服务', '食品/农产品流通', '合规经营']
} as const

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' }
]
}
]

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

@@ -0,0 +1,12 @@
export type NavItem = {
key: string
label: string
to: string
}
export const mainNav: NavItem[] = [
{key: 'home', label: '首页', to: '/'},
{key: 'products', label: '经营范围', to: '/products'},
{key: 'join', label: '招商加盟', to: '/join'},
{key: 'contact', label: '联系我们', to: '/contact'}
]

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 = '10584'

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' }
]