218 lines
8.3 KiB
Vue
218 lines
8.3 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="common homePage">
|
|||
|
|
<!-- 头部 -->
|
|||
|
|
<headTop :token="token"></headTop>
|
|||
|
|
<!-- 健康报告 -->
|
|||
|
|
<view class="myinfo myinfoPage">
|
|||
|
|
<view class="mt-15" v-show="MeasureResult&&MeasureResult.muscle==0">
|
|||
|
|
<view class="unusual">体脂测量异常,请重新测量</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-if="infoList.length">
|
|||
|
|
<view class="box">
|
|||
|
|
<view class="left">
|
|||
|
|
<text class="text">本次健康评分</text>
|
|||
|
|
<view class="circleprogress">
|
|||
|
|
<view class="wrapper">
|
|||
|
|
<view class="leftprogress" :style="{ width: MeasureResult.cmi + '%'}">
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="fen">
|
|||
|
|
<view>{{MeasureResult.cmi}}</view>分
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="right">
|
|||
|
|
<view class="item">
|
|||
|
|
<view><text>{{MeasureResult.height}}</text>cm</view>
|
|||
|
|
<view class="tivon">身高</image>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="item">
|
|||
|
|
<view><text>{{MeasureResult.weight}}</text>kg</view>
|
|||
|
|
<view>体重</view>
|
|||
|
|
</view>
|
|||
|
|
<!-- <view class="item">
|
|||
|
|
<view><text>{{MeasureResult.lbm}}</text>kg</view>
|
|||
|
|
<view class="tivon">去脂体重</image>
|
|||
|
|
</view>
|
|||
|
|
</view> -->
|
|||
|
|
<view class="item">
|
|||
|
|
<view><text>{{MeasureResult.bodyage}}</text>岁</view>
|
|||
|
|
<view>体龄</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="item">
|
|||
|
|
<view><text class="f-14">{{MeasureResult.body}}</text></view>
|
|||
|
|
<view>体型</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="box1">
|
|||
|
|
<view class="h2">
|
|||
|
|
<icon class="yuanxing"></icon>其他人体成分分析
|
|||
|
|
</view>
|
|||
|
|
<view class="list" v-for="(item,index) in infoList" :key="index" @click="handleToggle(index)">
|
|||
|
|
<view class="block">
|
|||
|
|
<view class="name">
|
|||
|
|
<icon class="t-icon iconfont" :class="'t-icon-'+item.key"></icon>
|
|||
|
|
{{item.title}}
|
|||
|
|
</view>
|
|||
|
|
<view class="val" v-if="item.title!='肥胖等级'">
|
|||
|
|
{{item.fvalue?item.fvalue:'0'}}{{item.dw}}
|
|||
|
|
</view>
|
|||
|
|
<view class="val0" v-else>{{item.fevaluation}}</view>
|
|||
|
|
<view class="level" v-if="item.title!='肥胖等级'">
|
|||
|
|
<view class="btnf" :style="{backgroundColor:item.color}">{{item.fevaluation}}</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="icon">
|
|||
|
|
<icon class="iconfont icon-arrow-down" v-if="item.desc"></icon>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="desc" v-if="item.showCon">
|
|||
|
|
<view v-if="item.desc">{{item.desc}}</view>
|
|||
|
|
<view class="statuevue" v-if="item.slist">
|
|||
|
|
<view class="bi" v-if="item.title!='基础代谢'">
|
|||
|
|
<view class="item" v-for="(ite , ind) in item.slist" :key="ind"
|
|||
|
|
:style="{backgroundColor:ite.color}">
|
|||
|
|
<view class="span1">{{ite.text}}</view>
|
|||
|
|
<view v-if="ite.text==item.fevaluation&&item.fvalue>ite.maxvalue"
|
|||
|
|
style="right: 10px" class="peobox">
|
|||
|
|
<view class="xx"></view>
|
|||
|
|
</view>
|
|||
|
|
<view v-if="ite.text==item.fevaluation&&item.fvalue<=ite.maxvalue"
|
|||
|
|
:style="'left:'+item.leftval+'rem'" class="peobox">
|
|||
|
|
<view class="xx"></view>
|
|||
|
|
</view>
|
|||
|
|
<view class="span" v-if="ind<item.slist.length-1">{{ite.maxvalue}}</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-else>
|
|||
|
|
<view class="kcalClass">
|
|||
|
|
标准值:{{item.slist[0].maxvalue}}kcal
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="introction">
|
|||
|
|
<icon class="t-icon t-icon-tishi"></icon>
|
|||
|
|
<span>此测量数据仅供参考,不可代替医学专业测试!</span>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-else class="nolist">
|
|||
|
|
<icon class="iconfont icon-zanwu"></icon>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import {
|
|||
|
|
mapState
|
|||
|
|
} from "vuex";
|
|||
|
|
import headTop from "@/components/header/head.vue"
|
|||
|
|
export default {
|
|||
|
|
components: {
|
|||
|
|
headTop
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
token: null,
|
|||
|
|
devtype: 0,
|
|||
|
|
infoList: [],
|
|||
|
|
deviceId: null,
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
computed: {
|
|||
|
|
...mapState(["user", "MeasureResult"]),
|
|||
|
|
},
|
|||
|
|
onUnload: function() {
|
|||
|
|
let that = this
|
|||
|
|
uni.switchTab({
|
|||
|
|
url: "/pages/index/index"
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
onShow() {
|
|||
|
|
let that = this;
|
|||
|
|
that.token = uni.getStorageSync('token')
|
|||
|
|
uni.onBluetoothAdapterStateChange(function(res) {
|
|||
|
|
that.$store.commit("changeBluetooth", res.available);
|
|||
|
|
console.log("报告页监听蓝牙状态openBluetoothAdapter", res.available)
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
onLoad(options) {
|
|||
|
|
let that = this;
|
|||
|
|
console.log("options", options)
|
|||
|
|
if (options) {
|
|||
|
|
that.devtype = options.t
|
|||
|
|
that.deviceId = options.sn
|
|||
|
|
}
|
|||
|
|
this.$nextTick(() => {
|
|||
|
|
that.handleToggle(0)
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
watch: {
|
|||
|
|
MeasureResult() {
|
|||
|
|
this.handleToggle(0)
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
// 切换
|
|||
|
|
handleToggle(index) {
|
|||
|
|
let that = this
|
|||
|
|
if (!that.MeasureResult) return
|
|||
|
|
let str = this.weightInfo.infoList(that.MeasureResult).slice(1, 14)
|
|||
|
|
for (var i = 0; i < str.length; i++) {
|
|||
|
|
if (i == index) {
|
|||
|
|
str[i].showCon = !str[i].showCon
|
|||
|
|
} else {
|
|||
|
|
str[i].showCon = false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
that.infoList = this.weightInfo.infoList(that.MeasureResult).slice(1, 14)
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss" scoped>
|
|||
|
|
.myinfo {
|
|||
|
|
margin-top: 105px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.val0 {
|
|||
|
|
position: absolute;
|
|||
|
|
left: 40%;
|
|||
|
|
margin-left: 3px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.wrapper {
|
|||
|
|
z-index: 9 !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.unusual {
|
|||
|
|
font-size: 14px;
|
|||
|
|
border-radius: 8px;
|
|||
|
|
text-align: center;
|
|||
|
|
color: #e83a1e;
|
|||
|
|
margin: 15px;
|
|||
|
|
background: #f7e4c8;
|
|||
|
|
padding: 5px 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.introction {
|
|||
|
|
display: flex;
|
|||
|
|
margin-left: 15px;
|
|||
|
|
margin-bottom: 20px;
|
|||
|
|
font-size: 12px;
|
|||
|
|
color: #666;
|
|||
|
|
|
|||
|
|
.t-icon {
|
|||
|
|
width: 15px;
|
|||
|
|
height: 15px;
|
|||
|
|
margin-right: 5px;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</style>
|