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

190 lines
6.7 KiB

  1. <view class="personal-center">
  2. <!-- 用户信息区域 -->
  3. <view class="user-section fade-in">
  4. <view class="user-card">
  5. <!-- 头像 -->
  6. <button class="avatar-btn" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
  7. <image class="avatar" src="{{avatarUrl || '/pages/images/tx.png'}}" mode="aspectFill"></image>
  8. <view class="avatar-edit-tip">点击修改</view>
  9. </button>
  10. <!-- 用户信息 -->
  11. <view class="user-info">
  12. <view class="nickname-section" bindtap="editNickname">
  13. <text class="nickname">{{displayNickName || '微信用户'}}</text>
  14. <image src="/pages/images/bj.png"></image>
  15. </view>
  16. <view class="user-meta">
  17. <view class="auth-tag {{userInfo.isVerified ? 'verified' : ''}}" bindtap="goToAuth">
  18. <text>{{userInfo.authStatus}}</text>
  19. </view>
  20. </view>
  21. </view>
  22. </view>
  23. </view>
  24. <!-- 消息通知 -->
  25. <view class="section-card fade-in-delay-1">
  26. <view class="section-header">
  27. <text class="section-title">消息通知</text>
  28. </view>
  29. <view class="message-row">
  30. <view class="message-item" bindtap="goToConsultation">
  31. <view class="message-icon-wrapper">
  32. <image class="message-icon" src="/pages/images/wz.png" mode=""></image>
  33. <!-- 动态数字气泡,有动画效果 -->
  34. <view class="badge" wx:if="{{totalToday > 0}}">
  35. <view class="badge-dot"></view>
  36. <view class="badge-num animation-badge">{{totalToday}}</view>
  37. </view>
  38. </view>
  39. <text class="message-label">问诊消息</text>
  40. </view>
  41. <view class="divider"></view>
  42. <view class="message-item" bindtap="goToQA">
  43. <view class="message-icon-wrapper">
  44. <image class="message-icon" src="/pages/images/wdxx.png" mode=""></image>
  45. </view>
  46. <text class="message-label">问答消息</text>
  47. </view>
  48. </view>
  49. </view>
  50. <!-- 功能列表 -->
  51. <view class="section-card fade-in-delay-2">
  52. <view class="function-list">
  53. <!-- 实名认证 -->
  54. <view class="function-item" bindtap="goToAuth">
  55. <view class="item-left">
  56. <image class="item-icon" src="/pages/images/smrz.png"></image>
  57. <text class="item-title">实名认证</text>
  58. </view>
  59. <view class="item-status {{userInfo.isVerified ? 'verified' : ''}}">
  60. {{userInfo.authStatus}}
  61. </view>
  62. </view>
  63. <!-- 反馈建议 -->
  64. <view class="function-item" bindtap="showFeedback">
  65. <view class="item-left">
  66. <image class="item-icon" src="/pages/images/fkjy.png"></image>
  67. <text class="item-title">反馈建议</text>
  68. </view>
  69. </view>
  70. <!-- 退出登录 -->
  71. <view class="function-item" bindtap="showLogoutConfirm">
  72. <view class="item-left">
  73. <image class="item-icon" src="/pages/images/logout.png"></image>
  74. <text class="item-title logout-title">退出登录</text>
  75. </view>
  76. </view>
  77. </view>
  78. </view>
  79. <!-- 反馈建议弹窗 -->
  80. <view class="feedback-modal {{showFeedbackModal ? 'show' : ''}}">
  81. <view class="modal-mask" bindtap="hideFeedback"></view>
  82. <view class="modal-content">
  83. <view class="modal-header">
  84. <text class="modal-title">反馈建议</text>
  85. <view class="modal-close" bindtap="hideFeedback">
  86. <image src="/pagesA/images/ch.png"></image>
  87. </view>
  88. </view>
  89. <!-- 反馈类型tab分类 -->
  90. <view class="feedback-tabs">
  91. <scroll-view class="tabs-scroll" scroll-x="{{true}}" show-scrollbar="{{false}}">
  92. <view class="tabs-wrapper">
  93. <view
  94. class="tab-item {{currentFeedbackType === item.dictValue ? 'active' : ''}}"
  95. wx:for="{{feedbackTypes}}"
  96. wx:key="index"
  97. data-type="{{item.dictValue}}"
  98. data-label="{{item.dictLabel}}"
  99. bindtap="selectFeedbackType"
  100. >
  101. <text>{{item.dictLabel}}</text>
  102. </view>
  103. </view>
  104. </scroll-view>
  105. </view>
  106. <view class="modal-body">
  107. <!-- 修复iOS输入框问题:添加focus控制并增加条件渲染 -->
  108. <textarea
  109. class="feedback-input"
  110. placeholder="请输入您的反馈或建议..."
  111. placeholder-class="placeholder"
  112. value="{{feedbackContent}}"
  113. bindinput="onFeedbackInput"
  114. maxlength="200"
  115. auto-height
  116. focus="{{showFeedbackModal && textareaFocus}}"
  117. disabled="{{!showFeedbackModal}}"
  118. confirm-type="done"
  119. show-confirm-bar="{{false}}"
  120. ></textarea>
  121. <view class="char-count">
  122. <text class="current">{{feedbackContent.length}}</text>
  123. <text class="total">/200</text>
  124. </view>
  125. </view>
  126. <view class="modal-footer">
  127. <button class="submit-btn {{canSubmit ? 'active' : ''}}" bindtap="submitFeedback" disabled="{{!canSubmit}}">
  128. {{isSubmitting ? '提交中...' : '提交'}}
  129. </button>
  130. </view>
  131. </view>
  132. </view>
  133. <!-- 修改昵称弹窗 -->
  134. <view class="nickname-modal {{showNicknameModal ? 'show' : ''}}">
  135. <view class="modal-mask" bindtap="hideNicknameModal"></view>
  136. <view class="modal-content">
  137. <view class="modal-header">
  138. <text class="modal-title">修改昵称</text>
  139. </view>
  140. <view class="modal-body">
  141. <input
  142. class="nickname-input"
  143. type="text"
  144. placeholder="请输入昵称"
  145. value="{{newNickname}}"
  146. bindinput="onNicknameInput"
  147. maxlength="10"
  148. focus="{{showNicknameModal}}"
  149. confirm-type="done"
  150. />
  151. <text class="input-tip">最多10个字符</text>
  152. </view>
  153. <view class="modal-footer">
  154. <button class="cancel-btn" bindtap="hideNicknameModal">取消</button>
  155. <button class="confirm-btn" bindtap="saveNickname">确定</button>
  156. </view>
  157. </view>
  158. </view>
  159. <!-- 退出登录确认弹窗 -->
  160. <view class="logout-modal {{showLogoutModal ? 'show' : ''}}">
  161. <view class="modal-mask" bindtap="hideLogoutModal"></view>
  162. <view class="modal-content">
  163. <view class="logout-modal-body">
  164. <text class="logout-title">确认退出登录?</text>
  165. <text class="logout-desc">退出后需要重新登录才能使用完整功能</text>
  166. </view>
  167. <view class="logout-modal-footer">
  168. <button class="logout-cancel-btn" bindtap="hideLogoutModal">取消</button>
  169. <button class="logout-confirm-btn" bindtap="doLogout">退出登录</button>
  170. </view>
  171. </view>
  172. </view>
  173. <!-- 提示信息 -->
  174. <view class="toast {{showToast ? 'show' : ''}}">
  175. <text>{{toastText}}</text>
  176. </view>
  177. </view>