ct/app/pages/new.vue
WindowBird ad3a166f4f test3
2025-10-17 15:25:14 +08:00

100 lines
1.9 KiB
Vue

<script lang="ts" setup>
// 设置页面布局
definePageMeta({
layout: 'no-navigation'
})
// 导入API配置
import {getArticleApiUrl} from '~/config/api'
// 文章数据
const articleData = ref({
title: '',
publishDate: '',
category: '',
content: '',
prevArticle: {
title: '',
url: '#'
},
nextArticle: {
title: '',
url: '#'
}
})
// 加载状态
const loading = ref(true)
const error = ref('')
// 获取文章详情
const fetchArticle = async (id: string = '437') => {
try {
loading.value = true
error.value = ''
const response = await fetch(getArticleApiUrl('GET', id))
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`)
}
const res = await response.json()
const data = res.data
console.log('api请求数据', data)
// 分类映射配置
const categoryMapping: Record<string, string> = {
'solution': '解决方案',
'developKnowledge': '开发知识',
'industryTrend': '行业动态',
'aboutUs': '关于我们'
}
data.code = categoryMapping[data.code] || '暂无分类'
// 更新文章数据
articleData.value = {
title: data.title || '暂无标题',
publishDate: data.createTime || '暂无日期',
category: data.code || '暂无分类',
content: data.content || '暂无内容',
prevArticle: data.prevArticle || {
title: '暂无上一篇',
url: '#'
},
nextArticle: data.nextArticle || {
title: '暂无下一篇',
url: '#'
}
}
} catch (err) {
console.error('获取文章失败:', err)
error.value = '获取文章失败,请稍后重试'
} finally {
loading.value = false
}
}
// 组件挂载时获取文章详情
onMounted(() => {
fetchArticle()
})
</script>
<template>
<view>
<NewsNew
:article-data="articleData"
:loading="loading"
:error="error"
/>
</view>
</template>
<style scoped>
</style>