|
|
@@ -1,7 +1,7 @@
|
|
|
// miniprogram/pages/testSAS/testSAS.js
|
|
|
// const db = wx.cloud.database()
|
|
|
const qnaire = require("./sas.js")
|
|
|
-var ans = new Array(27)
|
|
|
+var ans = new Array(24)
|
|
|
var ansJson = []
|
|
|
Page({
|
|
|
data: {
|
|
|
@@ -20,7 +20,9 @@ Page({
|
|
|
checkboxes: [
|
|
|
{ name: 'checkbox1', checked: false },
|
|
|
],
|
|
|
- changeValue:''//
|
|
|
+ changeValue:'',//
|
|
|
+ comScore: 0,
|
|
|
+ comScoreStatus: '',
|
|
|
},
|
|
|
// drawCircle: function() {
|
|
|
// // 创建 canvas 上下文
|
|
|
@@ -117,8 +119,21 @@ Page({
|
|
|
changeValue: e.detail.value
|
|
|
});
|
|
|
},
|
|
|
-
|
|
|
- nextq: function () {
|
|
|
+bindInput1: function(e) {
|
|
|
+ // 你可以通过 e.detail.value 获取到输入框的值
|
|
|
+ // 使用 this.setData() 方法更新数据
|
|
|
+ this.setData({
|
|
|
+ input1Value: e.detail.value
|
|
|
+ })
|
|
|
+},
|
|
|
+bindInput2: function(e) {
|
|
|
+ // 你可以通过 e.detail.value 获取到输入框的值
|
|
|
+ // 使用 this.setData() 方法更新数据
|
|
|
+ this.setData({
|
|
|
+ input2Value: e.detail.value
|
|
|
+ })
|
|
|
+},
|
|
|
+ nextq: function (e) {
|
|
|
if (!this.data.checkboxes[0].checked) {
|
|
|
wx.showToast({
|
|
|
title: '请勾选隐私条款',
|
|
|
@@ -126,7 +141,21 @@ Page({
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
- if (this.data.id < 26) {
|
|
|
+ console.log('input1Value=='+this.data.input1Value);
|
|
|
+ console.log('input2Value=='+this.data.input2Value);
|
|
|
+ // let input1 = e.detail.value.input1;
|
|
|
+ // let input2 = e.detail.value.input2;
|
|
|
+ let input1 = this.data.input1Value;
|
|
|
+ let input2 = this.data.input2Value;
|
|
|
+ if(!input1 || !input2){
|
|
|
+ wx.showToast({
|
|
|
+ title: '输入框不能为空',
|
|
|
+ icon: 'none'
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.data.id < 23) {
|
|
|
this.setData({
|
|
|
id: this.data.id + 1,
|
|
|
})
|
|
|
@@ -148,11 +177,52 @@ Page({
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ calculateTotalHours: function (hoursInput,minutesInput) {
|
|
|
+
|
|
|
+ // 获取小时和分钟的值,如果为空或不是数字,则设置为0
|
|
|
+ let hours = parseFloat(hoursInput.value) || 0;
|
|
|
+ let minutes = parseFloat(minutesInput.value) || 0;
|
|
|
+
|
|
|
+ // 将分钟转换为小时的小数部分
|
|
|
+ // let minutesInHours = minutes / 60;
|
|
|
+
|
|
|
+ // 计算总时间(小时)
|
|
|
+ // let totalHours = hours + minutesInHours;
|
|
|
+
|
|
|
+ // 显示结果
|
|
|
+ // document.getElementById('result').textContent = `总时间: ${totalHours.toFixed(2)} 小时`;
|
|
|
+ // return totalHours.toFixed(2);
|
|
|
+ return hours*60 + minutes;
|
|
|
+ },
|
|
|
submit: function (e) {
|
|
|
if (!this.data.checkboxes[0].checked) {
|
|
|
return;
|
|
|
}
|
|
|
- var a = e.detail.value.answer?e.detail.value.answer:e.detail.value.input;
|
|
|
+ // let input1 = e.detail.value.input1;
|
|
|
+ // let input2 = e.detail.value.input2;
|
|
|
+ let input1 = this.data.input1Value;
|
|
|
+ let input2 = this.data.input2Value;
|
|
|
+ if(!input1 || !input2){
|
|
|
+ wx.showToast({
|
|
|
+ title: '输入框不能为空',
|
|
|
+ icon: 'none'
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!(input1>=0 && input1<=24) || !(input2>=0 && input2<=60)){
|
|
|
+ wx.showToast({
|
|
|
+ title: '输入框时间填写错误',
|
|
|
+ icon: 'none'
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var a = "";
|
|
|
+ let _id = e.currentTarget.dataset.id;
|
|
|
+ if(e.detail.value.answer){
|
|
|
+ a = e.detail.value.answer;
|
|
|
+ }else{
|
|
|
+ a = input1+":"+input2
|
|
|
+ }
|
|
|
var id = this.data.id-1;
|
|
|
var obj = {};
|
|
|
obj.type = e.detail.value.answer?'answer':'input'
|
|
|
@@ -174,7 +244,7 @@ Page({
|
|
|
}
|
|
|
|
|
|
var a = this.data.changeValue;
|
|
|
- var id = 26;
|
|
|
+ var id = 23;
|
|
|
var obj = {};
|
|
|
obj.type = 'answer'
|
|
|
obj.value = a
|
|
|
@@ -188,7 +258,7 @@ Page({
|
|
|
var finish;
|
|
|
var i = 0;
|
|
|
var _this = this;
|
|
|
- while(i<27) {
|
|
|
+ while(i<24) {
|
|
|
if(ans[i]=="") {
|
|
|
finish='false';
|
|
|
break;
|
|
|
@@ -246,162 +316,153 @@ Page({
|
|
|
// })
|
|
|
console.log('answerJson='+JSON.stringify(answerJson))
|
|
|
let totalAllTemp = 0;
|
|
|
- let value20 = answerJson[19].value;
|
|
|
- let total20 = 0//因子1
|
|
|
- if(total20 == 'A'){
|
|
|
- total20 += 0;
|
|
|
- }else if(total20 == 'B'){
|
|
|
- total20 += 1;
|
|
|
- }else if(total20 == 'C'){
|
|
|
- total20 += 2;
|
|
|
- }else if(total20 == 'D'){
|
|
|
- total20 += 3;
|
|
|
- }
|
|
|
+ let value1 = answerJson[0].value;
|
|
|
+ let value2 = answerJson[1].value;
|
|
|
+ let value3 = answerJson[2].value;
|
|
|
+ let value4 = answerJson[3].value;
|
|
|
+ let value5a = answerJson[4].value;
|
|
|
+ let value5b = answerJson[5].value;
|
|
|
+ let value5c = answerJson[6].value;
|
|
|
+ let value5d = answerJson[7].value;
|
|
|
+ let value5e = answerJson[8].value;
|
|
|
+ let value5f = answerJson[9].value;
|
|
|
+ let value5g = answerJson[10].value;
|
|
|
+ let value5h = answerJson[11].value;
|
|
|
+ let value5i = answerJson[12].value;
|
|
|
+ let value5j = answerJson[13].value;
|
|
|
+ let value6 = answerJson[14].value;
|
|
|
+ let value7 = answerJson[15].value;
|
|
|
+ let value8 = answerJson[16].value;
|
|
|
+ let value9 = answerJson[17].value;
|
|
|
+ let value10 = answerJson[18].value;
|
|
|
+ let value11 = answerJson[19].value;
|
|
|
+ let value12 = answerJson[20].value;
|
|
|
+ let value13 = answerJson[21].value;
|
|
|
+ let value14 = answerJson[22].value;
|
|
|
+ let value15 = answerJson[23].value;
|
|
|
|
|
|
- let total7 = 0//近1个月,从上床到入睡通常需要___________分钟
|
|
|
- let value7 = answerJson[6].value;
|
|
|
- if(value7<15){
|
|
|
- total7 += 0;
|
|
|
- }else if(value7>16 && value7<=30){
|
|
|
- total7 += 1;
|
|
|
- }else if(value7>31 && value7<=60){
|
|
|
- total7 += 2;
|
|
|
- }else if(value7>60){
|
|
|
- total7 += 3;
|
|
|
+ //计算规则 https://mp.weixin.qq.com/s/QyTzuPoNErMjc2KcA1M61g
|
|
|
+ let comA = 0;//条目6
|
|
|
+ let comB = 0;
|
|
|
+ let comB1 = 0;
|
|
|
+ let comC = 0;
|
|
|
+ let comD = 0;
|
|
|
+ let comE = 0;
|
|
|
+ let comF = 0;
|
|
|
+ let comG = 0;
|
|
|
+
|
|
|
+ comA = this.resultABCD(value6);
|
|
|
+ comB1 = this.resultABCD(value2) + this.resultABCD(value5a);
|
|
|
+ console.log("comB1="+comB1);
|
|
|
+ if(comB1 == 0){
|
|
|
+ comB = 0;
|
|
|
+ }else if(comB1>=1 && comB1<=2){
|
|
|
+ comB = 1;
|
|
|
+ } else if(comB1>=3 && comB1<=4){
|
|
|
+ comB = 2;
|
|
|
+ } else if(comB1>=5 && comB1<=6){
|
|
|
+ comB = 3;
|
|
|
}
|
|
|
- let value10 = answerJson[9].value;
|
|
|
- let total10 = 0//入睡困难(30分钟内不能入睡)
|
|
|
- if(value10 == 'A'){
|
|
|
- total10 += 0;
|
|
|
- }else if(value10 == 'B'){
|
|
|
- total10 += 1;
|
|
|
- }else if(value10 == 'C'){
|
|
|
- total10 += 2;
|
|
|
- }else if(value10 == 'D'){
|
|
|
- total10 += 3;
|
|
|
+ let value41 = Number(value4.split(':')[0]) || 0;
|
|
|
+ let value42 = Number(value4.split(':')[1]) || 0;
|
|
|
+ let value43 = value41*60 + value42
|
|
|
+ console.log("value43="+value43);
|
|
|
+ if(value43 > 420){
|
|
|
+ comC = 0;
|
|
|
+ }else if(value43>=360 && value43<=420){
|
|
|
+ comC = 1;
|
|
|
+ } else if(value43>=300 && value43<360){
|
|
|
+ comC = 2;
|
|
|
+ } else if(value43<300){
|
|
|
+ comC = 3;
|
|
|
}
|
|
|
|
|
|
- let value9 = answerJson[8].value;//近1个月,每夜通常实际睡眠时间___________小时(不等于卧床时间)
|
|
|
- let total91 = total7 + total10
|
|
|
|
|
|
- let total9_1 = 0//因子2
|
|
|
- if(total91 == 0){
|
|
|
- total9_1 += 0;
|
|
|
- }else if(total91 == 1 || total91 == 2){
|
|
|
- total9_1 += 1;
|
|
|
- }else if(total91 == 3 || total91 == 4){
|
|
|
- total9_1 += 2;
|
|
|
- }else if(total91 == 5 || total91 == 6){
|
|
|
- total9_1 += 3;
|
|
|
- }
|
|
|
- let total9 = 0
|
|
|
- let total9_3 = 0//因子3
|
|
|
- if(value9 > 7){
|
|
|
- total9_3 += 0;
|
|
|
- }else if(value9 > 6 || value9 <= 7){
|
|
|
- total9_3 += 1;
|
|
|
- }else if(value9 > 5 || value9 <= 6){
|
|
|
- total9_3 += 2;
|
|
|
- }else if(value9 < 5){
|
|
|
- total9_3 += 3;
|
|
|
+ let datediff = this.calculateTimeDifference(value1,value3);
|
|
|
+ console.log("datediff="+datediff);
|
|
|
+ let sleepRate = datediff?((value43/datediff)*100):0;
|
|
|
+ console.log("sleepRate="+sleepRate);
|
|
|
+ if(sleepRate >= 85){
|
|
|
+ comD = 0;
|
|
|
+ }else if(sleepRate>=75 && sleepRate<=84){
|
|
|
+ comD = 1;
|
|
|
+ } else if(sleepRate>=65 && sleepRate<74){
|
|
|
+ comD = 2;
|
|
|
+ } else if(sleepRate<65){
|
|
|
+ comD = 3;
|
|
|
}
|
|
|
|
|
|
- let value8 = answerJson[7].value;//起床时间
|
|
|
- let value6 = answerJson[5].value;//入睡时间
|
|
|
+ let value5All = this.resultABCD(value5b)
|
|
|
+ + this.resultABCD(value5c)
|
|
|
+ + this.resultABCD(value5d)
|
|
|
+ + this.resultABCD(value5e)
|
|
|
+ + this.resultABCD(value5f)
|
|
|
+ + this.resultABCD(value5g)
|
|
|
+ + this.resultABCD(value5h)
|
|
|
+ + this.resultABCD(value5i)
|
|
|
+ + this.resultABCD(value5j);
|
|
|
+ console.log("value5All="+value5All);
|
|
|
+ if(value5All == 0){
|
|
|
+ comE = 0;
|
|
|
+ }else if(value5All>=1 && value5All<=9){
|
|
|
+ comE = 1;
|
|
|
+ } else if(value5All>=10 && value5All<=18){
|
|
|
+ comE = 2;
|
|
|
+ } else if(value5All>=19 && value5All<=27){
|
|
|
+ comE = 3;
|
|
|
+ }
|
|
|
|
|
|
- let percentage = ((24-(value6-value8))==0)?0:((value9/(24-(value6-value8)))*100);
|
|
|
- percentage = percentage.toFixed(2);
|
|
|
- let percentage9 = 0;//因子4
|
|
|
- if(percentage>=85){
|
|
|
- percentage9 += 0;
|
|
|
- }else if(percentage>=75 && percentage<=84){
|
|
|
- percentage9 += 1;
|
|
|
- }else if(percentage>=65 && percentage<=74){
|
|
|
- percentage9 += 2;
|
|
|
- }else if(percentage<65){
|
|
|
- percentage9 += 3;
|
|
|
+ comF = this.resultABCD(value7);
|
|
|
+ console.log("comF="+comF);
|
|
|
+ let valueGAll = this.resultABCD(value8) + this.resultABCD(value9);
|
|
|
+ console.log("valueGAll="+valueGAll);
|
|
|
+ if(valueGAll == 0){
|
|
|
+ comG = 0;
|
|
|
+ }else if(valueGAll>=1 && valueGAll<=2){
|
|
|
+ comG = 1;
|
|
|
+ } else if(valueGAll>=3 && valueGAll<=4){
|
|
|
+ comG = 2;
|
|
|
+ } else if(valueGAll>=5 && valueGAll<=6){
|
|
|
+ comG = 3;
|
|
|
}
|
|
|
|
|
|
- let value11 = this.resultABCD(answerJson[10].value);//5b
|
|
|
- let value12 = this.resultABCD(answerJson[11].value);//5c
|
|
|
- let value13 = this.resultABCD(answerJson[12].value);//5d
|
|
|
- let value14 = this.resultABCD(answerJson[13].value);//5e
|
|
|
- let value15 = this.resultABCD(answerJson[14].value);//5f
|
|
|
- let value16 = this.resultABCD(answerJson[15].value);//5g
|
|
|
- let value17 = this.resultABCD(answerJson[16].value);//5h
|
|
|
- let value18 = this.resultABCD(answerJson[17].value);//5i
|
|
|
- let value19 = this.resultABCD(answerJson[18].value);//5i
|
|
|
+ console.log('comA='+comA);
|
|
|
+ console.log('comB='+comB);
|
|
|
+ console.log('comC='+comC);
|
|
|
+ console.log('comD='+comD);
|
|
|
+ console.log('comE='+comE);
|
|
|
+ console.log('comF='+comF);
|
|
|
+ console.log('comG='+comG);
|
|
|
|
|
|
- let value_b_i = value11+value12+value13+value14+value15
|
|
|
- +value16+value17+value18+value19
|
|
|
- let total_b_i = 0;//因子5
|
|
|
- if(value_b_i<1){
|
|
|
- total_b_i += 0;
|
|
|
- }else if(value_b_i>=1 && value_b_i<=9){
|
|
|
- total_b_i += 1;
|
|
|
- }else if(value_b_i>=10 && value_b_i<=18){
|
|
|
- total_b_i += 2;
|
|
|
- }else if(value_b_i>=19 && value_b_i<=27){
|
|
|
- total_b_i += 3;
|
|
|
+ let comAll = comA + comB + comC + comD + comE + comF + comG;
|
|
|
+ let _comScoreStatus = "";
|
|
|
+ if(comAll >= 0 && comAll<=5){
|
|
|
+ _comScoreStatus = "很好";
|
|
|
+ }else if(comAll>=6 && comAll<=10){
|
|
|
+ _comScoreStatus = "较好";
|
|
|
+ } else if(comAll>=11 && comAll<=15){
|
|
|
+ _comScoreStatus = "一般";
|
|
|
+ } else if(comAll>=16 && comAll<=21){
|
|
|
+ _comScoreStatus = "差";
|
|
|
}
|
|
|
|
|
|
- totalAllTemp = total20 + total9_1 + total9_3 + percentage9 + total_b_i
|
|
|
- let percentAll = 0
|
|
|
- if(totalAllTemp<=5){
|
|
|
- percentAll = '90'
|
|
|
- }else if(totalAllTemp>5 && totalAllTemp<=10){
|
|
|
- percentAll = '75'
|
|
|
- }else if(totalAllTemp>10 && totalAllTemp<=15){
|
|
|
- percentAll = '50'
|
|
|
- }else if(totalAllTemp>15 && totalAllTemp<=20){
|
|
|
- percentAll = '25'
|
|
|
- }else{
|
|
|
- percentAll = '未知'
|
|
|
- }
|
|
|
- let promptTextMessageTemp = [];
|
|
|
- let sleepState = this.sleepState(answerJson[0].value,answerJson[8].value);
|
|
|
- promptTextMessageTemp.push('在全人群中,您的个人情况决定了睡眠基础条件的分是('+totalAllTemp+')分,您已经超过了全国('+percentAll+')%的人群;(纯正态分布,5分,25%;10分,50%;15分75%;20分,位于前20%)');
|
|
|
- promptTextMessageTemp.push('您需要改进的睡眠问题主要集中在');
|
|
|
- promptTextMessageTemp.push('1.睡眠时长:您每天的睡眠时间'+sleepState);
|
|
|
- promptTextMessageTemp.push('2.不良因素:您的生理健康或生活习惯存在改进的空间,为了获得健康睡眠建议您(立刻进行改进//发挥优势,改进不足//继续保持良好的生活习惯)');
|
|
|
- let text10 = '';
|
|
|
- if(value10=='D'){
|
|
|
- text10 += '入睡困难//'
|
|
|
- }
|
|
|
- if(sleepState == '不足'){
|
|
|
- text10 += '深度睡眠不足//'
|
|
|
- }
|
|
|
- if(percentage9 == 3){
|
|
|
- text10 += '睡眠效率不高'
|
|
|
- }
|
|
|
- promptTextMessageTemp.push('3.睡眠质量:您存在('+text10+')的问题,这会导致睡眠质量较低或身心难以得到放松的问题,这会是我们共同努力的方向。');
|
|
|
- let value25 = answerJson[25].value;
|
|
|
- let value26 = answerJson[26].value;
|
|
|
- let text26 = '';
|
|
|
- if(!value25||!value26){
|
|
|
- text26 += '';
|
|
|
- }else if(value25=='C'||value26=='C'){
|
|
|
- text26 += '较差';
|
|
|
- }else if(value25=='A'||value26=='A'){
|
|
|
- text26 += '较好';
|
|
|
- }else{
|
|
|
- text26 += '适中';
|
|
|
- }
|
|
|
- promptTextMessageTemp.push('4.睡眠环境(对应:客观环境):您的睡眠环境总体来看,('+text26+')具有安全、安静和舒适的睡眠环境可以让您的睡眠质量得到显著的改善。');
|
|
|
- promptTextMessageTemp.push('5.改善意愿:您对改善自己睡眠质量的意愿(充分)。任何的改变都意味着要对以往你熟悉的环境,已经能够接受的不适进行改变甚至颠覆,不知道您愿不愿意为改善自己睡眠多一点付出,承受一点便或者痛苦呢?');
|
|
|
- this.setData({
|
|
|
- promptTextMessage: promptTextMessageTemp,
|
|
|
- totalAll: totalAllTemp,
|
|
|
+ let promptTextMessageTemp = []
|
|
|
+ promptTextMessageTemp.push('sucess');
|
|
|
+ console.log('comAll='+comAll+',comScoreStatus='+_comScoreStatus);
|
|
|
+ this.setData({
|
|
|
+ comScore: comAll,
|
|
|
+ comScoreStatus: _comScoreStatus,
|
|
|
+ promptTextMessage: promptTextMessageTemp,
|
|
|
})
|
|
|
},
|
|
|
resultABCD:function(a){
|
|
|
- if(a = 'A'){
|
|
|
+ if(a == 'A'){
|
|
|
return 0;
|
|
|
- }else if(a = 'B'){
|
|
|
+ }else if(a == 'B'){
|
|
|
return 1;
|
|
|
- } else if(a = 'C'){
|
|
|
+ } else if(a == 'C'){
|
|
|
return 2;
|
|
|
- } else if(a = 'D'){
|
|
|
+ } else if(a == 'D'){
|
|
|
return 3;
|
|
|
}
|
|
|
},
|
|
|
@@ -450,12 +511,43 @@ Page({
|
|
|
}else{
|
|
|
return '未知';
|
|
|
}
|
|
|
+ },
|
|
|
+ // 将时间字符串转换为分钟数
|
|
|
+ timeStringToMinutes:function(timeStr) {
|
|
|
+ var parts = timeStr.split(":");
|
|
|
+ return parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 将分钟数转换回时间字符串格式 HH:mm
|
|
|
+ minutesToTimeString:function(minutes) {
|
|
|
+ var hours = Math.floor(minutes / 60);
|
|
|
+ var mins = minutes % 60;
|
|
|
+ var minsStr = mins < 10 ? "0" + mins : mins.toString();
|
|
|
+ return hours.toString() + ":" + minsStr;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 计算时间差(分钟)
|
|
|
+ calculateTimeDifference:function(sleepTimeStr, wakeUpTimeStr) {
|
|
|
+ // 将时间字符串转换为分钟
|
|
|
+ var sleepTimeMinutes = this.timeStringToMinutes(sleepTimeStr);
|
|
|
+ var wakeUpTimeMinutes = this.timeStringToMinutes("24:00") + this.timeStringToMinutes(wakeUpTimeStr); // 加上第二天的0点到起床时间的分钟数
|
|
|
+
|
|
|
+ // 计算时间差
|
|
|
+ var diffInMinutes = wakeUpTimeMinutes - sleepTimeMinutes;
|
|
|
+
|
|
|
+ // 将分钟数转换回时间字符串格式 HH:mm
|
|
|
+ var diffInHours = Math.floor(diffInMinutes / 60);
|
|
|
+ var diffInMins = diffInMinutes % 60;
|
|
|
+
|
|
|
+ // 返回时间差字符串
|
|
|
+ console.log("diffInMinutes=="+diffInMinutes)
|
|
|
+ return diffInMinutes;
|
|
|
},
|
|
|
/**
|
|
|
* 生命周期函数--监听页面加载
|
|
|
*/
|
|
|
onLoad: function (options) {
|
|
|
- for(var i=0; i<27; i++) {
|
|
|
+ for(var i=0; i<24; i++) {
|
|
|
ans[i] = "";
|
|
|
}
|
|
|
this.setData({
|