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

195 lines
7.0 KiB

  1. <view class="diagnosis-container">
  2. <!-- 自定义导航栏 -->
  3. <view class="custom-navbar">
  4. <view class="nav-left">
  5. <view class="back-btn" bindtap="goBack">
  6. <text class="back-icon">←</text>
  7. </view>
  8. </view>
  9. <view class="nav-center">
  10. <text class="nav-title">AI智能问诊</text>
  11. <text class="nav-subtitle">与牧健康助手</text>
  12. </view>
  13. <view class="nav-right">
  14. <view class="more-btn" bindtap="showMoreMenu">···</view>
  15. </view>
  16. </view>
  17. <!-- 医生信息卡片 -->
  18. <view class="doctor-card">
  19. <view class="doctor-avatar">
  20. <image class="avatar-img" src="/pages/images/aiwz.png" mode="aspectFit"></image>
  21. </view>
  22. <view class="doctor-info">
  23. <text class="doctor-name">AI健康助手</text>
  24. <text class="doctor-title">智能诊断专家</text>
  25. <view class="doctor-tags">
  26. <view class="tag">24小时在线</view>
  27. <view class="tag">专业诊断</view>
  28. <view class="tag">快速响应</view>
  29. </view>
  30. </view>
  31. <view class="online-status online">在线</view>
  32. </view>
  33. <!-- 聊天区域 -->
  34. <scroll-view
  35. class="chat-container"
  36. scroll-y
  37. scroll-into-view="{{'msg-' + (messages.length - 1)}}"
  38. scroll-with-animation="true"
  39. >
  40. <!-- 欢迎消息 -->
  41. <view class="message-wrapper assistant">
  42. <view class="message-avatar">
  43. <image class="avatar" src="/pages/images/aiwz.png" mode="aspectFit"></image>
  44. </view>
  45. <view class="message-content">
  46. <view class="message-bubble assistant-bubble">
  47. <text class="message-text">您好!我是AI健康助手,有什么可以帮您?\n\n请描述你的牲畜的健康状况,我会为你提供专业的分析和建议。</text>
  48. </view>
  49. <view class="message-time">{{currentTime}}</view>
  50. </view>
  51. </view>
  52. <!-- 消息列表 -->
  53. <view wx:for="{{messages}}" wx:key="id" id="msg-{{index}}">
  54. <!-- 用户消息 -->
  55. <view wx:if="{{item.type === 'user'}}" class="message-wrapper user">
  56. <view class="message-content">
  57. <view class="message-bubble user-bubble">
  58. <text class="message-text">{{item.content}}</text>
  59. </view>
  60. <view class="message-time">{{item.time}}</view>
  61. </view>
  62. <view class="message-avatar">
  63. <image class="avatar" src="/pages/images/tx.png" mode="aspectFit"></image>
  64. </view>
  65. </view>
  66. <!-- AI助手消息 -->
  67. <view wx:if="{{item.type === 'assistant'}}" class="message-wrapper assistant">
  68. <view class="message-avatar">
  69. <image class="avatar" src="/pages/images/aiwz.png" mode="aspectFit"></image>
  70. </view>
  71. <view class="message-content">
  72. <view class="message-bubble assistant-bubble">
  73. <text class="message-text">{{item.content}}</text>
  74. <!-- 诊断结果卡片 -->
  75. <view wx:if="{{item.diagnosis}}" class="diagnosis-card">
  76. <view class="diagnosis-header">
  77. <text class="diagnosis-title">🤖 智能诊断结果</text>
  78. </view>
  79. <view class="diagnosis-item">
  80. <text class="diagnosis-label">可能病症:</text>
  81. <text class="diagnosis-value">{{item.diagnosis.disease}}</text>
  82. </view>
  83. <view class="diagnosis-item">
  84. <text class="diagnosis-label">严重程度:</text>
  85. <view class="severity-level {{item.diagnosis.severity}}">
  86. {{item.diagnosis.severityText}}
  87. </view>
  88. </view>
  89. <view class="diagnosis-item">
  90. <text class="diagnosis-label">建议措施:</text>
  91. <text class="diagnosis-value">{{item.diagnosis.suggestion}}</text>
  92. </view>
  93. <view class="diagnosis-footer">
  94. <text class="disclaimer">* 本结果仅供参考,请及时咨询专业兽医</text>
  95. </view>
  96. </view>
  97. </view>
  98. <view class="message-time">{{item.time}}</view>
  99. </view>
  100. </view>
  101. </view>
  102. <!-- AI正在输入 -->
  103. <view wx:if="{{isAIThinking}}" class="message-wrapper assistant" style="justify-content: center;">
  104. <view class="message-content">
  105. <view class="message-bubble assistant-bubble typing">
  106. <view class="typing-indicator">
  107. <view class="typing-dot"></view>
  108. <view class="typing-dot"></view>
  109. <view class="typing-dot"></view>
  110. <text class="typing-text">AI正在思考中...</text>
  111. </view>
  112. </view>
  113. </view>
  114. </view>
  115. </scroll-view>
  116. <!-- 快捷症状选择 -->
  117. <view class="symptom-quick-select">
  118. <text class="section-title">快速选择症状</text>
  119. <scroll-view class="symptom-tags" scroll-x>
  120. <view class="symptom-tag" wx:for="{{quickSymptoms}}" wx:key="id" bindtap="selectQuickSymptom" data-symptom="{{item}}">
  121. <text class="tag-text">{{item}}</text>
  122. </view>
  123. </scroll-view>
  124. </view>
  125. <!-- 输入区域 -->
  126. <view class="input-area">
  127. <view class="input-wrapper">
  128. <input
  129. class="message-input"
  130. value="{{inputValue}}"
  131. placeholder="描述您或牲畜的症状..."
  132. placeholder-class="placeholder"
  133. bindinput="onInput"
  134. bindconfirm="sendMessage"
  135. confirm-type="send"
  136. focus="{{autoFocus}}"
  137. />
  138. </view>
  139. <button class="send-btn" bindtap="sendMessage" hover-class="send-btn-hover">
  140. <text class="send-icon">↑</text>
  141. </button>
  142. </view>
  143. <!-- 症状选择器组件 -->
  144. <symptom-selector
  145. id="symptomSelector"
  146. show="{{showSymptomSelector}}"
  147. symptoms="{{symptoms}}"
  148. selectedSymptoms="{{selectedSymptoms}}"
  149. bind:select="onSymptomSelect"
  150. bind:confirm="confirmSymptoms"
  151. bind:close="closeSymptomSelector"
  152. />
  153. <!-- 更多菜单弹窗 -->
  154. <view class="modal-overlay" wx:if="{{showMoreMenu}}" bindtap="closeMoreMenu">
  155. <view class="more-menu" catchtap="stopPropagation">
  156. <view class="menu-item" bindtap="clearHistory">
  157. <text class="menu-icon">🗑️</text>
  158. <text class="menu-text">清空记录</text>
  159. </view>
  160. <view class="menu-item" bindtap="exportChat">
  161. <text class="menu-icon">📤</text>
  162. <text class="menu-text">导出记录</text>
  163. </view>
  164. <view class="menu-item" bindtap="contactDoctor">
  165. <text class="menu-icon">👨‍⚕️</text>
  166. <text class="menu-text">联系兽医</text>
  167. </view>
  168. <view class="menu-item" bindtap="showInstructions">
  169. <text class="menu-icon">❓</text>
  170. <text class="menu-text">使用说明</text>
  171. </view>
  172. </view>
  173. </view>
  174. <!-- 加载动画 -->
  175. <view class="loading-overlay" wx:if="{{isLoading}}">
  176. <view class="loading-content">
  177. <view class="pulse-animation">
  178. <view class="pulse-circle"></view>
  179. <view class="pulse-circle"></view>
  180. <view class="pulse-circle"></view>
  181. </view>
  182. <text class="loading-text">{{loadingText}}</text>
  183. </view>
  184. </view>
  185. </view>