adultDeviceApp/pageTwo/home/index.vue

218 lines
8.3 KiB
Vue
Raw Normal View History

2022-05-03 21:35:39 +08:00
<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>