<template>
							 | 
						|
									<view class="square-page">
							 | 
						|
										<navbar title="广场"/>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
										<!-- 一级分类:关注/发现 -->
							 | 
						|
										<view class="primary-tabs">
							 | 
						|
											<view 
							 | 
						|
												class="primary-tab-item" 
							 | 
						|
												:class="{active: currentPrimaryTab === 0}"
							 | 
						|
												@click="switchPrimaryTab(0)"
							 | 
						|
											>
							 | 
						|
												关注
							 | 
						|
											</view>
							 | 
						|
											<view 
							 | 
						|
												class="primary-tab-item" 
							 | 
						|
												:class="{active: currentPrimaryTab === 1}"
							 | 
						|
												@click="switchPrimaryTab(1)"
							 | 
						|
											>
							 | 
						|
												发现
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 二级分类:城市列表 -->
							 | 
						|
										<!-- <view class="secondary-tabs">
							 | 
						|
											<scroll-view scroll-x="true" class="city-scroll">
							 | 
						|
												<view class="city-tabs">
							 | 
						|
													<view 
							 | 
						|
														class="city-tab-item" 
							 | 
						|
														:class="{active: currentCityIndex === -1}"
							 | 
						|
														@click="switchCity(-1, null)"
							 | 
						|
													>
							 | 
						|
														全部
							 | 
						|
													</view>
							 | 
						|
													<view 
							 | 
						|
														v-for="(city, index) in cityList" 
							 | 
						|
														:key="city.id || index"
							 | 
						|
														class="city-tab-item" 
							 | 
						|
														:class="{active: currentCityIndex === index}"
							 | 
						|
														@click="switchCity(index, city)"
							 | 
						|
													>
							 | 
						|
														{{ city.name || city.cityName }}
							 | 
						|
													</view>
							 | 
						|
												</view>
							 | 
						|
											</scroll-view>
							 | 
						|
										</view> -->
							 | 
						|
										
							 | 
						|
										<!-- 使用uv-tabs组件的城市分类 -->
							 | 
						|
										<view class="city-tabs-container">
							 | 
						|
											<uv-tabs 
							 | 
						|
												:list="cityTabsList" 
							 | 
						|
												:current="currentCityTabIndex"
							 | 
						|
												:activeStyle="{color: '#5baaff', fontWeight: 600}"
							 | 
						|
												lineColor="#5baaff" 
							 | 
						|
												lineHeight="6rpx" 
							 | 
						|
												lineWidth="40rpx"
							 | 
						|
												keyName="name"
							 | 
						|
												@click="onCityTabClick"
							 | 
						|
											/>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 瀑布流列表 -->
							 | 
						|
										<view class="content-container">
							 | 
						|
											<waterfallContainer 
							 | 
						|
												:list="List"
							 | 
						|
												@item-click="onItemClick"
							 | 
						|
												@item-like="onItemLike"
							 | 
						|
											/>
							 | 
						|
											
							 | 
						|
											<!-- 加载更多提示 -->
							 | 
						|
											<view v-if="loadmore && List.length > 0" class="load-more">
							 | 
						|
												<uv-loading-icon size="28"></uv-loading-icon>
							 | 
						|
												<text class="load-more-text">加载更多...</text>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<!-- 没有更多数据提示 -->
							 | 
						|
											<view v-if="!loadmore && List.length > 0" class="no-more">
							 | 
						|
												<text>— 没有更多了 —</text>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 空状态 -->
							 | 
						|
										<view v-if="!loading && List.length === 0" class="empty-state">
							 | 
						|
											<uv-empty 
							 | 
						|
												text="暂无动态" 
							 | 
						|
												textColor="#999"
							 | 
						|
												icon="list"
							 | 
						|
												iconColor="#ddd"
							 | 
						|
												iconSize="120"
							 | 
						|
											></uv-empty>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 加载状态 -->
							 | 
						|
										<view v-if="loading && List.length === 0" class="loading-state">
							 | 
						|
											<uv-loading-icon size="40"></uv-loading-icon>
							 | 
						|
											<text class="loading-text">加载中...</text>
							 | 
						|
										</view>
							 | 
						|
								        
							 | 
						|
										<tabber select="1" />
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import navbar from '@/components/base/navbar.vue'
							 | 
						|
									import tabber from '@/components/base/tabbar.vue'
							 | 
						|
									import waterfallContainer from '@/components/list/square/waterfallContainer.vue'
							 | 
						|
									import mixinsList from '@/mixins/loadList.js'
							 | 
						|
									import { mapState } from 'vuex'
							 | 
						|
									
							 | 
						|
									export default {
							 | 
						|
										mixins: [mixinsList],
							 | 
						|
										components: {
							 | 
						|
											navbar,
							 | 
						|
											tabber,
							 | 
						|
											waterfallContainer
							 | 
						|
										},
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												mixinsListApi: 'getPostPage', // 使用与首页相同的API
							 | 
						|
												currentPrimaryTab: 1, // 默认显示发现
							 | 
						|
												currentCityIndex: -1, // 默认全部城市
							 | 
						|
												currentCity: null,
							 | 
						|
												currentCityTabIndex: 0 // uv-tabs当前选中的城市索引
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onLoad() {
							 | 
						|
											// 获取城市列表
							 | 
						|
											this.$store.commit('getCityList')
							 | 
						|
											
							 | 
						|
											// 初始化查询参数
							 | 
						|
											this.initQueryParams()
							 | 
						|
										},
							 | 
						|
										onShow() {
							 | 
						|
											this.refreshList()
							 | 
						|
										},
							 | 
						|
										onPullDownRefresh() {
							 | 
						|
											this.refreshList()
							 | 
						|
										},
							 | 
						|
										onReachBottom() {
							 | 
						|
											this.loadMore()
							 | 
						|
										},
							 | 
						|
										computed: {
							 | 
						|
											...mapState(['cityList']),
							 | 
						|
											
							 | 
						|
											// 城市标签页列表(包含"全部"选项)
							 | 
						|
											cityTabsList() {
							 | 
						|
												const allTab = { id: null, name: '全部' }
							 | 
						|
												const cityTabs = this.cityList.map(city => ({
							 | 
						|
													id: city.id || city.cityId,
							 | 
						|
													name: city.name || city.cityName || city.title
							 | 
						|
												}))
							 | 
						|
												return [allTab, ...cityTabs]
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											// 初始化查询参数
							 | 
						|
											initQueryParams() {
							 | 
						|
												// 设置默认查询参数
							 | 
						|
												this.queryParams = {
							 | 
						|
													...this.queryParams,
							 | 
						|
													type: this.currentPrimaryTab // 0: 关注, 1: 发现
							 | 
						|
												}
							 | 
						|
												
							 | 
						|
												// 如果有选择城市,添加城市参数
							 | 
						|
												if (this.currentCity) {
							 | 
						|
													this.queryParams.cityId = this.currentCity.id || this.currentCity.cityId
							 | 
						|
												}
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 切换一级分类
							 | 
						|
											switchPrimaryTab(index) {
							 | 
						|
												if (this.currentPrimaryTab === index) return
							 | 
						|
												
							 | 
						|
												this.currentPrimaryTab = index
							 | 
						|
												this.queryParams.type = index
							 | 
						|
												
							 | 
						|
												this.refreshList()
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 切换城市(已注释,改用uv-tabs的onCityTabClick方法)
							 | 
						|
											// switchCity(index, city) {
							 | 
						|
											// 	if (this.currentCityIndex === index) return
							 | 
						|
											// 	
							 | 
						|
											// 	this.currentCityIndex = index
							 | 
						|
											// 	this.currentCity = city
							 | 
						|
											// 	
							 | 
						|
											// 	// 更新查询参数
							 | 
						|
											// 	if (city) {
							 | 
						|
											// 		this.queryParams.cityId = city.id || city.cityId
							 | 
						|
											// 	} else {
							 | 
						|
											// 		delete this.queryParams.cityId
							 | 
						|
											// 	}
							 | 
						|
											// 	
							 | 
						|
											// 	this.refreshList()
							 | 
						|
											// },
							 | 
						|
											
							 | 
						|
											// 重写刷新方法
							 | 
						|
											onRefresh() {
							 | 
						|
												this.refreshList()
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 点击动态项
							 | 
						|
											onItemClick(item) {
							 | 
						|
												this.$utils.navigateTo('/pages_order/post/postDetail?id=' + item.id)
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 点赞动态
							 | 
						|
											onItemLike(item) {
							 | 
						|
												console.log('点赞动态:', item.id)
							 | 
						|
												// 这里可以添加点赞API调用
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// uv-tabs城市切换事件
							 | 
						|
											onCityTabClick(item) {
							 | 
						|
												this.currentCityTabIndex = item.index
							 | 
						|
												
							 | 
						|
												// 如果是第一个(全部),清除城市筛选
							 | 
						|
												if (item.index === 0) {
							 | 
						|
													this.currentCity = null
							 | 
						|
													this.currentCityIndex = -1
							 | 
						|
													delete this.queryParams.cityId
							 | 
						|
												} else {
							 | 
						|
													// 获取对应的城市数据
							 | 
						|
													const cityData = this.cityList[item.index - 1] // 减1是因为第一个是"全部"
							 | 
						|
													this.currentCity = cityData
							 | 
						|
													this.currentCityIndex = item.index - 1
							 | 
						|
													this.queryParams.cityId = cityData.id || cityData.cityId
							 | 
						|
												}
							 | 
						|
												
							 | 
						|
												this.refreshList()
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style scoped lang="scss">
							 | 
						|
									.square-page {
							 | 
						|
										background-color: #f5f5f5;
							 | 
						|
										min-height: 100vh;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
								
							 | 
						|
									
							 | 
						|
									.primary-tabs {
							 | 
						|
										background-color: #fff;
							 | 
						|
										display: flex;
							 | 
						|
										padding: 0 30rpx;
							 | 
						|
										border-bottom: 1rpx solid #eee;
							 | 
						|
										
							 | 
						|
										.primary-tab-item {
							 | 
						|
											flex: 1;
							 | 
						|
											text-align: center;
							 | 
						|
											padding: 30rpx 0;
							 | 
						|
											font-size: 32rpx;
							 | 
						|
											color: #666;
							 | 
						|
											position: relative;
							 | 
						|
											
							 | 
						|
											&.active {
							 | 
						|
												color: #5baaff;
							 | 
						|
												font-weight: bold;
							 | 
						|
												
							 | 
						|
												&::after {
							 | 
						|
													content: '';
							 | 
						|
													position: absolute;
							 | 
						|
													bottom: 0;
							 | 
						|
													left: 50%;
							 | 
						|
													transform: translateX(-50%);
							 | 
						|
													width: 60rpx;
							 | 
						|
													height: 6rpx;
							 | 
						|
													background-color: #5baaff;
							 | 
						|
													border-radius: 3rpx;
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									// 原有的二级分类样式(已注释)
							 | 
						|
									// .secondary-tabs {
							 | 
						|
									// 	background-color: #fff;
							 | 
						|
									// 	border-bottom: 1rpx solid #eee;
							 | 
						|
									// 	
							 | 
						|
									// 	.city-scroll {
							 | 
						|
									// 		padding: 20rpx 0;
							 | 
						|
									// 		
							 | 
						|
									// 		.city-tabs {
							 | 
						|
									// 			display: flex;
							 | 
						|
									// 			white-space: nowrap;
							 | 
						|
									// 			padding: 0 30rpx;
							 | 
						|
									// 			
							 | 
						|
									// 			.city-tab-item {
							 | 
						|
									// 				flex-shrink: 0;
							 | 
						|
									// 				padding: 16rpx 32rpx;
							 | 
						|
									// 				margin-right: 20rpx;
							 | 
						|
									// 				background-color: #f8f9fa;
							 | 
						|
									// 				border-radius: 30rpx;
							 | 
						|
									// 				font-size: 28rpx;
							 | 
						|
									// 				color: #666;
							 | 
						|
									// 				border: 1rpx solid transparent;
							 | 
						|
									// 				
							 | 
						|
									// 				&.active {
							 | 
						|
									// 					background-color: #5baaff;
							 | 
						|
									// 					color: #fff;
							 | 
						|
									// 				}
							 | 
						|
									// 				
							 | 
						|
									// 				&:last-child {
							 | 
						|
									// 					margin-right: 30rpx;
							 | 
						|
									// 				}
							 | 
						|
									// 			}
							 | 
						|
									// 		}
							 | 
						|
									// 	}
							 | 
						|
									// }
							 | 
						|
									
							 | 
						|
									// uv-tabs城市分类容器
							 | 
						|
									.city-tabs-container {
							 | 
						|
										background-color: #fff;
							 | 
						|
										border-bottom: 1rpx solid #eee;
							 | 
						|
										padding: 0 20rpx;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.content-container {
							 | 
						|
										padding: 0;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.empty-state {
							 | 
						|
										padding: 100rpx 0;
							 | 
						|
										text-align: center;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.loading-state {
							 | 
						|
										padding: 100rpx 0;
							 | 
						|
										text-align: center;
							 | 
						|
										display: flex;
							 | 
						|
										flex-direction: column;
							 | 
						|
										align-items: center;
							 | 
						|
										
							 | 
						|
										.loading-text {
							 | 
						|
											margin-top: 20rpx;
							 | 
						|
											font-size: 28rpx;
							 | 
						|
											color: #999;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.load-more {
							 | 
						|
										padding: 30rpx 0;
							 | 
						|
										text-align: center;
							 | 
						|
										display: flex;
							 | 
						|
										flex-direction: column;
							 | 
						|
										align-items: center;
							 | 
						|
										
							 | 
						|
										.load-more-text {
							 | 
						|
											margin-top: 15rpx;
							 | 
						|
											font-size: 24rpx;
							 | 
						|
											color: #999;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.no-more {
							 | 
						|
										padding: 30rpx 0;
							 | 
						|
										text-align: center;
							 | 
						|
										
							 | 
						|
										text {
							 | 
						|
											font-size: 24rpx;
							 | 
						|
											color: #ccc;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									// 原有的城市滚动条隐藏样式(已注释,uv-tabs自带滚动处理)
							 | 
						|
									// /deep/ .city-scroll::-webkit-scrollbar {
							 | 
						|
									// 	display: none;
							 | 
						|
									// }
							 | 
						|
								</style>
							 |