| 
						 | 
						- <template>
 - 	<view class="browse-history">
 - 		<navbar leftClick @leftClick="$utils.navigateBack" title="浏览历史" />
 - 		
 - 		<!-- 筛选标签 -->
 - 		<view class="filter-tabs">
 - 			<uv-tabs 
 - 				:list="filterTabs" 
 - 				:activeStyle="{color: '#000', fontWeight: 900, fontSize: '32rpx'}"
 - 				lineColor="#5baaff" 
 - 				lineHeight="6rpx" 
 - 				lineWidth="50rpx" 
 - 				keyName="title"
 - 				@click="onFilterChange"
 - 			/>
 - 		</view>
 - 		
 - 		<!-- 浏览记录列表 -->
 - 		<view class="history-list" v-if="historyList.length > 0">
 - 			<view class="history-item" 
 - 				v-for="(item, index) in historyList" 
 - 				:key="index"
 - 				@click="goToDetail(item)">
 - 				
 - 				<view class="item-content">
 - 					<!-- 动态内容 -->
 - 					<view class="dynamic-info">
 - 						<view class="title" v-html="$utils.stringFormatHtml(item.title)"></view>
 - 						<view class="meta-info">
 - 							<text class="author">{{ item.userName }}</text>
 - 							<text class="time">{{ $dayjs(item.createTime).format('MM-DD HH:mm') }}</text>
 - 						</view>
 - 					</view>
 - 					
 - 					<!-- 缩略图 -->
 - 					<view class="thumbnail" v-if="item.image">
 - 						<image :src="item.image.split(',')[0]" mode="aspectFill" />
 - 					</view>
 - 				</view>
 - 				
 - 				<!-- 浏览时间 -->
 - 				<view class="browse-time">
 - 					浏览于 {{ $dayjs(item.browseTime).format('YYYY-MM-DD HH:mm') }}
 - 				</view>
 - 			</view>
 - 		</view>
 - 		
 - 		<!-- 空状态 -->
 - 		<view class="empty-state" v-else-if="!loading">
 - 			<uv-empty 
 - 				text="暂无浏览记录" 
 - 				icon="history"
 - 				iconSize="120"
 - 			/>
 - 		</view>
 - 		
 - 		<!-- 加载更多 -->
 - 		<uv-load-more 
 - 			:status="loadStatus" 
 - 			@loadmore="loadMore"
 - 			v-if="historyList.length > 0"
 - 		/>
 - 	</view>
 - </template>
 - 
 - <script>
 - 	import navbar from '@/components/base/navbar.vue'
 - 	import mixinsList from '@/mixins/loadList.js'
 - 	import { BROWSE_RECORD_CATEGORY } from '@/config/browseConfig.js'
 - 	
 - 	export default {
 - 		mixins: [mixinsList],
 - 		components: {
 - 			navbar
 - 		},
 - 		data() {
 - 			return {
 - 				mixinsListApi: 'getBrowseRecordPage',
 - 				filterTabs: [
 - 					{ id: '', title: '全部' },
 - 					{ id: 0, title: '动态' },
 - 					{ id: 1, title: '租房' },
 - 					{ id: 2, title: '工作' },
 - 					{ id: 5, title: '活动' },
 - 					{ id: 8, title: '文章' }
 - 				],
 - 				currentFilter: '',
 - 				historyList: [],
 - 				loading: false,
 - 				loadStatus: 'loadmore'
 - 			}
 - 		},
 - 		onLoad() {
 - 			this.loadHistoryData()
 - 		},
 - 		onPullDownRefresh() {
 - 			this.refreshData()
 - 		},
 - 		onReachBottom() {
 - 			this.loadMore()
 - 		},
 - 		methods: {
 - 			// 筛选类型改变
 - 			onFilterChange(item) {
 - 				this.currentFilter = item.id
 - 				this.queryParams.type = item.id === '' ? undefined : item.id
 - 				this.refreshList()
 - 			},
 - 			
 - 			// 加载浏览历史数据
 - 			loadHistoryData() {
 - 				this.loading = true
 - 				this.$api('getBrowseRecordPage', {
 - 					...this.queryParams,
 - 					category: BROWSE_RECORD_CATEGORY.BROWSE // 只获取浏览记录
 - 				}, res => {
 - 					this.loading = false
 - 					uni.stopPullDownRefresh()
 - 					
 - 					if (res.code === 200) {
 - 						const newData = res.result.records || res.result || []
 - 						
 - 						if (this.queryParams.pageNum === 1) {
 - 							this.historyList = newData
 - 						} else {
 - 							this.historyList = [...this.historyList, ...newData]
 - 						}
 - 						
 - 						// 更新加载状态
 - 						if (newData.length < this.queryParams.pageSize) {
 - 							this.loadStatus = 'nomore'
 - 						} else {
 - 							this.loadStatus = 'loadmore'
 - 						}
 - 					}
 - 				})
 - 			},
 - 			
 - 			// 刷新数据
 - 			refreshData() {
 - 				this.queryParams.pageNum = 1
 - 				this.loadStatus = 'loadmore'
 - 				this.loadHistoryData()
 - 			},
 - 			
 - 			// 加载更多
 - 			loadMore() {
 - 				if (this.loadStatus === 'loadmore') {
 - 					this.queryParams.pageNum++
 - 					this.loadStatus = 'loading'
 - 					this.loadHistoryData()
 - 				}
 - 			},
 - 			
 - 			// 跳转到详情页
 - 			goToDetail(item) {
 - 				const typeRouteMap = {
 - 					0: '/pages_order/post/postDetail',
 - 					1: '/pages_order/renting/rentingDetail',
 - 					2: '/pages_order/work/workDetail',
 - 					5: '/pages_order/activity/activityDetail',
 - 					8: '/pages_order/article/articleDetail'
 - 				}
 - 				
 - 				const route = typeRouteMap[item.type] || '/pages_order/post/postDetail'
 - 				uni.navigateTo({
 - 					url: `${route}?id=${item.orderId}`
 - 				})
 - 			}
 - 		}
 - 	}
 - </script>
 - 
 - <style scoped lang="scss">
 - 	.browse-history {
 - 		background-color: #f5f5f5;
 - 		min-height: 100vh;
 - 	}
 - 	
 - 	.filter-tabs {
 - 		background-color: #fff;
 - 		padding: 20rpx 0;
 - 		margin-bottom: 20rpx;
 - 	}
 - 	
 - 	.history-list {
 - 		padding: 0 20rpx;
 - 	}
 - 	
 - 	.history-item {
 - 		background-color: #fff;
 - 		border-radius: 20rpx;
 - 		padding: 30rpx;
 - 		margin-bottom: 20rpx;
 - 		box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
 - 		
 - 		.item-content {
 - 			display: flex;
 - 			align-items: flex-start;
 - 			
 - 			.dynamic-info {
 - 				flex: 1;
 - 				margin-right: 20rpx;
 - 				
 - 				.title {
 - 					font-size: 32rpx;
 - 					color: #333;
 - 					line-height: 1.5;
 - 					margin-bottom: 15rpx;
 - 					display: -webkit-box;
 - 					-webkit-box-orient: vertical;
 - 					-webkit-line-clamp: 2;
 - 					overflow: hidden;
 - 					text-overflow: ellipsis;
 - 				}
 - 				
 - 				.meta-info {
 - 					display: flex;
 - 					align-items: center;
 - 					font-size: 26rpx;
 - 					color: #999;
 - 					
 - 					.author {
 - 						margin-right: 20rpx;
 - 					}
 - 				}
 - 			}
 - 			
 - 			.thumbnail {
 - 				width: 120rpx;
 - 				height: 120rpx;
 - 				border-radius: 12rpx;
 - 				overflow: hidden;
 - 				flex-shrink: 0;
 - 				
 - 				image {
 - 					width: 100%;
 - 					height: 100%;
 - 				}
 - 			}
 - 		}
 - 		
 - 		.browse-time {
 - 			margin-top: 20rpx;
 - 			font-size: 24rpx;
 - 			color: #999;
 - 			text-align: right;
 - 		}
 - 	}
 - 	
 - 	.empty-state {
 - 		padding: 100rpx 0;
 - 		text-align: center;
 - 	}
 - </style>
 
 
  |