普兆健康管家前端代码仓库
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.

153 lines
3.2 KiB

  1. <template>
  2. <view class="page__view">
  3. <navbar bgColor="#FFFFFF" >
  4. <image class="nav-icon" :src="configList.icon_nav_dark" mode="widthFix"></image>
  5. </navbar>
  6. <view class="content">
  7. <report-summary :data="summaryData"></report-summary>
  8. <view class="section">
  9. <recommend-test></recommend-test>
  10. </view>
  11. <view class="section">
  12. <view class="filter">
  13. <view class="filter-item"
  14. v-for="item in filters"
  15. :key="item.value"
  16. :class="['filter-item', item.value === queryParams.type ? 'is-active' : '']"
  17. @click="onSelectFilter(item.value)"
  18. >
  19. {{ item.label }}
  20. </view>
  21. </view>
  22. <view>
  23. <report-record-card v-for="item in list" :key="item.id" :data="item" :type="queryParams.type"></report-record-card>
  24. </view>
  25. </view>
  26. </view>
  27. <tabber select="report" />
  28. </view>
  29. </template>
  30. <script>
  31. import mixinsList from '@/mixins/list.js'
  32. import tabber from '@/components/base/tabbar.vue'
  33. import reportSummary from '@/pages_order/report/reportSummary/index.vue'
  34. import recommendTest from '@/pages_order/report/recommendTest.vue'
  35. import reportRecordCard from '@/pages_order/report/reportRecordCard.vue'
  36. export default {
  37. mixins: [mixinsList],
  38. components: {
  39. reportSummary,
  40. recommendTest,
  41. reportRecordCard,
  42. tabber,
  43. },
  44. data() {
  45. return {
  46. summaryData: {},
  47. // type 类型(0已完成,1未完成)
  48. filters: [
  49. { value: 0, label: '已完成的检测' },
  50. { value: 1, label: '未完成的检测' },
  51. ],
  52. queryParams: {
  53. pageNo: 1,
  54. pageSize: 10,
  55. type: 0,
  56. },
  57. mixinsListApi: 'getPaperList',
  58. }
  59. },
  60. onShow() {
  61. console.log('onShow')
  62. if(uni.getStorageSync('token')){
  63. this.$store.commit('getUserInfo')
  64. this.fetchRecentReport()
  65. this.getData()
  66. }
  67. },
  68. methods: {
  69. async fetchRecentReport() {
  70. try {
  71. const result = await this.$fetch('getRecentReport')
  72. const [currentReport, lastReport] = result
  73. let change = 0
  74. if (lastReport) {
  75. change = parseInt(currentReport.score - lastReport.score)
  76. }
  77. this.summaryData = {
  78. id: currentReport.id,
  79. paperId: currentReport.paperId,
  80. score: parseInt(currentReport.score),
  81. change,
  82. }
  83. console.log('summaryData', this.summaryData)
  84. } catch (err) {
  85. }
  86. },
  87. onSelectFilter(val) {
  88. // type 类型【选填】(0已完成,1未完成)
  89. this.queryParams.type = val
  90. this.getData()
  91. },
  92. },
  93. }
  94. </script>
  95. <style scoped lang="scss">
  96. .page__view {
  97. width: 100vw;
  98. min-height: 100vh;
  99. background-color: $uni-bg-color;
  100. position: relative;
  101. }
  102. .nav-icon {
  103. width: 200rpx;
  104. height: auto;
  105. vertical-align: top;
  106. }
  107. .content {
  108. padding: 0 32rpx 32rpx 32rpx;
  109. }
  110. .section {
  111. margin-top: 48rpx;
  112. }
  113. .filter {
  114. &-item {
  115. display: inline-block;
  116. padding: 12rpx 40rpx;
  117. border-radius: 32rpx;
  118. font-size: 28rpx;
  119. line-height: 1.5;
  120. font-family: PingFang SC;
  121. font-weight: 400;
  122. color: #252545;
  123. background: #E5E4EB;
  124. & + & {
  125. margin-left: 32rpx;
  126. }
  127. &.is-active {
  128. font-weight: 600;
  129. color: #FFFFFF;
  130. background: #252545;
  131. }
  132. }
  133. }
  134. </style>