careDetail.wxml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <view class="fullscreen-bg">
  2. <t-navbar title="{{name}}" left-arrow />
  3. <scroll-view class="page-scroll__container" scroll-y>
  4. <block wx:if="{{!loading}}">
  5. <!-- 调理中卡片 -->
  6. <view class="info-card card-content">
  7. <view class="status-tag">
  8. {{statusText}}
  9. </view>
  10. <view class="detail-container">
  11. <view class="detail-box">
  12. <view class="row"><text class="label">开具时间:</text>{{careDetail.createTime}}</view>
  13. <view class="row"><text class="label">开具医生:</text>{{careDetail.createBy}}</view>
  14. <view class="delivery" wx:if="{{careDetail.isDelivery==='Y'}}">
  15. <view style="margin-bottom:10px">
  16. <text class="label">配送:</text>
  17. <text>是</text>
  18. </view>
  19. <view class="address-block" wx:if="{{showAddress}}">
  20. <view>{{address}}</view>
  21. <view>
  22. <text style="margin-right:10px" wx:if="{{careDetail.patientName || careDetail.liaison}}">
  23. {{careDetail.patientName || careDetail.liaison}}</text>
  24. <text wx:if="{{careDetail.phone}}">{{careDetail.phone}}</text>
  25. </view>
  26. </view>
  27. </view>
  28. <view class="row"><text class="label" wx:if="{{careDetail.cost}}">价格:</text>{{careDetail.cost}}元</view>
  29. </view>
  30. </view>
  31. </view>
  32. <view class="bottom-box">
  33. <!-- 健康状况卡片 -->
  34. <view class="info-card status-card">
  35. <view class="row row-box">
  36. <image class="icon" src="../../assets/icon/icon_health@2x.png" mode="heightFix" />
  37. <text class="card-title">健康状况</text>
  38. </view>
  39. <view class="content-box">
  40. <view class="row"><text class="label">程度:</text>{{careDetail.healthAnalysisReport.willillDegreeName}}</view>
  41. <view class="row"><text class="label">表现:</text>{{careDetail.healthAnalysisReport.willillFunctionName}}</view>
  42. <view class="row"><text class="label">体质:</text>{{careDetail.healthAnalysisReport.constitutionGroupName}}</view>
  43. <view class="row"><text class="label">证素:</text>{{careDetail.healthAnalysisReport.factorItemSummary}}</view>
  44. <view class="row"><text class="label">证型:</text>{{careDetail.healthAnalysisReport.diagnoseSyndromeSummary}}</view>
  45. </view>
  46. </view>
  47. </view>
  48. <!-- 调养方案 -->
  49. <view class="bottom-box">
  50. <view class="info-card status-card care-box">
  51. <view class="row row-box">
  52. <image class="icon" src="../../assets/icon/icon_scheme@2x.png" mode="heightFix" />
  53. <text class="card-title">调养方案</text>
  54. </view>
  55. <view wx:for="{{careDetail.items}}" wx:key="id">
  56. <!-- 线下操作-->
  57. <view class="scheme-card" wx:if="{{item.conditioningProgramDetail.isOffline && item.conditioningProgramDetail.isOffline==='Y'}}">
  58. <view class="scheme-title" wx:if="{{item.conditioningProgramDetail && item.conditioningProgramDetail.name && item.conditioningProgramDetail.name!=='null'}}">{{item.conditioningProgramDetail.name}}</view>
  59. <view class="divider"></view>
  60. <view class="carousel-box" wx:if="{{item.carouselMediaList && item.carouselMediaList.length > 0}}">
  61. <view class="carousel-container">
  62. <!-- 加载状态 -->
  63. <view wx:if="{{carouselLoading[item.id]}}" class="carousel-loading">
  64. <t-loading size="40rpx" text="加载中..." />
  65. </view>
  66. <!-- 轮播图 -->
  67. <media-carousel wx:else mediaList="{{item.carouselMediaList}}" showIndicator="{{true}}" autoplay="{{true}}" interval="{{4000}}" circular="{{true}}" bind:imageload="onCarouselLoaded" bind:imageerror="onImageError" bind:videoerror="onVideoError" itemId="{{item.id}}" />
  68. </view>
  69. </view>
  70. <view class="scheme-row light"><text class="text-gray" wx:if="{{item.arrangeDate || item.arrangeDate!==null}}">下次时间:</text>{{item.arrangeDate}}</view>
  71. <view class="scheme-row between">
  72. <text>
  73. <text class="text-gray">已完成:</text>
  74. <text class="success">
  75. <text>{{item.finishCount}}次</text>
  76. <text style="margin:0 5px;color:black">/</text>
  77. <text style="color:black">{{item.totalMeasure}}次</text>
  78. </text>
  79. </text>
  80. <text class="link" bindtap="onRecord" data-id="{{item.id}}" wx:if="{{item.conditioningProgramDetail.isOffline && item.conditioningProgramDetail.isOffline==='Y'}}">核销记录</text>
  81. </view>
  82. <view class="scheme-row">
  83. <text class="text-gray">频次:</text>
  84. 每{{item.frequencyType}}天{{item.frequencyMeasure}}{{item.conditioningProgramDetail.cpFixedPricingRule.convertUnit || '次'}}
  85. </view>
  86. <view class="scheme-row">
  87. <text class="text-gray">机构:</text>
  88. {{item.conditioningProgramDetail.conditioningProgramSupplierName}}
  89. </view>
  90. <view class="scheme-bottom" wx:if="{{item.actualStartDate!=''}}">
  91. <text class="next-time" wx:if="{{item.arrangeDate}}">下一次时间:{{item.arrangeDate}}</text>
  92. <view class="link opt-box" bindtap="onOffline" data-id="{{item.id}}">
  93. <t-icon name="app" size="24rpx" color="#1976d2" />
  94. <text style="margin-left:10px">线下操作</text>
  95. </view>
  96. </view>
  97. </view>
  98. <!-- 线上操作 -->
  99. <view class="scheme-card" wx:if="{{item.conditioningProgramDetail.isOffline && item.conditioningProgramDetail.isOffline==='N'}}">
  100. <view class="scheme-title">{{item.conditioningProgramDetail.name}}</view>
  101. <view class="divider"></view>
  102. <view class="carousel-box" wx:if="{{item.carouselMediaList && item.carouselMediaList.length > 0}}">
  103. <view class="carousel-container">
  104. <!-- 加载状态 -->
  105. <view wx:if="{{carouselLoading[item.id]}}" class="carousel-loading">
  106. <t-loading size="40rpx" text="加载中..." />
  107. </view>
  108. <!-- 轮播图 -->
  109. <media-carousel wx:else mediaList="{{item.carouselMediaList}}" showIndicator="{{true}}" autoplay="{{true}}" interval="{{4000}}" circular="{{true}}" bind:imageload="onCarouselLoaded" bind:imageerror="onImageError" bind:videoerror="onVideoError" itemId="{{item.id}}" />
  110. </view>
  111. </view>
  112. <view class="scheme-row light">
  113. <text class="text-gray">数量:</text>
  114. <text>{{item.totalMeasure}}{{item.conditioningProgramDetail.cpFixedPricingRule.convertUnit}}</text>
  115. </view>
  116. <view class="scheme-row between">
  117. <text>
  118. <text class="label between">频次:</text>
  119. <text>每{{item.frequencyType}}天{{item.frequencyMeasure}}{{item.conditioningProgramDetail.cpFixedPricingRule.convertUnit}}</text>
  120. </text>
  121. <view class="link" bindtap="onCardRecord" data-id="{{item.id}}" wx:if="{{item.conditioningProgramDetail.isOffline && item.conditioningProgramDetail.isOffline==='N'}}">打卡记录</view>
  122. </view>
  123. <view class="desc-row" wx:if="{{item.remark}}">
  124. <text class="label between">说明:</text>
  125. <text class="desc-label">{{item.remark || ''}}</text>
  126. </view>
  127. </view>
  128. <!-- 健康评估-->
  129. <view class="scheme-card" wx:if="{{item.conditioningProgramDetail.conditioningProgramType && item.conditioningProgramDetail.conditioningProgramType==='健康评估'}}">
  130. <view class="scheme-title">{{item.conditioningProgramDetail.name}}</view>
  131. <view class="divider"></view>
  132. <view class="carousel-box" wx:if="{{item.carouselMediaList && item.carouselMediaList.length > 0}}">
  133. <view class="carousel-container">
  134. <!-- 加载状态 -->
  135. <view wx:if="{{carouselLoading[item.id]}}" class="carousel-loading">
  136. <t-loading size="40rpx" text="加载中..." />
  137. </view>
  138. <!-- 轮播图 -->
  139. <media-carousel wx:else mediaList="{{item.carouselMediaList}}" showIndicator="{{true}}" autoplay="{{true}}" interval="{{4000}}" circular="{{true}}" bind:change="onCarouselChange" bind:imageload="onCarouselLoaded" bind:imageerror="onImageError" bind:videoplay="onVideoPlay" bind:videopause="onVideoPause" bind:videoended="onVideoEnded" bind:videoerror="onVideoError" itemId="{{item.id}}" />
  140. </view>
  141. </view>
  142. <view class="scheme-row between" style="margin-top:15px">
  143. <view>
  144. <text class="text-gray">已完成:</text>
  145. <text class="success">
  146. <text> {{item.finishCount}}次</text>
  147. <text style="margin:0 5px;color:black">/</text>
  148. <text style="color:black">{{item.totalMeasure}}次</text>
  149. </text>
  150. </view>
  151. <view class="link" bindtap="onReport" data-id="{{item.id}}" wx:if="{{item.conditioningProgramDetail.conditioningProgramType && item.conditioningProgramDetail.conditioningProgramType==='健康评估'}}">
  152. 健康分析报告</view>
  153. </view>
  154. <view class="scheme-row">
  155. <text class="text-gray">频次:</text>
  156. <view wx:if="{{item.frequencyType==='不限'}}">{{item.frequencyType}}{{item.conditioningProgramDetail.cpFixedPricingRule.convertUnit}}</view>
  157. <view wx:else>
  158. 每{{item.frequencyType}}天{{item.frequencyMeasure}}{{item.conditioningProgramDetail.cpFixedPricingRule.convertUnit}}
  159. </view>
  160. </view>
  161. <view class="desc-row" wx:if="{{item.remark}}">
  162. <text class="text-gray">操作指南:</text>
  163. <text class="desc-label">{{item.remark}}</text>
  164. </view>
  165. </view>
  166. <!-- 健康咨询-->
  167. <view class="scheme-card" wx:if="{{item.conditioningProgramDetail.conditioningProgramType && item.conditioningProgramDetail.conditioningProgramType==='健康咨询'}}">
  168. <view class="scheme-title">{{item.conditioningProgramDetail.name}}</view>
  169. <view class="divider"></view>
  170. <view class="scheme-row between" style="margin-top:15px">
  171. <view>
  172. <text class="text-gray">数量:</text>
  173. <text class="success">
  174. <text style="color:black" wx:if="{{item.frequencyType==='不限'}}">不限次</text>
  175. <text style="color:black" wx:else>{{item.totalMeasure}}次</text>
  176. </text>
  177. </view>
  178. <view class="link" bindtap="onReport" data-id="{{item.id}}" wx:if="{{false}}">
  179. 咨询记录</view>
  180. </view>
  181. <view class="scheme-row">
  182. <text class="text-gray">频次:</text>
  183. <view wx:if="{{item.frequencyType==='不限'}}">{{item.frequencyType}}{{item.conditioningProgramDetail.cpFixedPricingRule.convertUnit}}</view>
  184. <view wx:else>
  185. 每{{item.frequencyType}}天{{item.frequencyMeasure}}{{item.conditioningProgramDetail.cpFixedPricingRule.convertUnit}}
  186. </view>
  187. </view>
  188. <view class="desc-row" wx:if="{{item.remark}}">
  189. <text class="text-gray">操作指南:</text>
  190. <text class="desc-label">{{item.remark}}</text>
  191. </view>
  192. </view>
  193. </view>
  194. </view>
  195. </view>
  196. <!--调养效果 -->
  197. <view class="bottom-box">
  198. <view class="info-card status-card result-box">
  199. <view class="row row-box" style="margin-bottom:27rpx">
  200. <image class="icon" src="../../assets/icon/icon_effect@3x.png" mode="heightFix" />
  201. <text class="header-title">调养效果</text>
  202. </view>
  203. <!--调养效果 -->
  204. <record-care></record-care>
  205. <!--舌象 -->
  206. <view class="tongue-list-outer">
  207. <view class="tongue-list-title">舌象</view>
  208. <view class="tongue-list-table">
  209. <view class="table-header">
  210. <view class="header-cell date-cell">日期</view>
  211. <view class="header-cell">舌面</view>
  212. <view class="header-cell">舌底</view>
  213. </view>
  214. <block wx:for="{{healthReports}}" wx:key="healthAnalysisReportId">
  215. <view class="table-row">
  216. <view class="cell date-cell">
  217. <view>{{item.time4}}</view>
  218. <view class="report-btn" bindtap="onSeeReport" data-date="{{item.time4}}" data-id="{{item.healthAnalysisReportId}}">
  219. <t-icon name="file" size="20rpx" color="#1976d2" />
  220. <text>查看报告</text>
  221. </view>
  222. </view>
  223. <view class="cell">
  224. <t-image wx:if="{{item.upImg}}" src="{{item.upImg}}" mode="aspectFit" width="80rpx" height="80rpx" shape="round" bind:tap="onPreviewImage" data-url="{{item.upImg}}" />
  225. <t-icon wx:else name="image" size="48rpx" color="#ccc" />
  226. </view>
  227. <view class="cell">
  228. <t-image wx:if="{{item.downImg}}" src="{{item.downImg}}" mode="aspectFit" width="80rpx" height="80rpx" shape="round" bind:tap="onPreviewImage" data-url="{{item.downImg}}" />
  229. <t-icon wx:else name="image" size="48rpx" color="#ccc" />
  230. </view>
  231. </view>
  232. </block>
  233. </view>
  234. </view>
  235. <!--面象 -->
  236. <view class="tongue-list-outer">
  237. <view class="tongue-list-title">面象</view>
  238. <view class="tongue-list-table">
  239. <view class="table-header">
  240. <view class="header-cell date-cell">日期</view>
  241. <view class="header-cell">面部</view>
  242. </view>
  243. <block wx:for="{{healthReports}}" wx:key="healthAnalysisReportId">
  244. <view class="table-row">
  245. <view class="cell date-cell">
  246. <view>{{item.time4}}</view>
  247. <view class="report-btn" bindtap="onSeeReport" data-date="{{item.time4}}" data-id="{{item.healthAnalysisReportId}}">
  248. <t-icon name="file" size="20rpx" color="#1976d2" />
  249. <text>查看报告</text>
  250. </view>
  251. </view>
  252. <view class="cell">
  253. <t-image wx:if="{{item.faceImg}}" src="{{item.faceImg}}" mode="aspectFit" width="80rpx" height="80rpx" shape="round" bind:tap="onPreviewImage" data-url="{{item.faceImg}}" />
  254. <t-icon wx:else name="image" size="48rpx" color="#ccc" />
  255. </view>
  256. </view>
  257. </block>
  258. </view>
  259. </view>
  260. <!--症状 -->
  261. <view class="symptom-list-outer">
  262. <view class="symptom-list-title">症状</view>
  263. <view class="container">
  264. <!-- 表头 -->
  265. <view class="table-headers">
  266. <view class="date-header">日期</view>
  267. <view class="symptoms-header-scroll">
  268. <view class="symptoms-header">症状</view>
  269. </view>
  270. </view>
  271. <!-- 表格内容 -->
  272. <view class="table-body">
  273. <!-- 固定日期列 -->
  274. <view class="date-column">
  275. <view wx:for="{{healthReports}}" wx:key="healthAnalysisReportId" class="date-cells">
  276. {{item.time4}}
  277. </view>
  278. </view>
  279. <!-- 可滚动症状列 -->
  280. <scroll-view class="symptoms-column" scroll-x>
  281. <view class="symptoms-grid">
  282. <view wx:for="{{healthReports}}" wx:key="healthAnalysisReportId" class="symptoms-row">
  283. <view wx:for="{{item.symptoms}}" wx:key="index" class="symptom-cells" wx:for-item="symptom" style="min-width: {{symptomCellWidth}}; max-width: {{symptomCellWidth}};">
  284. <block wx:if="{{symptom.name}}">
  285. <text>{{symptom.name}}{{symptom.label}}</text>
  286. <text wx:if="{{symptom.trend==='up'}}" style="margin-left:8rpx;color:#f44336">↑</text>
  287. <text wx:if="{{symptom.trend==='down'}}" style="margin-left:8rpx;color:#4caf50">↓</text>
  288. </block>
  289. <block wx:else></block>
  290. </view>
  291. </view>
  292. </view>
  293. </scroll-view>
  294. </view>
  295. </view>
  296. </view>
  297. <!--指标 -->
  298. <view class="index-container">
  299. <view class="index-title">指标</view>
  300. <record-index></record-index>
  301. </view>
  302. </view>
  303. </view>
  304. </block>
  305. </scroll-view>
  306. </view>