import * as echarts from '../../ec-canvas/echarts'; let chart0; let chart; let chart2; let chart3; let chart4; let chart5; let chart6; let chart81; let chart9; let chart10; let chart11; // 渐变圆环 let chartCircularProgressBar;//圈圈 let chartOutOfBed;//离床 let chartBodyMovementsLine;//体动 let chartCardiacSystemLine;//心脏系统 let chartRespiratoryLine;//平均呼吸率 let chartSnoringLine;//打鼾 let chartApneaLine;//呼吸暂停 let chartTimeWaterfall;//深浅睡眠 // 圈圈 function setChartCircularProgressBarOption(chart, data = {}) { var option = { series: [ { type: 'gauge', startAngle: -270, endAngle: 90, legendHoverLink: true, min: 0, max: 100, itemStyle: { color: '#58D9F9', shadowColor: 'rgba(0,138,255,0.45)', shadowBlur: 5, shadowOffsetX: 1, shadowOffsetY: 1 }, progress: { show: true, roundCap: true, width: 10, itemStyle: { // 进度条样式 color: { // 自定义渐变色 type: 'linear', x: 0.75, y: 0.75, x2: 0, y2: 0.75, colorStops: [ { offset: 0, color: '#8D25FF' // 0% 处的颜色 }, { offset: 0.5, color: '#A631FF' // 100% 处的颜色 }, { offset: 1, color: '#FF8FF0' // 100% 处的颜色 } ], global: false // 缺省为 false } } }, pointer: { show: false, }, axisLine: { roundCap: true, lineStyle: { width: 10, } }, axisTick: { show: false // 是否显示分隔线 }, splitLine: { show: false // 是否显示分隔线 }, axisLabel: { show: false, }, title: { color: '#6C6970', offsetCenter: [0, '-36%'], lineHeight: 15, fontSize: 15, }, detail: { backgroundColor: '#fff', width: '60%', lineHeight: 40, height: 40, color: '#333333', offsetCenter: [0, "24%"], valueAnimation: true, formatter: function (value) { return '{value|' + value.toFixed(0) + '}'; }, rich: { value: { fontSize: 30, fontWeight: 'bolder', color: '#333333' }, } }, data: [ { name: data?.rscore_desc || '无', value: data?.rscore_value || 0 } ] } ] }; chart.setOption(option, true); } function initChartHumidifier(canvas, width, height, dpr) { // this.selectComponent('#mychart-dom-bar00').init((canvas, width, height, dpr) => { // 获取组件的 canvas、width、height 后的回调函数 // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setChartCircularProgressBarOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartCircularProgressBar = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; // }); }; function updateChartCircularProgressBarOption(rscore_desc, rscore_value, that) { if (chartCircularProgressBar) { setChartCircularProgressBarOption(chartCircularProgressBar, { rscore_desc, rscore_value }); that.setData({ flushChart00Flag: true }); } else { that.selectComponent('#mychart-dom-CircularProgressBar').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setChartCircularProgressBarOption(chart, { rscore_desc, rscore_value }); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartCircularProgressBar = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } //离床 function initChartOutOfBed(canvas, width, height, dpr) { // this.selectComponent('#mychart-dom-bar00').init((canvas, width, height, dpr) => { // 获取组件的 canvas、width、height 后的回调函数 // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setChartOutOfBedOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartOutOfBed = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; // }); }; function setChartOutOfBedOption(chart, data1 = [], data2 = [],) { var option = option = { tooltip: { show: true, trigger: 'axis', formatter: function (param) { return `${param[0] && param[0].value == 1 ? '在床' : '离床'}` } }, dataZoom: [ { // 第一个 dataZoom 组件 type: 'inside', }, ], grid: { top: '10rpx', left: 0, right: '20rpx', bottom: 0, containLabel: true }, xAxis: { type: 'category', axisLabel: { color: '#6C6970',// 设置 x 轴标签颜色为白色 fontSize: 10 }, boundaryGap: false, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, data: data1, axisLine: { // 不显示X轴轴线 show: false } }, yAxis: { // Y 轴配置 type: 'value', show: false }, series: [{ type: 'line', name: '睡眠状态', smooth: true, lineStyle: { width: 2, color: '#54C68B' }, showSymbol: false, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#B8EBD0' }, { offset: 1, color: 'rgba(255, 255, 255, 0)' } ]) }, data: data2, }] }; chart.setOption(option, true); } function updateOutOfBed(data1, data2, startSleepTime, endSleepTime, that) { if (chartOutOfBed) { setChartOutOfBedOption(chartOutOfBed, data1, data2); } else { that.selectComponent('#chartOutOfBed-dom').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setChartOutOfBedOption(chart, data1, data2); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartOutOfBed = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } //体动 function initChartBodyMovementsLine(canvas, width, height, dpr) { // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setBodyMovementsOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartBodyMovementsLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }; function setBodyMovementsOption(chart, data1 = [], data2 = [],) { var option = option = { tooltip: { show: true, trigger: 'axis', formatter: function (param) { return `${param[0] && param[0].value == 1 ? '体动' : '否'}` } }, dataZoom: [ { // 第一个 dataZoom 组件 type: 'inside', }, ], grid: { top: '10rpx', left: 0, right: '20rpx', bottom: 0, containLabel: true }, xAxis: { type: 'category', axisLabel: { color: '#6C6970',// 设置 x 轴标签颜色为白色 fontSize: 10 }, boundaryGap: false, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, data: data1, axisLine: { // 不显示X轴轴线 show: false } }, yAxis: { // Y 轴配置 type: 'value', show: false }, series: [{ name: '睡眠状态', type: 'line', smooth: true, lineStyle: { width: 2, color: '#5582FF' }, showSymbol: false, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: 'rgba(85, 130, 255, 0.5)' }, { offset: 1, color: 'rgba(149, 177, 255, 0.3)' } ]) }, data: data2, }] }; chart.setOption(option, true); } function updateBodyMovements(data1, data2, startSleepTime, endSleepTime, that) { if (chartBodyMovementsLine) { setBodyMovementsOption(chartBodyMovementsLine, data1, data2); } else { that.selectComponent('#chartBodyMovementsLine-dom').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setBodyMovementsOption(chart, data1, data2); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartBodyMovementsLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } //心脏系统 function initChartCardiacSystemLine(canvas, width, height, dpr) { // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setCardiacSystemOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartCardiacSystemLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }; function setCardiacSystemOption(chart, data1 = [], data2 = [],) { var option = option = { tooltip: { show: true, trigger: 'axis', formatter: function (param) { return `${(param[0].value || 0) + '次'}` } }, dataZoom: [ { // 第一个 dataZoom 组件 type: 'inside', }, ], grid: { top: '20rpx', left: '20rpx', right: '20rpx', bottom: '10rpx', containLabel: true }, xAxis: { type: 'category', axisLabel: { color: '#6C6970',// 设置 x 轴标签颜色为白色 fontSize: 10 }, boundaryGap: false, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, data: data1, axisLine: { // 不显示X轴轴线 show: false } }, yAxis: { type: 'value', max: 100, min: 0, show: true, offset: 10, splitLine: { show: false }, axisLabel: { hideOverlap: true, fontSize: 10, } }, series: [{ type: 'line', smooth: true, lineStyle: { width: 2, color: '#F47893' }, showSymbol: false, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: 'rgba(244, 120, 147, 0.5)' }, { offset: 1, color: 'rgba(250, 140, 164, 0.3)' } ]) }, data: data2, }] }; chart.setOption(option, true); } function updateCardiacSystem(data1, data2, that) { if (chartCardiacSystemLine) { setCardiacSystemOption(chartCardiacSystemLine, data1, data2); } else { that.selectComponent('#chartCardiacSystemLine-dom').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setCardiacSystemOption(chart, data1, data2); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartBodyMovementsLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } //平均呼吸率 function initChartRespiratoryLine(canvas, width, height, dpr) { // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setRespiratoryOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartRespiratoryLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }; function setRespiratoryOption(chart, data1 = [], data2 = [],) { var option = option = { tooltip: { show: true, trigger: 'axis', formatter: function (param) { return `${(param[0].value || 0) + '次'}` } }, dataZoom: [ { // 第一个 dataZoom 组件 type: 'inside', }, ], grid: { top: '20rpx', left: '20rpx', right: '20rpx', bottom: '10rpx', containLabel: true }, xAxis: { type: 'category', axisLabel: { color: '#6C6970',// 设置 x 轴标签颜色为白色 fontSize: 10 }, boundaryGap: false, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, data: data1, axisLine: { // 不显示X轴轴线 show: false } }, yAxis: { type: 'value', max: 24, min: 0, show: true, offset: 10, splitLine: { show: false }, axisLabel: { hideOverlap: true, fontSize: 10, } }, series: [{ type: 'line', smooth: true, lineStyle: { width: 2, color: '#06A9AD' }, showSymbol: false, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: 'rgba(186, 246, 231, 1)' }, { offset: 1, color: 'rgba(255, 255, 255, 0)' } ]) }, data: data2, }] }; chart.setOption(option, true); } function updateRespiratory(data1, data2, startSleepTime, endSleepTime, that) { if (chartRespiratoryLine) { setRespiratoryOption(chartRespiratoryLine, data1, data2); } else { that.selectComponent('#chartRespiratoryLine-dom').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setRespiratoryOption(chart, data1, data2); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartRespiratoryLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } //打鼾 function initSnoringLine(canvas, width, height, dpr) { // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setSnoringOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartSnoringLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }; function setSnoringOption(chart, data1 = [], data2 = [],) { var option = option = { tooltip: { show: true, trigger: 'axis', formatter: function (param) { return `${param[0] && param[0].value == 1 ? '打鼾' : '否'}` } }, dataZoom: [ { // 第一个 dataZoom 组件 type: 'inside', }, ], grid: { top: '10rpx', left: 0, right: '20rpx', bottom: 0, containLabel: true }, xAxis: { type: 'category', axisLabel: { color: '#6C6970',// 设置 x 轴标签颜色为白色 fontSize: 10 }, boundaryGap: false, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, data: data1, axisLine: { // 不显示X轴轴线 show: false } }, yAxis: { type: 'value', max: 24, min: 0, show: false, }, series: [{ type: 'line', smooth: true, lineStyle: { width: 2, color: '#EE8B52' }, showSymbol: false, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: 'rgba(249, 211, 189, 1)' }, { offset: 1, color: 'rgba(255, 255, 255, 0)' } ]) }, data: data2, }] }; chart.setOption(option, true); } function updateSnoring(data1, data2, startSleepTime, endSleepTime, that) { if (chartSnoringLine) { setSnoringOption(chartSnoringLine, data1, data2); } else { that.selectComponent('#chartSnoringLine-dom').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setSnoringOption(chart, data1, data2); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartSnoringLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } //呼吸暂停 function initApneaLine(canvas, width, height, dpr) { // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setApneaOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartApneaLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }; function setApneaOption(chart, data1 = [], data2 = [],) { var option = option = { tooltip: { show: true, trigger: 'axis', formatter: function (param) { return `${param[0] && param[0].value == 1 ? '停止' : '否'}` } }, dataZoom: [ { // 第一个 dataZoom 组件 type: 'inside', }, ], grid: { top: '10rpx', left: 0, right: '20rpx', bottom: 0, containLabel: true }, xAxis: { type: 'category', axisLabel: { color: '#6C6970',// 设置 x 轴标签颜色为白色 fontSize: 10 }, boundaryGap: false, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, data: data1, axisLine: { // 不显示X轴轴线 show: false } }, yAxis: { type: 'value', max: 24, min: 0, show: false, }, series: [{ type: 'line', smooth: true, lineStyle: { width: 2, color: '#6086EF' }, showSymbol: false, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: 'rgba(96, 134, 239, 1)' }, { offset: 1, color: 'rgba(255, 255, 255, 0)' } ]) }, data: data2, }] }; chart.setOption(option, true); } function updateApnea(data1, data2, startSleepTime, endSleepTime, that) { if (chartApneaLine) { setApneaOption(chartApneaLine, data1, data2); } else { that.selectComponent('#chartApneaLine-dom').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setApneaOption(chart, data1, data2); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartApneaLine = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } //深浅睡眠 function timestampToHHMM(timestamp) { let date = new Date(timestamp); // 注意:JavaScript中的Date是以毫秒为单位的 let hours = date.getHours().toString().padStart(2, '0'); // 获取小时数,并补零 let minutes = date.getMinutes().toString().padStart(2, '0'); // 获取分钟数,并补零 return hours + ':' + minutes; } // 自定义图形 function renderItem(params, api) { var categoryIndex = api.value(0); var startX = api.coord([api.value(1), categoryIndex])[0]; var endX = api.coord([api.value(2), categoryIndex])[0]; var centerY = api.coord([ api.value(1) + (api.value(2) - api.value(1)) / 2, categoryIndex ])[1]; // 取中间点的y坐标 var height = api.size([0, 1])[1] * 0.6; var width = endX - startX; // 创建一个矩形 var rect = { x: startX, y: centerY - height / 2, r: 2, width: width, height: height }; // 返回的图形对象 return { type: 'rect', shape: rect, style: api.style() }; } function initChartTimeWaterfall(canvas, width, height, dpr) { // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setTimeWaterfallOption(chart); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartTimeWaterfall = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }; function setTimeWaterfallOption(chart, startTime = new Date().getTime(), data = [], categories = ['深睡', '中睡', '浅睡', '清醒']) { var option = option = { tooltip: { show:true, formatter: function (params) { return params.marker + params.name + ': ' + params.value[3] + ' m'; } }, dataZoom: [ { type: 'inside', filterMode: 'weakFilter' } ], grid: { top: 0, bottom: 0, height:210, containLabel: false }, xAxis: { type: 'value', scale: true, splitLine: { show: false // 是否显示刻度线 }, axisLabel: { color: '#6C6970',// 设置 x 轴标签颜色为白色 fontSize: 10, formatter: function (val) { return timestampToHHMM(val || startTime); } } }, yAxis: { show: false, data: categories }, series: [ { type: 'custom', renderItem: renderItem, itemStyle: { opacity: 1 }, encode: { x: [1, 2], y: 0 }, data: data } ] }; chart.setOption(option, true); } function updateTimeWaterfall(startTime = new Date().getTime(), data, that) { console.log("updateTimeWaterfall========>", data); if (chartTimeWaterfall) { setTimeWaterfallOption(chartTimeWaterfall, startTime, data); } else { that.selectComponent('#chartTimeWaterfall-dom').init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); setTimeWaterfallOption(chart, startTime, data); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 chartTimeWaterfall = chart; // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); } } // subpages/data/data.js function addZero(str) { if (String(str).length == 1) { return "0" + String(str); } else { return String(str); } } function flushChart0(data) { var option = { series: [ { name: '进度', type: 'pie', radius: ['50%', '70%'], avoidLabelOverlap: false, label: { show: true, position: 'center' }, emphasis: { label: { show: true, fontSize: '30', fontWeight: 'bold' } }, labelLine: { show: false }, data: data } ] }; chart0.setOption(option, true); } function flushChart(data) { var option = { backgroundColor: '#0c1041', // title: { // text: '当天睡眠时间曲线图', // left: 'center', // color: '#ffffff', // backgroundColor: '#ff0000' // }, color: ["#62c4d9"], legend: { data: ['睡眠时间'], top: 20, left: 'right', backgroundColor: '#0c1041', textStyle: { color: '#fff', } }, grid: { containLabel: true }, tooltip: { show: true, trigger: 'axis' }, xAxis: { type: 'category', boundaryGap: false, axisLine: { lineStyle: { color: '#fff', width: 1,//这里是为了突出显示加上的 } } }, yAxis: { name: "时长", x: 'center', type: 'value', axisLine: { lineStyle: { color: '#fff', width: 1,//这里是为了突出显示加上的 } // splitLine: { // lineStyle: { // type: 'dashed' // } } // show: false }, series: [{ name: '睡眠时间', type: 'line', smooth: true, data: data, color: '#62c4d9' }] }; chart.setOption(option, true); } function flushChart2(data) { var option = { // title: { // text: '睡眠状态监测', // left: 'center', // textStyle: { // color: '#ffffff', // 字体颜色 // fontStyle: 'normal', // 字体风格 // // fontWeight: 'bold', // 字体粗细 // fontFamily: 'sans-serif', // 字体族 // fontSize: 18 // 字体大小 // }, // backgroundColor: '#57f7ff' // }, tooltip: { trigger: 'item' }, legend: { orient: 'vertical', left: 'left', }, series: [{ type: 'pie', radius: '55%', data: data ? data : [] }], graphic: [{ type: 'text', left: '2%', // 文本水平位置,这里设置为居中,你可以根据需要调整 top: '84%', // 文本垂直位置,这里设置为距离顶部 10% 的位置,作为左下方的文本 style: { text: '时长(分钟)分析', // 文本内容 textFill: '#333', // 文本颜色 textFontSize: 14, // 文本字体大小 textAlign: 'left', // 文本水平对齐方式 verticalAlign: 'middle' // 文本垂直对齐方式 } }], }; chart2.setOption(option, true); } function flushChart3(data1, data2) { var option = { // title: { // text: '睡眠呼吸监测', // left: 'center', // textStyle: { // color: '#ffffff', // 字体颜色 // fontStyle: 'normal', // 字体风格 // // fontWeight: 'bold', // 字体粗细 // fontFamily: 'sans-serif', // 字体族 // fontSize: 18 // 字体大小 // }, // backgroundColor: '#57f7ff' // }, tooltip: {}, xAxis: { data: data1 ? data1 : [] }, yAxis: { // Y 轴配置 type: 'value', // 设置 Y 轴名称 name: '单位:次', // 设置 Y 轴名称的位置 nameLocation: 'end', // 可以是 'start'、'middle' 或 'end' }, series: [{ type: 'line', data: data2 ? data2 : [] }] }; chart3.setOption(option, true); } function flushChart4(data) { var option = { // title: { // text: '睡眠与清醒时间', // left: 'center', // textStyle: { // color: '#ffffff', // 字体颜色 // fontStyle: 'normal', // 字体风格 // // fontWeight: 'bold', // 字体粗细 // fontFamily: 'sans-serif', // 字体族 // fontSize: 18 // 字体大小 // }, // backgroundColor: '#57f7ff' // }, tooltip: {}, series: [{ type: 'gauge', // 设置刻度盘的最大值 max: 24, // 设置刻度盘的最小值 min: 0, pointer: { width: 5, // 可以调整第二个指针的样式以区分 itemStyle: { color: '#FF0000' } }, // 刻度盘轴 axisLine: { textStyle: { fontSize: 14 }, lineStyle: { width: 30, color: [[0.2, '#80FF80'], [0.8, '#FF8080'], [1, '#8080FF']] // 刻度盘颜色分区 }, rich: { // 为第一个刻度盘设置刻度颜色 '0%': { color: '#FF0000' }, '50%': { color: '#00FF00' }, '100%': { color: '#0000FF' } } }, detail: { formatter: '{value} 小时' }, data: data ? data : {} } // ,{ // type: 'gauge', // // 设置刻度盘的最大值 // max: 24, // // 设置刻度盘的最小值 // min: 0, // // 刻度盘轴 // axisLine: { // textStyle: { // fontSize: 14 // }, // lineStyle: { // width: 30, // color: [[0.2, '#80FF80'], [0.8, '#FF8080'], [1, '#8080FF']] // 刻度盘颜色分区 // }, // rich: { // // 为第二个刻度盘设置刻度颜色 // '0%': { // color: '#FFFF00' // }, // '50%': { // color: '#00FFFF' // }, // '100%': { // color: '#FF00FF' // } // } // }, // detail: {formatter: '{value} 小时'}, // data: data2?data2:{} // }, ] }; chart4.setOption(option, true); } function flushChart5(data1, data2, that) { var option = { // title: { // text: '睡眠状态监测', // left: 'center', // textStyle: { // color: '#ffffff', // 字体颜色 // fontStyle: 'normal', // 字体风格 // // fontWeight: 'bold', // 字体粗细 // fontFamily: 'sans-serif', // 字体族 // fontSize: 18 // 字体大小 // }, // backgroundColor: '#57f7ff' // }, tooltip: {}, xAxis: { data: data1 ? data1 : [] }, yAxis: { // Y 轴配置 type: 'value', // 设置 Y 轴名称 name: '单位:次', // 设置 Y 轴名称的位置 nameLocation: 'end', // 可以是 'start'、'middle' 或 'end' axisLabel: { formatter: function (value) { return that.sleepStateChange(value); } }, }, series: [{ type: 'line', data: data2 ? data2 : [] }] }; chart5.setOption(option, true); } function flushChart6(data1, data2, startSleepTime, endSleepTime, that) { var option = { backgroundColor: '#000000', // 设置背景色 tooltip: {}, xAxis: { data: data1 ? data1 : [] }, yAxis: { // Y 轴配置 type: 'value', // 设置 Y 轴名称 name: '睡眠状态', // 设置 Y 轴名称的位置 nameLocation: 'end', // 可以是 'start'、'middle' 或 'end' axisLabel: { formatter: function (value) { return that.sleepStateChange(value); } } }, series: [{ type: 'line', data: data2 ? data2 : [], lineStyle: { // 系列级个性化折线样式 width: 10, type: 'solid', color: new echarts.graphic.LinearGradient(0, 0.4, 0.7, 1, [{ offset: 0, color: '#ffb71b' }, { offset: 0.4, color: '#b75cee' }, { offset: 0.7, color: '#66acfc' }, { offset: 1, color: '#3843fa' }]),//线条渐变色 }, } // { // name: '分类2', // type: 'line', // data: data2, // lineStyle: { // 系列级个性化折线样式 // width: 4, // type: 'solid', // color: new echarts.graphic.LinearGradient(0, 0.4, 0.7, 1, [{ // offset: 0, // color: '#ffb71b' // } , { // offset: 0.4, // color: '#b75cee' // }, { // offset: 0.7, // color: '#66acfc' // }, { // offset: 1, // color: '#3843fa' // }]),//线条渐变色 // }, // }, ], graphic: [{ type: 'text', left: '5%', // 文本水平位置,这里设置为居中,你可以根据需要调整 top: '90%', // 文本垂直位置,这里设置为距离顶部 10% 的位置,作为左下方的文本 style: { text: '入睡时间:' + startSleepTime ? startSleepTime : '', // 文本内容 textFill: '#333', // 文本颜色 textFontSize: 14, // 文本字体大小 textAlign: 'left', // 文本水平对齐方式 verticalAlign: 'middle' // 文本垂直对齐方式 } }, { type: 'text', right: '5%', // 文本水平位置,这里设置为距离右侧 10% 的位置,作为右下方的文本 top: '90%', // 文本垂直位置,这里设置为距离底部 10% 的位置 style: { text: '醒来时间:' + endSleepTime ? endSleepTime : '', // 文本内容 textFill: '#333', // 文本颜色 textFontSize: 14, // 文本字体大小 textAlign: 'right', // 文本水平对齐方式 verticalAlign: 'middle' // 文本垂直对齐方式 } }], }; // var list0 = []; // var list10 = []; // var list20 = []; // var list30 = []; // if(data2){ // for (let i = 0; i < data2.length; i++) { // if (data2[i] == '0') { // list0.push(data2[i]); // }else if (data2[i] == '10') { // list10.push(data2[i]); // }else if (data2[i] == '20') { // list20.push(data2[i]); // }else if (data2[i] == '30') { // list30.push(data2[i]); // }else{ // } // } // } // var option = { // xAxis: { // type: 'category', // data: data1 // }, // yAxis: { // type: 'value', // axisLabel: { // show: true, // position: 'buttom' // 分类标签显示在顶部,相当于曲线下方位置 // } // }, // series: [ // { // name: '清醒', // type: 'line', // data: list0, // itemStyle: { // areaColor: new echarts.graphic.LinearGradient( // 0, 0, 0, 1, // [{ offset: 0, color: 'rgba(255, 0, 0, 0.3)' }, { offset: 1, color: 'rgba(255, 0, 0, 0)' }] // ) // }, // smooth: true, // lineStyle: { // color: 'red' // 线条颜色 // } // }, // { // name: '浅睡', // type: 'line', // data: list10, // itemStyle: { // areaColor: new echarts.graphic.LinearGradient( // 0, 0, 0, 1, // [{ offset: 0, color: 'rgba(0, 255, 0, 0.3)' }, { offset: 1, color: 'rgba(0, 255, 0, 0)' }] // ) // }, // smooth: true, // lineStyle: { // color: 'green' // 线条颜色 // } // }, // { // name: '中睡', // type: 'line', // data: list20, // itemStyle: { // areaColor: new echarts.graphic.LinearGradient( // 0, 0, 0, 1, // [{ offset: 0, color: 'rgba(0, 255, 0, 0.3)' }, { offset: 1, color: 'rgba(0, 255, 0, 0)' }] // ) // }, // smooth: true, // lineStyle: { // color: 'green' // 线条颜色 // } // } , // { // name: '深睡', // type: 'line', // data: list30, // itemStyle: { // areaColor: new echarts.graphic.LinearGradient( // 0, 0, 0, 1, // [{ offset: 0, color: 'rgba(0, 255, 0, 0.3)' }, { offset: 1, color: 'rgba(0, 255, 0, 0)' }] // ) // }, // smooth: true, // lineStyle: { // color: 'green' // 线条颜色 // } // } // // 如果有更多分类,继续添加... // ], // tooltip: { // trigger: 'axis', // axisPointer: { // type: 'cross', // label: { // backgroundColor: '#6a7985' // } // } // }, // graphic: [{ // type: 'text', // left: '5%', // 文本水平位置,这里设置为居中,你可以根据需要调整 // top: '90%', // 文本垂直位置,这里设置为距离顶部 10% 的位置,作为左下方的文本 // style: { // text: '入睡时间:'+startSleepTime, // 文本内容 // textFill: '#333', // 文本颜色 // textFontSize: 14, // 文本字体大小 // textAlign: 'left', // 文本水平对齐方式 // verticalAlign: 'middle' // 文本垂直对齐方式 // } // }, { // type: 'text', // right: '5%', // 文本水平位置,这里设置为距离右侧 10% 的位置,作为右下方的文本 // top: '90%', // 文本垂直位置,这里设置为距离底部 10% 的位置 // style: { // text: '醒来时间:'+endSleepTime, // 文本内容 // textFill: '#333', // 文本颜色 // textFontSize: 14, // 文本字体大小 // textAlign: 'right', // 文本水平对齐方式 // verticalAlign: 'middle' // 文本垂直对齐方式 // } // }], // }; chart6.setOption(option, true); } function flushChart9(data1, data2, startSleepTime, endSleepTime, that) { var option = { // backgroundColor: rgba(168, 115, 182, 0.5), // 设置背景色 tooltip: {}, xAxis: { axisLabel: { color: '#000' // 设置 x 轴标签颜色为白色 }, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, axisLine: { // 不显示X轴轴线 show: false }, data: data1 ? data1 : [] }, yAxis: { // Y 轴配置 type: 'value', // 设置 Y 轴名称 name: '睡眠状态', // 设置 Y 轴名称的位置 nameLocation: 'end', // 可以是 'start'、'middle' 或 'end' axisLine: { // 不显示Y轴轴线 show: false, }, axisTick: { // 不显示Y轴刻度线 show: false }, axisLabel: { color: '#000', formatter: function (value) { return that.sleepRsnoring_arrChange(value); } }, splitLine: { show: false,// 不显示纵坐标轴的刻度线 lineStyle: { color: 'rgba(222, 222, 222, 0.1)', // 灰色并调整透明度 width: 1, // 刻度线宽度 type: 'solid' // 刻度线类型,默认为实线 } }, }, series: [{ type: 'line', data: data2 ? data2 : [], lineStyle: { color: 'rgba(255, 170, 127, 0.8)' // 奶白色,80% 透明度 }, showSymbol: false,// 是否显示标记图形 smooth: true, // 使折线平滑 markPoint: { symbol: 'circle', // 标记的符号为圆圈 symbolSize: 10, // 标记的大小 itemStyle: { color: 'rgba(255, 170, 127, 0.8)', // borderColor: 'blue', borderWidth: 1, // 设置边框宽度 fill: 'none' // 设置填充颜色为无,即空心 }, data: [ // 假设 data[0] 和 data[data.length - 1] 分别是开始和结束的数据点 { coord: [data1 ? data1[0] : '', data2 ? data2[0] : ''], name: '开始' }, { coord: [data1 ? data1[data1.length - 1] : '', data2 ? data2[data2.length - 1] : ''], name: '结束' } // 如果要添加拐角处的标记,需要手动计算并添加 ] }, areaStyle: { // 折线下方的区域样式 color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, // 渐变方向 [ // 渐变颜色 { offset: 0, color: 'rgba(255, 170, 127, 0.8)' }, // 使用之前定义的渐变 { offset: 0.9, color: 'rgba(255, 255, 255, 1)' } // 可选,结束颜色 ] ), opacity: 0.3 // 区域的不透明度,可以根据需要调整 }, } ], // graphic: [{ // type: 'text', // left: '5%', // 文本水平位置,这里设置为居中,你可以根据需要调整 // top: '90%', // 文本垂直位置,这里设置为距离顶部 10% 的位置,作为左下方的文本 // style: { // text: '入睡时间:'+startSleepTime?startSleepTime:'', // 文本内容 // textFill: '#333', // 文本颜色 // textFontSize: 14, // 文本字体大小 // textAlign: 'left', // 文本水平对齐方式 // verticalAlign: 'middle' // 文本垂直对齐方式 // } // }, { // type: 'text', // right: '5%', // 文本水平位置,这里设置为距离右侧 10% 的位置,作为右下方的文本 // top: '90%', // 文本垂直位置,这里设置为距离底部 10% 的位置 // style: { // text: '醒来时间:'+endSleepTime?endSleepTime:'', // 文本内容 // textFill: '#333', // 文本颜色 // textFontSize: 14, // 文本字体大小 // textAlign: 'right', // 文本水平对齐方式 // verticalAlign: 'middle' // 文本垂直对齐方式 // } // }], }; chart9.setOption(option, true); } function flushChart10(data1, data2, startSleepTime, endSleepTime, that) { var option = { // backgroundColor: rgba(168, 115, 182, 0.5), // 设置背景色 tooltip: {}, xAxis: { axisLabel: { color: '#000' // 设置 x 轴标签颜色为白色 }, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, axisLine: { // 不显示X轴轴线 show: false }, data: data1 ? data1 : [] }, yAxis: { // Y 轴配置 type: 'value', // 设置 Y 轴名称 name: '睡眠状态', // 设置 Y 轴名称的位置 nameLocation: 'end', // 可以是 'start'、'middle' 或 'end' axisLine: { // 不显示Y轴轴线 show: false, }, axisTick: { // 不显示Y轴刻度线 show: false }, axisLabel: { color: '#000', formatter: function (value) { return that.sleepRhxstop_arrChange(value); } }, splitLine: { show: false,// 不显示纵坐标轴的刻度线 lineStyle: { color: 'rgba(222, 222, 222, 0.1)', // 灰色并调整透明度 width: 1, // 刻度线宽度 type: 'solid' // 刻度线类型,默认为实线 } }, }, series: [{ type: 'line', data: data2 ? data2 : [], lineStyle: { color: 'rgba(0, 85, 255, 0.8)' // 奶白色,80% 透明度 }, showSymbol: false,// 是否显示标记图形 smooth: true, // 使折线平滑 markPoint: { symbol: 'circle', // 标记的符号为圆圈 symbolSize: 10, // 标记的大小 itemStyle: { color: 'rgba(0, 85, 255, 0.8)', // borderColor: 'blue', borderWidth: 1, // 设置边框宽度 fill: 'none' // 设置填充颜色为无,即空心 }, data: [ // 假设 data[0] 和 data[data.length - 1] 分别是开始和结束的数据点 { coord: [data1 ? data1[0] : '', data2 ? data2[0] : ''], name: '开始' }, { coord: [data1 ? data1[data1.length - 1] : '', data2 ? data2[data2.length - 1] : ''], name: '结束' } // 如果要添加拐角处的标记,需要手动计算并添加 ] }, areaStyle: { // 折线下方的区域样式 color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, // 渐变方向 [ // 渐变颜色 { offset: 0, color: 'rgba(0, 85, 255, 0.8)' }, // 使用之前定义的渐变 { offset: 0.9, color: 'rgba(255, 255, 255, 1)' } // 可选,结束颜色 ] ), opacity: 0.3 // 区域的不透明度,可以根据需要调整 }, } ], // graphic: [{ // type: 'text', // left: '5%', // 文本水平位置,这里设置为居中,你可以根据需要调整 // top: '90%', // 文本垂直位置,这里设置为距离顶部 10% 的位置,作为左下方的文本 // style: { // text: '入睡时间:'+startSleepTime?startSleepTime:'', // 文本内容 // textFill: '#333', // 文本颜色 // textFontSize: 14, // 文本字体大小 // textAlign: 'left', // 文本水平对齐方式 // verticalAlign: 'middle' // 文本垂直对齐方式 // } // }, { // type: 'text', // right: '5%', // 文本水平位置,这里设置为距离右侧 10% 的位置,作为右下方的文本 // top: '90%', // 文本垂直位置,这里设置为距离底部 10% 的位置 // style: { // text: '醒来时间:'+endSleepTime?endSleepTime:'', // 文本内容 // textFill: '#333', // 文本颜色 // textFontSize: 14, // 文本字体大小 // textAlign: 'right', // 文本水平对齐方式 // verticalAlign: 'middle' // 文本垂直对齐方式 // } // }], }; chart10.setOption(option, true); } function flushChart11(data1, data2, that) { // data2 = data2?data2.map(value => { // return value+10; // }):[]; let adjustedData = data2 ? data2.map(value => { return 10; }) : []; // var option = { // // title: { // // text: '睡眠呼吸监测', // // left: 'center', // // textStyle: { // // color: '#ffffff', // 字体颜色 // // fontStyle: 'normal', // 字体风格 // // // fontWeight: 'bold', // 字体粗细 // // fontFamily: 'sans-serif', // 字体族 // // fontSize: 18 // 字体大小 // // }, // // backgroundColor: '#57f7ff' // // }, // // grid: { // // top: '10%', // // height: '30%', // // }, // tooltip: {}, // xAxis: { // type: 'category', // axisLabel: { // color: 'rgba(0, 0, 0, 0.8)' // 设置 x 轴标签颜色为白色 // }, // axisTick: { // // 不显示Y轴刻度线 // show: false // }, // axisLine: { // // 不显示X轴轴线 // show: false // }, // splitLine: { // show: false, // 是否显示刻度线 // }, // data: data1?data1:[] // }, // yAxis: { // // Y 轴配置 // type: 'value', // // 设置 Y 轴名称 // name: '睡眠状态', // // 设置 Y 轴名称的位置 // nameLocation: 'end', // 可以是 'start'、'middle' 或 'end' // axisLine: { // // 不显示Y轴轴线 // show: false, // }, // axisTick: { // // 不显示Y轴刻度线 // show: false // }, // axisLabel: { // color: '#000', // formatter: function (value) { // return that.sleepStateChange(value); // } // }, // splitLine: { // show: false ,// 不显示纵坐标轴的刻度线 // lineStyle: { // color: 'rgba(0, 170, 255, 0.9)', // 灰色并调整透明度 // width: 1, // 刻度线宽度 // type: 'solid' // 刻度线类型,默认为实线 // } // }, // }, // series: [{ // type: 'bar', // data: data2?data2:[], // // barCategoryGap: '50%', // 类别间柱形距离 // // label: { // // show: true, // // position: 'top', // // formatter: '{b}: {c}' // // }, // stack: 'stackGroup', // itemStyle: { // color: 'rgba(0,0,0,0)' // 透明颜色 // }, // // itemStyle: { // // color: function(params) { // // // 根据数据或其他条件返回颜色值 // // // 这里只是简单地返回了一个颜色数组中的颜色 // // // var colorList = ['#c23531','#2f4554','#61a0a8','#d48265','#91c7ae','#749f83','#ca8622','#bda29a','#6e7074','#546570','#c4ccd3']; // // if(params.value == '0'){ // // return '#e2e2e2' // // }else if(params.value == '10'){ // // return '#8cc4ff' // // }else if(params.value == '20'){ // // return '#a6b2ff' // // }else if(params.value == '30'){ // // return '#9b79ff' // // }else{ // // return ''; // // } // // // return colorList[params.dataIndex % colorList.length]; // // } // // } // }] // }; var option = { xAxis: { type: 'category', data: data1 ? data1 : [] }, yAxis: { type: 'value', min: 0, // 确保 Y 轴从 0 开始 // max 可以根据需要设置,但通常不需要为了固定柱子高度而设置 axisLabel: { color: '#000', formatter: function (value) { return that.sleepStateChange(value); } }, }, series: [ // 透明柱子,占满整个柱子空间 { data: data2 ? data2 : [], type: 'bar', stack: 'stackGroup', itemStyle: { color: 'rgba(0,0,0,0)' // 透明颜色 }, barGap: '-100%', // 设置柱子间距为负值,让柱子紧挨在一起 barMaxWidth: '30px' // 根据需要调整柱子宽度 }, // 有色柱子,只显示上半部分(固定高度) { data: adjustedData, // 固定高度数据 type: 'bar', stack: 'stackGroup', // 与透明系列使用相同的叠加组名 itemStyle: { color: function (params) { console.log('params=' + JSON.stringify(params)) if (data2 && data2[params.dataIndex] == 0) { return '#e2e2e2' } else if (data2 && data2[params.dataIndex] == 10) { return '#d8c6ff' } else if (data2 && data2[params.dataIndex] == 20) { return '#c6b3ff' } else if (data2 && data2[params.dataIndex] == 30) { return '#b090ff' } else { return ''; } } }, barGap: '-100%', // 保持与透明系列相同的柱子间距 barMaxWidth: '30px' // 保持与透明系列相同的宽度 } ] }; chart11.setOption(option, true); } var homeApi = "https://haold.aidsleep.cn"; var homeApi_http = "http://haold.aidsleep.cn"; var homeApi_http_port = "8123"; var homeApi_https = "https://haold.aidsleep.cn"; const aipushApi = "https://aipush.aidsleep.cn"; const token_15 = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJiN2JlOGE0MDExZjY0NjA2OGUxYjJiZTE4M2Y2NzU0NSIsImlhdCI6MTcxMTYxNDY2NCwiZXhwIjoyMDI2OTc0NjY0fQ.XJ73cXAoEsouTgvgpNVobq9oKdwlJr88TiAFLYlaahE"; var token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJlZGVjOWI3YWQ0MTQ0ZTIxYWQ1NTE1Nzc5NTkzNjBjNiIsImlhdCI6MTcxMjEzNTM2MywiZXhwIjoyMDI3NDk1MzYzfQ.IfrvdiaVuhCKsdy69JvUYhJ64bnhMT8MI1hN8R38whc"; const token_push = "b74fd5754c5ef24cf600c39194abdaeb"; Page({ /** * 页面的初始数据 */ data: { ecCircularProgressBar: { // lazyLoad: true, // 懒加载 onInit: initChartHumidifier }, ecOutOfBed: { // lazyLoad: true, // 懒加载 onInit: initChartOutOfBed }, ecBodyMovements: { // lazyLoad: true, // 懒加载 onInit: initChartBodyMovementsLine }, ecCardiacSystemLine: { // lazyLoad: true, // 懒加载 onInit: initChartCardiacSystemLine }, ecChartRespiratoryLine: { // lazyLoad: true, // 懒加载 onInit: initChartRespiratoryLine }, ecSnoringLine: { // lazyLoad: true, // 懒加载 onInit: initSnoringLine }, ecApneaLine: { // lazyLoad: true, // 懒加载 onInit: initApneaLine }, ecTimeWaterfall: { lazyLoad: true, // 懒加载 // onInit: initChartTimeWaterfall }, header: false, nowDate: [{ //日历的初始化数据 month: 'current', day: new Date().getDate(), color: '#ffd700', background: 'white' }], total1: 0, total2: 0, total3: 0, temArr: [], humArr: [], clickDate: "", status: "", isShow: false, year: addZero(new Date().getFullYear()), month: addZero(new Date().getMonth()), date: addZero(new Date().getDate()), hours: addZero(new Date().getHours()), moke_data: { "20240414": [ { sleepAllTime: 902, sleepFeedback: "很好" }, { sleepAllTime: 222, sleepFeedback: "疲惫" } ], "20240415": [ { sleepAllTime: 902, sleepFeedback: "很好" }, { sleepAllTime: 222, sleepFeedback: "疲惫" }, { sleepAllTime: 902, sleepFeedback: "很好" }, { sleepAllTime: 222, sleepFeedback: "疲惫" }, { sleepAllTime: 902, sleepFeedback: "很好" } ] }, rdt_arr: [], rrh_arr: [], rhx_arr: [], rsnoring_arr: [], routbed_arr: [], rmove_arr: [], rhxstop_arr: [], rsleep_arr: [], rdt_arrNew: [],//睡眠时间轴数据集合 rrh_arrNew: [],//睡眠心率数据集合 rhx_arrNew: [],//睡眠呼吸数据集合 rmove_arrNew: [],//体动状态数据集合,0-否,1-体动状态 rsleep_arrNew: [],//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡 rsleep_arr_all_New: [],//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡 durationData: [], //睡眠时长 sleep_duration: [], //睡眠和清醒对比 rdeep_durationFormatA: {}, rdeep_duration: 0, rlight_duration: 0, rin_duration: 0, rawake_duration: 0, rrs_duration: 0,//入睡时长 routbed_count_value: 0,//离床次数 rsleep_eff_value: '',//睡眠效率 rdeep_durationFormat: '', rlight_durationFormat: '', rin_durationFormat: '', rawake_durationFormat: '', ravg_hx_value: 0, ravg_hx_desc: '', ravg_rh_value: 0, ravg_rh_desc: '', rscore_value: 0, rscore_desc: '', sleep_efficiency: '',//睡眠效率 zdTime: ["00:00", "01:00", "02:00", "03:00", "04:00", "05:00", , "06:00", "07:00", "08:00", "09:00", "10:00", "11:00" , "12:00", "13:00", "14:00", "15:00", "16:00", "17:00" , "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"], zdPoint: [], percentage: 75, // 初始百分比值 canvasWidth: 0, canvasHeight: 0, rsn: '', rdate: '', total_duration: 0, rtotal_duration: 0, rinbed_duration: 0, rgobed_time: 0, routbed_time: 0, rgobed_routbed: 0, sleepHourSub: 0, routbed_count_value: 0, isButtonClicked: false, // 用来控制按钮是否被点击的标记 home_room: [ 'company_laboratory', '2802', ], isButtonPressed: false, // 用来标记按钮是否被按下 reportDate: '', currentDate: '', currentTime: '', rmove_arrFrequency: 0,//体动次数 routbed_arrFrequency: 0,//离床次数 rsnoring_arrFrequency: 0,//打鼾次数 rhxstop_arrFrequency: 0,//呼吸暂停次数 sleep_durationCountA: 0,//睡眠时间 sns: [], tvEntityIds: [], ifOneMoreTV: false,//数据推送是否有多于一台电视 selectedValue: '', // 用于存储选中的值 tvEntityIdsValue: '', // 用于存储选中的值 selectedIndex: 0, // 默认选中第一个选项 tvEntityIdsIndex: 0, // 默认选中第一个选项 hotelcode: '',//酒店编码 roomcode: '',//房间编码 rdeep_duration_efficiency: '',//深睡比例 rlight_duration_efficiency: '',//浅睡比例 rin_duration_efficiency: '',//中睡比例 rawake_duration_efficiency: '',//清醒比例 isLoading: false, ec7: '', width7: '', height7: '', ec8: '', width8: '', height8: '', ec1: '', width1: '', height1: '', ec81: '', width81: '', height81: '', ec9: '', width9: '', height9: '', ec10: '', width10: '', height10: '', ec11: '', width11: '', height11: '', flushChart00Flag: false, arrayFourth: [[], []],//多级选择数组 valueFourth: [0, 0],//多级选择结果index sourceFourth: [ { id: 1, text: '2024-05-24', children: [{ id: 1, text: '01:01~01:20', reportId: '11111', }, { id: 2, text: '03:05~04:20', reportId: '22222', }, { id: 3, text: '05:21~07:20', reportId: '33333', }] }, { id: 2, text: '2024-05-23', children: [{ id: 3, text: '00:01~03:20', reportId: '454545', }, { id: 4, text: '00:03~06:20', reportId: '66666', }] }, ],//后台读取的所及数据源 reportId: '', hotelname: '', roomname: '', pushReportId: '',//推送用:reportId }, toWarmReminder(e) { const tabName = e.currentTarget.dataset.index || 1; wx.navigateTo({ url: '/subpages/warmReminder/warmReminder?id=' + tabName }) }, //点击确定选择结果时,保存结果 bindMultiPickerChange: function (e) { var result = e.detail.value; var data = this.data.sourceFourth; console.info('result=' + result); console.info('result[0]=' + result[0]); console.info('data[result[0]].text=' + data[Number(result[0])].text); console.info('data[result[0]].children[result[1]].text=' + data[Number(result[0])].children[Number(result[1])].text); this.setData({ reportDate: data[Number(result[0])].text, rgobed_routbed: data[Number(result[0])].children[Number(result[1])].text, reportId: data[Number(result[0])].children[Number(result[1])].reportId, }); this.onPickerDateTimeChange(this.data.reportId); }, //选择列变更时,处理下级数组变更 bindMultiPickerColumnChange: function (e) { var column = e.detail.column; var index = e.detail.value; var array = this.data.arrayFourth; if (column == 0) { array[1] = array[column][index].children; this.setData({ arrayFourth: array }); } else if (column == 1) { //最后一列不处理 } }, drawCircle: function () { // 创建 canvas 上下文 const ctx = wx.createCanvasContext('myCanvas'); // 设置圆环的颜色和样式 ctx.setStrokeStyle('green'); // 圆环的颜色 ctx.setLineWidth(20); // 圆环的宽度 // 绘制外圆 ctx.beginPath(); ctx.arc(80, 80, 50, 0, 2 * Math.PI); // 圆心 (100, 100),半径 100 ctx.stroke(); // 绘制外圆 // 绘制内圆(与外圆同圆心,但半径小20rpx,即80rpx) ctx.beginPath(); ctx.arc(80, 80, 50, 0, 2 * Math.PI); ctx.setFillStyle('white'); // 设置内圆的填充颜色为白色(或者透明,取决于你希望的效果) ctx.fill(); // 填充内圆,这样圆环内部就是白色或透明的了 // 结束绘制并更新 canvas ctx.draw(); }, startInterval: function () { // 使用 setInterval 创建定时任务,每8秒执行一次 this.myMethod 方法 var that = this; this.intervalId = setInterval(() => { console.log(Date.now()); }, 6000); }, clearInterval: function () { // 清除定时任务 if (this.intervalId) { clearInterval(this.intervalId); this.intervalId = null; } }, tvEntityIdsChange: function (e) { var that = this; console.log('this.data.tvEntityIds_tv=' + JSON.stringify(this.data.tvEntityIds)) var selectedOption = this.data.tvEntityIds[e.detail.value]; console.log('selectedOption_tv=' + JSON.stringify(selectedOption)) if (!this.data.tvEntityIds || !selectedOption) { wx.showToast({ title: '请选择需要推送的电视', icon: 'none' }); return; } this.setData({ tvEntityIdsIndex: e.detail.value, tvEntityIdsValue: selectedOption.friendly_name1, }); this.telScreeProjection(selectedOption.entity_id); }, tvEntityIdChange: function (e) { this.telScreeProjection(); }, onPickerChange: function (e) { var that = this; var selectedOption = this.data.sns[e.detail.value]; this.setData({ selectedIndex: e.detail.value, selectedValue: selectedOption.pos, rsn: selectedOption.sn, }); console.log("e.detail.value=" + e.detail.value); console.log("selectedOption=" + JSON.stringify(selectedOption)); this.getData(selectedOption.sn, this.data.hotelcode, this.data.roomcode, null); // this.selectComponent('#mychart-dom-bar00').init((canvas, width, height) => { that.initChartCircle() that.initOutOfBed() that.initBodyMovements() that.initCardiacSystem() that.initChartRespiratory() that.initChartSnoring() that.initChartApnea() that.initTimeWaterfall() // }); // this.selectComponent('#mychart-dom-bar7').init((canvas, width, height) => { // that.initChart7(canvas, width, height, null) // }); // this.selectComponent('#mychart-dom-bar8').init((canvas, width, height) => { // that.initChart8(canvas, width, height, null) // }); // this.selectComponent('#mychart-dom-bar1').init((canvas, width, height) => { // that.initChart1(canvas, width, height, null) // }); // this.selectComponent('#mychart-dom-bar81').init((canvas, width, height) => { // that.initChart81(canvas, width, height, null) // }); // this.selectComponent('#mychart-dom-bar9').init((canvas, width, height) => { // that.initChart9(canvas, width, height, null) // }); // this.selectComponent('#mychart-dom-bar10').init((canvas, width, height) => { // that.initChart10(canvas, width, height, null) // }); // this.selectComponent('#mychart-dom-bar11').init((canvas, width, height) => { // that.initChart11(canvas, width, height, null) // }); }, onPickerDateTimeChange: function (reportId) { var that = this; // var selectedOption = this.data.sns[e.detail.value]; // this.setData({ // selectedIndex: e.detail.value, // selectedValue: selectedOption.pos, // rsn: selectedOption.sn, // }); // console.log("e.detail.value="+e.detail.value); // console.log("selectedOption="+JSON.stringify(selectedOption)); this.getData(that.data.sn, this.data.hotelcode, this.data.roomcode, reportId); // this.selectComponent('#mychart-dom-bar00').init((canvas, width, height) => { that.initChartCircle(reportId) // }); // this.selectComponent('#mychart-dom-bar7').init((canvas, width, height) => { that.initOutOfBed(reportId) that.initBodyMovements(reportId) that.initCardiacSystem(reportId) that.initChartRespiratory(reportId) that.initChartSnoring(reportId) that.initChartApnea(reportId) that.initTimeWaterfall(reportId) // }); // this.selectComponent('#mychart-dom-bar8').init((canvas, width, height) => { // that.initChart8(canvas, width, height, reportId) // }); // this.selectComponent('#mychart-dom-bar1').init((canvas, width, height) => { // that.initChart1(canvas, width, height, reportId) // }); // this.selectComponent('#mychart-dom-bar81').init((canvas, width, height) => { // that.initChart81(canvas, width, height, reportId) // }); // this.selectComponent('#mychart-dom-bar9').init((canvas, width, height) => { // that.initChart9(canvas, width, height, reportId) // }); // this.selectComponent('#mychart-dom-bar10').init((canvas, width, height) => { // that.initChart10(canvas, width, height, reportId) // }); // this.selectComponent('#mychart-dom-bar11').init((canvas, width, height) => { // that.initChart11(canvas, width, height, reportId) // }); }, onButtonTap: function () { // 切换按钮的样式类 this.setData({ isButtonPressed: !this.data.isButtonPressed }); }, dayClick(event) { //日历点击选择日期 var that = this; var clickDate = String(event.detail.year) + addZero(event.detail.month) + addZero(event.detail.day) // that.getTargetData(clickDate) console.log("change date", that.data.target_sleep_list) flushChart(that.data.target_sleep_list) that.setData({ nowDate: [{ month: 'current', day: event.detail.day, color: 'white', background: '#82d5f8' }, { month: 'current', day: new Date().getDate(), color: '#ffd700', background: 'white' }], clickDate: clickDate, ec: { onInit: that.construct_sleep_plot } }) }, getTargetData(date) { var that = this; var sleep_data = wx.getStorageSync("sleep_data") console.log("find date is", date) if (sleep_data || that.data.moke_data) { if (date == "20240414" || date == "20240415") { var parse_sleep_data = that.data.moke_data[date] } else { var parse_sleep_data = JSON.parse(sleep_data)[date] } var sleep_cnt = 0 if (parse_sleep_data) { sleep_cnt = parse_sleep_data.length; } var sleep_time = 0.0; var sleep_desc = ""; var sleep_tj_map = { '早醒': 0, '疲惫': 0, '多梦': 0, '很好': 0 }; var slepp_sugg = ""; var target_sleep_list = []; for (var i in parse_sleep_data) { var fix_sleep_tm = (parse_sleep_data[i].sleepAllTime / 60).toFixed(1); sleep_time += parseFloat(fix_sleep_tm); sleep_tj_map[parse_sleep_data[i].sleepFeedback] += 1 target_sleep_list.push(parseFloat(fix_sleep_tm)) } for (var j in sleep_tj_map) { if (sleep_tj_map[j] > 0) { sleep_desc += j + String(sleep_tj_map[j]) + " 次." } } switch (sleep_cnt) { case 5: slepp_sugg = "继续保持睡前良好状态"; break; case 1: slepp_sugg = "学会释放工作压力"; break; case 2: slepp_sugg = "睡前一小时不要进行有氧运动"; break; case 3: slepp_sugg = "睡前尽量不要摄入高热量餐饮"; break; case 0: slepp_sugg = "还未产生睡眠报告"; break; case 4: slepp_sugg = "做一些助眠工作"; break; } that.setData({ data_dispaly: true, sleep_cnt: sleep_cnt, sleep_time: sleep_time.toFixed(1), sleep_desc: sleep_desc, slepp_sugg: slepp_sugg, target_sleep_list: target_sleep_list, ec0: { onInit: target_sleep_list }, ec: { onInit: target_sleep_list }, ec1: { onInit: target_sleep_list }, ec2: { onInit: target_sleep_list }, ec3: { onInit: target_sleep_list }, ec4: { onInit: target_sleep_list }, }) } }, initChartCircle(reportId) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { // "hotelcode":that.data.hotelcode?that.data.hotelcode:"club", // "roomcode":that.data.hotelcode?that.data.roomcode:"nuange", "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); console.log("res.data=sn=" + JSON.stringify(res.data)); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "rpids": reportId, "token": token_push }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { let rscore_descTemp = []; if (ress.data.results.rscore_desc) { rscore_descTemp = ress.data.results.rscore_desc; } let rscore_valueTemp = []; if (ress.data.results.rscore_value) { rscore_valueTemp = ress.data.results.rscore_value; } that.setData({ rscore_desc: rscore_descTemp, rscore_value: rscore_valueTemp, }); updateChartCircularProgressBarOption(rscore_descTemp, rscore_valueTemp, that); } catch (error) { console.error(error); } // console.log("that.data.rdt_arrNew1,that.data.rrh_arrNew1="+that.data.rdt_arrNew+","+that.data.rrh_arrNew); // console.log(""); } } }); } } catch (error) { console.error(error); } }, }) }, initChart(canvas, width, height) { var that = this; chart = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart); flushChart(that.data.target_sleep_list) }, // 心脏 系统 initCardiacSystem(reportId) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { // "hotelcode":that.data.hotelcode?that.data.hotelcode:"club", // "roomcode":that.data.hotelcode?that.data.roomcode:"nuange", "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); console.log("res.data=sn=" + JSON.stringify(res.data)); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "token": token_push, "rpids": reportId }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { let rdt_arrTemp = []; if (ress.data.results.rrh_arr) { rdt_arrTemp = that.splitN(ress.data.results.rdt_arr.split(","), 100); } if (ress.data.results.rdate) { that.setData({ reportDate: ress.data.results.rdate }); } let rrh_arrTemp = []; if (ress.data.results.rrh_arr) { rrh_arrTemp = that.splitN(ress.data.results.rrh_arr.split(","), 100); } that.setData({ rdt_arrNew: rdt_arrTemp, rrh_arrNew: rrh_arrTemp, }); console.log("that.data.rdt_arrNew,that.data.rrh_arrNew=" + that.data.rdt_arrNew + "," + that.data.rrh_arrNew); updateCardiacSystem(that.data.rdt_arrNew, that.data.rrh_arrNew, that); } catch (error) { console.error(error); } // console.log("that.data.rdt_arrNew1,that.data.rrh_arrNew1="+that.data.rdt_arrNew+","+that.data.rrh_arrNew); // console.log(""); } } }); } } catch (error) { console.error(error); } }, }) }, initChart2(canvas, width, height) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": res.data[0].sn, "token": token_push }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { let durationDataTemp = []; let obj = {}; obj.name = '深睡'; obj.value = ress.data.results.rdeep_duration; durationDataTemp.push(obj); obj = {}; obj.name = '中睡'; obj.value = ress.data.results.rin_duration; durationDataTemp.push(obj); obj = {}; obj.name = '浅睡'; obj.value = ress.data.results.rlight_duration; durationDataTemp.push(obj); obj = {}; obj.name = '清醒'; obj.value = ress.data.results.rawake_duration; durationDataTemp.push(obj); console.log("durationDataTemp=" + JSON.stringify(durationDataTemp)); that.setData({ durationData: durationDataTemp, }); chart2 = echarts.init(canvas, null, { width: width, height: height }); // console.log("plot in ......") canvas.setChart(chart2); flushChart2(that.data.durationData) } catch (error) { console.error(error); } // console.log("that.data.rdt_arrNew1,that.data.rrh_arrNew1="+that.data.rdt_arrNew+","+that.data.rrh_arrNew); // console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initChart3(canvas, width, height) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": res.data[0].sn, "token": token_push }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { let rdt_arrTemp = []; if (ress.data.results.rrh_arr) { rdt_arrTemp = that.splitN(ress.data.results.rdt_arr.split(","), 100); } let rhx_arrTemp = []; if (ress.data.results.rhx_arr) { rhx_arrTemp = that.splitN(ress.data.results.rhx_arr.split(","), 100); } that.setData({ rdt_arrNew: rdt_arrTemp, rhx_arrNew: rhx_arrTemp, }); chart3 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart3); flushChart3(that.data.rdt_arrNew, that.data.rhx_arrNew) } catch (error) { console.error(error); } // console.log("that.data.rdt_arrNew1,that.data.rrh_arrNew1="+that.data.rdt_arrNew+","+that.data.rrh_arrNew); // console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initTimeWaterfall(reportId) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "token": token_push, "rpids": reportId }, method: 'POST', success(ress) { if (ress && ress.data) { try { let rdt_arrTemp = []; if (ress.data.results.rrh_arr) { // rdt_arrTemp = that.splitN(ress.data.results.rdt_arr.split(","), 100); rdt_arrTemp = ress.data.results.rdt_arr.split(","); } // console.log('深浅睡眠11111=======' + JSON.stringify(rdt_arrTemp)); let rsleep_arr_Temp = []; if (ress.data.results.rsleep_arr) { // rsleep_arr_Temp = that.splitN(ress.data.results.rsleep_arr.split(","), 100); rsleep_arr_Temp = ress.data.results.rsleep_arr.split(","); } // console.log('深浅睡眠222222=======' + JSON.stringify(rsleep_arr_Temp)); that.setData({ rdt_arrNew: rdt_arrTemp, rsleep_arr: rsleep_arr_Temp, rdeep_duration: ress.data.results.rdeep_duration, rlight_duration: ress.data.results.rlight_duration, rin_duration: ress.data.results.rin_duration, rawake_duration: ress.data.results.rawake_duration, rdeep_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rdeep_duration), rlight_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rlight_duration), rin_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rin_duration), rawake_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rawake_duration), }); // console.log('ress.data.results.rdeep_duration=' + ress.data.results.rdeep_duration); // console.log('ress.data.results.rlight_duration=' + ress.data.results.rlight_duration); // console.log('ress.data.results.rin_duration=' + ress.data.results.rin_duration); // console.log('ress.data.results.rawake_duration=' + ress.data.results.rawake_duration); that.calculateTheDurationOfDeepSleep(); // updateTimeWaterfall([that.convertTimeToHoursAndMinutes(ress.data.results.rawake_duration, 2), // that.convertTimeToHoursAndMinutes(ress.data.results.rin_duration, 2), // that.convertTimeToHoursAndMinutes(ress.data.results.rlight_duration, 2), // that.convertTimeToHoursAndMinutes(ress.data.results.rdeep_duration, 2)], // [ ress.data.results.rawake_duration || 0, // ress.data.results.rin_duration || 0, // ress.data.results.rlight_duration || 0, // ress.data.results.rdeep_duration || 0, // ], that) } catch (error) { console.error(error); } console.log("that.data.rsleep_arr=" + that.data.rsleep_arr); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initChart4(canvas, width, height) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": res.data[0].sn, "token": token_push }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { let sleep_durationCount = 0; if (ress.data.results.rdeep_duration) { sleep_durationCount += parseFloat(ress.data.results.rdeep_duration) } if (ress.data.results.rlight_duration) { sleep_durationCount += parseFloat(ress.data.results.rlight_duration) } if (ress.data.results.rin_duration) { sleep_durationCount += parseFloat(ress.data.results.rin_duration) } let sleep_durationTemp = []; // let data1 = []; let obj1 = {}; obj1.name = '睡眠时间'; obj1.value = Math.ceil(sleep_durationCount / 60); sleep_durationTemp.push(obj1); // data1.push(obj1); // let data2 = []; obj1 = {}; obj1.name = '清醒时间'; obj1.value = Math.ceil(parseFloat(ress.data.results.rawake_duration) / 60); sleep_durationTemp.push(obj1); // data2.push(obj1); that.setData({ sleep_duration: sleep_durationTemp, }); chart4 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart4); // console.log("that.data.sleep_duration="+JSON.stringify(that.data.sleep_duration)) flushChart4(that.data.sleep_duration) } catch (error) { console.error(error); } console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initChart5(canvas, width, height) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); try { wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": res.data[0].sn, "token": token_push }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { let rdt_arrTemp = []; if (ress.data.results.rrh_arr) { rdt_arrTemp = that.splitN(ress.data.results.rdt_arr.split(","), 100); } let rsleep_arrTemp = []; if (ress.data.results.rsleep_arr) { rsleep_arrTemp = that.splitN(ress.data.results.rsleep_arr.split(","), 100); } that.setData({ rdt_arrNew: rdt_arrTemp, rsleep_arrNew: rsleep_arrTemp, }); chart5 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart5); flushChart5(that.data.rdt_arrNew, that.data.rsleep_arrNew, that) } catch (error) { console.error(error); } console.log("that.data.rdt_arrNew1,that.data.rrh_arrNew1=" + that.data.rdt_arrNew + "," + that.data.rrh_arrNew); console.log(""); } }, }); } catch (error) { console.error(error); } } }, }) }, initChart6(canvas, width, height) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": res.data[0].sn, "token": token_push }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { var rsleep_arr_all_Temp = []; if (ress.data.results.rsleep_arr) { rsleep_arr_all_Temp = ress.data.results.rsleep_arr.split(","); } that.setData({ rdt_arr: that.splitN(ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], 100), rsleep_arr_all: that.splitN(rsleep_arr_all_Temp, 100), rgobed_time: ress.data.results.rgobed_time, routbed_time: ress.data.results.routbed_time, rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, }); chart6 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart6); // var list = that.getRsleep_arr(ress.data.results.rsleep_arr?ress.data.results.rsleep_arr.split(","):[]) flushChart6(that.data.rdt_arr, that.data.rsleep_arr_all, that.data.rgobed_time, that.data.routbed_time, that) } catch (error) { console.error(error); } console.log("that.data.rdt_arrNew1,that.data.rrh_arrNew1=" + that.data.rdt_arrNew + "," + that.data.rrh_arrNew); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initOutOfBed(reportId) {//离床次数 var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "token": token_push, "rpids": reportId || that.data.reportId }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { var routbed_arr_Temp = []; if (ress.data.results.routbed_arr) { routbed_arr_Temp = ress.data.results.routbed_arr.split(","); } that.setData({ // rdt_arr: that.splitN(ress.data.results.rdt_arr?ress.data.results.rdt_arr.split(','):[],100), // routbed_arr: that.splitN(routbed_arr_Temp,100), rdt_arr: ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], routbed_arr: routbed_arr_Temp, rgobed_time: ress.data.results.rgobed_time, routbed_time: ress.data.results.routbed_time, rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, }); updateOutOfBed(that.data.rdt_arr, that.data.routbed_arr, that.data.rgobed_time, that.data.routbed_time, that) } catch (error) { console.error(error); } console.log("that.data.routbed_arr=" + that.data.routbed_arr); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initBodyMovements(reportId) {//体动次数 var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "token": token_push, "rpids": reportId || that.data.reportId }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { var rmove_arr_Temp = []; if (ress.data.results.rmove_arr) { rmove_arr_Temp = ress.data.results.rmove_arr.split(","); } that.setData({ rdt_arr: that.splitN(ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], 100), rmove_arr: that.splitN(rmove_arr_Temp, 100), rgobed_time: ress.data.results.rgobed_time, routbed_time: ress.data.results.routbed_time, rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, }); updateBodyMovements(that.data.rdt_arr, that.data.rmove_arr, that.data.rgobed_time, that.data.routbed_time, that) } catch (error) { console.error(error); } console.log("c8_that.data.rmove_arr=" + that.data.rmove_arr); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initChartRespiratory(reportId) {//平均呼吸率 var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "token": token_push, "rpids": reportId }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { var rhx_arr_Temp = []; if (ress.data.results.rhx_arr) { rhx_arr_Temp = ress.data.results.rhx_arr.split(","); } that.setData({ rdt_arr: that.splitN(ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], 100), rhx_arr: that.splitN(rhx_arr_Temp, 100), rgobed_time: ress.data.results.rgobed_time, routbed_time: ress.data.results.routbed_time, rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, }); updateRespiratory(that.data.rdt_arr, that.data.rhx_arr, that.data.rgobed_time, that.data.routbed_time, that) } catch (error) { console.error(error); } console.log("c81_that.data.ravg_hx_value=" + that.data.ravg_hx_value); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initChartSnoring(reportId) {//打鼾 var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "token": token_push, "rpids": reportId }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { var rsnoring_arr_Temp = []; if (ress.data.results.rsnoring_arr) { rsnoring_arr_Temp = ress.data.results.rsnoring_arr.split(","); } that.setData({ rdt_arr: that.splitN(ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], 100), rsnoring_arr: that.splitN(rsnoring_arr_Temp, 100), rgobed_time: ress.data.results.rgobed_time, routbed_time: ress.data.results.routbed_time, rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, }); updateSnoring(that.data.rdt_arr, that.data.rsnoring_arr, that.data.rgobed_time, that.data.routbed_time, that) } catch (error) { console.error(error); } console.log("c8_that.data.rmove_arr=" + that.data.rmove_arr); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, initChartApnea(reportId) {//呼吸暂停 var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": that.data.rsn ? that.data.rsn : res.data[0].sn, "token": token_push, "rpids": reportId }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { var rhxstop_arr_Temp = []; if (ress.data.results.rhxstop_arr) { rhxstop_arr_Temp = ress.data.results.rhxstop_arr.split(","); } that.setData({ rdt_arr: that.splitN(ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], 100), rhxstop_arr: that.splitN(rhxstop_arr_Temp, 100), rgobed_time: ress.data.results.rgobed_time, routbed_time: ress.data.results.routbed_time, rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, }); updateApnea(that.data.rdt_arr, that.data.rhxstop_arr, that.data.rgobed_time, that.data.routbed_time, that) } catch (error) { console.error(error); } console.log("c8_that.data.rhxstop_arr=" + that.data.rhxstop_arr); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, getRsleep_arr(list) { if (list) { console.log("getRsleep_arr_list1==" + JSON.stringify(list)); for (let i = 0; i < list.length; i++) { if (list[i] == '0') { list[i] = '清醒'; } else if (list[i] == '10') { list[i] = '浅睡'; } else if (list[i] == '20') { list[i] = '中睡'; } else if (list[i] == '30') { list[i] = '深睡'; } else { list[i] = '其他'; } } } console.log("getRsleep_arr_list2==" + JSON.stringify(list)); }, getFrequency(list) {//获取 if (list) { console.log("getRsleep_arr_list1==" + JSON.stringify(list)); for (let i = 0; i < list.length; i++) { if (list[i] == '0') { list[i] = '清醒'; } else if (list[i] == '10') { list[i] = '浅睡'; } else if (list[i] == '20') { list[i] = '中睡'; } else if (list[i] == '30') { list[i] = '深睡'; } else { list[i] = '其他'; } } } console.log("getRsleep_arr_list2==" + JSON.stringify(list)); }, initChart12(canvas, width, height) {//体动次数 var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": that.data.hotelcode ? that.data.hotelcode : "club", "roomcode": that.data.roomcode ? that.data.roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": res.data[0].sn, "token": token_push }, method: 'POST', success(ress) { if (ress && ress.data) { // console.log('ress.data-getsingle='+JSON.stringify(ress.data.results)); try { var rsnoring_arr_Temp = []; if (ress.data.results.rsnoring_arr) { rsnoring_arr_Temp = ress.data.results.rsnoring_arr.split(","); } that.setData({ rdt_arr: that.splitN(ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], 100), rsnoring_arr: that.splitN(rsnoring_arr_Temp, 100), rgobed_time: ress.data.results.rgobed_time, routbed_time: ress.data.results.routbed_time, rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, }); chart9 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart9); // var list = that.getRsleep_arr(ress.data.results.rsleep_arr?ress.data.results.rsleep_arr.split(","):[]) flushChart9(that.data.rdt_arr, that.data.rsnoring_arr, that.data.rgobed_time, that.data.routbed_time, that) } catch (error) { console.error(error); } console.log("c8_that.data.rmove_arr=" + that.data.rmove_arr); console.log(""); } }, }); } } catch (error) { console.error(error); } }, }) }, sleepStateChange(data) { console.log("change-data==" + data) switch (data) { case 0: return '清醒'; case 10: return '浅睡'; case 20: return '中睡'; case 30: return '深睡'; default: return ''; } }, sleepRoutbed_arrChange(data) { console.log("change-data==" + data) switch (data) { case 0: return '离床'; case 1: return '在床'; default: return ''; } }, sleepRmove_arrChange(data) { console.log("change-data==" + data) switch (data) { case 0: return '否'; case 1: return '体动'; default: return ''; } }, sleepRsnoring_arrChange(data) { console.log("change-data==" + data) switch (data) { case 0: return '否'; case 1: return '打鼾'; default: return ''; } }, sleepRhxstop_arrChange(data) { console.log("change-data==" + data) switch (data) { case 0: return '否'; case 1: return '停止'; default: return ''; } }, splitN(originalArray, n) { if (!originalArray) return []; // 计算每份的大小 let chunkSize = Math.ceil(originalArray.length / n); // 分割数组并获取每份的最后一个元素 let lastElements = []; for (let i = 0; i < originalArray.length; i += chunkSize) { let chunk = originalArray.slice(i, i + chunkSize); lastElements.push(chunk[chunk.length - 1]); } // 输出每份的最后一个元素 console.log('lastElements=' + lastElements); return lastElements; }, takePortionDateData(rdt_arrArray, originalArray, n) { if (!rdt_arrArray || !originalArray) return []; var portionDateData = []; var portionData = []; for (let i = 0; i < originalArray.length; i++) { if (originalArray[i] == n) { portionDateData.push(rdt_arrArray[i]); portionData.push(originalArray[i]); } else { } } console.log('portionDateData=' + JSON.stringify(portionDateData)); return portionDateData; }, takePortionData(originalArray, n) { if (!originalArray) return []; var portionData = []; for (let i = 0; i < originalArray.length; i++) { if (originalArray[i] == n) { portionData.push(originalArray[i]) } else { } } console.log('portionData=' + JSON.stringify(portionData)); return portionData; }, getFrequency(list, o) {//获取次数 if (!list) return 0; let frequency = 0; for (let i = 0; i < list.length; i++) { if (list[i] == o) frequency++; } console.log('frequency=' + frequency); return frequency; }, getTimeDiffInHours: function (startTimeStr, endTimeStr) { // 假设两个时间都是同一天的,这里我们使用当前日期作为基准 if (!startTimeStr || !endTimeStr) return null; const now = new Date(); const startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), ...startTimeStr.split(':').map(Number)); const endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), ...endTimeStr.split(':').map(Number)); // 处理跨天的情况 if (endDate < startDate) { endDate.setDate(endDate.getDate() + 1); // 将结束时间设置为第二天的同一时间 } // 计算时间差(毫秒) const diffInMs = endDate - startDate; // 转换为小时 const diffInHours = diffInMs / (1000 * 60 * 60); return diffInHours; }, drawProgressCircle: function () { const ctx = wx.createCanvasContext('progressCircleCanvas'); // 假设屏幕的宽度为 windowWidth px const windowWidth = wx.getSystemInfoSync().windowWidth; // 假设你有一个以 rpx 为单位的值 const valueInRpx = 300; // 计算对应的 px 值 const valueInPx = (valueInRpx / 750) * windowWidth; const radius = 60; // 圆的半径 const centerX = valueInPx; // 圆心的x坐标 const centerY = valueInPx / 2; // 圆心的y坐标 const strokeWidth = 10; // 进度条的宽度 const percentage = this.data.percentage; // 进度百分比 // 绘制外圆 ctx.beginPath(); ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI); ctx.setStrokeStyle('#46ff81'); // 外圆颜色 ctx.setLineWidth(strokeWidth * 2); // 外圆线宽 ctx.stroke(); // 绘制内圆(进度条背景) ctx.beginPath(); ctx.arc(centerX, centerY, radius - strokeWidth, 0, 2 * Math.PI); ctx.setStrokeStyle('#e0e0e0'); // 内圆颜色 ctx.setLineWidth(strokeWidth); // 内圆线宽 ctx.stroke(); // 绘制进度条 ctx.beginPath(); ctx.arc(centerX, centerY, radius - strokeWidth, -0.5 * Math.PI, -0.5 * Math.PI + 2 * Math.PI * (percentage / 100)); ctx.setStrokeStyle('#007aff'); // 进度条颜色 ctx.setLineWidth(strokeWidth); ctx.setLineCap('round'); // 设置线条端点的样式为圆形 ctx.stroke(); // 绘制中心圆点 ctx.beginPath(); ctx.arc(centerX, centerY, 5, 0, 2 * Math.PI); ctx.setFillStyle('#ffffff'); ctx.fill(); // 绘制完成,将内容渲染到canvas中 ctx.draw(); }, // 假设你有一个方法来更新进度条的值 updateProgress: function (newPercentage) { this.setData({ percentage: newPercentage }); this.drawProgressCircle(); // 重新绘制进度条 }, buttonClicked: function () { var that = this; // 切换按钮的点击状态 this.setData({ isButtonClicked: !that.data.isButtonClicked, }); // 在这里可以添加其他点击后的逻辑,比如调用接口等 }, telScreeProjection: function (tvEntityId) { var that = this; that.setData({ isLoading: true, }); wx.request({ url: `${aipushApi}` + '/getbigreport', method: 'POST', header: { 'content-type': 'application/json', // 默认值 'Authorization': 'Bearer ' + token // 在头部设置认证信息,例如使用Bearer Token }, data: { "sn": that.data.rsn, "tokens": token_push }, success(ress) { console.log('wx.getStorageSync(tvEntityId)=' + wx.getStorageSync('tvEntityId')); console.log('tvEntityId=' + JSON.stringify(tvEntityId)); let tvEntityIdss = tvEntityId ? tvEntityId : wx.getStorageSync('tvEntityId') if (ress && ress.data && tvEntityIdss) { console.log("ress.data==" + JSON.stringify(ress.data.url)); console.log("tvEntityIdss==" + tvEntityIdss); wx.request({ // url: `${homeApi_http}`+':'+`${homeApi_http_port}`+'/api/services/media_player/play_media', //http // url: `${homeApi_https}`+'/api/services/media_player/play_media', //https url: `${homeApi_https}` + '/api/services/media_player/select_source', //https method: 'POST', header: { 'content-type': 'application/json', // 默认值 'Authorization': 'Bearer ' + token // 在头部设置认证信息,例如使用Bearer Token }, data: { "entity_id": tvEntityIdss, //     "media_content_id": ress.data.url, // "media_content_id": 'https://alifei01.cfp.cn/creative/vcg/800/new/VCG41175510742.jpg', // "media_content_id": 'https://alifei01.cfp.cn/creative/vcg/veer/1600water/veer-368621010.jpg', //     "media_content_type": "image/jpeg/png", "source": "X浏览器" }, success(res) { that.setData({ isLoading: false, }); if (res && res.data) { var resData = res.data console.log('res-推送=' + JSON.stringify(res)); console.log('res.data-推送=' + JSON.stringify(resData)); wx.showToast({ title: "推送成功", icon: "success", mask: true, }); } else { wx.showToast({ title: '推送失败', icon: 'none' }); } }, fail: function (error) { // 请求失败后的回调函数 console.error('推送失败', error); // 在这里处理请求失败的情况,比如显示错误信息给用户 that.setData({ isLoading: false, }); wx.showToast({ title: '推送失败', icon: 'none' }); } }); } else { that.setData({ isLoading: false, }); wx.showToast({ title: '找不到电视,推送失败', icon: 'none' }); } }, }); }, getData(sn, hotelcode, roomcode, reportId) { var that = this; wx.request({ url: `${aipushApi}` + '/getsn', data: { "hotelcode": hotelcode ? hotelcode : "club", "roomcode": roomcode ? roomcode : "nuange", "token": token_push }, method: 'POST', success(res) { try { // that.setData({ // airText: now.category, //空气质量 // airValue: now.aqi //空气指数 // }) if (res && res.data && res.data[0]) { that.setData({ roomname: res.data[0].rn }); console.log("res.data-sn=" + JSON.stringify(res.data)); wx.request({ url: `${aipushApi}` + '/getsingle', data: { "sn": sn ? sn : res.data[0].sn, "token": token_push, "rpids": reportId }, method: 'POST', success(ress) { try { if (ress && ress.data) { console.log('ress.data-getsingle=' + JSON.stringify(ress.data.results)); // that.setData({ // airText: now.category, //空气质量 // airValue: now.aqi //空气指数 // }) // rdt_arr = ress.data.results.rdt_arr //睡眠时间轴数据集合 // rrh_arr = ress.data.results.rdt_arr//睡眠心率数据集合 // rhx_arr = ress.data.results.rhx_arr//睡眠呼吸数据集合 // rsnoring_arr = ress.data.results.rsnoring_arr//睡眠打鼾数据集合,0-否,1-打鼾状态 // routbed_arr = ress.data.results.routbed_arr//离床状态数据集合,0-离床,1-在床 // rmove_arr = ress.data.results.rmove_arr//体动状态数据集合,0-否,1-体动状态 // rhxstop_arr = ress.data.results.rhxstop_arr//呼吸停止状态数据集合 // rsleep_arr = ress.data.results.rsleep_arr//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡 // rdeep_duration = ress.data.results.rdeep_duration//深睡时长,单位分钟 // rlight_duration = ress.data.results.rlight_duration//浅睡时长,单位分钟 // rin_duration = ress.data.results.rin_duration//中睡时长,单位分钟 // rawake_duration = ress.data.results.rawake_duration//清醒时长,单位分钟 // ravg_hx_value = ress.data.results.ravg_hx_value//呼吸平均值 // ravg_hx_desc = ress.data.results.ravg_hx_desc//呼吸平均值评分描述 // ravg_rh_value = ress.data.results.ravg_rh_value//心率平均值 // ravg_rh_desc = ress.data.results.ravg_rh_desc//心率平均值评分描述 // rscore_value = ress.data.results.rscore_value//睡眠报告得分值 // rscore_desc = ress.data.results.rscore_desc//睡眠报告得分评比描述 // that.setData({ // rdt_arr: ress.data.results.rdt_arr?ress.data.results.rdt_arr.split(','):[], // rrh_arr: ress.data.results.rrh_arr?ress.data.results.rrh_arr.split(','):[], // rhx_arr: ress.data.results.rhx_arr?ress.data.results.rhx_arr.split(','):[], // rsnoring_arr: ress.data.results.rsnoring_arr?ress.data.results.rsnoring_arr.split(','):[], // routbed_arr: ress.data.results.routbed_arr?ress.data.results.routbed_arr.split(','):[], // rmove_arr: ress.data.results.rmove_arr?ress.data.results.rmove_arr.split(','):[], // rhxstop_arr: ress.data.results.rhxstop_arr?ress.data.results.rhxstop_arr.split(','):[], // rsleep_arr: ress.data.results.rsleep_arr?ress.data.results.rsleep_arr.split(','):[], // rdeep_duration: ress.data.results.rdeep_duration, // rlight_duration: ress.data.results.rlight_duration, // rin_duration: ress.data.results.rin_duration, // rawake_duration: ress.data.results.rawake_duration, // ravg_hx_value: ress.data.results.ravg_hx_value, // ravg_hx_desc: ress.data.results.ravg_hx_desc, // ravg_rh_value: ress.data.results.ravg_rh_value, // ravg_rh_desc: ress.data.results.ravg_rh_desc, // rscore_value: ress.data.results.rscore_value, // rscore_desc: ress.data.results.rscore_desc, // rsn: ress.data.results.rsn, // rdate: ress.data.results.rdate, // rtotal_duration: ress.data.results.rtotal_duration,//睡眠总时长,单位分钟 // rinbed_duration: ress.data.results.rinbed_duration,//在床时长,单位分钟 // rgobed_time: ress.data.results.rgobed_time,//上床时间 // routbed_time: ress.data.results.routbed_time,//离床时间 // routbed_count_value: ress.data.results.routbed_count_value,//离床次数 // rsn: ress.data.results.rsn, // }); let durationDataTemp = []; let obj = {}; obj.name = '深睡'; obj.value = ress.data.results.rdeep_duration; durationDataTemp.push(obj); obj = {}; obj.name = '浅睡'; obj.value = ress.data.results.rlight_duration; durationDataTemp.push(obj); obj = {}; obj.name = '中睡'; obj.value = ress.data.results.rin_duration; durationDataTemp.push(obj); obj = {}; obj.name = '清醒'; obj.value = ress.data.results.rawake_duration; durationDataTemp.push(obj); console.log("durationDataTemp=" + JSON.stringify(durationDataTemp)); let sleep_durationCount = 0; if (ress.data.results.rdeep_duration) { sleep_durationCount += parseFloat(ress.data.results.rdeep_duration) } if (ress.data.results.rlight_duration) { sleep_durationCount += parseFloat(ress.data.results.rlight_duration) } if (ress.data.results.rin_duration) { sleep_durationCount += parseFloat(ress.data.results.rin_duration) } let sleep_efficiency_temp = ress.data.results.rtotal_duration ? (Math.ceil((sleep_durationCount / ress.data.results.rtotal_duration) * 100) + '%') : '%' let rdeep_duration_efficiency_temp = ress.data.results.rtotal_duration ? (Math.ceil(((ress.data.results.rdeep_duration ? parseFloat(ress.data.results.rdeep_duration) : 0) / ress.data.results.rtotal_duration) * 100) + '%') : '%' let rlight_duration_efficiency_temp = ress.data.results.rtotal_duration ? (Math.ceil(((ress.data.results.rlight_duration ? parseFloat(ress.data.results.rlight_duration) : 0) / ress.data.results.rtotal_duration) * 100) + '%') : '%' let rin_duration_efficiency_temp = ress.data.results.rtotal_duration ? (Math.ceil(((ress.data.results.rin_duration ? parseFloat(ress.data.results.rin_duration) : 0) / ress.data.results.rtotal_duration) * 100) + '%') : '%' let rawake_duration_efficiency_temp = ress.data.results.rtotal_duration ? (Math.ceil(((ress.data.results.rawake_duration ? parseFloat(ress.data.results.rawake_duration) : 0) / ress.data.results.rtotal_duration) * 100) + '%') : '%' let sleep_durationTemp = []; let obj1 = {}; obj1.name = '睡眠时间'; obj1.value = Math.ceil(sleep_durationCount / 60); sleep_durationTemp.push(obj1); obj1 = {}; obj1.name = '清醒时间'; obj1.value = Math.ceil(parseFloat(ress.data.results.rawake_duration) / 60); sleep_durationTemp.push(obj1); let zdPointTemp = []; let rdt_arrTemp = []; let rrh_arrTemp = []; let rhx_arrTemp = []; let rmove_arrTemp = []; let rsleep_arrTemp = []; let rsleep_arr_all_Temp = []; if (ress.data.results.rrh_arr) { rdt_arrTemp = that.splitN(ress.data.results.rdt_arr.split(","), 100); } if (ress.data.results.rrh_arr) { rrh_arrTemp = that.splitN(ress.data.results.rrh_arr.split(","), 100); } if (ress.data.results.rhx_arr) { rhx_arrTemp = that.splitN(ress.data.results.rhx_arr.split(","), 100); } if (ress.data.results.rmove_arr) { rmove_arrTemp = that.splitN(ress.data.results.rmove_arr.split(","), 100); } if (ress.data.results.rsleep_arr) { rsleep_arrTemp = that.splitN(ress.data.results.rsleep_arr.split(","), 100); } if (ress.data.results.rsleep_arr) { rsleep_arr_all_Temp = ress.data.results.rsleep_arr.split(","); } console.log("rdt_arrTemp=" + JSON.stringify(rdt_arrTemp)); console.log("rrh_arrTemp=" + JSON.stringify(rrh_arrTemp)); console.log("rhx_arrTemp=" + JSON.stringify(rhx_arrTemp)); console.log("rmove_arrTemp=" + JSON.stringify(rmove_arrTemp)); console.log("rsleep_arrTemp=" + JSON.stringify(rsleep_arrTemp)); console.log("rsleep_arr_all_Temp=" + JSON.stringify(rsleep_arr_all_Temp)); console.log("sleep_durationTemp=" + JSON.stringify(sleep_durationTemp)); that.setData({ rdt_arr: ress.data.results.rdt_arr ? ress.data.results.rdt_arr.split(',') : [], rrh_arr: ress.data.results.rrh_arr ? ress.data.results.rrh_arr.split(',') : [], rhx_arr: ress.data.results.rhx_arr ? ress.data.results.rhx_arr.split(',') : [], rsnoring_arr: ress.data.results.rsnoring_arr ? ress.data.results.rsnoring_arr.split(',') : [], routbed_arr: ress.data.results.routbed_arr ? ress.data.results.routbed_arr.split(',') : [], rmove_arr: ress.data.results.rmove_arr ? ress.data.results.rmove_arr.split(',') : [], rhxstop_arr: ress.data.results.rhxstop_arr ? ress.data.results.rhxstop_arr.split(',') : [], rsleep_arr: ress.data.results.rsleep_arr ? ress.data.results.rsleep_arr.split(',') : [],//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡 rsnoring_arrFrequency: that.getFrequency(ress.data.results.rsnoring_arr ? ress.data.results.rsnoring_arr.split(',') : [], 1), routbed_arrFrequency: that.getFrequency(ress.data.results.routbed_arr ? ress.data.results.routbed_arr.split(',') : [], 0), rmove_arrFrequency: that.getFrequency(ress.data.results.rmove_arr ? ress.data.results.rmove_arr.split(',') : [], 1), rhxstop_arrFrequency: that.getFrequency(ress.data.results.rhxstop_arr ? ress.data.results.rhxstop_arr.split(',') : [], 1), rdeep_durationFormatA: that.convertTimeToHoursAndMinutes(ress.data.results.rdeep_duration), rlight_duration: ress.data.results.rlight_duration, rin_duration: ress.data.results.rin_duration, rawake_duration: ress.data.results.rawake_duration, ravg_hx_value: ress.data.results.ravg_hx_value, ravg_hx_desc: ress.data.results.ravg_hx_desc, ravg_rh_value: ress.data.results.ravg_rh_value, ravg_rh_desc: ress.data.results.ravg_rh_desc, rscore_value: ress.data.results.rscore_value, rscore_desc: ress.data.results.rscore_desc, rsn: ress.data.results.rsn, rdate: ress.data.results.rdate, total_duration: ress.data.results.rtotal_duration, rtotal_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rtotal_duration),//睡眠总时长,单位小时分钟 rinbed_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rinbed_duration),//在床时长,单位小时分钟 rgobed_time: ress.data.results.rgobed_time,//上床时间 routbed_time: ress.data.results.routbed_time,//离床时间 rgobed_routbed: ress.data.results.rgobed_time + '~' + ress.data.results.routbed_time, sleepHourSub: that.getTimeDiffInHours(ress.data.results.rgobed_time, ress.data.results.routbed_time), routbed_count_value: ress.data.results.routbed_count_value,//离床次数 rsn: ress.data.results.rsn, zdPointT: zdPointTemp, rdt_arrNew: rdt_arrTemp, rrh_arrNew: rrh_arrTemp, rhx_arrNew: rhx_arrTemp, rmove_arrNew: rmove_arrTemp, rsleep_arrNew: rsleep_arrTemp, rsleep_arr_all_New: rsleep_arr_all_Temp, durationData: durationDataTemp, sleep_duration: sleep_durationTemp, sleep_efficiency: sleep_efficiency_temp, sleep_durationCountA: that.convertTimeToHoursAndMinutes(sleep_durationCount ? sleep_durationCount.toString() : '0'), sns: res.data, tvEntityIds: wx.getStorageSync('tvEntityIds'), ifOneMoreTV: (wx.getStorageSync('tvEntityIds') && wx.getStorageSync('tvEntityIds').length > 1), hotelname: res.data[0].hn, rdeep_duration_efficiency: rdeep_duration_efficiency_temp, rlight_duration_efficiency: rlight_duration_efficiency_temp, rin_duration_efficiency: rin_duration_efficiency_temp, rawake_duration_efficiency: rawake_duration_efficiency_temp, pushReportId: ress.data.results.rdid, rrs_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rrs_duration ? ress.data.results.rrs_duration.toString() : '0'), routbed_count_value: ress.data.results.routbed_count_value, rsleep_eff_value: ress.data.results.rsleep_eff_value, }); that.getDateTimeJsonData(sn ? sn : res.data[0].sn); // resolve(ress.data); // 请求成功,使用 resolve 返回数据 console.log('ress.data.results-' + ress.data.results) if (!ress.data.results || ress.data.results == '') { wx.showModal({ title: '提示', content: '无数据', showCancel: false }); return; } } else { wx.showModal({ title: '提示', content: '无数据', showCancel: false }); } } catch (error) { console.error(error); } console.log("that.data.rdt_arrNew1,that.data.rrh_arrNew1=" + that.data.rdt_arrNew + "," + that.data.rrh_arrNew); console.log(""); }, fail: function (error) { wx.showToast({ title: "无数据", icon: "error", mask: true, }); } }); } // that.startInterval(); } catch (error) { console.error(error); } }, }); wx.request({ url: `${aipushApi}/getha`, // method: 'POST', // header: { // 'content-type': 'application/json', // 默认值 // 'Authorization': 'Bearer ' + token // 在头部设置认证信息,例如使用Bearer Token // }, data: { "locations": hotelcode, "room": (hotelcode && hotelcode.includes('hotel')) ? roomcode : "", "token": token_push }, success(res) { if (!res || !res.data) { that.setData({ isLoading: false, }); return; } var resData = res.data console.log('res.data.睡眠报告.ha=' + JSON.stringify(resData)); if (res.data.code == "400") { console.error("400错误!"); return; } if (res.data.code == "401") { console.error("401错误!"); return; } homeApi_https = resData.loc; token = resData.token; }, fail: function (error) { console.error('error', error); that.setData({ isLoading: false, }); } }); }, convertTimeToHoursAndMinutes: function (timeWithText, flag = 0) { if (!timeWithText) return; // 移除'分钟'两个字 var minutesStr = timeWithText.replace('分钟', ''); var minutes = parseInt(minutesStr); // 将字符串转换为整数 if (isNaN(minutes)) { // 如果转换失败,则可能是输入的不是有效的数字 console.error('Invalid minutes format'); return; } var hours = Math.floor(minutes / 60); // 整除60得到小时数 var remainingMinutes = minutes % 60; // 取余得到剩余的分钟数 // 如果小时数或分钟数小于10,前面补0 // var formattedHours = hours < 10 ? '0' + hours : hours; var formattedHours = hours; // var formattedMinutes = remainingMinutes < 10 ? '0' + remainingMinutes : remainingMinutes; var formattedMinutes = remainingMinutes; // 拼接小时和分钟,形成HH:mm格式 var formattedTime = ''; if (flag == 1) { formattedTime = formattedHours + 'H ' + formattedMinutes + 'M'; } else if (flag == 2) { formattedTime = formattedHours + '{units|小时}' + formattedMinutes + '{units|分钟}'; } else { formattedTime = { formattedHours, formattedMinutes }; } // 更新数据 // this.setData({ // formattedTime: formattedTime // }); return formattedTime; }, getDateTimeJsonData: function (sn) { var that = this; var sourceFourthTemp = []; wx.request({ url: `${aipushApi}/getdatefromsn`, // method: 'POST', // header: { // 'content-type': 'application/json', // 默认值 // 'Authorization': 'Bearer ' + token // 在头部设置认证信息,例如使用Bearer Token // }, data: { "sn": sn, "token": token_push }, success(res) { if (!res || !res.data || !res.data.results) { return; } var resDataSn = res.data.results // console.log('resDataSn====' + JSON.stringify(resDataSn)) var tt = 0; resDataSn.forEach(function (item, index) { wx.request({ url: `${aipushApi}/getimefromsn`, // method: 'POST', // header: { // 'content-type': 'application/json', // 默认值 // 'Authorization': 'Bearer ' + token // 在头部设置认证信息,例如使用Bearer Token // }, data: { "sn": sn, "date": item.rdate, "token": token_push }, success(ress) { if (!ress || !ress.data || !ress.data.results) { return; } var resDataItem = ress.data.results; resDataItem.forEach(function (item_item, index) { item_item.text = item_item.durations; item_item.reportId = item_item.rpids; }); var json = {}; json.text = item.rdate; json.children = resDataItem; sourceFourthTemp.push(json); // console.log('sourceFourthTemp0=' + JSON.stringify(sourceFourthTemp)); if (tt == (resDataSn.length - 1)) { // console.log('sourceFourthTemp=' + JSON.stringify(sourceFourthTemp)); // 使用 sort 方法进行排序 sourceFourthTemp.sort(function (a, b) { // 将字符串转换为 Date 对象 let dateA = new Date(a.text); let dateB = new Date(b.text); if (dateA < dateB) { return 1; } if (dateA > dateB) { return -1; } // 如果日期相等,返回 0 return 0; }); // console.log('sourceFourthTemp1=' + JSON.stringify(sourceFourthTemp)); //初始化弹出面板 var array = that.data.arrayFourth; array[0] = sourceFourthTemp; array[1] = array[0][0].children; that.setData({ valueFourth: [0, 0], sourceFourth: sourceFourthTemp, arrayFourth: array, }) tt = 0; } tt++ }, fail: function (error) { console.error('error', error); } }); }); }, fail: function (error) { console.error('error', error); }, complete: function (e) { } }); }, // 在全局或者组件中定义函数 fontSize: function (res) { const clientWidth = wx.getSystemInfoSync().windowWidth; // 获取屏幕宽度 if (!clientWidth) return; let fontSize = clientWidth / 1920; // 假设以1920为基准宽度 return res * fontSize; }, calculateTheDurationOfDeepSleep() { var that = this; // var totalDuration = this.data.total_duration; // var timePeriod = this.data.rdt_arrNew; var sleepData = this.data.rsleep_arr;//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡 // console.log("睡眠总时长=>", totalDuration); // console.log("睡眠时间片段=>", timePeriod); // console.log("睡眠时间片段=>", timePeriod.length); // console.log("睡眠数据=>", sleepData); // console.log("睡眠数据=>", sleepData.length); var awakeColor = [{ offset: 0, color: '#F7E3BA' }, { offset: 1, color: '#F7E3BA' }];; var lightSleepColor = [{ offset: 0, color: '#AAD09F' }, { offset: 1, color: '#AAD09F' }]; var sleptInColor = [{ offset: 0, color: '#75BDE0' }, { offset: 1, color: '#75BDE0' }]; var deepSleepColor = [{ offset: 0, color: '#3D7299' }, { offset: 1, color: '#3D7299' }]; // var linearGradient = new echarts.graphic.LinearGradient( // 0, 0, 0, 1, // 方向从左到右 // [ // { offset: 0, color: '#FDBE25' }, // 渐变开始的颜色 // { offset: 1, color: '#FD7778' } // 渐变结束的颜色 // ] // ); // var item = { // name: { name: '清醒', color: '#7b9ce1' }, // value: [index, baseTime, (baseTime += duration), duration], // itemStyle: { // normal: { // color: linearGradient, // } // } // }; // var sleepData = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "0", "0", "0", "0", "0", "0", "0", "0", "0", "10", "10", "10", "10", "10", "10", "10", "20", "20", "20", "20", "20", "20", "20", "20", "30", "30", "30", "30", "30", "30", "30", "30", "30"];//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡 // 状态映射 const statusMap = { "0": "清醒", "10": "浅睡", "20": "中睡", "30": "深睡" }; // 状态映射 const statusColorMap = { "20": awakeColor, "0": lightSleepColor, "10": sleptInColor, "30": deepSleepColor }; // 状态映射 const statusIndexMap = { "20": 3, "0": 2, "10": 1, "30": 0 }; // 初始化变量 reportDate // let dateString = '2024/09/14 23:20:00'; let dateString = `${that.data.reportDate.replaceAll("-", "/")} ${that.data.rgobed_time + ":00"}`; let date = new Date(dateString); let startTime = date.getTime(); // 基准时间,这里设为午夜开始 console.log("时间=》", timestampToHHMM(startTime)); let currentTime = startTime; let currentState = sleepData[0]; let timePeriods = []; // 遍历睡眠数据数组 for (let i = 0; i < sleepData.length; i++) { // 如果当前状态与前一个状态不同,则记录前一个时间段 if (i > 0 && sleepData[i] !== sleepData[i - 1]) { // 计算前一个时间段的结束时间(注意这里不需要减去一分钟,因为 currentTime 还未递增) let endTime = currentTime; // 计算前一个时间段的持续时间(分钟) let duration = Math.floor((endTime - startTime) / (1000 * 60)); // 记录时间段 if (duration > 0) { var linearGradient = new echarts.graphic.LinearGradient( 0, 0, 0, 1, // 方向从左到右 statusColorMap[sleepData[i - 1]] ); timePeriods.push({ name: statusMap[sleepData[i - 1]],// 使用前一个状态 value: [statusIndexMap[sleepData[i - 1]], startTime, endTime, duration], itemStyle: { normal: { color: linearGradient, } }, // startTime: new Date(startTime), // 转换为 Date 对象以便更易于阅读 // endTime: new Date(endTime), // durationMinutes: duration }); } // 更新当前状态和开始时间 currentState = sleepData[i]; startTime = currentTime; } // 递增时间(每分钟) currentTime += 1000 * 60; // 处理最后一个时间段(如果数组不是以状态变化结束的话) if (i === sleepData.length - 1) { let endTime = currentTime; let duration = Math.floor((endTime - startTime) / (1000 * 60)); if (duration > 0) { var linearGradient = new echarts.graphic.LinearGradient( 0, 0, 0, 1, // 方向从左到右 statusColorMap[currentState] ); timePeriods.push({ name: statusMap[currentState],// 使用前一个状态 value: [statusIndexMap[currentState], startTime, endTime, duration], itemStyle: { normal: { color: linearGradient, } }, // startTime: new Date(startTime), // 转换为 Date 对象以便更易于阅读 // endTime: new Date(endTime), // durationMinutes: duration }); } } } updateTimeWaterfall(startTime, timePeriods, that) // console.log("睡眠数据最终=>", dateString); // console.log("睡眠数据最终=>", startTime); console.log("睡眠数据最终=>", JSON.stringify(timePeriods)); }, onReady() { var that = this; that.initChartCircle(); that.initOutOfBed(); that.initBodyMovements(); that.initCardiacSystem(); that.initChartRespiratory(); that.initChartSnoring(); that.initChartApnea(); that.initTimeWaterfall(); }, /** * 生命周期函数--监听页面加载 */ onShow: function (options) { const app = getApp(); app.globalData.selectedTabIndex = 2; this.getTabBar().setData({ selected: 2 }) var that = this; console.log("that.data.month + 1", that.data.month + 1) var clickDate = String(that.data.year) + String(that.data.month) + String(that.data.date) clickDate = String(parseInt(clickDate) + 100) // that.getTargetData(clickDate) that.setData({ clickDate: clickDate, }); }, onLoad(option) { var that = this; console.log("data页面"); // wx.clearStorage(); console.log('option.res=' + JSON.stringify(wx.getStorageSync('res'))); if (!wx.getStorageSync('res') || !wx.getStorageSync('res').result) { wx.showModal({ title: '提示', content: '请先扫描房间二维码', showCancel: false }); setTimeout(function () { wx.reLaunch({ url: '/pages/scan/scan', }) }, 2000) // 设置延时时间,单位为毫秒 } else if (wx.getStorageSync('res').result.split('|').length != 2) { wx.showModal({ title: '提示', content: '房间二维码不正确,请重新扫码', showCancel: false }); setTimeout(function () { wx.reLaunch({ url: '/pages/scan/scan', }) }, 2000) // 设置延时时间,单位为毫秒 } else { // const expiresAt = wx.getStorageSync('scanResultExpiresAt'); // const now = Date.now() // if (expiresAt || expiresAt < now) { // // 扫码结果已过期 // wx.showToast({ // title: '扫码结果失效或已过期,请重新扫码', // icon: 'none' // }); // // 清除过期的扫码结果 // wx.removeStorageSync('scanResultExpiresAt'); // setTimeout(function() { // wx.reLaunch({ // url: '/pages/scan/scan', // }) // }, 2000) // 设置延时时间,单位为毫秒 // }else{ // //续期 // wx.setStorageSync('scanResultExpiresAt', Date.now() + 2 * 60 * 60 * 1000) // } let hotelcodeTemp = ''; let roomcodeTemp = ''; hotelcodeTemp = wx.getStorageSync('res').result.split('|')[0]; roomcodeTemp = wx.getStorageSync('res').result.split('|')[1]; this.getData(null, hotelcodeTemp, roomcodeTemp, null); // const result = await this.getData(); // console.log('result='+JSON.stringify(result)); this.drawProgressCircle(); // 获取系统信息 const systemInfo = wx.getSystemInfoSync(); const windowWidth = systemInfo.windowWidth; // 窗口宽度 // 计算canvas的宽度和高度 const canvasWidth = windowWidth; // 可以根据需求调整canvas的宽度 const canvasHeight = windowWidth * 0.5; // 假设高度是宽度的一半,可以根据需求调整 // var now = new Date(); // 创建一个Date对象,表示当前的日期和时间 // var year = now.getFullYear(); // 获取年份 // var month = now.getMonth() + 1; // 获取月份(注意月份是从0开始的,所以需要+1) // var date = now.getDate(); // 获取日期 // var hours = now.getHours(); // 获取小时 // var minutes = now.getMinutes(); // 获取分钟 // var seconds = now.getSeconds(); // 获取秒 // month = month < 10 ? '0' + month : month; // date = date < 10 ? '0' + date : date; // hours = hours < 10 ? '0' + hours : hours; // minutes = minutes < 10 ? '0' + minutes : minutes; // seconds = seconds < 10 ? '0' + seconds : seconds; // // 拼接日期和时间字符串 // var currentDateTime = year + '-' + month + '-' + date + ' ' + hours + ':' + minutes + ':' + seconds; // console.log(currentDateTime); // var currentDate = year + '-' + month + '-' + date; // var currentTime = hours + ':' + minutes + ':' + seconds; // this.selectComponent('#mychart-dom-bar00').init((canvas, width, height) => { // that.initChart00(canvas, width, height) // }); // 设置canvas的宽高 this.setData({ // currentDate: currentDate, // currentTime: currentTime, canvasWidth: canvasWidth, canvasHeight: canvasHeight, hotelcode: hotelcodeTemp, roomcode: roomcodeTemp, // roomname: wx.getStorageSync('roomname'), // arrayFourth: array, }); } // else if(!this.data.home_room.includes(wx.getStorageSync('res').result)){ // wx.showModal({ // title: '提示', // content: '房间二维码不正确,请重新扫描', // showCancel: false // }); // setTimeout(function() { // wx.reLaunch({ // url: '/pages/scan/scan', // }) // }, 2000) // 设置延时时间,单位为毫秒 // } // else if(this.data.home_room.includes(wx.getStorageSync('res').result) && wx.getStorageSync('res').result.includes('辰悦颐养斋')){ // else if(wx.getStorageSync('res').result.includes('辰悦颐养斋')){ // homeApi = "http://zhh.aidsleep.cn"; // homeApi_http = "http://zhh.aidsleep.cn"; // homeApi_http_port = "9123"; // homeApi_https = "https://zhh.aidsleep.cn"; // } this.drawCircle(); }, mounted() { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { // wx.clearStorage(); // this.clearInterval(); }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { // wx.clearStorage(); // this.clearInterval(); }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })