| <template> | |
|   <view class="team-page"> | |
|     <!-- 固定顶部搜索框 --> | |
|     <view class="fixed-header"> | |
|       <view class="search-container"> | |
|         <uv-search  | |
|           v-model="searchKeyword"  | |
|           placeholder="请输入"  | |
|           :show-action="true" | |
|           action-text="搜索" | |
|           :animation="true" | |
|           bg-color="#f5f5f5" | |
|           @search="handleSearch" | |
|           @custom="handleSearch" | |
|           @clear="handleCancel" | |
|           :action-style="{color: '#fff', backgroundColor: '#06DADC', borderRadius:'8rpx', width:'100rpx', height: '64rpx', lineHeight: '64rpx', borderRadius: '198rpx', text:'white', fontSize:'26rpx'}" | |
|           action | |
|         ></uv-search> | |
|       </view> | |
|     </view> | |
|      | |
|     <!-- 内容区域 --> | |
|     <view class="content-area"> | |
|       <!-- 成员列表 --> | |
|       <view class="member-list"> | |
|         <view  | |
|           class="member-item"  | |
|           v-for="(member, index) in list"  | |
|           :key="index" | |
|           @click="handleMemberClick(member)" | |
|         > | |
|           <image  | |
|             class="member-avatar"  | |
|             :src="member.avatar || '/static/default-avatar.png'" | |
|             mode="aspectFill" | |
|           ></image> | |
|           <text class="member-name">{{ member.name }}</text> | |
|         </view> | |
|       </view> | |
|       <uv-loading-icon text="加载中" textSize="30rpx" v-if="isLoading"></uv-loading-icon> | |
|       <uv-empty v-else-if="list.length === 0 " text="暂无数据"></uv-empty> | |
|     </view> | |
|   </view> | |
| </template> | |
| 
 | |
| <script> | |
| import MixinList from '@/mixins/list' | |
| export default { | |
|   mixins: [MixinList], | |
|   data() { | |
|     return { | |
|       mixinListApi: 'promotion.team', | |
|       searchKeyword: '', | |
|       members: [ | |
|         { | |
|           id: 1, | |
|           name: '李世海', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 2, | |
|           name: '周静', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 3, | |
|           name: '周海', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 4, | |
|           name: '冯启彬', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 5, | |
|           name: '李嫣', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 6, | |
|           name: '李书萍', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 7, | |
|           name: '赵吾光', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 8, | |
|           name: '冯云', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 9, | |
|           name: '周静', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 10, | |
|           name: '周海', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 11, | |
|           name: '冯启彬', | |
|           avatar: '/static/default-avatar.png' | |
|         }, | |
|         { | |
|           id: 12, | |
|           name: '李嫣', | |
|           avatar: '/static/default-avatar.png' | |
|         } | |
|       ] | |
|     } | |
|   }, | |
|   computed: { | |
|     filteredMembers() { | |
|       if (!this.searchKeyword) { | |
|         return this.members | |
|       } | |
|       return this.members.filter(member =>  | |
|         member.name.includes(this.searchKeyword) | |
|       ) | |
|     } | |
|   }, | |
|   methods: { | |
|     mixinSetParams(){ | |
|       return { | |
|         name: this.searchKeyword | |
|       } | |
|     }, | |
|     handleCancel(){ | |
|       this.initPage() | |
|       this.getList(true) | |
|     }, | |
|     handleSearch() { | |
|       // 搜索逻辑已通过computed实现 | |
|       console.log('搜索关键词:', this.searchKeyword) | |
|       this.initPage() | |
|       this.getList(true) | |
|     }, | |
|     handleMemberClick(member) { | |
|       console.log('点击成员:', member) | |
|       // 可以在这里添加跳转到成员详情页的逻辑 | |
|     } | |
|   } | |
| } | |
| </script> | |
| 
 | |
| <style lang="scss" scoped> | |
| // @import '@/uni.scss'; | |
|  | |
| .team-page { | |
|   min-height: 100vh; | |
|   background-color: #f2f2f2; | |
|    | |
|   // 固定顶部搜索框 | |
|   .fixed-header { | |
|     position: fixed; | |
|     top: 0; | |
|     left: 0; | |
|     right: 0; | |
|     z-index: 999; | |
|     background-color: #fff; | |
|      | |
|     .search-container { | |
|       padding: 20rpx 30rpx; | |
|       background-color: #fff; | |
|     } | |
|   } | |
|    | |
|   // 内容区域 | |
|   .content-area { | |
|     padding-top: 140rpx; // 为固定头部留出空间 | |
|      | |
|     .member-list { | |
|       background-color: #fff; | |
|       margin: 0 40rpx; | |
|       border-radius: 32rpx; | |
|       .member-item { | |
|         display: flex; | |
|         align-items: center; | |
|         padding: 16rpx 32rpx; | |
|         height: 104rpx; | |
|         border-bottom: 2rpx solid #F1F1F1; | |
|         transition: background-color 0.3s; | |
|          | |
|         &:active { | |
|           background-color: #f5f5f5; | |
|         } | |
|          | |
|         &:last-child { | |
|           border-bottom: none; | |
|         } | |
|          | |
|         .member-avatar { | |
|           width: 72rpx; | |
|           height: 72rpx; | |
|           border-radius: 50%; | |
|           margin-right: 24rpx; | |
|           background-color: #f0f0f0; | |
|         } | |
|          | |
|         .member-name { | |
|           font-size: 32rpx; | |
|           color: #333; | |
|           font-weight: 400; | |
|         } | |
|       } | |
|     } | |
|   } | |
| } | |
| </style> |