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() {
}
})