瑶都万能墙
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

99 lines
1.8 KiB

<template>
<view class="page">
<navbar title="江华"/>
<view class="content">
<view class="article-list" v-if="!loading">
<article-item
v-for="(item, index) in List"
:key="item.id || index"
:item="item"
@click="handleItemClick"
/>
</view>
<!-- 加载状态 -->
<view class="loading-container" v-if="loading">
<text class="loading-text">加载中...</text>
</view>
<!-- 空状态 -->
<view class="empty-container" v-if="!loading && List.length === 0">
<text class="empty-text">暂无文章</text>
</view>
</view>
<tabber select="1" />
</view>
</template>
<script>
import tabber from '@/components/base/tabbar.vue'
import articleItem from '@/components/list/articleItem.vue'
import loadList from '@/mixins/loadList.js'
export default {
mixins: [loadList],
components : {
tabber,
articleItem
},
data() {
return {
mixinsListApi: 'articleList'
}
},
methods: {
// 处理文章点击事件
handleItemClick(item) {
console.log('点击了文章:', item);
// 跳转到文章详情页
uni.navigateTo({
url: `/pages_order/article/index?id=${item.id}`
})
}
}
}
</script>
<style scoped lang="scss">
.page {
background-color: #f5f5f5;
min-height: 100vh;
}
.content {
padding: 20rpx;
padding-bottom: 120rpx; // 为底部tabbar留出空间
}
.article-list {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.loading-container {
display: flex;
justify-content: center;
align-items: center;
padding: 100rpx 0;
.loading-text {
font-size: 28rpx;
color: #999;
}
}
.empty-container {
display: flex;
justify-content: center;
align-items: center;
padding: 100rpx 0;
.empty-text {
font-size: 28rpx;
color: #999;
}
}
</style>