xinelu-applet-ui/components/BloodFat/BloodFat.vue
2024-01-05 13:43:54 +08:00

409 lines
8.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="app" v-if="current == 2">
<view class="titletexts">
<view class="title">
— 正常范围 —
</view>
<!-- <view class="add" @click="addBloodFat">
添加数据
</view> -->
<view class="texts">
<view class="text">
<view class="p">
血清总胆固醇
</view>
<view class="ptwo">
3.0-5.7mmol/L
</view>
</view>
<view class="text">
<view class="p">
甘油三酯
</view>
<view class="ptwo">
0.5-1.7mmol/L
</view>
</view>
<view class="text">
<view class="p">
高密度脂蛋白胆固醇
</view>
<view class="ptwo">
0.9-1.8mmol/L
</view>
</view>
<view class="text">
<view class="p">
低密度脂蛋白胆固醇
</view>
<view class="ptwo">
2.1-3.1mmol/L
</view>
</view>
</view>
</view>
<view class="bottomlist">
<view class="timelist">
<view class="item" v-for="(item,index) in timelist" :class="timeindex == index?'timeitem':''"
@tap='taptimeindex(index)'>
{{item.name}}
</view>
</view>
<view class="text">
注:全部视图主要展示全部血脂数值的趋势曲线 单位:mmol/L
</view>
<qiun-data-charts type="line" loadingType="0" :opts="line_opts" :ontouch="true" :chartData="datalist" />
</view>
</view>
</template>
<script>
export default {
props: {
current: {
type: Number,
require: true
},
echartData: {
type: Object,
require: true
}
},
computed: {},
data() {
return {
timelist: [{
name: '全部',
id: 0
},
{
name: '周',
id: 1
}, {
name: '月',
id: 2
}, {
name: '年',
id: 3
},
],
timeindex: 0,
socketOpen: false,
timer: null,
datalist: null,
pie_opts: {
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
"#ea7ccc"
],
padding: [5, 5, 5, 5],
enableScroll: false,
extra: {
pie: {
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
labelWidth: 15,
border: false,
borderWidth: 3,
borderColor: "#FFFFFF"
},
},
},
line_opts: {
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
"#ea7ccc"
],
dataLabel: true,
enableScroll: true,
touchMoveLimit: 24,
padding: [15, 10, 0, 15],
xAxis: {
lineHeight: 40,
disableGrid: true,
boundaryGap: "center",
fontSize: 10,
type: 'grid',
gridType: 'dash',
itemCount: 4, //x轴单屏显示数据的数量默认为5个
scrollShow: true, //新增是否显示滚动条默认false
scrollAlign: 'left', //滚动条初始位置
},
yAxis: {
gridType: "dash",
dashLength: 2
},
legend: {
show: true,
position: "top",
lineHeight: 25
},
extra: {
line: {
type: "straight",
width: 2,
activeType: "hollow"
}
}
},
}
},
created() {},
mounted() {
// if (this.current ==2) {
// this.scoket()
// }
this.getServerData()
},
destroyed() {
clearInterval(this.timer);
// if (this.socketOpen == true) {
// uni.closeSocket();
// }
},
watch: {
echartData: {
handler() {
this.getServerData()
},
deep: true
},
current(newValue, oldValue) {
if (newValue != 2) {
clearInterval(this.timer);
if (this.socketOpen == true) {
// uni.closeSocket();
}
} else {
setTimeout(() => {
// this.scoket()
}, 800)
}
}
},
methods: {
taptimeindex(index) {
this.timeindex = index
this.$emit('taptimeindex', index);
},
addBloodFat() {
uni.navigateTo({
url: "/pagesC/addBloodFat/addBloodFat"
})
},
getServerData() {
if (this.echartData) {
setTimeout(() => {
let res = {
categories: [],
series: [{
name: "血清总胆固醇",
data: []
},
{
name: "甘油三酯",
data: []
}, {
name: "高密度脂蛋白胆固醇",
data: []
}, {
name: "低密度脂蛋白胆固醇",
data: []
}
]
};
res.series[0].data = this.echartData.list.map(e => e.tc)
res.series[1].data = this.echartData.list.map(e => e.tg)
res.series[2].data = this.echartData.list.map(e => e.hdl)
res.series[3].data = this.echartData.list.map(e => e.ldl)
res.categories = this.echartData.list.map(e => e.measureTime)
this.datalist = res
}, 500)
}
},
scoket() {
var SOCKETURL = 'ws://112.7.50.34:9002/webSocket/' + uni.getStorageSync('userinfo').cardNo
const that = this
// uni.closeSocket()
this.socketOpen = false
try {
uni.connectSocket({
url: SOCKETURL
})
uni.onSocketOpen(res => {
console.log('webScoket连接已打开', res);
that.socketOpen = true
that.reset()
})
uni.onSocketError(err => {
console.log('webScoket连接打开失败', err);
if (err && err.code != 1000) {
setTimeout(() => {
that.socketOpen = true
uni.connectSocket({
url: SOCKETURL
})
}, 3 * 1000)
}
})
uni.onSocketClose(err => {
console.log('webScoket连接关闭', err);
if (err && err.code !== 1000) {
setTimeout(() => {
that.socketOpen = true
uni.connectSocket({
url: SOCKETURL
})
}, 3 * 1000)
}
})
uni.onSocketMessage(res => {
console.log("webScoket监听收到的信息", res);
// that.newsList.push({
// senderName: that.currentItem.senderName,
// content: JSON.parse(res.data).message
// })
this.$emit('websocket-message');
this.$forceUpdate()
})
} catch (e) {
console.log(e);
}
},
// 心跳响应
reset() {
let that = this
var SOCKETURL = 'ws://112.7.50.34:9002/webSocket/' + uni.getStorageSync('userInfo').cardNo
clearInterval(that.timer);
that.timer = setInterval(() => {
uni.sendSocketMessage({
data: 'ping',
success(res) {
console.log('正在发送心跳');
},
fail(err) {
console.log('心跳发送失败,重新连接...');
_socketOpen = true
uni.connectSocket({
url: SOCKETURL
})
}
})
}, 60000)
},
}
}
</script>
<style lang="scss">
page {
background-color: #F7F5F5;
}
.app {
width: 96%;
margin: 0 auto;
padding-bottom: 60rpx;
.bottomlist {
width: 100%;
background-color: #fff;
margin-top: 17rpx;
padding-bottom: 100rpx;
.text {
width: 90%;
margin: 20rpx auto 30rpx;
font-size: 18rpx;
font-weight: 400;
color: #595959;
}
.timelist {
width: 90%;
margin: 0 auto;
display: flex;
padding-top: 25rpx;
.item {
width: 25%;
height: 56rpx;
border-radius: 5rpx 0rpx 0rpx 5rpx;
text-align: center;
line-height: 56rpx;
background: #FFFFFF;
border: 2rpx solid #26A888;
border-radius: 0rpx 5rpx 5rpx 0rpx;
color: #26A888;
}
.timeitem {
background: #26A888;
color: #fff;
}
}
}
.titletexts {
width: 100%;
height: 400rpx;
background: #FFFFFF;
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 5rpx;
position: relative;
.texts {
width: 100%;
display: flex;
position: absolute;
top: 130rpx;
flex-wrap: wrap;
.text {
width: 50%;
margin-bottom: 40rpx;
.p {
text-align: center;
font-size: 24rpx;
font-weight: 500;
color: #000000;
}
.ptwo {
font-size: 30rpx;
font-weight: 500;
color: #26A888;
text-align: center;
margin-top: 20rpx;
}
}
}
.add {
width: 205rpx;
height: 64rpx;
background: #26A888;
border-radius: 32rpx 0rpx 0rpx 32rpx;
line-height: 64rpx;
text-align: center;
position: absolute;
right: 0%;
color: #fff;
top: 25rpx;
}
.title {
text-align: center;
font-size: 24rpx;
font-weight: 400;
color: #26A888;
width: 100%;
position: absolute;
top: 46rpx;
}
}
}
</style>