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

181 lines
6.7 KiB

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