|
@@ -906,6 +906,42 @@ function updateApnea(data1, data2, startSleepTime, endSleepTime, that) {
|
|
|
|
|
|
|
|
//深浅睡眠
|
|
//深浅睡眠
|
|
|
|
|
|
|
|
|
|
+function timestampToHHMM(timestamp) {
|
|
|
|
|
+ let date = new Date(timestamp); // 注意:JavaScript中的Date是以毫秒为单位的
|
|
|
|
|
+ let hours = date.getHours().toString().padStart(2, '0'); // 获取小时数,并补零
|
|
|
|
|
+ let minutes = date.getMinutes().toString().padStart(2, '0'); // 获取分钟数,并补零
|
|
|
|
|
+ return hours + ':' + minutes;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 自定义图形
|
|
|
|
|
+function renderItem(params, api) {
|
|
|
|
|
+ var categoryIndex = api.value(0);
|
|
|
|
|
+ var startX = api.coord([api.value(1), categoryIndex])[0];
|
|
|
|
|
+ var endX = api.coord([api.value(2), categoryIndex])[0];
|
|
|
|
|
+ var centerY = api.coord([
|
|
|
|
|
+ api.value(1) + (api.value(2) - api.value(1)) / 2,
|
|
|
|
|
+ categoryIndex
|
|
|
|
|
+ ])[1]; // 取中间点的y坐标
|
|
|
|
|
+ var height = api.size([0, 1])[1] * 0.6;
|
|
|
|
|
+ var width = endX - startX;
|
|
|
|
|
+
|
|
|
|
|
+ // 创建一个矩形
|
|
|
|
|
+ var rect = {
|
|
|
|
|
+ x: startX,
|
|
|
|
|
+ y: centerY - height / 2,
|
|
|
|
|
+ r: 2,
|
|
|
|
|
+ width: width,
|
|
|
|
|
+ height: height
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 返回的图形对象
|
|
|
|
|
+ return {
|
|
|
|
|
+ type: 'rect',
|
|
|
|
|
+ shape: rect,
|
|
|
|
|
+ style: api.style()
|
|
|
|
|
+ };
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
function initChartTimeWaterfall(canvas, width, height, dpr) {
|
|
function initChartTimeWaterfall(canvas, width, height, dpr) {
|
|
|
// 在这里初始化图表
|
|
// 在这里初始化图表
|
|
|
const chart = echarts.init(canvas, null, {
|
|
const chart = echarts.init(canvas, null, {
|
|
@@ -924,86 +960,69 @@ function initChartTimeWaterfall(canvas, width, height, dpr) {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-function setTimeWaterfallOption(chart, data1 = [], data2 = []) {
|
|
|
|
|
- var option = option = {
|
|
|
|
|
- tooltip: {
|
|
|
|
|
- show: true,
|
|
|
|
|
- trigger: 'axis',
|
|
|
|
|
- formatter: function (param) {
|
|
|
|
|
- return `${param[0].value }`
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- dataZoom: [
|
|
|
|
|
- { // 第一个 dataZoom 组件
|
|
|
|
|
- type: 'inside',
|
|
|
|
|
- },
|
|
|
|
|
- ],
|
|
|
|
|
- grid: {
|
|
|
|
|
- top: '10rpx',
|
|
|
|
|
- left: '10rpx',
|
|
|
|
|
- right: '40rpx',
|
|
|
|
|
- bottom: 0,
|
|
|
|
|
- containLabel: true
|
|
|
|
|
- },
|
|
|
|
|
- xAxis: {
|
|
|
|
|
- type: 'category',
|
|
|
|
|
- data: data1,//字符串单位数组
|
|
|
|
|
- axisLabel: {
|
|
|
|
|
- color: '#6C6970',// 设置 x 轴标签颜色为白色
|
|
|
|
|
- fontSize: 12,
|
|
|
|
|
- interval:0,
|
|
|
|
|
- fontWeight: 'bolder',
|
|
|
|
|
- rich: {
|
|
|
|
|
- units: {//单位就富文本了
|
|
|
|
|
- fontSize: 10,
|
|
|
|
|
- fontWeight: 400,
|
|
|
|
|
- color: '#6C6970'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+function setTimeWaterfallOption(chart, startTime = new Date().getTime(), data = [], categories = ['深睡', '中睡', '浅睡', '清醒']) {
|
|
|
|
|
+ var option =
|
|
|
|
|
+ option = {
|
|
|
|
|
+ tooltip: {
|
|
|
|
|
+ show:true,
|
|
|
|
|
+ formatter: function (params) {
|
|
|
|
|
+ return params.marker + params.name + ': ' + params.value[3] + ' m';
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- boundaryGap: false,
|
|
|
|
|
- splitLine: {
|
|
|
|
|
- show: false, // 是否显示刻度线
|
|
|
|
|
-
|
|
|
|
|
- },
|
|
|
|
|
- axisTick: {
|
|
|
|
|
- // 不显示刻度线
|
|
|
|
|
- show: false
|
|
|
|
|
|
|
+ dataZoom: [
|
|
|
|
|
+ {
|
|
|
|
|
+ type: 'inside',
|
|
|
|
|
+ filterMode: 'weakFilter'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ grid: {
|
|
|
|
|
+ top: 0,
|
|
|
|
|
+ bottom: 0,
|
|
|
|
|
+ height:210,
|
|
|
|
|
+ containLabel: false
|
|
|
},
|
|
},
|
|
|
- axisLine: {
|
|
|
|
|
- // 不显示轴线
|
|
|
|
|
- show: false
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- yAxis: {
|
|
|
|
|
- type: 'value',
|
|
|
|
|
- min: 0,
|
|
|
|
|
- show: false,
|
|
|
|
|
- },
|
|
|
|
|
- series: [{
|
|
|
|
|
- barWidth:46,
|
|
|
|
|
- itemStyle: {
|
|
|
|
|
- color: function (params) {
|
|
|
|
|
- // 假设我们有一个颜色数组
|
|
|
|
|
- var colorList = ['#FDEFA6', '#F1E9FE', '#D8C8FE', '#AB81FF']
|
|
|
|
|
- // 根据数据索引选择颜色
|
|
|
|
|
- return colorList[params.dataIndex % colorList.length];
|
|
|
|
|
|
|
+ xAxis: {
|
|
|
|
|
+ type: 'value',
|
|
|
|
|
+ scale: true,
|
|
|
|
|
+ splitLine: {
|
|
|
|
|
+ show: false // 是否显示刻度线
|
|
|
},
|
|
},
|
|
|
- borderRadius: [2]
|
|
|
|
|
|
|
+ axisLabel: {
|
|
|
|
|
+ color: '#6C6970',// 设置 x 轴标签颜色为白色
|
|
|
|
|
+ fontSize: 10,
|
|
|
|
|
+ formatter: function (val) {
|
|
|
|
|
+ return timestampToHHMM(val || startTime);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
- type: 'bar',
|
|
|
|
|
- stack: 'a',
|
|
|
|
|
- data: data2,//分钟数数组
|
|
|
|
|
- }]
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ yAxis: {
|
|
|
|
|
+ show: false,
|
|
|
|
|
+ data: categories
|
|
|
|
|
+ },
|
|
|
|
|
+ series: [
|
|
|
|
|
+ {
|
|
|
|
|
+ type: 'custom',
|
|
|
|
|
+ renderItem: renderItem,
|
|
|
|
|
+ itemStyle: {
|
|
|
|
|
+ opacity: 1
|
|
|
|
|
+ },
|
|
|
|
|
+ encode: {
|
|
|
|
|
+ x: [1, 2],
|
|
|
|
|
+ y: 0
|
|
|
|
|
+ },
|
|
|
|
|
+ data: data
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
|
|
|
chart.setOption(option, true);
|
|
chart.setOption(option, true);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function updateTimeWaterfall(data1, data2, that) {
|
|
|
|
|
- console.log("data1========>", data1);
|
|
|
|
|
|
|
+function updateTimeWaterfall(startTime = new Date().getTime(), data, that) {
|
|
|
|
|
+ console.log("updateTimeWaterfall========>", data);
|
|
|
if (chartTimeWaterfall) {
|
|
if (chartTimeWaterfall) {
|
|
|
- setTimeWaterfallOption(chartTimeWaterfall, data1, data2);
|
|
|
|
|
|
|
+ setTimeWaterfallOption(chartTimeWaterfall, startTime, data);
|
|
|
} else {
|
|
} else {
|
|
|
that.selectComponent('#chartTimeWaterfall-dom').init((canvas, width, height, dpr) => {
|
|
that.selectComponent('#chartTimeWaterfall-dom').init((canvas, width, height, dpr) => {
|
|
|
const chart = echarts.init(canvas, null, {
|
|
const chart = echarts.init(canvas, null, {
|
|
@@ -1012,7 +1031,7 @@ function updateTimeWaterfall(data1, data2, that) {
|
|
|
devicePixelRatio: dpr // new
|
|
devicePixelRatio: dpr // new
|
|
|
});
|
|
});
|
|
|
canvas.setChart(chart);
|
|
canvas.setChart(chart);
|
|
|
- setTimeWaterfallOption(chart, data1, data2);
|
|
|
|
|
|
|
+ setTimeWaterfallOption(chart, startTime, data);
|
|
|
|
|
|
|
|
// 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问
|
|
// 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问
|
|
|
chartTimeWaterfall = chart;
|
|
chartTimeWaterfall = chart;
|
|
@@ -2064,7 +2083,7 @@ Page({
|
|
|
rsleep_arr_all_New: [],//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡
|
|
rsleep_arr_all_New: [],//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡
|
|
|
durationData: [], //睡眠时长
|
|
durationData: [], //睡眠时长
|
|
|
sleep_duration: [], //睡眠和清醒对比
|
|
sleep_duration: [], //睡眠和清醒对比
|
|
|
- rdeep_durationFormatA:{},
|
|
|
|
|
|
|
+ rdeep_durationFormatA: {},
|
|
|
rdeep_duration: 0,
|
|
rdeep_duration: 0,
|
|
|
rlight_duration: 0,
|
|
rlight_duration: 0,
|
|
|
rin_duration: 0,
|
|
rin_duration: 0,
|
|
@@ -2100,6 +2119,7 @@ Page({
|
|
|
|
|
|
|
|
rsn: '',
|
|
rsn: '',
|
|
|
rdate: '',
|
|
rdate: '',
|
|
|
|
|
+ total_duration: 0,
|
|
|
rtotal_duration: 0,
|
|
rtotal_duration: 0,
|
|
|
rinbed_duration: 0,
|
|
rinbed_duration: 0,
|
|
|
rgobed_time: 0,
|
|
rgobed_time: 0,
|
|
@@ -2134,6 +2154,7 @@ Page({
|
|
|
rdeep_duration_efficiency: '',//深睡比例
|
|
rdeep_duration_efficiency: '',//深睡比例
|
|
|
rlight_duration_efficiency: '',//浅睡比例
|
|
rlight_duration_efficiency: '',//浅睡比例
|
|
|
rin_duration_efficiency: '',//中睡比例
|
|
rin_duration_efficiency: '',//中睡比例
|
|
|
|
|
+ rawake_duration_efficiency: '',//清醒比例
|
|
|
isLoading: false,
|
|
isLoading: false,
|
|
|
|
|
|
|
|
ec7: '',
|
|
ec7: '',
|
|
@@ -2560,7 +2581,7 @@ Page({
|
|
|
canvas.setChart(chart);
|
|
canvas.setChart(chart);
|
|
|
flushChart(that.data.target_sleep_list)
|
|
flushChart(that.data.target_sleep_list)
|
|
|
},
|
|
},
|
|
|
-// 心脏 系统
|
|
|
|
|
|
|
+ // 心脏 系统
|
|
|
initCardiacSystem(reportId) {
|
|
initCardiacSystem(reportId) {
|
|
|
var that = this;
|
|
var that = this;
|
|
|
wx.request({
|
|
wx.request({
|
|
@@ -2791,14 +2812,16 @@ Page({
|
|
|
try {
|
|
try {
|
|
|
let rdt_arrTemp = [];
|
|
let rdt_arrTemp = [];
|
|
|
if (ress.data.results.rrh_arr) {
|
|
if (ress.data.results.rrh_arr) {
|
|
|
- rdt_arrTemp = that.splitN(ress.data.results.rdt_arr.split(","), 100);
|
|
|
|
|
|
|
+ // rdt_arrTemp = that.splitN(ress.data.results.rdt_arr.split(","), 100);
|
|
|
|
|
+ rdt_arrTemp = ress.data.results.rdt_arr.split(",");
|
|
|
}
|
|
}
|
|
|
- // console.log('深浅睡眠11111=======' + JSON.stringify(rdt_arrTemp));
|
|
|
|
|
|
|
+ console.log('深浅睡眠11111=======' + JSON.stringify(rdt_arrTemp));
|
|
|
let rsleep_arr_Temp = [];
|
|
let rsleep_arr_Temp = [];
|
|
|
if (ress.data.results.rsleep_arr) {
|
|
if (ress.data.results.rsleep_arr) {
|
|
|
- rsleep_arr_Temp = that.splitN(ress.data.results.rsleep_arr.split(","), 100);
|
|
|
|
|
|
|
+ // rsleep_arr_Temp = that.splitN(ress.data.results.rsleep_arr.split(","), 100);
|
|
|
|
|
+ rsleep_arr_Temp = ress.data.results.rsleep_arr.split(",");
|
|
|
}
|
|
}
|
|
|
- // console.log('深浅睡眠11111=======' + JSON.stringify(rsleep_arr_Temp));
|
|
|
|
|
|
|
+ console.log('深浅睡眠222222=======' + JSON.stringify(rsleep_arr_Temp));
|
|
|
that.setData({
|
|
that.setData({
|
|
|
rdt_arrNew: rdt_arrTemp,
|
|
rdt_arrNew: rdt_arrTemp,
|
|
|
rsleep_arr: rsleep_arr_Temp,
|
|
rsleep_arr: rsleep_arr_Temp,
|
|
@@ -2806,10 +2829,10 @@ Page({
|
|
|
rlight_duration: ress.data.results.rlight_duration,
|
|
rlight_duration: ress.data.results.rlight_duration,
|
|
|
rin_duration: ress.data.results.rin_duration,
|
|
rin_duration: ress.data.results.rin_duration,
|
|
|
rawake_duration: ress.data.results.rawake_duration,
|
|
rawake_duration: ress.data.results.rawake_duration,
|
|
|
- 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),
|
|
|
|
|
|
|
+ rdeep_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rdeep_duration),
|
|
|
|
|
+ rlight_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rlight_duration),
|
|
|
|
|
+ rin_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rin_duration),
|
|
|
|
|
+ rawake_durationFormat: that.convertTimeToHoursAndMinutes(ress.data.results.rawake_duration),
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
console.log('ress.data.results.rdeep_duration=' + ress.data.results.rdeep_duration);
|
|
console.log('ress.data.results.rdeep_duration=' + ress.data.results.rdeep_duration);
|
|
@@ -2817,16 +2840,17 @@ Page({
|
|
|
console.log('ress.data.results.rin_duration=' + ress.data.results.rin_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);
|
|
console.log('ress.data.results.rawake_duration=' + ress.data.results.rawake_duration);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
- updateTimeWaterfall([that.convertTimeToHoursAndMinutes(ress.data.results.rawake_duration, 2),
|
|
|
|
|
- that.convertTimeToHoursAndMinutes(ress.data.results.rin_duration, 2),
|
|
|
|
|
- that.convertTimeToHoursAndMinutes(ress.data.results.rlight_duration, 2),
|
|
|
|
|
- that.convertTimeToHoursAndMinutes(ress.data.results.rdeep_duration, 2)],
|
|
|
|
|
- [ ress.data.results.rawake_duration || 0,
|
|
|
|
|
- ress.data.results.rin_duration || 0,
|
|
|
|
|
- ress.data.results.rlight_duration || 0,
|
|
|
|
|
- ress.data.results.rdeep_duration || 0,
|
|
|
|
|
- ], that)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ that.calculateTheDurationOfDeepSleep();
|
|
|
|
|
+ // updateTimeWaterfall([that.convertTimeToHoursAndMinutes(ress.data.results.rawake_duration, 2),
|
|
|
|
|
+ // that.convertTimeToHoursAndMinutes(ress.data.results.rin_duration, 2),
|
|
|
|
|
+ // that.convertTimeToHoursAndMinutes(ress.data.results.rlight_duration, 2),
|
|
|
|
|
+ // that.convertTimeToHoursAndMinutes(ress.data.results.rdeep_duration, 2)],
|
|
|
|
|
+ // [ ress.data.results.rawake_duration || 0,
|
|
|
|
|
+ // ress.data.results.rin_duration || 0,
|
|
|
|
|
+ // ress.data.results.rlight_duration || 0,
|
|
|
|
|
+ // ress.data.results.rdeep_duration || 0,
|
|
|
|
|
+ // ], that)
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error(error);
|
|
console.error(error);
|
|
|
}
|
|
}
|
|
@@ -3839,6 +3863,7 @@ Page({
|
|
|
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 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 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 rin_duration_efficiency_temp = ress.data.results.rtotal_duration ? (Math.ceil(((ress.data.results.rin_duration ? parseFloat(ress.data.results.rin_duration) : 0) / ress.data.results.rtotal_duration) * 100) + '%') : '%'
|
|
|
|
|
+ let rawake_duration_efficiency_temp = ress.data.results.rtotal_duration ? (Math.ceil(((ress.data.results.rawake_duration ? parseFloat(ress.data.results.rawake_duration) : 0) / ress.data.results.rtotal_duration) * 100) + '%') : '%'
|
|
|
|
|
|
|
|
|
|
|
|
|
let sleep_durationTemp = [];
|
|
let sleep_durationTemp = [];
|
|
@@ -3905,7 +3930,7 @@ Page({
|
|
|
routbed_arr: ress.data.results.routbed_arr ? ress.data.results.routbed_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(',') : [],
|
|
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(',') : [],
|
|
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(',') : [],
|
|
|
|
|
|
|
+ rsleep_arr: ress.data.results.rsleep_arr ? ress.data.results.rsleep_arr.split(',') : [],//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡
|
|
|
|
|
|
|
|
rsnoring_arrFrequency: that.getFrequency(ress.data.results.rsnoring_arr ? ress.data.results.rsnoring_arr.split(',') : [], 1),
|
|
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),
|
|
routbed_arrFrequency: that.getFrequency(ress.data.results.routbed_arr ? ress.data.results.routbed_arr.split(',') : [], 0),
|
|
@@ -3925,6 +3950,7 @@ Page({
|
|
|
|
|
|
|
|
rsn: ress.data.results.rsn,
|
|
rsn: ress.data.results.rsn,
|
|
|
rdate: ress.data.results.rdate,
|
|
rdate: ress.data.results.rdate,
|
|
|
|
|
+ total_duration: ress.data.results.rtotal_duration,
|
|
|
rtotal_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rtotal_duration),//睡眠总时长,单位小时分钟
|
|
rtotal_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rtotal_duration),//睡眠总时长,单位小时分钟
|
|
|
rinbed_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rinbed_duration),//在床时长,单位小时分钟
|
|
rinbed_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rinbed_duration),//在床时长,单位小时分钟
|
|
|
rgobed_time: ress.data.results.rgobed_time,//上床时间
|
|
rgobed_time: ress.data.results.rgobed_time,//上床时间
|
|
@@ -3951,6 +3977,7 @@ Page({
|
|
|
rdeep_duration_efficiency: rdeep_duration_efficiency_temp,
|
|
rdeep_duration_efficiency: rdeep_duration_efficiency_temp,
|
|
|
rlight_duration_efficiency: rlight_duration_efficiency_temp,
|
|
rlight_duration_efficiency: rlight_duration_efficiency_temp,
|
|
|
rin_duration_efficiency: rin_duration_efficiency_temp,
|
|
rin_duration_efficiency: rin_duration_efficiency_temp,
|
|
|
|
|
+ rawake_duration_efficiency: rawake_duration_efficiency_temp,
|
|
|
pushReportId: ress.data.results.rdid,
|
|
pushReportId: ress.data.results.rdid,
|
|
|
|
|
|
|
|
rrs_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rrs_duration ? ress.data.results.rrs_duration.toString() : '0'),
|
|
rrs_duration: that.convertTimeToHoursAndMinutes(ress.data.results.rrs_duration ? ress.data.results.rrs_duration.toString() : '0'),
|
|
@@ -4066,7 +4093,7 @@ Page({
|
|
|
var formattedTime = '';
|
|
var formattedTime = '';
|
|
|
if (flag == 1) {
|
|
if (flag == 1) {
|
|
|
formattedTime = formattedHours + 'H ' + formattedMinutes + 'M';
|
|
formattedTime = formattedHours + 'H ' + formattedMinutes + 'M';
|
|
|
- } else if(flag == 2) {
|
|
|
|
|
|
|
+ } else if (flag == 2) {
|
|
|
formattedTime = formattedHours + '{units|小时}' + formattedMinutes + '{units|分钟}';
|
|
formattedTime = formattedHours + '{units|小时}' + formattedMinutes + '{units|分钟}';
|
|
|
} else {
|
|
} else {
|
|
|
formattedTime = {
|
|
formattedTime = {
|
|
@@ -4100,7 +4127,7 @@ Page({
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var resDataSn = res.data.results
|
|
var resDataSn = res.data.results
|
|
|
- console.log('resDataSn====' + JSON.stringify(resDataSn))
|
|
|
|
|
|
|
+ // console.log('resDataSn====' + JSON.stringify(resDataSn))
|
|
|
var tt = 0;
|
|
var tt = 0;
|
|
|
resDataSn.forEach(function (item, index) {
|
|
resDataSn.forEach(function (item, index) {
|
|
|
wx.request({
|
|
wx.request({
|
|
@@ -4126,9 +4153,9 @@ Page({
|
|
|
json.text = item.rdate;
|
|
json.text = item.rdate;
|
|
|
json.children = resDataItem;
|
|
json.children = resDataItem;
|
|
|
sourceFourthTemp.push(json);
|
|
sourceFourthTemp.push(json);
|
|
|
- console.log('sourceFourthTemp0=' + JSON.stringify(sourceFourthTemp));
|
|
|
|
|
|
|
+ // console.log('sourceFourthTemp0=' + JSON.stringify(sourceFourthTemp));
|
|
|
if (tt == (resDataSn.length - 1)) {
|
|
if (tt == (resDataSn.length - 1)) {
|
|
|
- console.log('sourceFourthTemp=' + JSON.stringify(sourceFourthTemp));
|
|
|
|
|
|
|
+ // console.log('sourceFourthTemp=' + JSON.stringify(sourceFourthTemp));
|
|
|
|
|
|
|
|
// 使用 sort 方法进行排序
|
|
// 使用 sort 方法进行排序
|
|
|
sourceFourthTemp.sort(function (a, b) {
|
|
sourceFourthTemp.sort(function (a, b) {
|
|
@@ -4144,7 +4171,7 @@ Page({
|
|
|
// 如果日期相等,返回 0
|
|
// 如果日期相等,返回 0
|
|
|
return 0;
|
|
return 0;
|
|
|
});
|
|
});
|
|
|
- console.log('sourceFourthTemp1=' + JSON.stringify(sourceFourthTemp));
|
|
|
|
|
|
|
+ // console.log('sourceFourthTemp1=' + JSON.stringify(sourceFourthTemp));
|
|
|
//初始化弹出面板
|
|
//初始化弹出面板
|
|
|
var array = that.data.arrayFourth;
|
|
var array = that.data.arrayFourth;
|
|
|
array[0] = sourceFourthTemp;
|
|
array[0] = sourceFourthTemp;
|
|
@@ -4181,6 +4208,134 @@ Page({
|
|
|
let fontSize = clientWidth / 1920; // 假设以1920为基准宽度
|
|
let fontSize = clientWidth / 1920; // 假设以1920为基准宽度
|
|
|
return res * fontSize;
|
|
return res * fontSize;
|
|
|
},
|
|
},
|
|
|
|
|
+ calculateTheDurationOfDeepSleep() {
|
|
|
|
|
+ var that = this;
|
|
|
|
|
+ var totalDuration = this.data.total_duration;
|
|
|
|
|
+ var timePeriod = this.data.rdt_arrNew;
|
|
|
|
|
+ var sleepData = this.data.rsleep_arr;//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡
|
|
|
|
|
+
|
|
|
|
|
+ console.log("睡眠总时长=>", totalDuration);
|
|
|
|
|
+ console.log("睡眠时间片段=>", timePeriod);
|
|
|
|
|
+ console.log("睡眠时间片段=>", timePeriod.length);
|
|
|
|
|
+ console.log("睡眠数据=>", sleepData);
|
|
|
|
|
+ console.log("睡眠数据=>", sleepData.length);
|
|
|
|
|
+ var awakeColor = [{ offset: 0, color: '#F7FCBE' }, { offset: 1, color: '#FDBE25' }];;
|
|
|
|
|
+ var lightSleepColor = [{ offset: 0, color: '#FDBE25' }, { offset: 1, color: '#FD7778' }];
|
|
|
|
|
+ var sleptInColor = [{ offset: 0, color: '#FD7778' }, { offset: 1, color: '#AA3CFF' }];
|
|
|
|
|
+ var deepSleepColor = [{ offset: 0, color: '#AA3CFF' }, { offset: 1, color: '#7C3CFF' }];
|
|
|
|
|
+ // var linearGradient = new echarts.graphic.LinearGradient(
|
|
|
|
|
+ // 0, 0, 0, 1, // 方向从左到右
|
|
|
|
|
+ // [
|
|
|
|
|
+ // { offset: 0, color: '#FDBE25' }, // 渐变开始的颜色
|
|
|
|
|
+ // { offset: 1, color: '#FD7778' } // 渐变结束的颜色
|
|
|
|
|
+ // ]
|
|
|
|
|
+ // );
|
|
|
|
|
+ // var item = {
|
|
|
|
|
+ // name: { name: '清醒', color: '#7b9ce1' },
|
|
|
|
|
+ // value: [index, baseTime, (baseTime += duration), duration],
|
|
|
|
|
+ // itemStyle: {
|
|
|
|
|
+ // normal: {
|
|
|
|
|
+ // color: linearGradient,
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // };
|
|
|
|
|
+
|
|
|
|
|
+ // var sleepData = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "10", "0", "0", "0", "0", "0", "0", "0", "0", "0", "10", "10", "10", "10", "10", "10", "10", "20", "20", "20", "20", "20", "20", "20", "20", "30", "30", "30", "30", "30", "30", "30", "30", "30"];//睡眠状态数据集合,0-清醒,10-浅睡,20-中睡,30-深睡
|
|
|
|
|
+
|
|
|
|
|
+ // 状态映射
|
|
|
|
|
+ const statusMap = {
|
|
|
|
|
+ "0": "清醒",
|
|
|
|
|
+ "10": "浅睡",
|
|
|
|
|
+ "20": "中睡",
|
|
|
|
|
+ "30": "深睡"
|
|
|
|
|
+ };
|
|
|
|
|
+ // 状态映射
|
|
|
|
|
+ const statusColorMap = {
|
|
|
|
|
+ "0": awakeColor,
|
|
|
|
|
+ "10": lightSleepColor,
|
|
|
|
|
+ "20": sleptInColor,
|
|
|
|
|
+ "30": deepSleepColor
|
|
|
|
|
+ };
|
|
|
|
|
+ // 状态映射
|
|
|
|
|
+ const statusIndexMap = {
|
|
|
|
|
+ "0": 3,
|
|
|
|
|
+ "10": 2,
|
|
|
|
|
+ "20": 1,
|
|
|
|
|
+ "30": 0
|
|
|
|
|
+ };
|
|
|
|
|
+ // 初始化变量 reportDate
|
|
|
|
|
+ // let dateString = '2024/09/14 23:20:00';
|
|
|
|
|
+ let dateString = `${that.data.reportDate.replaceAll("-", "/")} ${that.data.rgobed_time + ":00"}`;
|
|
|
|
|
+ let date = new Date(dateString);
|
|
|
|
|
+ let startTime = date.getTime(); // 基准时间,这里设为午夜开始
|
|
|
|
|
+ console.log("时间=》", timestampToHHMM(startTime));
|
|
|
|
|
+
|
|
|
|
|
+ let currentTime = startTime;
|
|
|
|
|
+ let currentState = sleepData[0];
|
|
|
|
|
+ let timePeriods = [];
|
|
|
|
|
+
|
|
|
|
|
+ // 遍历睡眠数据数组
|
|
|
|
|
+ for (let i = 0; i < sleepData.length; i++) {
|
|
|
|
|
+ // 如果当前状态与前一个状态不同,则记录前一个时间段
|
|
|
|
|
+ if (i > 0 && sleepData[i] !== sleepData[i - 1]) {
|
|
|
|
|
+ // 计算前一个时间段的结束时间(注意这里不需要减去一分钟,因为 currentTime 还未递增)
|
|
|
|
|
+ let endTime = currentTime;
|
|
|
|
|
+ // 计算前一个时间段的持续时间(分钟)
|
|
|
|
|
+ let duration = Math.floor((endTime - startTime) / (1000 * 60));
|
|
|
|
|
+ // 记录时间段
|
|
|
|
|
+ if (duration > 0) {
|
|
|
|
|
+ var linearGradient = new echarts.graphic.LinearGradient(
|
|
|
|
|
+ 0, 0, 0, 1, // 方向从左到右
|
|
|
|
|
+ statusColorMap[sleepData[i - 1]]
|
|
|
|
|
+ );
|
|
|
|
|
+ timePeriods.push({
|
|
|
|
|
+ name: statusMap[sleepData[i - 1]],// 使用前一个状态
|
|
|
|
|
+ value: [statusIndexMap[sleepData[i - 1]], startTime, endTime, duration],
|
|
|
|
|
+ itemStyle: {
|
|
|
|
|
+ normal: {
|
|
|
|
|
+ color: linearGradient,
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ // startTime: new Date(startTime), // 转换为 Date 对象以便更易于阅读
|
|
|
|
|
+ // endTime: new Date(endTime),
|
|
|
|
|
+ // durationMinutes: duration
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ // 更新当前状态和开始时间
|
|
|
|
|
+ currentState = sleepData[i];
|
|
|
|
|
+ startTime = currentTime;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 递增时间(每分钟)
|
|
|
|
|
+ currentTime += 1000 * 60;
|
|
|
|
|
+ // 处理最后一个时间段(如果数组不是以状态变化结束的话)
|
|
|
|
|
+ if (i === sleepData.length - 1) {
|
|
|
|
|
+ let endTime = currentTime;
|
|
|
|
|
+ let duration = Math.floor((endTime - startTime) / (1000 * 60));
|
|
|
|
|
+ if (duration > 0) {
|
|
|
|
|
+ var linearGradient = new echarts.graphic.LinearGradient(
|
|
|
|
|
+ 0, 0, 0, 1, // 方向从左到右
|
|
|
|
|
+ statusColorMap[currentState]
|
|
|
|
|
+ );
|
|
|
|
|
+ timePeriods.push({
|
|
|
|
|
+ name: statusMap[currentState],// 使用前一个状态
|
|
|
|
|
+ value: [statusIndexMap[currentState], startTime, endTime, duration],
|
|
|
|
|
+ itemStyle: {
|
|
|
|
|
+ normal: {
|
|
|
|
|
+ color: linearGradient,
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ // startTime: new Date(startTime), // 转换为 Date 对象以便更易于阅读
|
|
|
|
|
+ // endTime: new Date(endTime),
|
|
|
|
|
+ // durationMinutes: duration
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ updateTimeWaterfall(startTime, timePeriods, that)
|
|
|
|
|
+ console.log("睡眠数据最终=>", dateString);
|
|
|
|
|
+ console.log("睡眠数据最终=>", startTime);
|
|
|
|
|
+ console.log("睡眠数据最终=>", JSON.stringify(timePeriods));
|
|
|
|
|
+ },
|
|
|
onReady() {
|
|
onReady() {
|
|
|
var that = this;
|
|
var that = this;
|
|
|
that.initChartCircle();
|
|
that.initChartCircle();
|
|
@@ -4191,7 +4346,7 @@ Page({
|
|
|
that.initChartSnoring();
|
|
that.initChartSnoring();
|
|
|
that.initChartApnea();
|
|
that.initChartApnea();
|
|
|
that.initTimeWaterfall();
|
|
that.initTimeWaterfall();
|
|
|
-},
|
|
|
|
|
|
|
+ },
|
|
|
/**
|
|
/**
|
|
|
* 生命周期函数--监听页面加载
|
|
* 生命周期函数--监听页面加载
|
|
|
*/
|
|
*/
|
|
@@ -4206,7 +4361,7 @@ Page({
|
|
|
var clickDate = String(that.data.year) + String(that.data.month) + String(that.data.date)
|
|
var clickDate = String(that.data.year) + String(that.data.month) + String(that.data.date)
|
|
|
clickDate = String(parseInt(clickDate) + 100)
|
|
clickDate = String(parseInt(clickDate) + 100)
|
|
|
// that.getTargetData(clickDate)
|
|
// that.getTargetData(clickDate)
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
that.setData({
|
|
that.setData({
|
|
|
clickDate: clickDate,
|
|
clickDate: clickDate,
|
|
|
});
|
|
});
|