Kaynağa Gözat

feat: add report and detail

wangyuan 2 yıl önce
ebeveyn
işleme
5d8ae98482

+ 7 - 2
api/my.js

@@ -5,7 +5,8 @@ import { wxRequest } from './request'
 const bindMobileURL = '/user/bind/mobile' // 获取用户手机号
 const loginURL = '/user/login' // 登录
 const bindBaseInfoURL = '/user/bind/base/info' // 绑定用户头像昵称
-
+const  myReportListURL =  '/get/my/report/list' // 我的报告
+const  getReportURL =  '/get/report' // 查看我的报告
 const chargeListURL = '/get/charge/list' // 我的充值记录
 
 export const ittLogin =  (data) => wxRequest(loginURL, data)
@@ -14,4 +15,8 @@ export const bindMobile =  (data) => wxRequest(bindMobileURL, data)
 
 export const bindBaseInfo =  (data) => wxRequest(bindBaseInfoURL, data)
 
-export const chargeList =  (data) => wxRequest(chargeListURL, data)
+export const chargeList =  (data) => wxRequest(chargeListURL, data)
+
+export const myReportList =  (data) => wxRequest(myReportListURL, data)
+
+export const getReport =  (data) => wxRequest(getReportURL, data)

+ 3 - 3
pages/appointment/appointment.wxml

@@ -68,15 +68,15 @@
         </view>
       </view>
       <view class="time-list ittflex">
-        <view class="time-a time-item time-nurse {{timeActive == '1' ? 'time-active' : ''}}" data-time="1" bindtap="handleTime">
+        <view class="time-a time-item {{timeActive == '1' ? 'time-active' : ''}}" data-time="1" bindtap="handleTime">
           <text class="t-text">8:00-12:00</text>
-          <!-- <text class="time-nurse-text">剩余紧张</text> -->
         </view>
         <view class="time-b time-item {{timeActive == '2' ? 'time-active' : ''}}" data-time="2" bindtap="handleTime">
           <text class="t-text">13:00-18:00</text>
         </view>
-        <view class="time-c time-item {{timeActive == '3' ? 'time-active' : ''}}" data-time="3" bindtap="handleTime">
+        <view class="time-c time-item time-nurse {{timeActive == '3' ? 'time-active' : ''}}" data-time="3" bindtap="handleTime">
           <text class="t-text">18:00-21:00</text>
+          <text class="time-nurse-text">剩余紧张</text>
         </view>
       </view>
     </view>

+ 37 - 21
pages/report/report.js

@@ -1,5 +1,5 @@
 // pages/report/report.js
-import itt from '../../utils/util'
+import { myReportList, getReport } from '../../api/my'
 const app = getApp()
 Page({
 
@@ -11,28 +11,33 @@ Page({
     showPage: true
   },
 
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-    console.log('load');
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-    console.log('ready');
-  },
-
   /**
    * 生命周期函数--监听页面显示
    */
   onShow() {
-    var isLogin = itt.loginAuth()
-    console.log(isLogin, 'isLoginisLogin');
-    this.setData({
-      showPage: isLogin
+    this.getMyReportList()
+  },
+
+  // 我的报告
+  getMyReportList () {
+    var that = this
+    wx.showLoading({
+      title: '加载中...',
+      mask: true
+    })
+    myReportList({}).then(res => {
+      wx.hideLoading()
+      var response = res.data || []
+      that.setData({
+        reportList: response
+      })
+    }).catch(e => {
+      wx.hideLoading()
+      wx.showModal({
+        content: e,
+        confirmColor: '#333',
+        showCancel: false
+      })
     })
   },
 
@@ -69,9 +74,20 @@ Page({
   /**
    * 点击报告进入详情
    */
-  handleDetail() {
+  handleDetail(e) {
+    var reportId = e.currentTarget.dataset.reportid
+    console.log(e.currentTarget.dataset.reportid);
     wx.navigateTo({
-      url: '/pages/reportDetail/reportDetail',
+      url: '/pages/reportDetail/reportDetail?reportid=' + reportId
+    })
+    /* var data = {
+      name: '循环系统',
+      reportId: reportId
+    }
+    getReport(data).then(res => {
+      console.log(res);
     })
+    return
+     */
   }
 })

+ 4 - 4
pages/report/report.wxml

@@ -8,18 +8,18 @@
   </block>
   <block wx:else>
     <view class="repot-list">
-      <view class="report-item">
+      <view class="report-item {{index == reportList.length - 1 ? 'padding-bottom' : ''}}" wx:for="{{reportList}}" wx:key="index">
         <view class="report-name">
           <text>检测人:</text>
-          <text>测试用户</text>
+          <text>{{item.realName}}</text>
         </view>
         <view class="report-this">
-          <view class="report-tap" wx:for="{{reportList}}" wx:key="index" bindtap="handleDetail">
+          <view class="report-tap" wx:for="{{item.reportVoList}}" wx:for-item="innerItem" wx:key="index" data-reportid="{{innerItem.reportId}}" bindtap="handleDetail">
             <view class="tap-img">
               <image class="imagereport" src="../../imaes/baogao@2x.png"></image>
             </view>
             <view class="reposttime">
-              <text>2022-09-11</text>
+              <text>{{innerItem.addTime}}</text>
               <text> 报告</text>
             </view>
           </view>

+ 3 - 0
pages/report/report.wxss

@@ -29,6 +29,9 @@
   width: 690rpx;
   margin: 20rpx auto 0;
 }
+.padding-bottom {
+  padding-bottom: 100rpx;
+}
 .report-name {
   font-size: 30rpx;
   font-weight: bold;

+ 90 - 107
pages/reportDetail/reportDetail.js

@@ -1,62 +1,16 @@
 // pages/reportDetail/reportDetail.js
+import { getReport } from '../../api/my'
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
-    reportType: 1, // 0 小结 1 系统
-    leftNavActive: 1,
-    leftNav: [
-      {
-        index: 0,
-        name: '检测小结'
-      },
-      {
-        index: 1,
-        name: '循环系统'
-      },
-      {
-        index: 2,
-        name: '呼吸系统'
-      },
-      {
-        index: 3,
-        name: '消化系统'
-      },
-      {
-        index: 4,
-        name: '泌尿系统'
-      },
-      {
-        index: 5,
-        name: '血液系统'
-      },
-      {
-        index: 6,
-        name: '内分泌系统'
-      },
-      {
-        index: 7,
-        name: '营养代谢'
-      },
-      {
-        index: 8,
-        name: '神经系统'
-      },
-      {
-        index: 9,
-        name: '免疫系统'
-      },
-      {
-        index: 10,
-        name: '运动系统'
-      },
-      {
-        index: 11,
-        name: '感官系统'
-      }
-    ],
+    reportid: '',
+    name: 'ReportTotal', // 默认 小结 ReportTotal, 系统:用具体的中文名称
+    systemName: ['检测小结','循环系统', '呼吸系统', '消化系统','泌尿与生殖系统', '血液系统', '内分泌系统', '营养与代谢', '神经系统', '免疫系统', '运动系统', '感官系统', '理化因素', '精神及心理'],
+    leftNavActive: 0, // 0 小结 1 系统
+    summaryList: [],
     systemList: [1,1,1,1,1,1,1,1,1,1]
   },
 
@@ -64,78 +18,107 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
+    this.setData({
+      name: 'ReportTotal',
+      leftNavActive: 0,
+      reportId: options.reportid
+    })
+    this.getReportFn()
   },
 
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
+  // 获取具体的报告信息
+  getReportFn () {
+    var that = this
+    var data = {
+      reportId: this.data.reportId,
+      name: this.data.name
+    }
     wx.showLoading({
       title: '加载中...',
       mask: true
     })
-    setTimeout(() => {
-      wx.hideLoading({
-        success: (res) => {},
+    getReport(data).then(res => {
+      wx.hideLoading()
+      if (that.data.name == 'ReportTotal') {
+        that.setData({
+          summaryList: res.data || []
+        })
+      } else {
+        that.handleRespose(res.data)
+      }
+    }).catch(e => {
+      wx.hideLoading()
+      wx.showModal({
+        content: e,
+        confirmColor: '#333',
+        showCancel: false
       })
-    }, 1500);
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
+    })
   },
 
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
+  // 处理系统返回的数据
+  handleRespose (response) {
+    console.log('response',response);
+    var outKey = Object.keys(response)
+    var result = []
+    for (var index = 0; index < outKey.length; index++) {
+      const element = outKey[index];
+      const innetList = Object.keys(response[element])
+      var tempArr = []
+      for (var i = 0; i < innetList.length; i++) {
+        const innerElement = innetList[i];
+        tempArr.push({
+          fatherName: element,
+          name: innerElement,
+          value: response[element][innerElement]
+        })
+      }
+      result.push(
+        {
+          name: element,
+          childNode: tempArr
+        }
+      )
+    }
+    this.handleSortFn(result)
   },
 
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
+  // 排序函数
+  handleSortFn (result) {
+    var handleResult = [...result]
+    for (var index = 0; index < handleResult.length; index++) {
+      const element = handleResult[index];
+      hanldSort(element.childNode)
+    }
+    function hanldSort (childNode) {
+      childNode.sort(function(a,b){
+        return b.value - a.value
+      })
+    }
+    this.setData({
+      systemList: handleResult
+    })
   },
 
   /**
    * 用户点击左侧系统分类
    */
-  handleSwitchNav(e) {
-    var navIndex = e.currentTarget.dataset.index
+  async handleSwitchNav(e) {
     var that = this
-    wx.showLoading({
-      title: '加载中...',
-      mask: true
-    })
-    setTimeout(() => {
-      wx.hideLoading({
-        success: (res) => {
-          that.setData({
-            leftNavActive: navIndex,
-            reportType: navIndex
-          })
-        },
+    var navIndex = e.currentTarget.dataset.index
+    var navName = that.data.systemName[navIndex]
+    if (navIndex == 0) {
+      that.setData({
+        name: 'ReportTotal'
       })
-    }, 1500);
+    } else {
+      that.setData({
+        name: navName
+      })
+    }
+    await that.getReportFn()
+    that.setData({
+      leftNavActive: navIndex
+    })
   }
 })

+ 34 - 39
pages/reportDetail/reportDetail.wxml

@@ -1,59 +1,54 @@
 <!--pages/reportDetail/reportDetail.wxml-->
 <view class="detail ittflex-jcs">
   <view class="left-nav">
-    <view class="left-nav-item ittflex {{leftNavActive == index ? 'left-nav-item-active': ''}} {{leftNavActive - 1 == index ? 'noborder' : ''}}" wx:for="{{leftNav}}" wx:key="index" data-index="{{index}}" bindtap="handleSwitchNav">{{item.name}}</view>
+    <view class="left-nav-item ittflex {{leftNavActive == index ? 'left-nav-item-active': ''}} {{leftNavActive - 1 == index ? 'noborder' : ''}}" wx:for="{{systemName}}" wx:key="index" data-index="{{index}}" bindtap="handleSwitchNav">{{item}}</view>
   </view>
   <view class="right-value">
     <!-- 检测小结 -->
-    <block wx:if="{{reportType === 0}}">
-      <view class="summary" >
+    <block wx:if="{{leftNavActive === 0}}">
+      <view class="summary" wx:if="{{summaryList.length != 0}}">
         <view class="s-title ittflex-jcs">根据检测结果,您的健康风险最高的是:</view>
         <view class="s-main">
-          <view class="s-item s-item-nomargin">
-            <view class="s-item-title">(1)心血管疾病风险较高</view>
-            <view class="s-item-value">建议您有规律地锻炼,控制血压,保持健康体重,维持情绪平稳,避免吃高热量食物,控制盐的摄入量,停止吸烟,避免饮酒过量,适量补充辅脢Q10等抗氧化物,鱼油或亚麻籽油,复合维生素B,矿物质钙,镁等
-            </view>
-          </view>
-          <view class="s-item">
-            <view class="s-item-title">(2)心血管疾病风险较高</view>
-            <view class="s-item-value">建议您避免吸烟,避免吸入汽车与摩托车产生的尾气,注意各种化学喷剂、清洁剂环、境荷尔蒙及农药残留,避免不必要的阳光暴晒、紫外线照射、X光和CT检查,适量补充抗氧化物并建议接受24小时排毒疗程
-            </view>
-          </view>
-          <view class="s-item">
-            <view class="s-item-title">(2)心血管疾病风险较高</view>
-            <view class="s-item-value">建议您避免吸烟,避免吸入汽车与摩托车产生的尾气,注意各种化学喷剂、清洁剂环、境荷尔蒙及农药残留,避免不必要的阳光暴晒、紫外线照射、X光和CT检查,适量补充抗氧化物并建议接受24小时排毒疗程
-            </view>
+          <view class="s-item {{index == 0 ? 's-item-nomargin' : ''}}" wx:for="{{summaryList}}" wx:key="index">
+            <view class="s-item-title">({{index + 1}}){{item.title}}</view>
+            <view class="s-item-value">{{item.value}}</view>
           </view>
         </view>
       </view>
+      <view class="no-data" wx:if="{{summaryList.length == 0}}">
+        <van-empty description="暂无数据" />
+      </view>
     </block>
+    <!-- 系统分类 -->
     <block wx:else>
       <view class="system" >
         <view class="sys-item" wx:for="{{systemList}}" wx:key="index">
-          <view class="sys-header ittflex">1.头部</view>
+          <view class="sys-header ittflex">{{index + 1}}.{{item.name}}</view>
           <view class="sys-content">
-            <view class="sys-content-item ittflex-jcs">
-              <view class="sts-lanel">脑部缺血风险</view>
-              <view class="risk-level ittflex-jcs">
-                <view class="level level-a red"></view>
-                <view class="level level-b"></view>
-                <view class="level level-c"></view>
-              </view>
-            </view>
-            <view class="sys-content-item ittflex-jcs">
-              <view class="sts-lanel">中风风险</view>
-              <view class="risk-level ittflex-jcs">
-                <view class="level level-a red"></view>
-                <view class="level level-b red"></view>
-                <view class="level level-c"></view>
-              </view>
-            </view>
-            <view class="sys-content-item ittflex-jcs">
-              <view class="sts-lanel">脑部血管损伤风险</view>
+            <view class="sys-content-item ittflex-jcs" wx:for="{{item.childNode}}" wx:for-item="subitem" wx:key="index">
+              <view class="sts-lanel">{{subitem.name}}</view>
               <view class="risk-level ittflex-jcs">
-                <view class="level level-a red"></view>
-                <view class="level level-b red"></view>
-                <view class="level level-c red"></view>
+              <!-- 2.5 以下,格子都是白色, 2.5~3.0 页面的红色格子显示一格,3.0~4.0 显示2格 ,4.0 以上显示3格 -->
+                <block  wx:if="{{subitem.value < 2.5 }}">
+                  <view class="level level-a"></view>
+                  <view class="level level-b"></view>
+                  <view class="level level-c"></view>
+                </block>
+                <block  wx:if="{{subitem.value >=2.5 && subitem.value < 3.0}}">
+                  <view class="level level-a red"></view>
+                  <view class="level level-b"></view>
+                  <view class="level level-c"></view>
+                </block>
+                <block  wx:if="{{subitem.value >= 3.0 && subitem.value < 4.0}}">
+                  <view class="level level-a red"></view>
+                  <view class="level level-b red"></view>
+                  <view class="level level-c"></view>
+                </block>
+                <block  wx:if="{{subitem.value >= 4.0}}">
+                  <view class="level level-a red"></view>
+                  <view class="level level-b red"></view>
+                  <view class="level level-c red"></view>
+                </block>
               </view>
             </view>
           </view>

+ 12 - 1
pages/reportDetail/reportDetail.wxss

@@ -32,6 +32,13 @@
 .noborder {
   border: 0;
 }
+.no-data {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
 .s-title {
   width: 100%;
   height: 122rpx;
@@ -78,7 +85,7 @@
 .sys-content-item {
   width: 100%;
   height: 88rpx;
-  border: 1rpx solid #DDDDDD;
+  border-left: 1rpx solid #DDDDDD;
   box-sizing: border-box;
   border-top: 0;
 }
@@ -90,10 +97,14 @@
   height: 100%;
   text-indent: 30rpx;
   line-height: 88rpx;
+  border-bottom: 1rpx solid #ddd;
+  box-sizing: border-box;
 }
 .level {
   width: 60rpx;
   height: 88rpx;
+  border-bottom: 1rpx solid #ddd;
+  box-sizing: border-box;
 }
 .level-a {
   border-left: 1rpx solid #ddd;