sleepReport.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. // pages/sleepReport/sleepReport.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. page: 1,
  8. show: false,
  9. minDate: new Date(2024, 4, 1).getTime(),
  10. maxDate: new Date().getTime(),
  11. defaultDate: [new Date().getTime(), new Date().getTime()],
  12. mData: [],
  13. formatter(day) {
  14. const month = day.date.getMonth() + 1;
  15. const date = day.date.getDate();
  16. if (month === 5) {
  17. if (date === 1) {
  18. day.topInfo = '劳动节';
  19. } else if (date === 4) {
  20. day.topInfo = '五四青年节';
  21. } else if (date === 11) {
  22. day.text = '今天';
  23. }
  24. }
  25. if (day.type === 'start') {
  26. day.bottomInfo = '开始';
  27. } else if (day.type === 'end') {
  28. day.bottomInfo = '结束';
  29. }
  30. // else if (day.type === 'start-end') {
  31. // return '开始/结束';
  32. // }
  33. return day;
  34. },
  35. },
  36. onDisplay() {
  37. this.setData({ show: true });
  38. },
  39. onClose() {
  40. this.setData({ show: false });
  41. },
  42. // formatDate(date) {
  43. // date = new Date(date);
  44. // return `${date.getMonth() + 1}/${date.getDate()}`;
  45. // },
  46. formatDate(date) {
  47. if (!date || date == null) {
  48. return "";
  49. }
  50. date = new Date(date);
  51. let year = date.getFullYear();
  52. let month = (date.getMonth() + 1).toString().padStart(2, '0'); // 月份是从0开始的,所以要+1
  53. let day = date.getDate().toString().padStart(2, '0');
  54. return `${year}-${month}-${day}`;
  55. },
  56. onConfirm(event) {
  57. console.log(event.detail);
  58. var dateArr = event.detail || [];
  59. if (!dateArr[1] || dateArr[1] == null) {
  60. console.log("单选");
  61. } else {
  62. console.log("多选");
  63. }
  64. this.setData({
  65. show: false,
  66. page: 1,
  67. startdateStr: this.formatDate(event.detail[0]),
  68. enddateStr: this.formatDate(event.detail[1]),
  69. });
  70. this.getList(this.data.startdateStr, this.data.enddateStr || this.data.startdateStr);
  71. },
  72. /**
  73. * 生命周期函数--监听页面加载
  74. */
  75. onLoad(options) {
  76. },
  77. /**
  78. * 生命周期函数--监听页面初次渲染完成
  79. */
  80. onReady() {
  81. this.getList()
  82. },
  83. toDetails(e) {
  84. console.log(e.currentTarget.dataset.item);
  85. let item = e.currentTarget.dataset.item;
  86. wx.navigateTo({
  87. url: `/subpages/data/data?rpids=${item.rpids}`
  88. })
  89. },
  90. /**
  91. * 生命周期函数--监听页面显示
  92. */
  93. onShow() {
  94. // const app = getApp();
  95. // app.globalData.selectedTabIndex = 2;
  96. // this.getTabBar().setData({
  97. // selected: 2
  98. // })
  99. },
  100. /**
  101. * 生命周期函数--监听页面隐藏
  102. */
  103. onHide() {
  104. },
  105. /**
  106. * 生命周期函数--监听页面卸载
  107. */
  108. onUnload() {
  109. },
  110. /**
  111. * 页面相关事件处理函数--监听用户下拉动作
  112. */
  113. onPullDownRefresh() {
  114. this.setData({
  115. page: 1
  116. })
  117. this.getList(this.data.startdateStr, this.data.enddateStr || this.data.startdateStr);
  118. },
  119. /**
  120. * 页面上拉触底事件的处理函数
  121. */
  122. onReachBottom() {
  123. console.log("上拉加载更多");
  124. // if (this.data.startdateStr) {
  125. // return
  126. // }
  127. var page = this.data.page;
  128. page += 1;
  129. this.setData({
  130. page: page
  131. })
  132. this.getList(this.data.startdateStr, this.data.enddateStr || this.data.startdateStr);
  133. },
  134. checkTime(timeStr) {
  135. let hours = 0;
  136. let minutes = 0;
  137. if (timeStr && timeStr.indexOf("小时") != -1) {
  138. let parts = timeStr.split("小时");
  139. hours = parseInt(parts[0], 10); // 将小时部分转换为整数
  140. }
  141. if (timeStr && timeStr.indexOf("分钟") != -1) {
  142. let parts = timeStr.split("小时");
  143. let minutesStr = parts[1].split("分钟")[0]; // 获取分钟部分的字符串
  144. minutes = parseInt(minutesStr, 10); // 将分钟部分转换为整数
  145. }
  146. // console.log("小时:", hours); // 输出小时
  147. // console.log("分钟:", minutes); // 输出分钟
  148. return {
  149. hours: hours || 0,
  150. minutes: minutes || 0
  151. }
  152. },
  153. checkRScoreValueColor(value) {
  154. var checkList = [{
  155. title: "极好",
  156. titleColor: "#0BC3AA",
  157. startColor: "#0AB1C3",
  158. centerColor: "#0BC3AA",
  159. endColor: "#36E1CA",
  160. }, {
  161. title: "良好",
  162. titleColor: "#9C43FF",
  163. startColor: "#8D25FF",
  164. centerColor: "#A631FF",
  165. endColor: "#FF8FF0",
  166. }, {
  167. title: "较差",
  168. titleColor: "#FF8F4E",
  169. startColor: "#EE8B52",
  170. centerColor: "#FAA472",
  171. endColor: "#FAA472",
  172. }, {
  173. title: "很差",
  174. titleColor: "#FB717B",
  175. startColor: "#FB717B",
  176. centerColor: "#FB717B",
  177. endColor: "#FF98A0",
  178. }];
  179. var color = checkList[0].titleColor;
  180. var rscore_value = value - 0;
  181. if (rscore_value >= 90 && rscore_value <= 100) {
  182. color = checkList[0].titleColor;
  183. } else if (rscore_value >= 75 && rscore_value < 90) {
  184. color = checkList[1].titleColor;
  185. } else if (rscore_value >= 60 && rscore_value < 75) {
  186. color = checkList[2].titleColor;
  187. } else {
  188. color = checkList[3].titleColor;
  189. }
  190. return color;
  191. },
  192. getList(startdateStr, enddateStr) {
  193. const that = this;
  194. wx.request({
  195. url: 'https://aipush.aidsleep.cn/srpwithrange',
  196. method: 'POST',
  197. data: {
  198. startdate: startdateStr,
  199. enddate: enddateStr,
  200. token: "89835e65993fee4a6a6cbbe4c271da51e5521822934e13769e61cadabaed72c3" || wx.getStorageSync('token'),
  201. udi: wx.getStorageSync('unionid') ,
  202. pg: that.data.page,
  203. lm: 20
  204. },
  205. success: (res) => {
  206. var mDataTemp = that.data.page == 1 ? [] : that.data.mData || [];
  207. var loadData = res.data.data;
  208. if ((loadData && !Array.isArray(loadData))) {
  209. for (const key in loadData) {
  210. if (Object.prototype.hasOwnProperty.call(loadData, key)) {
  211. const element = loadData[key];
  212. let subItems = [];
  213. for (const k in element) {
  214. if (Object.prototype.hasOwnProperty.call(element, k)) {
  215. const subElement = element[k];
  216. for (let i = 0; i < subElement.length; i++) {
  217. var item = subElement[i];
  218. var dateItem = that.checkTime(item.rinbed_duration);
  219. var color = that.checkRScoreValueColor(item.rscore_value);
  220. item.hours = dateItem.hours;
  221. item.minutes = dateItem.minutes;
  222. item.color = color;
  223. }
  224. subItems = subItems.concat(subElement);
  225. }
  226. }
  227. var isChange = false;
  228. for (let i = 0; i < mDataTemp.length; i++) {
  229. const elementOld = mDataTemp[i];
  230. if (elementOld.dateTitle == key) {
  231. elementOld.subItem = elementOld.subItem.concat(subItems);
  232. isChange = true;
  233. break;
  234. }
  235. }
  236. if (!isChange) {
  237. var data = {
  238. dateTitle: key,
  239. subItem: subItems
  240. }
  241. mDataTemp.push(data)
  242. }
  243. }
  244. }
  245. console.log(mDataTemp);
  246. that.setData({
  247. mData: mDataTemp
  248. })
  249. } else {
  250. }
  251. },
  252. fail: () => {
  253. }
  254. });
  255. },
  256. /**
  257. * 用户点击右上角分享
  258. */
  259. onShareAppMessage() {
  260. }
  261. })