与牧同行-小程序用户端
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.

247 lines
12 KiB

  1. <view class="expert-page">
  2. <!-- 顶部区域 -->
  3. <view class="header-section">
  4. <!-- 背景装饰 -->
  5. <view class="header-bg">
  6. <view class="bg-circle bg-circle-1"></view>
  7. <view class="bg-circle bg-circle-2"></view>
  8. <view class="bg-circle bg-circle-3"></view>
  9. </view>
  10. <!-- 标题内容 -->
  11. <view class="header-content">
  12. <view class="title-row">
  13. <text class="main-title">牲畜专家</text>
  14. <view class="expert-badge">
  15. <text class="badge-text">专业咨询</text>
  16. </view>
  17. </view>
  18. <text class="sub-title">连接行业专家 · 解决养殖难题</text>
  19. <!-- 统计信息 -->
  20. <view class="stats-row">
  21. <view class="stat-item">
  22. <text class="stat-number">{{allExperts.length}}</text>
  23. <text class="stat-label">总专家数</text>
  24. </view>
  25. <view class="stat-divider"></view>
  26. <view class="stat-item">
  27. <text class="stat-number">{{onlineCount}}</text>
  28. <text class="stat-label">在线专家</text>
  29. </view>
  30. <view class="stat-divider"></view>
  31. <view class="stat-item">
  32. <text class="stat-number">24h</text>
  33. <text class="stat-label">快速响应</text>
  34. </view>
  35. </view>
  36. </view>
  37. </view>
  38. <!-- 搜索和筛选区域 -->
  39. <view class="search-filter-section">
  40. <!-- 搜索框 -->
  41. <view class="search-wrapper">
  42. <view class="search-box">
  43. <image src="/pagesA/images/ss.png" class="search-icon"></image>
  44. <input type="text" placeholder="搜索专家姓名、擅长领域..." placeholder-class="placeholder" bindinput="onSearchInput" value="{{searchKeyword}}" />
  45. <view wx:if="{{searchKeyword}}" class="clear-btn" bindtap="clearSearch">
  46. <image src="/pagesA/images/ch.png" class="clear-icon"></image>
  47. </view>
  48. </view>
  49. </view>
  50. <!-- 筛选标签 -->
  51. <scroll-view class="filter-scroll" scroll-x>
  52. <view class="filter-tags">
  53. <view class="filter-tag {{currentFilter === 'all' ? 'active' : ''}}" bindtap="changeFilter" data-filter="all">
  54. <text>全部专家</text>
  55. <view class="tag-count">{{allExperts.length}}</view>
  56. </view>
  57. <view class="filter-tag {{currentFilter === 'online' ? 'active' : ''}}" bindtap="changeFilter" data-filter="online">
  58. <text>在线专家</text>
  59. <view class="tag-count online-count">{{onlineCount}}</view>
  60. </view>
  61. <view class="filter-tag {{currentFilter === 'offline' ? 'active' : ''}}" bindtap="changeFilter" data-filter="offline">
  62. <text>离线专家</text>
  63. <view class="tag-count">{{allExperts.length - onlineCount}}</view>
  64. </view>
  65. <view class="filter-tag {{currentFilter === 'senior' ? 'active' : ''}}" bindtap="changeFilter" data-filter="senior">
  66. <text>资深专家</text>
  67. </view>
  68. <view class="filter-tag {{currentFilter === 'veterinary' ? 'active' : ''}}" bindtap="changeFilter" data-filter="veterinary">
  69. <text>兽医专家</text>
  70. </view>
  71. </view>
  72. </scroll-view>
  73. </view>
  74. <!-- 专家列表 -->
  75. <view class="expert-list-section">
  76. <!-- 列表标题 -->
  77. <view class="list-header">
  78. <text class="list-title">专家列表</text>
  79. <text class="list-count">已为您找到 {{filteredExperts.length}} 位专家</text>
  80. </view>
  81. <!-- 专家卡片列表 -->
  82. <scroll-view class="expert-cards" scroll-y>
  83. <!-- 空状态 -->
  84. <view wx:if="{{filteredExperts.length === 0}}" class="empty-state">
  85. <image src="/pagesA/images/kzt.png" class="empty-image"></image>
  86. <text class="empty-title">暂无相关专家</text>
  87. <text class="empty-desc">换个关键词试试,或联系客服为您推荐</text>
  88. </view>
  89. <!-- 专家卡片 -->
  90. <view wx:else>
  91. <block wx:for="{{filteredExperts}}" wx:key="id">
  92. <view class="expert-card">
  93. <!-- 专家头像和在线状态 -->
  94. <view class="card-left">
  95. <view class="avatar-container">
  96. <image src="{{item.avatar}}" class="expert-avatar" mode="aspectFill"></image>
  97. <view class="online-badge {{item.online ? 'online' : 'offline'}}">
  98. {{item.online ? '在线' : '离线'}}
  99. </view>
  100. </view>
  101. </view>
  102. <!-- 专家信息 -->
  103. <view class="card-middle">
  104. <view class="name-title-row">
  105. <text class="expert-name">{{item.name}}</text>
  106. <text class="expert-title">{{item.title}}</text>
  107. </view>
  108. <!-- 专门的信息展示区域 -->
  109. <view class="info-display">
  110. <view class="info-item">
  111. <text class="info-label">擅长领域:</text>
  112. <text class="info-value">{{item.expertise}}</text>
  113. </view>
  114. <view class="info-item">
  115. <text class="info-label">从业经验:</text>
  116. <text class="info-value">{{item.experience}}年</text>
  117. </view>
  118. </view>
  119. </view>
  120. <!-- 点击按钮 -->
  121. <view class="contact-btn {{item.online ? 'online-btn' : 'offline-btn'}}" bindtap="showContactInfo" data-index="{{index}}">
  122. {{item.online ? '立即咨询' : '查看联系'}}
  123. </view>
  124. </view>
  125. </block>
  126. </view>
  127. </scroll-view>
  128. </view>
  129. <!-- 联系方式弹窗 -->
  130. <view wx:if="{{showContactDialog}}" class="dialog-overlay" bindtap="hideContactDialog">
  131. <view class="contact-modal" catchtap="stopPropagation">
  132. <!-- 可滚动的内容区域 -->
  133. <scroll-view class="modal-content" scroll-y>
  134. <!-- 模态框头部 -->
  135. <view class="modal-header">
  136. <view class="header-left">
  137. <image src="/pages/images/tx.png" class="modal-avatar"></image>
  138. <view class="expert-intro">
  139. <view class="modallei">
  140. <view class="modal-name">{{currentExpert.name}}</view>
  141. <view class="modal-title">{{currentExpert.title}}</view>
  142. </view>
  143. <view class="title-status">
  144. <view class="modal-status {{currentExpert.online ? 'online' : 'offline'}}">
  145. <view class="status-dot"></view>
  146. {{currentExpert.online ? '在线可咨询' : '暂时离线'}}
  147. </view>
  148. </view>
  149. </view>
  150. </view>
  151. </view>
  152. <!-- 专家简介 -->
  153. <view class="expert-bio">
  154. <view class="bio-header">
  155. <text class="bio-title">专家简介</text>
  156. </view>
  157. <text class="bio-content">{{currentExpert.bio || '资深牲畜养殖专家,拥有丰富的实践经验和理论知识,擅长解决各类养殖难题'}}</text>
  158. </view>
  159. <!-- 联系方式 -->
  160. <view class="contact-section">
  161. <!-- 电话 -->
  162. <view class="contact-item phone-item">
  163. <view class="contact-icon-container">
  164. <image src="/pagesA/images/phone.png" class="contact-item-icon"></image>
  165. </view>
  166. <view class="contact-info">
  167. <text class="contact-label">联系电话</text>
  168. <text class="contact-value">{{currentExpert.phone}}</text>
  169. <text class="contact-desc">可直接拨打电话咨询</text>
  170. </view>
  171. <button class="action-btn call-btn" bindtap="makePhoneCall" data-phone="{{currentExpert.phone}}">
  172. 拨打
  173. </button>
  174. </view>
  175. <!-- 邮箱 -->
  176. <view class="contact-item email-item">
  177. <view class="contact-icon-container">
  178. <image src="/pagesA/images/dzyx.png" class="contact-item-icon"></image>
  179. </view>
  180. <view class="contact-info">
  181. <text class="contact-label">电子邮箱</text>
  182. <text class="contact-value">{{currentExpert.email}}</text>
  183. <text class="contact-desc">发送邮件可获得详细回复</text>
  184. </view>
  185. <button class="action-btn copy-btn" bindtap="copyEmail" data-email="{{currentExpert.email}}">
  186. 复制
  187. </button>
  188. </view>
  189. <!-- 工作单位 -->
  190. <view class="contact-item institution-item">
  191. <view class="contact-icon-container">
  192. <image src="/pagesA/images/gzdw.png" class="contact-item-icon"></image>
  193. </view>
  194. <view class="contact-info">
  195. <text class="contact-label">工作单位</text>
  196. <text class="contact-value">{{currentExpert.institution}}</text>
  197. <text class="contact-desc">专业机构认证专家</text>
  198. </view>
  199. <button class="action-btn address-btn" bindtap="viewLocation" data-address="{{currentExpert.address}}">
  200. 位置
  201. </button>
  202. </view>
  203. </view>
  204. <!-- 咨询时间 -->
  205. <view class="consultation-time">
  206. <view class="time-header">
  207. <text class="time-title">咨询时间建议</text>
  208. </view>
  209. <text class="time-content">{{currentExpert.online ? '专家当前在线,可直接联系咨询' : '专家当前不在线,建议在工作时间联系或发送邮件咨询'}}</text>
  210. <view class="time-slots">
  211. <text class="time-slot">工作日 9:00-18:00</text>
  212. <text class="time-slot">周末 10:00-16:00</text>
  213. </view>
  214. </view>
  215. </scroll-view>
  216. <!-- 操作按钮(固定在底部) -->
  217. <view class="modal-actions">
  218. <button class="secondary-btn" bindtap="hideContactDialog">稍后联系</button>
  219. <button class="primary-btn" bindtap="startConsultation">
  220. {{currentExpert.online ? '立即咨询' : '预约咨询'}}
  221. </button>
  222. </view>
  223. </view>
  224. </view>
  225. </view>