evaluationIntroduction.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. // subpages/evaluationIntroduction/evaluationIntroduction.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. type: "physique",//报告类型
  8. testMin:3,
  9. testSize: 9,
  10. comScoreIndex:6,
  11. testTitle: "睡眠质量指数评测",
  12. testDesc: "本测评系统依据山东睡眠质量指数量表(SDPSQI)开发。\nSDPSQI由山东省中医药大学医学中心精神科睡眠和生物节律研究中心睡眠专家组编制,专门用于评定被试者近一个月的主观睡眠质量。SDPSQI作为一种科学、系统的睡眠质量评估工具为了解个体睡眠状况、诊断睡眠障碍以及制定相应的干预措施提供了重要的工具和平台。",
  13. isHaveRes: false,//是否有测试过
  14. },
  15. /**
  16. * 生命周期函数--监听页面加载
  17. */
  18. onLoad(options) {
  19. console.log(options);
  20. if (options.type) {
  21. var type = options.type;
  22. var testTitle = "";
  23. var testDesc = "";
  24. var testMin = 3;
  25. var testSize = 9;
  26. if (type == "physique") {
  27. // 体质
  28. testSize = 9;
  29. testMin = 3;
  30. testTitle = "体质诊断检测";
  31. testDesc = "本测试表由山东省中医药大学中医专家组(具有中医针灸师、中医芳香疗法指导师、医院临床检验科资质的主任医师们)提出。中医学依据气、血、水的平衡状态,将人分为六种体质。要改善身体的“不调”,最重要的就是先了解自己的体质。有人也可能是不同体质混合的“复合型”,而且人的体质日常是变化的,因此应根据每天变化的身体状态进行相应调理的养生疗法。我们根据人体部位分了八个方面,请从下面选项里选出和自己相符的项,提交后,系统会进行判断,并显示您的体质、分析和建议。";
  32. this.checkPhysiqueData()
  33. } else if (type == "sleep") {
  34. // 睡眠质量
  35. testSize = 25;
  36. testMin = 8;
  37. testTitle = "睡眠质量指数评测";
  38. testDesc = "本测评系统依据山东睡眠质量指数量表(SDPSQI)开发。\nSDPSQI由山东省中医药大学医学中心精神科睡眠和生物节律研究中心睡眠专家组编制,专门用于评定被试者近一个月的主观睡眠质量。SDPSQI作为一种科学、系统的睡眠质量评估工具为了解个体睡眠状况、诊断睡眠障碍以及制定相应的干预措施提供了重要的工具和平台。";
  39. }
  40. this.setData({
  41. testMin,
  42. testSize,
  43. testTitle,
  44. testDesc,
  45. type
  46. })
  47. }
  48. },
  49. leftBack() {
  50. wx.navigateBack()
  51. },
  52. toTest() {
  53. // 去测试
  54. wx.setStorageSync("testType", this.data.type);
  55. wx.navigateTo({
  56. url: '/subpages/textStep/textStep?type=' + this.data.type
  57. })
  58. },
  59. toResult() {
  60. // 结果页
  61. if (this.data.type == "physique") {
  62. // 体质
  63. wx.navigateTo({
  64. url: `/subpages/testResultB/testResultB?comScoreIndex=${this.data.comScoreIndex}`
  65. })
  66. } else if (this.data.type == "sleep") {
  67. // 睡眠质量
  68. wx.navigateTo({
  69. url: '/subpages/testResultA/testResultA'
  70. })
  71. }
  72. },
  73. checkPhysiqueData() {
  74. var that = this;
  75. var userId = wx.getStorageSync("unionid");
  76. wx.request({
  77. url: `https://fare.somnisix.top/system/constitutionDiagnosis/user/${userId}`,
  78. data: {
  79. "token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6Ijk5YzI3MjI2LTdkOWQtNDhiOC1hYjlhLWM4YjVjYWZiZGNkNyIsInVzZXJuYW1lIjoiYWRtaW4ifQ.zITQOINFkHs19_1RAgHS4I9YMaVxVq0Dsn3t6r_K7rv3rXvJy0sMtodejIMi_PNa_m4uQYxnU-6k3wC2LZht_Q"
  80. },
  81. header: {
  82. 'Authorization': 'Bearer ' + "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6Ijk5YzI3MjI2LTdkOWQtNDhiOC1hYjlhLWM4YjVjYWZiZGNkNyIsInVzZXJuYW1lIjoiYWRtaW4ifQ.zITQOINFkHs19_1RAgHS4I9YMaVxVq0Dsn3t6r_K7rv3rXvJy0sMtodejIMi_PNa_m4uQYxnU-6k3wC2LZht_Q" // 在头部设置Bearer Token
  83. },
  84. method: 'GET',
  85. success(res) {
  86. try {
  87. if (res && res.data && res.data.data) {
  88. if (res.data.data.value2) {
  89. var data = JSON.parse(res.data.data.value2);
  90. var maxValueObj = that.findMaxValueKeyAndIndex(data);
  91. that.setData({
  92. comScoreIndex: maxValueObj.index,
  93. isHaveRes: true
  94. })
  95. }
  96. }
  97. } catch (error) {
  98. console.error(error);
  99. }
  100. },
  101. })
  102. },
  103. // 体质的方法
  104. // 取出最大值的obj
  105. findMaxValueKeyAndIndex(obj) {
  106. if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {
  107. throw new Error('Input must be a plain object');
  108. }
  109. let maxKey = null;
  110. let maxValue = 0;
  111. let maxIndex = 6;
  112. const keys = Object.keys(obj);
  113. keys.forEach((key, index) => {
  114. const value = obj[key];
  115. if (value > maxValue) {
  116. maxValue = value;
  117. maxKey = key;
  118. maxIndex = index;
  119. }
  120. });
  121. return {
  122. key: maxKey,
  123. value: maxValue,
  124. index: maxIndex
  125. };
  126. },
  127. /**
  128. * A、B、C、D、E、F 最后积累的数量对比,按数量多少来判断,6个分别对应:气虚型、气滞型、血虚型、淤血型、水虚型、痰湿型
  129. * 找出对象中值最大的键
  130. * @param {Object} obj - 包含键值对的对象
  131. * @returns {string|null} - 值最大的键,如果没有找到则返回null
  132. */
  133. findKeyWithMaxValue(obj) {
  134. if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {
  135. throw new Error('Input must be a plain object');
  136. }
  137. let maxKey = null;
  138. let maxValue = 0;
  139. for (let key in obj) {
  140. if (obj.hasOwnProperty(key)) {
  141. if (obj[key] > maxValue) {
  142. maxValue = obj[key];
  143. maxKey = key;
  144. }
  145. }
  146. }
  147. return maxKey;
  148. },
  149. /**
  150. * 生命周期函数--监听页面初次渲染完成
  151. */
  152. onReady() {
  153. },
  154. /**
  155. * 生命周期函数--监听页面显示
  156. */
  157. onShow() {
  158. wx.removeStorageSync('testType');
  159. },
  160. /**
  161. * 生命周期函数--监听页面隐藏
  162. */
  163. onHide() {
  164. },
  165. /**
  166. * 生命周期函数--监听页面卸载
  167. */
  168. onUnload() {
  169. },
  170. /**
  171. * 页面相关事件处理函数--监听用户下拉动作
  172. */
  173. onPullDownRefresh() {
  174. },
  175. /**
  176. * 页面上拉触底事件的处理函数
  177. */
  178. onReachBottom() {
  179. },
  180. /**
  181. * 用户点击右上角分享
  182. */
  183. onShareAppMessage() {
  184. var that = this;
  185. return {
  186. title: that.data.testTitle,
  187. path: '/subpages/evaluationIntroduction/evaluationIntroduction?type=' + that.data.type,
  188. }
  189. }
  190. })