import * as echarts from '../../ec-canvas/echarts'; let chart000; let chart00; let chart0; let chart; let chart1; let chart2; let chart3; let chart4; let chart5; let chart6; let chart7; let chart8; let chart81; let chart9; let chart10; let chart11; // pages/data/data.js function addZero(str) { if (String(str).length == 1) { return "0" + String(str); } else { return String(str); } } function flushChart000() { var option = { series: [ { type: 'pie', radius: ['60%', '70%'], // 外环半径和内环半径,控制圆环宽度 data: [ { value: 0, name: '暂无', itemStyle: {color: '#eaeaea'} }, // 进度数据 { value: 100, name: '暂无', itemStyle: {color: '#eaeaea'} } // 剩余数据,用于形成完整的圆环 ], label: { show: true, position: 'center', // formatter: function (params) { // // 这里假设进度数据在第一个数据项中 // if (params.dataIndex === 0) { // // return `第一行文字\n${params.percent.toFixed(2)}% 第二行文字`; // return ''+rscore_desc+''+'\n '+ // ''+rscore_value+''; // } // return ''; // 其他数据项不显示标签 // }, rich: { // ... 如果需要设置富文本样式,可以在这里定义 }, textStyle: { // 设置标签文本样式 fontSize: 16, // 根据需要调整字体大小 color: '#333', // 根据需要调整字体颜色 // ... 其他样式设置 }, alignTo: 'labelLine', // 文本水平居中到标签线 align: 'center' // 文本垂直居中对齐到标签线 }, label: { show: true, position: 'center', // formatter: function (params) { // // 假设 params.percent 是进度百分比 // return `{normal|`+rscore_desc+`}\n\n{bold|`+rscore_value+`}`; // }, rich: { bold: { fontWeight: 'bold', // 加粗 fontSize: 18, // 字体大小,根据需要调整 color: '#333' // 字体颜色,根据需要调整 // 其他样式配置... }, normal: { fontWeight: 'normal', // 普通字体 fontSize: 14, // 字体大小,根据需要调整 color: '#666' // 字体颜色,根据需要调整 // 其他样式配置... } // 可以继续定义其他样式... }, // 其他 label 配置... } // ... 其他配置项 } ] }; chart000.setOption(option, true); } function flushChart00(rscore_desc,rscore_value,that) { var option = { backgroundColor: 'white', series: [ { type: 'pie', radius: ['60%', '70%'], // 外环半径和内环半径,控制圆环宽度 data: [ // { value: rscore_value?rscore_value:0, name: '进度', itemStyle: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#874bff'}, {offset: 0.6, color: '#a87cff'},{offset: 0.9, color: '#f19cff'},{offset: 1, color: '#ff55ff'}])} }, // 进度数据 { value: rscore_value?rscore_value:0, name: '进度', itemStyle: {color: '#874bff'} }, { value: 100-(rscore_value?rscore_value:0), name: '剩余', itemStyle: {color: '#eaeaea'} } // 剩余数据,用于形成完整的圆环 ], label: { show: true, position: 'center', formatter: function (params) { // 这里假设进度数据在第一个数据项中 if (params.dataIndex === 0) { // return `第一行文字\n${params.percent.toFixed(2)}% 第二行文字`; return ''+rscore_desc+''+'\n '+ ''+rscore_value+''; } return ''; // 其他数据项不显示标签 }, rich: { // ... 如果需要设置富文本样式,可以在这里定义 }, textStyle: { // 设置标签文本样式 fontSize: 16, // 根据需要调整字体大小 color: '#333', // 根据需要调整字体颜色 // ... 其他样式设置 }, alignTo: 'labelLine', // 文本水平居中到标签线 align: 'center' // 文本垂直居中对齐到标签线 }, label: { show: true, position: 'center', formatter: function (params) { // 假设 params.percent 是进度百分比 return `{normal|`+rscore_desc+`}\n\n{bold|`+rscore_value+`}`; }, rich: { bold: { fontWeight: 'bold', // 加粗 fontSize: 18, // 字体大小,根据需要调整 color: '#333' // 字体颜色,根据需要调整 // 其他样式配置... }, normal: { fontWeight: 'normal', // 普通字体 fontSize: 14, // 字体大小,根据需要调整 color: '#666' // 字体颜色,根据需要调整 // 其他样式配置... } // 可以继续定义其他样式... }, // 其他 label 配置... } // ... 其他配置项 } ] }; that.setData({ flushChart00Flag:true }); console.log('that.data.flushChart00Flag='+that.data.flushChart00Flag); chart00.setOption(option, true); } 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 flushChart1(data1,data2) { var option = { // title: { // text: '睡眠心率监测', // left: 'center', // textStyle: { // color: '#ffffff', // 字体颜色 // fontStyle: 'normal', // 字体风格 // // fontWeight: 'bold', // 字体粗细 // fontFamily: 'sans-serif', // 字体族 // fontSize: 18 // 字体大小 // }, // backgroundColor: '#57f7ff' // }, 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', }, splitLine: { show: false ,// 不显示纵坐标轴的刻度线 lineStyle: { color: 'rgba(255, 0, 255, 0.8)', // 灰色并调整透明度 width: 1, // 刻度线宽度 type: 'solid' // 刻度线类型,默认为实线 } }, }, series: [{ type: 'line', data: data2?data2:[], // lineStyle: { // color: 'rgba(255, 85, 127, 0.1)' // 奶白色,80% 透明度 // }, showSymbol: false, // 是否显示标记图形 smooth: true, // 使折线平滑 markPoint: { symbol: 'circle', // 标记的符号为圆圈 symbolSize: 10, // 标记的大小 itemStyle: { color: 'rgba(255, 0, 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(255, 0, 255, 0.8)'}, // 使用之前定义的渐变 {offset: 0.9, color: 'rgba(255, 255, 255, 1)'} // 可选,结束颜色 ] ), opacity: 0.3 // 区域的不透明度,可以根据需要调整 }, }] }; chart1.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 flushChart7(data1,data2,startSleepTime,endSleepTime,that) { data1 = (!data1 || data1.length === 0)?['']:data1; data2 = (!data2 || data2.length === 0)?['']:data2; var option = { // backgroundColor: rgba(168, 115, 182, 0.5), // 设置背景色 tooltip: {}, xAxis: { axisLabel: { color: '#a5a5a5' ,// 设置 x 轴标签颜色为白色 fontSize: 12, // interval: 0, // 设置为0表示全部显示,设置为非零值表示间隔显示 // rotate: 45, // 旋转45度 }, splitLine: { show: false, // 是否显示刻度线 }, axisTick: { // 不显示Y轴刻度线 show: false }, data: data1, axisLine: { // 不显示X轴轴线 show: false } }, yAxis: { // Y 轴配置 type: 'value', // inverse: true,// 设置 Y 轴逆序 // 设置 Y 轴名称 name: '离床次数', // 设置 Y 轴名称的位置 nameLocation: 'end', // 可以是 'start'、'middle' 或 'end' axisLine: { // 不显示Y轴轴线 show: false, }, axisLabel: { color: '#000', show: true, fontSize: 12, formatter: function (value) { if(value == 0){ return '离床'; }else if(value == 1){ return '在床'; }else{ return ''; } } }, axisTick: { // 不显示Y轴刻度线 show: false }, splitLine: { show: false ,// 不显示纵坐标轴的刻度线 lineStyle: { color: 'rgba(222, 222, 222, 0.1)', // 灰色并调整透明度 width: 1, // 刻度线宽度 type: 'solid' // 刻度线类型,默认为实线 } }, }, series: [{ type: 'line', data: data2, smooth: true, // 使折线平滑 markPoint: { symbol: 'circle', // 标记的符号为圆圈 symbolSize: 10, // 标记的大小 itemStyle: { color: 'rgba(85, 255, 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(85, 255, 127, 0.8)'}, // 使用之前定义的渐变 {offset: 0.9, color: 'rgba(255, 255, 255, 1)'} // 可选,结束颜色 ] ), opacity: 0.3 // 区域的不透明度,可以根据需要调整 }, lineStyle: { color: 'rgba(85, 255, 127, 0.8)' // 奶白色,80% 透明度 }, showSymbol: false // 是否显示标记图形 } ], // graphic: { // type: 'rect', // left: 'center', // 相对于容器左侧的距离 // top: 'bottom', // 相对于容器上侧的距离 // width: 'auto', // 宽度自适应 // height: '10', // 设置你想要的渐变高度 // shape: { // // 可以通过 shape 来调整矩形的形状以适应你的需求 // }, // style: { // fill: { // type: 'linear', // x: 0, // y: 0, // x2: 0, // y2: 1, // colorStops: [{ // offset: 0, color: 'rgba(0,0,0,0)' // 开始颜色,透明 // }, { // offset: 1, color: 'rgba(255,0,0,0.3)' // 结束颜色,半透明红色 // }], // global: false // 缺省为 false // }, // // 其他样式配置 // }, // z: -1 // 设置层级,确保在折线图下方 // } // 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' // 文本垂直对齐方式 // } // }], }; chart7.setOption(option, true); } function flushChart8(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.sleepRmove_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, 255, 255, 0.8)' // 奶白色,80% 透明度 }, showSymbol: false, // 是否显示标记图形 smooth: true, // 使折线平滑 markPoint: { symbol: 'circle', // 标记的符号为圆圈 symbolSize: 10, // 标记的大小 itemStyle: { color: 'rgba(0, 170, 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, 170, 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' // 文本垂直对齐方式 // } // }], }; chart8.setOption(option, true); } function flushChart81(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.sleepRmove_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, 182, 182, 0.8)' // 奶白色,80% 透明度 }, showSymbol: false ,// 是否显示标记图形 smooth: true, // 使折线平滑 markPoint: { symbol: 'circle', // 标记的符号为圆圈 symbolSize: 10, // 标记的大小 itemStyle: { color: 'rgba(0, 182, 182, 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, 182, 182, 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' // 文本垂直对齐方式 // } // }], }; chart81.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"; const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJlZGVjOWI3YWQ0MTQ0ZTIxYWQ1NTE1Nzc5NTkzNjBjNiIsImlhdCI6MTcxMjEzNTM2MywiZXhwIjoyMDI3NDk1MzYzfQ.IfrvdiaVuhCKsdy69JvUYhJ64bnhMT8MI1hN8R38whc"; const token_push = "b74fd5754c5ef24cf600c39194abdaeb"; Page({ /** * 页面的初始数据 */ data: { 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_duration: 0, rlight_duration: 0, rin_duration: 0, rawake_duration: 0, 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: '', 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: [], selectedValue: '', // 用于存储选中的值 selectedIndex: 0, // 默认选中第一个选项 hotelcode: '',//酒店编码 roomcode: '',//房间编码 rdeep_duration_efficiency: '',//深睡比例 rlight_duration_efficiency: '',//浅睡比例 rin_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 }, //点击确定选择结果时,保存结果 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; } }, 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.initChart00(canvas, width, height,null) }); 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.initChart00(canvas, width, height,reportId) }); this.selectComponent('#mychart-dom-bar7').init((canvas, width, height) => { that.initChart7(canvas, width, height,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}, }) } }, initChart000(canvas, width, height){ var that = this; chart000 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart000); flushChart000(); }, initChart00(canvas, width, height,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]){ 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, }); chart00 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart00); flushChart00(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); } }, }) }, initChart0(canvas, width, height){ var that = this; chart0 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart0); var percentage = parseFloat(that.data.percentage) var unPercentage = 100-percentage; var percentages = [] var obj = {}; obj.name = '已完成'; obj.value = percentage; percentages.push(obj); obj = {}; obj.name = '未完成'; obj.value = unPercentage; percentages.push(obj); console.log("that.data.rdt_arrNew,that.data.rrh_arrNew="+that.data.rdt_arrNew+","+that.data.rrh_arrNew); flushChart0(percentages); }, 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) }, initChart1(canvas, width, height,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]){ 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, }); chart1 = echarts.init(canvas, null, { width: width, height: height }); // console.log("plot in ......") canvas.setChart(chart1); console.log("that.data.rdt_arrNew,that.data.rrh_arrNew="+that.data.rdt_arrNew+","+that.data.rrh_arrNew); flushChart1(that.data.rdt_arrNew,that.data.rrh_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); } }, }) }, 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]){ 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]){ 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); } }, }) }, initChart11(canvas, width, height,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]){ 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); } let rsleep_arr_Temp = []; if(ress.data.results.rsleep_arr){ rsleep_arr_Temp = that.splitN(ress.data.results.rsleep_arr.split(","),100); } that.setData({ rdt_arrNew:rdt_arrTemp, rsleep_arr:rsleep_arr_Temp, rdeep_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rdeep_duration,1), rlight_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rlight_duration,1), rin_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rin_duration,1), rawake_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rawake_duration,1), }); 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); chart11 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart11); flushChart11(that.data.rdt_arrNew,that.data.rsleep_arr,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]){ 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]){ 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]){ 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); } }, }) }, initChart7(canvas, width, height,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]){ 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 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, }); chart7 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart7); // var list = that.getRsleep_arr(ress.data.results.rsleep_arr?ress.data.results.rsleep_arr.split(","):[]) // flushChart7(that.takePortionDateData(that.data.rdt_arr,that.data.routbed_arr,0),that.takePortionData(that.data.routbed_arr,0),that.data.routbed_time,that) flushChart7(that.data.rdt_arr,that.data.routbed_arr,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); } }, }) }, initChart8(canvas, width, height,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]){ 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 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, }); chart8 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart8); // var list = that.getRsleep_arr(ress.data.results.rsleep_arr?ress.data.results.rsleep_arr.split(","):[]) flushChart8(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); } }, }) }, initChart81(canvas, width, height,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]){ 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, }); chart81 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart81); // var list = that.getRsleep_arr(ress.data.results.rsleep_arr?ress.data.results.rsleep_arr.split(","):[]) flushChart81(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); } }, }) }, initChart9(canvas, width, height,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]){ 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, }); 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); } }, }) }, initChart10(canvas, width, height,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]){ 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, }); chart10 = echarts.init(canvas, null, { width: width, height: height }); console.log("plot in ......") canvas.setChart(chart10); // var list = that.getRsleep_arr(ress.data.results.rsleep_arr?ress.data.results.rsleep_arr.split(","):[]) flushChart10(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]){ 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() { 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')); if(ress && ress.data && wx.getStorageSync('tvEntityId')){ console.log("ress.data=="+JSON.stringify(ress.data.url)); console.log("wx.getStorageSync(tvEntityId)=="+wx.getStorageSync('tvEntityId')); 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 method: 'POST', header: { 'content-type': 'application/json', // 默认值 'Authorization': 'Bearer ' + token // 在头部设置认证信息,例如使用Bearer Token }, data:{     "entity_id": wx.getStorageSync('tvEntityId'),     "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" }, 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]){ 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 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(','):[], 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_duration: 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, 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, 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, pushReportId:ress.data.results.rdid, }); 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,"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; }, fail: function (error) { console.error('error', error); that.setData({ isLoading: false, }); } }); }, convertTimeToHoursAndMinutes: function(timeWithText,flag) { 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){ formattedTime = formattedHours + 'H ' + formattedMinutes + 'M'; }else{ formattedTime = formattedHours + '小时' + formattedMinutes; } // 更新数据 // this.setData({ // formattedTime: formattedTime // }); return formattedTime; }, getDateTimeJsonData: function(sn) { var that = this; 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 sourceFourthTemp = []; var resDataSn = res.data.results 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); if (index == 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, }) } }, 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; }, /** * 生命周期函数--监听页面加载 */ onShow: function(options) { 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, // ec000: { // onInit: that.initChart000 // }, ec00: { onInit: that.initChart00 }, ec0: { onInit: that.initChart0 }, ec: { onInit: that.initChart }, ec1: { onInit: that.initChart1 }, ec2: { onInit: that.initChart2 }, ec3: { onInit: that.initChart3 }, ec4: { onInit: that.initChart4 }, ec5: { onInit: that.initChart5 }, ec6: { onInit: that.initChart6 }, ec7: { onInit: that.initChart7 }, ec8: { onInit: that.initChart8 }, ec81: { onInit: that.initChart81 }, ec9: { onInit: that.initChart9 }, ec10: { onInit: that.initChart10 }, ec11: { onInit: that.initChart11 }, }); }, 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{ 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() { } })