<template>
							 | 
						|
									<view class="page">
							 | 
						|
										
							 | 
						|
										<navbar title="同城群"/>
							 | 
						|
										
							 | 
						|
										<!-- 顶部操作栏 -->
							 | 
						|
										<view class="top-actions">
							 | 
						|
											<view class="search-container">
							 | 
						|
												<uv-search 
							 | 
						|
													v-model="searchKeyword"
							 | 
						|
													placeholder="搜索群组名称"
							 | 
						|
													@search="onSearch"
							 | 
						|
													@clear="onClear"
							 | 
						|
													bgColor="#f5f5f5"
							 | 
						|
													:showAction="false"
							 | 
						|
												></uv-search>
							 | 
						|
											</view>
							 | 
						|
											<view class="create-btn" @click="createGroup">
							 | 
						|
												<uv-icon name="plus" size="30rpx" color="#fff"></uv-icon>
							 | 
						|
												<text>创建群组</text>
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 城市分类标签 -->
							 | 
						|
										<view class="city-tabs-container">
							 | 
						|
											<uv-tabs 
							 | 
						|
												:list="categoryList" 
							 | 
						|
												:current="currentCityTabIndex"
							 | 
						|
												:activeStyle="{color: '#5baaff', fontWeight: 600}"
							 | 
						|
												lineColor="#5baaff" 
							 | 
						|
												lineHeight="6rpx" 
							 | 
						|
												lineWidth="40rpx"
							 | 
						|
												keyName="name"
							 | 
						|
												@click="onCategoryClick"
							 | 
						|
											/>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 群组列表 -->
							 | 
						|
										<view class="group-list">
							 | 
						|
											<groupItem
							 | 
						|
												:key="index"
							 | 
						|
												v-for="(item, index) in List"
							 | 
						|
												:item="item"
							 | 
						|
												@click="onGroupClick(item)"
							 | 
						|
											/>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 空状态 -->
							 | 
						|
										<view v-if="List.length === 0 && !loading" class="empty-state">
							 | 
						|
											<uv-empty 
							 | 
						|
												mode="list"
							 | 
						|
												text="暂无群组"
							 | 
						|
												iconSize="120"
							 | 
						|
											></uv-empty>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<!-- 加载状态 -->
							 | 
						|
										<view v-if="loading" class="loading-state">
							 | 
						|
											<uv-loading-icon size="40"></uv-loading-icon>
							 | 
						|
											<text>加载中...</text>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										<tabber select="2" />
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import tabber from '@/components/base/tabbar.vue'
							 | 
						|
									import groupItem from '@/components/list/group/groupItem.vue'
							 | 
						|
									import loadList from '@/mixins/loadList.js'
							 | 
						|
									import { mapState } from 'vuex'
							 | 
						|
									
							 | 
						|
									export default {
							 | 
						|
										components : {
							 | 
						|
											tabber,
							 | 
						|
											groupItem,
							 | 
						|
										},
							 | 
						|
										mixins: [loadList],
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												searchKeyword: '',
							 | 
						|
												currentCityTabIndex: 0, // uv-tabs当前选中的城市索引
							 | 
						|
												mixinsListApi: 'groupList', // 使用group.js中的groupList接口
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										computed: {
							 | 
						|
											...mapState(['cityList']),
							 | 
						|
											
							 | 
						|
											// 城市分类列表(包含"全部"选项)
							 | 
						|
											categoryList() {
							 | 
						|
												const allTab = { name: '全部', value: null }
							 | 
						|
												const cityTabs = this.cityList.map(city => ({
							 | 
						|
													name: city.name || city.cityName || city.title,
							 | 
						|
													value: city.id || city.cityId
							 | 
						|
												}))
							 | 
						|
												return [allTab, ...cityTabs]
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onLoad() {
							 | 
						|
											// 获取城市列表
							 | 
						|
											this.$store.commit('getCityList')
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											// 搜索群组
							 | 
						|
											onSearch(keyword) {
							 | 
						|
												this.searchKeyword = keyword
							 | 
						|
												this.queryParams.title = keyword // 使用后端字段名
							 | 
						|
												this.refreshList()
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 清除搜索
							 | 
						|
											onClear() {
							 | 
						|
												this.searchKeyword = ''
							 | 
						|
												delete this.queryParams.title
							 | 
						|
												this.refreshList()
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 分类点击
							 | 
						|
											onCategoryClick(item) {
							 | 
						|
												this.currentCityTabIndex = item.index
							 | 
						|
												
							 | 
						|
												if (item.value) {
							 | 
						|
													// 使用城市ID作为筛选条件
							 | 
						|
													this.queryParams.classId = item.value // 使用后端字段名
							 | 
						|
												} else {
							 | 
						|
													// 选择"全部"时清除城市筛选
							 | 
						|
													delete this.queryParams.classId
							 | 
						|
												}
							 | 
						|
												this.refreshList()
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 群组点击
							 | 
						|
											onGroupClick(item) {
							 | 
						|
												// 跳转到群组详情页
							 | 
						|
												this.$utils.navigateTo('/pages_order/group/groupDetail?id=' + item.id)
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 创建群组
							 | 
						|
											createGroup() {
							 | 
						|
												this.$utils.navigateTo('/pages_order/group/createGroup')
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style scoped lang="scss">
							 | 
						|
								.page{
							 | 
						|
									background-color: #f5f5f5;
							 | 
						|
									min-height: 100vh;
							 | 
						|
									
							 | 
						|
									.top-actions {
							 | 
						|
										background-color: #fff;
							 | 
						|
										padding: 20rpx;
							 | 
						|
										display: flex;
							 | 
						|
										align-items: center;
							 | 
						|
										gap: 20rpx;
							 | 
						|
										
							 | 
						|
										.search-container {
							 | 
						|
											flex: 1;
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										.create-btn {
							 | 
						|
											display: flex;
							 | 
						|
											align-items: center;
							 | 
						|
											background-color: #5baaff;
							 | 
						|
											color: #fff;
							 | 
						|
											padding: 15rpx 20rpx;
							 | 
						|
											border-radius: 30rpx;
							 | 
						|
											font-size: 26rpx;
							 | 
						|
											
							 | 
						|
											text {
							 | 
						|
												margin-left: 8rpx;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.category-tabs {
							 | 
						|
										background-color: #fff;
							 | 
						|
										margin-bottom: 20rpx;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.group-list {
							 | 
						|
										padding-bottom: 120rpx;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.empty-state {
							 | 
						|
										padding: 100rpx 0;
							 | 
						|
										text-align: center;
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.loading-state {
							 | 
						|
										display: flex;
							 | 
						|
										flex-direction: column;
							 | 
						|
										align-items: center;
							 | 
						|
										justify-content: center;
							 | 
						|
										padding: 100rpx 0;
							 | 
						|
										
							 | 
						|
										text {
							 | 
						|
											margin-top: 20rpx;
							 | 
						|
											color: #999;
							 | 
						|
											font-size: 28rpx;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								</style>
							 |