四零语境前端代码仓库
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.

198 lines
4.4 KiB

1 month ago
  1. <template>
  2. <view class="team-page">
  3. <!-- 固定顶部搜索框 -->
  4. <view class="fixed-header">
  5. <view class="search-container">
  6. <uv-search
  7. v-model="searchKeyword"
  8. placeholder="请输入"
  9. :show-action="true"
  10. action-text="搜索"
  11. :animation="true"
  12. bg-color="#f5f5f5"
  13. @search="handleSearch"
  14. @custom="handleSearch"
  15. :action-style="{color: '#fff', backgroundColor: '#06DADC', borderRadius:'8rpx', width:'100rpx', height: '64rpx', lineHeight: '64rpx', borderRadius: '198rpx', text:'white', fontSize:'26rpx'}"
  16. action
  17. ></uv-search>
  18. </view>
  19. </view>
  20. <!-- 内容区域 -->
  21. <view class="content-area">
  22. <!-- 成员列表 -->
  23. <view class="member-list">
  24. <view
  25. class="member-item"
  26. v-for="(member, index) in filteredMembers"
  27. :key="index"
  28. @click="handleMemberClick(member)"
  29. >
  30. <image
  31. class="member-avatar"
  32. :src="member.avatar || '/static/默认头像.png'"
  33. mode="aspectFill"
  34. ></image>
  35. <text class="member-name">{{ member.name }}</text>
  36. </view>
  37. </view>
  38. </view>
  39. </view>
  40. </template>
  41. <script>
  42. export default {
  43. data() {
  44. return {
  45. searchKeyword: '',
  46. members: [
  47. {
  48. id: 1,
  49. name: '李世海',
  50. avatar: '/static/默认头像.png'
  51. },
  52. {
  53. id: 2,
  54. name: '周静',
  55. avatar: '/static/默认头像.png'
  56. },
  57. {
  58. id: 3,
  59. name: '周海',
  60. avatar: '/static/默认头像.png'
  61. },
  62. {
  63. id: 4,
  64. name: '冯启彬',
  65. avatar: '/static/默认头像.png'
  66. },
  67. {
  68. id: 5,
  69. name: '李嫣',
  70. avatar: '/static/默认头像.png'
  71. },
  72. {
  73. id: 6,
  74. name: '李书萍',
  75. avatar: '/static/默认头像.png'
  76. },
  77. {
  78. id: 7,
  79. name: '赵吾光',
  80. avatar: '/static/默认头像.png'
  81. },
  82. {
  83. id: 8,
  84. name: '冯云',
  85. avatar: '/static/默认头像.png'
  86. },
  87. {
  88. id: 9,
  89. name: '周静',
  90. avatar: '/static/默认头像.png'
  91. },
  92. {
  93. id: 10,
  94. name: '周海',
  95. avatar: '/static/默认头像.png'
  96. },
  97. {
  98. id: 11,
  99. name: '冯启彬',
  100. avatar: '/static/默认头像.png'
  101. },
  102. {
  103. id: 12,
  104. name: '李嫣',
  105. avatar: '/static/默认头像.png'
  106. }
  107. ]
  108. }
  109. },
  110. computed: {
  111. filteredMembers() {
  112. if (!this.searchKeyword) {
  113. return this.members
  114. }
  115. return this.members.filter(member =>
  116. member.name.includes(this.searchKeyword)
  117. )
  118. }
  119. },
  120. methods: {
  121. handleSearch() {
  122. // 搜索逻辑已通过computed实现
  123. console.log('搜索关键词:', this.searchKeyword)
  124. },
  125. handleMemberClick(member) {
  126. console.log('点击成员:', member)
  127. // 可以在这里添加跳转到成员详情页的逻辑
  128. }
  129. }
  130. }
  131. </script>
  132. <style lang="scss" scoped>
  133. // @import '@/uni.scss';
  134. .team-page {
  135. min-height: 100vh;
  136. background-color: #f2f2f2;
  137. // 固定顶部搜索框
  138. .fixed-header {
  139. position: fixed;
  140. top: 0;
  141. left: 0;
  142. right: 0;
  143. z-index: 999;
  144. background-color: #fff;
  145. .search-container {
  146. padding: 20rpx 30rpx;
  147. background-color: #fff;
  148. }
  149. }
  150. // 内容区域
  151. .content-area {
  152. padding-top: 140rpx; // 为固定头部留出空间
  153. .member-list {
  154. background-color: #fff;
  155. margin: 0 40rpx;
  156. border-radius: 32rpx;
  157. .member-item {
  158. display: flex;
  159. align-items: center;
  160. padding: 16rpx 32rpx;
  161. height: 104rpx;
  162. border-bottom: 2rpx solid #F1F1F1;
  163. transition: background-color 0.3s;
  164. &:active {
  165. background-color: #f5f5f5;
  166. }
  167. &:last-child {
  168. border-bottom: none;
  169. }
  170. .member-avatar {
  171. width: 72rpx;
  172. height: 72rpx;
  173. border-radius: 50%;
  174. margin-right: 24rpx;
  175. background-color: #f0f0f0;
  176. }
  177. .member-name {
  178. font-size: 32rpx;
  179. color: #333;
  180. font-weight: 400;
  181. }
  182. }
  183. }
  184. }
  185. }
  186. </style>