优化单页pagetype的路由,与普通pagetype路由前缀保持一致
This commit is contained in:
parent
199f4006a6
commit
ed8bd80a3d
@ -29,7 +29,6 @@ import { NMenu } from 'naive-ui'
|
||||
import { t } from '../../shared/i18n'
|
||||
import { useMenuStore } from '../../shared/stores/menu'
|
||||
import { pageTypeToSlug } from '../../shared/utils/slug'
|
||||
import { getPageTypeRouteName } from '../../shared/utils/pagetype'
|
||||
import DynamicIcon from '../../components/DynamicIcon.vue'
|
||||
|
||||
interface Props {
|
||||
@ -70,22 +69,16 @@ const menuOptions = computed(() => {
|
||||
}))
|
||||
})
|
||||
|
||||
const handleMenuSelect = async (key: string) => {
|
||||
const handleMenuSelect = (key: string) => {
|
||||
// 通过id找到对应的菜单项
|
||||
const menuItem = menuStore.visibleItems.find(item => item.id === key)
|
||||
if (!menuItem) return
|
||||
|
||||
// 根据菜单类型处理导航
|
||||
if (menuItem.type === 'pagetype' && menuItem.pagetype) {
|
||||
// 页面类型:根据 issingle 判断跳转到列表页还是单页详情
|
||||
// 页面类型:统一跳转到列表页,由列表页内部判断是否为单页模式
|
||||
const slug = pageTypeToSlug(menuItem.pagetype)
|
||||
const routeName = await getPageTypeRouteName(menuItem.pagetype)
|
||||
|
||||
if (routeName === 'SinglePageDetail') {
|
||||
router.push({ name: 'SinglePageDetail', params: { entity: slug } })
|
||||
} else {
|
||||
router.push({ name: 'PageTypeList', params: { entity: slug } })
|
||||
}
|
||||
router.push({ name: 'PageTypeList', params: { entity: slug } })
|
||||
} else if (menuItem.type === 'route' && menuItem.routeName) {
|
||||
// 路由名:使用routeName字段
|
||||
router.push({ name: menuItem.routeName })
|
||||
|
||||
@ -78,12 +78,6 @@ const router = createRouter({
|
||||
name: 'PageTypeDetail',
|
||||
component: () => import('../../views/pagetype/GenericDetailPage.vue')
|
||||
},
|
||||
// 单页 pagetype 详情
|
||||
{
|
||||
path: 'single/:entity',
|
||||
name: 'SinglePageDetail',
|
||||
component: () => import('../../views/pagetype/SinglePageDetail.vue')
|
||||
},
|
||||
// 保持向后兼容
|
||||
{
|
||||
path: 'page/:entity',
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<!-- 如果是单页模式,直接显示单页详情组件 -->
|
||||
<SinglePageDetail v-if="isSinglePage" />
|
||||
<div v-else class="page">
|
||||
<!-- 头部,与 AI 智能体列表一致的结构 -->
|
||||
<div class="page-header">
|
||||
<div class="header-left">
|
||||
@ -170,6 +172,8 @@ import axios from 'axios'
|
||||
import { t } from '../../shared/i18n'
|
||||
import { get_session_api_headers } from '../../shared/api/auth'
|
||||
import { usePageTypeSlug } from '../../shared/utils/slug'
|
||||
import { isSinglePageType } from '../../shared/utils/pagetype'
|
||||
import SinglePageDetail from './SinglePageDetail.vue'
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
@ -178,6 +182,9 @@ const message = useMessage()
|
||||
// 使用组合式函数处理URL slug
|
||||
const { originalSlug, entity } = usePageTypeSlug(route)
|
||||
const title = computed(() => entity.value)
|
||||
|
||||
// 检查是否为单页模式
|
||||
const isSinglePage = ref(false)
|
||||
const searchQuery = ref('')
|
||||
const loading = ref(false)
|
||||
const rows = ref<any[]>([])
|
||||
@ -222,6 +229,9 @@ async function loadMeta() {
|
||||
const url = `/api/data/PageType/${encodeURIComponent(entity.value)}`
|
||||
const res = await axios.get(url, { headers: get_session_api_headers(), withCredentials: true })
|
||||
metaFields.value = res.data?.data?.fields || []
|
||||
|
||||
// 检查是否为单页模式
|
||||
isSinglePage.value = await isSinglePageType(entity.value)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
@ -266,7 +276,10 @@ async function loadData() {
|
||||
|
||||
onMounted(async () => {
|
||||
await loadMeta()
|
||||
await loadData()
|
||||
// 只有在非单页模式下才加载列表数据
|
||||
if (!isSinglePage.value) {
|
||||
await loadData()
|
||||
}
|
||||
})
|
||||
|
||||
// 监听分页变化
|
||||
@ -283,7 +296,10 @@ watch(() => route.params.entity, async (newEntity, oldEntity) => {
|
||||
selectedKeys.value = []
|
||||
// 重新加载元数据和数据
|
||||
await loadMeta()
|
||||
await loadData()
|
||||
// 只有在非单页模式下才加载列表数据
|
||||
if (!isSinglePage.value) {
|
||||
await loadData()
|
||||
}
|
||||
}
|
||||
}, { immediate: false })
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user