Browse Source

修改认知干预--单选问题

plg 11 months ago
parent
commit
c00f2bacbd
1 changed files with 158 additions and 121 deletions
  1. 158 121
      src/renderer/components/treatDepression.vue

+ 158 - 121
src/renderer/components/treatDepression.vue

@@ -149,21 +149,12 @@
 
                         <!-- {{content}} -->
                       </div>
-                      <div
-                        class=""
-                        style="color: #000000"
-                        v-if="content.isType == -1"
-                      >
+                      <div class="message_form2" style="color: #000000" v-if="content.isType == -1">
                         {{ content.question }}
                       </div>
                     </div>
                     <div class="img-wrapper">
-                      <img
-                        width="60px"
-                        heigth="60px"
-                        class="img"
-                        :src="from2"
-                      />
+                      <img width="60px" heigth="60px" class="img" :src="from2" />
                     </div>
                   </div>
                 </el-col>
@@ -235,7 +226,7 @@
     <!-- <el-button @click="centerDialogVisible = true">打开窗口</el-button> -->
   </div>
 </template>
-  <script>
+<script>
 import HeadImg from "@/assets/lion.png";
 import HeadImg1 from "@/assets/newImage/peopleUser.png";
 import axios from "axios";
@@ -382,9 +373,7 @@ export default {
       this.$http.get(
         `/intelligent/dialogueRecords?identifier=${sessionStorage.getItem(
           "num"
-        )}&pageNum=${that.pageNum}&pageSize=${that.pageSize}&type=${
-          that.interveneId
-        }`,
+        )}&pageNum=${that.pageNum}&pageSize=${that.pageSize}&type=${that.interveneId}`,
         {},
         (res) => {
           if (res.code == 200) {
@@ -419,9 +408,7 @@ export default {
                 i < res.data.intelligentDialogueEntities.content.length;
                 i++
               ) {
-                if (
-                  res.data.intelligentDialogueEntities.content[i].label == "0"
-                ) {
+                if (res.data.intelligentDialogueEntities.content[i].label == "0") {
                   //当是第一页第一个时,不取了
 
                   //判断最后一个是不是填空还是选择
@@ -439,8 +426,7 @@ export default {
                       //可点击可不点击 0单选   1填空
                       disabled: false,
                       //问题
-                      question:
-                        res.data.intelligentDialogueEntities.content[i].content,
+                      question: res.data.intelligentDialogueEntities.content[i].content,
                       //头像
                       from1: HeadImg,
                     });
@@ -459,8 +445,7 @@ export default {
                       //可点击可不点击 0单选   1填空
                       disabled: false,
                       //问题
-                      question:
-                        res.data.intelligentDialogueEntities.content[i].content,
+                      question: res.data.intelligentDialogueEntities.content[i].content,
                       //头像
                       from1: HeadImg,
                     });
@@ -501,8 +486,7 @@ export default {
                   that.interveneId = 5;
                   that.getQuestion("", false);
                 } else {
-                  let id =
-                    res.data.intelligentDialogueEntities.content[0].questionNo;
+                  let id = res.data.intelligentDialogueEntities.content[0].questionNo;
                   that.getQuestion(id, false);
                 }
               }
@@ -545,15 +529,13 @@ export default {
               //如果是选择题选择题且必定是量表
               let ob = {
                 from: 2,
-                question:
-                  this.answerList[this.chatContents[i].index].checkItems,
+                question: this.answerList[this.chatContents[i].index].checkItems,
               };
               list.push(ob);
             } else if (this.chatContents[i].isType == 5) {
               let ob = {
                 from: 2,
-                question:
-                  this.answerList[this.chatContents[i].index].checkItems,
+                question: this.answerList[this.chatContents[i].index].checkItems,
               };
               list.push(ob);
             }
@@ -618,6 +600,10 @@ export default {
       });
     },
     sendMessageFun(val) {
+      if (val.text == "") {
+        this.$message.warning("请输入内容");
+        return;
+      }
       // 若问题类型为3,校验输入值是否为0~100的整数
       if (val.isType == 3) {
         var a = val.text;
@@ -684,10 +670,10 @@ export default {
         // };
         // this.saveRecord(paramsSave);
         // this.saveChat();
-        let contant1 = document.getElementById("contant1");
-        this.sleep(101).then(() => {
-          contant1.scrollTop = contant1.scrollHeight;
-        });
+        // let contant1 = document.getElementById("contant1");
+        // this.sleep(101).then(() => {
+        //   contant1.scrollTop = contant1.scrollHeight;
+        // });
       }
     },
     updateName(val, id) {
@@ -727,12 +713,14 @@ export default {
         },
         (res) => {
           if (res.code == "200") {
+            console.log(that.interveneId);
             if (that.interveneId == 5 && id == 3) {
-              that.interveneId = that.$route.query.id;
+              // that.interveneId = that.$route.query.id;
               //然后再调用question
-              that.getQuestion("", true);
+              // that.getQuestion("", true);
             }
             let result = res.data;
+
             // 若无下一题,oNum加1进入下一部分
             if (result == null) {
               this.oNum = this.oNum < 5 ? ++this.oNum : 1;
@@ -745,8 +733,22 @@ export default {
             }
 
             if (result.question && result.question.includes("测评结果")) {
-              let str = sessionStorage.getItem("testResults");
-              result.question = str;
+              // let str = sessionStorage.getItem("testResults");
+              let str = sessionStorage.getItem("testResultsScore");
+              if ( str <= 52) {
+                result.question =
+                  "您的情绪状态在正常范围内。请继续保持积极心态,关注生活中的美好,预防抑郁情绪。如有需要,随时与我沟通,共同守护您的心理健康。";
+              } else if (str >= 53 && str <= 62) {
+                result.question =
+                  "您可能正经历轻度抑郁。请放心,我会为您提供专业的心理支持,帮助您学习情绪调节技巧,及时缓解抑郁情绪。我们一起努力,让心情重回明朗。";
+              } else if (str >= 63 && str <= 72) {
+                result.question =
+                  "您的抑郁症状已较为明显。我强烈建议您接受专业的心理治疗,如CBT等,以改善当前状况。我会与您并肩作战,共同应对这个挑战,助您早日走出阴霾。";
+              } else if (str >= 73) {
+                result.question =
+                  "您可能正面临严重的抑郁症状。这是一个紧急状况,我强烈建议您立即寻求专业医疗帮助,包括药物治疗和精神评估。我会全力支持您,与您共度难关,直至您重拾生活的希望。";
+              }
+              // result.question = str;
             }
 
             if (result.id) {
@@ -791,6 +793,7 @@ export default {
 
     //修改文本打印效果
     pFun(val, flag, result, saveFlag, isShow) {
+      clearInterval(this.flagTime);
       let that = this;
       //3个循环播放
       this.chatContents[this.chatContents.length - 1].question = "";
@@ -809,14 +812,13 @@ export default {
         }
       }
 
-      clearInterval(this.flagTime);
       this.flagTime = setInterval(
         () => {
           if (this.printIndex < a.length) {
-            this.chatContents[this.chatContents.length - 1].question +=
-              a.charAt(this.printIndex);
+            this.chatContents[this.chatContents.length - 1].question += a.charAt(
+              this.printIndex
+            );
             this.printIndex++;
-
             if (a == "......") {
               if (this.printIndex == 4) {
                 this.chatContents[this.chatContents.length - 1].question = "";
@@ -830,6 +832,7 @@ export default {
                 let contant1 = document.getElementById("contant1");
                 this.sleep(101).then(() => {
                   contant1.scrollTop = contant1.scrollHeight;
+                  // contant1.scrollTo({top:contant1.scrollHeight,behavior: 'smooth'});
                 });
               }
             }
@@ -837,18 +840,12 @@ export default {
             if (flag) {
               that.buttonFlag = false;
               //清除定时器
-              let contant1 = document.getElementById("contant1");
-              this.sleep(101).then(() => {
-                contant1.scrollTop = contant1.scrollHeight;
-              });
-              // this.saveRecord(this.chatContents[this.chatContents.length - 1].question)
+              // let contant1 = document.getElementById("contant1");
+              // this.sleep(101).then(() => {
+              //   contant1.scrollTop = contant1.scrollHeight;
+              // });
               clearInterval(this.flagTime);
-              // let ob = {
-              //   label: 0,
-              //   content:
-              //     this.chatContents[this.chatContents.length - 1].question,
-              // };
-              // this.saveRecord(ob);
+            
               //在这判断负面情绪是否足够5个
               if (this.interveneId != 5) {
                 // let paramsSave = {
@@ -904,6 +901,13 @@ export default {
               // userName:sessionStorage.getItem("name"),
               // questionNo: val.questionNo,
               // type: this.interveneId,
+              if (this.interveneId == 5 && result.id == "3") {
+                this.interveneId = that.$route.query.id;
+                this.getQuestion("", true);
+
+                return;
+              }
+
               if (!result.nextQuestionNo) {
                 // 无下一题,查询答案
                 this.getAnswer(result.id);
@@ -917,6 +921,7 @@ export default {
                 // this.getScaleInfo("20210617121646");
               } else {
                 // 下一题非量表,继续查询下一题
+
                 this.getQuestion(result.nextQuestionNo, true);
               }
             } else {
@@ -1118,11 +1123,12 @@ export default {
         });
       } else {
         //上一次的id
+        
         this.chatContents[this.chatContents.length - 1] = {
           from: 2,
           isScale: false,
           isType: -1,
-          question: content.radio,
+          question: contentRadio,
           from1: HeadImg,
         };
         this.getQuestion(id, true);
@@ -1221,15 +1227,14 @@ export default {
       this.$http.post(`v1/record/find/${id}`, {}, (res) => {
         if (res.data.code == 200 && res.data.data) {
           this.resultJsonParams = res.data.data;
-          let testResult = JSON.parse(
-            res.data.data.userRecordEntity.testResult
-          );
+          let testResult = JSON.parse(res.data.data.userRecordEntity.testResult);
           sessionStorage.setItem(
             "testResults",
             res.data.data.userRecordEntity.testResults
           );
           // console.log(res.data.data.userRecordEntity.testResults);
           // console.log(testResult);
+
           if (this.interveneId == 1) {
             let score = Number(testResult[0].newTableContext.result[0].score);
             if (score < 50) {
@@ -1251,23 +1256,65 @@ export default {
             }
           } else if (this.interveneId == 2) {
             let score = Number(testResult[0].newTableContext.result[0].score);
-            if (score < 10) {
-              this.chatContents.push({
-                from: 1,
-                isScale: false,
-                isType: -1,
-                question: "根据测试,你很健康,无抑郁表现",
-                from1: HeadImg,
-              });
-              let contant1 = document.getElementById("contant1");
-              this.sleep(101).then(() => {
-                contant1.scrollTop = contant1.scrollHeight;
-              });
-            } else if (score < 19) {
-              this.getNext(this.currentId);
-            } else {
-              this.getNext(this.currentId);
-            }
+            sessionStorage.setItem("testResultsScore", score);
+            this.getNext(this.currentId);
+            // if (score >= 26 && score <= 52) {
+            //   this.chatContents.push({
+            //     from: 1,
+            //     isScale: false,
+            //     isType: -1,
+            //     question:
+            //       "您的情绪状态在正常范围内。请继续保持积极心态,关注生活中的美好,预防抑郁情绪。如有需要,随时与我沟通,共同守护您的心理健康。",
+            //     from1: HeadImg,
+            //   });
+            //   let contant1 = document.getElementById("contant1");
+            //   this.sleep(101).then(() => {
+            //     contant1.scrollTop = contant1.scrollHeight;
+            //   });
+            //   this.getNext(this.currentId);
+            // } else if (score >= 53 && score <= 62) {
+            //   this.chatContents.push({
+            //     from: 1,
+            //     isScale: false,
+            //     isType: -1,
+            //     question:
+            //       "您可能正经历轻度抑郁。请放心,我会为您提供专业的心理支持,帮助您学习情绪调节技巧,及时缓解抑郁情绪。我们一起努力,让心情重回明朗。",
+            //     from1: HeadImg,
+            //   });
+            //   let contant1 = document.getElementById("contant1");
+            //   this.sleep(101).then(() => {
+            //     contant1.scrollTop = contant1.scrollHeight;
+            //   });
+            //   this.getNext(this.currentId);
+            // } else if (score >= 63 && score <= 72) {
+            //   this.chatContents.push({
+            //     from: 1,
+            //     isScale: false,
+            //     isType: -1,
+            //     question:
+            //       "您的抑郁症状已较为明显。我强烈建议您接受专业的心理治疗,如CBT等,以改善当前状况。我会与您并肩作战,共同应对这个挑战,助您早日走出阴霾。",
+            //     from1: HeadImg,
+            //   });
+            //   let contant1 = document.getElementById("contant1");
+            //   this.sleep(101).then(() => {
+            //     contant1.scrollTop = contant1.scrollHeight;
+            //   });
+            //   this.getNext(this.currentId);
+            // } else if (score >= 73 && score <= 100) {
+            //   this.chatContents.push({
+            //     from: 1,
+            //     isScale: false,
+            //     isType: -1,
+            //     question:
+            //       "您可能正面临严重的抑郁症状。这是一个紧急状况,我强烈建议您立即寻求专业医疗帮助,包括药物治疗和精神评估。我会全力支持您,与您共度难关,直至您重拾生活的希望。",
+            //     from1: HeadImg,
+            //   });
+            //   let contant1 = document.getElementById("contant1");
+            //   this.sleep(101).then(() => {
+            //     contant1.scrollTop = contant1.scrollHeight;
+            //   });
+            //   this.getNext(this.currentId);
+            // }
           } else if (this.interveneId == 3) {
             this.chatContents.push({
               from: 1,
@@ -1332,31 +1379,29 @@ export default {
     selectMood(val) {
       // this.sendMsgFlag=true;
       let that = this;
-      axios
-        .post(`http://127.0.0.1:9999/sentiment`, { text: val })
-        .then((res) => {
-          that.sendMsgFlag = true;
-          that.threeAnswers.push(res.data.sentiment);
-          //是否问问题的标志
-          //当答案小于3时需要接着提问
-          if (that.threeAnswers.length < 3) {
-            that.askQuestions();
-          } else if (that.threeAnswers.length === 3) {
-            //当等于3时需要判断是否接着提问
-            //当负面情绪小于2时则终止询问
-            //当负面情绪大于等于2时需要再次提问
-            that.judgeMood(2);
-          } else if (that.threeAnswers.length === 4) {
-            //当问题等于4时再次询问
-            that.askQuestions();
-          } else if (that.threeAnswers.length === 5) {
-            //调用判断结果负面情绪是否大于等于3
-            that.judgeMood(3);
-          }
+      axios.post(`http://127.0.0.1:9999/sentiment`, { text: val }).then((res) => {
+        that.sendMsgFlag = true;
+        that.threeAnswers.push(res.data.sentiment);
+        //是否问问题的标志
+        //当答案小于3时需要接着提问
+        if (that.threeAnswers.length < 3) {
+          that.askQuestions();
+        } else if (that.threeAnswers.length === 3) {
+          //当等于3时需要判断是否接着提问
+          //当负面情绪小于2时则终止询问
+          //当负面情绪大于等于2时需要再次提问
+          that.judgeMood(2);
+        } else if (that.threeAnswers.length === 4) {
+          //当问题等于4时再次询问
+          that.askQuestions();
+        } else if (that.threeAnswers.length === 5) {
+          //调用判断结果负面情绪是否大于等于3
+          that.judgeMood(3);
+        }
 
-          //当回答的答案大于等于3时判断是否结束,当负面情绪大于等于2时
-          // that.judgeMood();
-        });
+        //当回答的答案大于等于3时判断是否结束,当负面情绪大于等于2时
+        // that.judgeMood();
+      });
     },
     //当回答的答案大于等于3时判断是否结束,当负面情绪大于等于2时
     judgeMood(val) {
@@ -1473,24 +1518,18 @@ export default {
       scaleInfoTemp.checkItems = item;
       this.scale_result.push(scaleInfoTemp);
       // bbc测试判断是否展示20~24题
-      if (
-        item != "是" &&
-        this.scale_flag == "20211101163739" &&
-        this.scale_index == 19
-      ) {
+      if (item != "是" && this.scale_flag == "20211101163739" && this.scale_index == 19) {
         this.scale_index = 24;
         for (let i = 20; i < 24; i++) {
           this.scale_result.push(this.scale_infos[i]);
         }
-        this.scale_checkItems =
-          this.scale_infos[this.scale_index].checkItems.split(";");
+        this.scale_checkItems = this.scale_infos[this.scale_index].checkItems.split(";");
         return;
       }
       //如果是单选题
 
       if (scaleInfoTemp.questionType == "0") {
-        if (this.scale_index <= this.scale_infos.length - 1)
-          this.scale_index += 1;
+        if (this.scale_index <= this.scale_infos.length - 1) this.scale_index += 1;
         this.answerSelect(this.tmpRadio);
         //scale_index == 题目总数,表示结束
         if (this.scale_index == this.scale_infos.length) {
@@ -1534,8 +1573,9 @@ export default {
           // 我觉得很难让自己安静下来
 
           this.askEnd(this.scale_infos[this.scale_index].answer);
-          this.scale_checkItems =
-            this.scale_infos[this.scale_index].checkItems.split(";");
+          this.scale_checkItems = this.scale_infos[this.scale_index].checkItems.split(
+            ";"
+          );
         }
       }
     },
@@ -1547,14 +1587,11 @@ export default {
         _this.scaleSelectFlag = true;
         if (res.data.code == 200 && res.data.data) {
           _this.resultJsonParams = res.data.data;
-          let testResult = JSON.parse(
-            res.data.data.userRecordEntity.testResult
-          )[0].version;
+          let testResult = JSON.parse(res.data.data.userRecordEntity.testResult)[0]
+            .version;
 
           if (_this.scale_flag === "20210910163158") {
-            let sleep = JSON.parse(
-              _this.resultJsonParams.userRecordEntity.testResult
-            );
+            let sleep = JSON.parse(_this.resultJsonParams.userRecordEntity.testResult);
             sleep = sleep[0].newTableContext.result[0].improvementSuggestions;
             _this.askEnd(sleep);
             _this.askEnd("您还想跟我再聊一聊吗?");
@@ -1563,9 +1600,7 @@ export default {
           }
 
           if (_this.scale_flag === "20220805135201") {
-            let sleep = JSON.parse(
-              _this.resultJsonParams.userRecordEntity.testResult
-            );
+            let sleep = JSON.parse(_this.resultJsonParams.userRecordEntity.testResult);
             sleep = sleep[0].tableContext;
             let str = "";
             for (let i = 0; i < sleep.length; i++) {
@@ -1594,7 +1629,6 @@ export default {
               //   str += "抑郁建议:" + sleep[i].value[0] + " ";
               // }
             }
-            console.log(sleep);
             _this.askEnd(str);
 
             _this.askEnd("您还想跟我再聊一聊吗?");
@@ -1629,8 +1663,7 @@ export default {
         console.log(this.scale_infos);
         this.scale_all = this.scale_infos.length;
         this.askEnd(this.scale_infos[this.scale_index].answer);
-        this.scale_checkItems =
-          this.scale_infos[this.scale_index].checkItems.split(";");
+        this.scale_checkItems = this.scale_infos[this.scale_index].checkItems.split(";");
         console.log(this.scale_checkItems);
         this.scale_percent = parseInt((this.scale_index + 1) / this.scale_all);
         this.scale_percent = ((this.scale_index + 1) * 100) / this.scale_all;
@@ -1921,7 +1954,7 @@ export default {
   },
 };
 </script>
-  <style scoped>
+<style scoped>
 .mainTable-top {
   margin-top: 5%;
 }
@@ -1981,6 +2014,10 @@ export default {
   padding: 18px;
   /* font-size: 20px; */
 }
+.message_form2 {
+  word-break: break-all;
+  /* font-size: 20px; */
+}
 
 .xl_d_button {
   background: rgb(87, 172, 187);
@@ -2136,4 +2173,4 @@ export default {
   flex-direction: row;
   align-items: center;
 }
-</style>
+</style>