feat(router): 更新路由结构并优化页面组件

- 移除经营范围按钮,精简导航栏
- 实现文章标题链接功能,提升用户体验
- 添加商品详情页面包屑导航,支持分类跳转
- 引入配送管理相关页面(区域、接单台、配送员、派单)
- 替换控制台布局为站点头部和底部组件
- 重构商品分类页面,集成CMS导航功能
- 新增文章详情页面,支持多种访问方式
- 删除已迁移的创建应用和空应用页面
- 优化样式和组件导入,提升代码质量
This commit is contained in:
2026-01-29 16:21:22 +08:00
parent 26c236041f
commit 682e264a6f
22 changed files with 1309 additions and 881 deletions

View File

@@ -5,8 +5,8 @@
<a-breadcrumb-item>
<NuxtLink to="/">首页</NuxtLink>
</a-breadcrumb-item>
<a-breadcrumb-item>
<span>商品</span>
<a-breadcrumb-item v-if="Number.isFinite(categoryId)">
<NuxtLink :to="`/product/${categoryId}`">{{ categoryTitle || `分类 ${categoryId}` }}</NuxtLink>
</a-breadcrumb-item>
<a-breadcrumb-item>{{ title }}</a-breadcrumb-item>
</a-breadcrumb>
@@ -117,6 +117,8 @@
<script setup lang="ts">
import { getShopGoods } from '@/api/shop/shopGoods'
import type { ShopGoods } from '@/api/shop/shopGoods/model'
import { getCmsNavigation } from '@/api/cms/cmsNavigation'
import type { CmsNavigation } from '@/api/cms/cmsNavigation/model'
const route = useRoute()
const router = useRouter()
@@ -207,6 +209,27 @@ const categoryIdText = computed(() => {
return typeof n === 'number' ? String(n) : '-'
})
const categoryId = computed(() => {
const g = goods.value as unknown as Record<string, unknown> | null
const n = g ? pickNumber(g, 'categoryId') : undefined
return typeof n === 'number' && Number.isFinite(n) ? n : NaN
})
const { data: categoryNav } = await useAsyncData<CmsNavigation | null>(
() => `cms-navigation-${String(categoryId.value)}`,
async () => {
if (!Number.isFinite(categoryId.value)) return null
return await getCmsNavigation(categoryId.value).catch(() => null)
},
{ watch: [categoryId] }
)
const categoryTitle = computed(() => {
const nav = categoryNav.value as unknown as Record<string, unknown> | null
if (!nav) return ''
return pickString(nav, 'title') || pickString(nav, 'label')
})
const createTime = computed(() => {
const g = goods.value as unknown as Record<string, unknown> | null
return g ? pickString(g, 'createTime') || '-' : '-'
@@ -396,4 +419,3 @@ useHead(() => ({
font-weight: 700;
}
</style>