|  |  | 
 |  |  | <template> | 
 |  |  |   <div class="questionnaire"> | 
 |  |  |     <div class="CONTENT"> | 
 |  |  |       <div class="title">二期问卷调查表</div> | 
 |  |  |       <div class="title">{{ taskname ? taskname : "问卷" }}</div> | 
 |  |  |       <div class="preview-left"> | 
 |  |  |         <!-- 单选 --> | 
 |  |  |         <div | 
 |  |  | 
 |  |  |           v-for="(item, index) in questionList" | 
 |  |  |           :key="item.aaa" | 
 |  |  |         > | 
 |  |  |           <div class="dev-text"> | 
 |  |  |             {{ index + 1 }}、<span>{{ item.questionText }}</span> | 
 |  |  |           <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 1"> | 
 |  |  |             <div class="dev-text"> | 
 |  |  |               {{ index + 1 }}、[单选]<span>{{ item.scriptContent }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="dev-xx"> | 
 |  |  |               <el-radio-group v-model="item.scriptResult"> | 
 |  |  |                 <el-radio | 
 |  |  |                   v-for="(items, index) in item.svyLibTemplateTargetoptions" | 
 |  |  |                   :key="index" | 
 |  |  |                   :label="index" | 
 |  |  |                   >{{ items.optioncontent }}</el-radio | 
 |  |  |                 > | 
 |  |  |               </el-radio-group> | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |  | 
 |  |  |           <div class="dev-xx" v-if="item.valueType == 1"> | 
 |  |  |             <el-radio-group v-model="item.asrtext"> | 
 |  |  |               <el-radio | 
 |  |  |                 v-for="(items, index) in item.ivrLibaScriptTargetoptionList" | 
 |  |  |                 :key="items.id" | 
 |  |  |                 :label="items.targetvalue" | 
 |  |  |                 >{{ items.targetvalue }}</el-radio | 
 |  |  |           <!-- 多选 --> | 
 |  |  |           <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 2"> | 
 |  |  |             <div class="dev-text"> | 
 |  |  |               {{ index + 1 }}、[多选]<span>{{ item.scriptContent }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="dev-xx"> | 
 |  |  |               <el-checkbox-group v-model="item.scriptResult"> | 
 |  |  |                 <el-checkbox | 
 |  |  |                   @change="$forceUpdate()" | 
 |  |  |                   v-for="(items, indexs) in item.svyLibTemplateTargetoptions" | 
 |  |  |                   :key="indexs" | 
 |  |  |                   :label="items.optioncontent" | 
 |  |  |                 > | 
 |  |  |                   {{ items.optioncontent }} | 
 |  |  |                 </el-checkbox> | 
 |  |  |               </el-checkbox-group> | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |           <!-- 填空 --> | 
 |  |  |           <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 4"> | 
 |  |  |             <div class="dev-text"> | 
 |  |  |               {{ index + 1 }}、[问答]<span>{{ item.scriptContent }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="dev-xx"> | 
 |  |  |               <el-input | 
 |  |  |                 type="textarea" | 
 |  |  |                 :rows="2" | 
 |  |  |                 placeholder="请输入答案" | 
 |  |  |                 v-model="item.scriptResult" | 
 |  |  |                 clearable | 
 |  |  |               > | 
 |  |  |             </el-radio-group> | 
 |  |  |           </div> | 
 |  |  |           <div v-else> | 
 |  |  |             <el-input | 
 |  |  |               type="textarea" | 
 |  |  |               placeholder="请输入内容" | 
 |  |  |               v-model.sync="item.asrtext" | 
 |  |  |               :rows="2" | 
 |  |  |             /> | 
 |  |  |               </el-input> | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  |       <el-form :model="formData" label-width="80px"> | 
 |  |  |         <el-form-item> | 
 |  |  |           <el-button type="primary" @click="submitForm">提交问卷</el-button> | 
 |  |  |           <el-button type="primary" @click="cache(true)">提交问卷</el-button> | 
 |  |  |           <el-button type="primary" @click="cache">缓存问卷</el-button> | 
 |  |  |         </el-form-item> | 
 |  |  |       </el-form> | 
 |  |  |     </div> | 
 |  |  | 
 |  |  | <script> | 
 |  |  | import { | 
 |  |  |   getExternalfollowup, | 
 |  |  |   SetsaveQuestionAnswer, | 
 |  |  |   getCachequestionnaire, | 
 |  |  |   Cachequestionnaire, | 
 |  |  |   Submitaquestionnaire, | 
 |  |  | } from "@/api/AiCentre/index"; | 
 |  |  | import JSEncrypt from "jsencrypt"; | 
 |  |  | export default { | 
 |  |  | 
 |  |  |   methods: { | 
 |  |  |     // 获取数据 | 
 |  |  |     getQuestionnaire() { | 
 |  |  |       let taskid = this.$route.query.param1; | 
 |  |  |       let patid = this.$route.query.param2; | 
 |  |  |       this.taskid = decodeURIComponent(this.$route.query.param1); | 
 |  |  |       this.patid = decodeURIComponent(this.$route.query.param2); | 
 |  |  |       this.taskname = this.$route.query.param3; | 
 |  |  |       // let taskid = | 
 |  |  |       //   "OFp7tn/B6x7IzKJetvGWHdSWBj7msRlnlj6am9dyuHTH6sEt4uBbVCUXs5kcF/e4O2W6vqHf2Bz9K3/evbYDmw=="; | 
 |  |  |       // let patid = | 
 |  |  |       //   "CVk0j8O86AeCqhV5WPsBBYDg9fec0wDoDlP9imYK4wDBNIkxywZzMJEGlPagOxnq6qr2WYZo0U8MUGWRGnq8ZA=="; | 
 |  |  |       this.taskid = this.decrypt(taskid); | 
 |  |  |       this.patid = this.decrypt(patid); | 
 |  |  |       // this.taskid = this.decrypt(taskid); | 
 |  |  |       // this.patid = this.decrypt(patid); | 
 |  |  |  | 
 |  |  |       // this.$modal.msgSuccess("用户id为" + this.patid); | 
 |  |  |       // this.$modal.msgSuccess("任务id为" + this.taskid); | 
 |  |  |       let taskids = this.encrypt(this.taskid); | 
 |  |  |       let patids = this.encrypt(this.patid); | 
 |  |  |       getExternalfollowup({ param1: taskids, param2: patids }).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.questionList = res.rows; | 
 |  |  |       // let taskids = this.encrypt(this.taskid); | 
 |  |  |       // let patids = this.encrypt(this.patid); | 
 |  |  |       console.log(this.$route.query.param1); | 
 |  |  |       console.log(this.$route.query.param2); | 
 |  |  |       // 先取缓存 | 
 |  |  |       getCachequestionnaire({ param1: this.taskid, param2: this.patid }).then( | 
 |  |  |         (res) => { | 
 |  |  |           if (res.code == 200) { | 
 |  |  |             this.questionList = res.data; | 
 |  |  |             if (this.questionList[0]) { | 
 |  |  |               this.questionList.forEach((item) => { | 
 |  |  |                 if (item.scriptResult) { | 
 |  |  |                   item.scriptResult = JSON.parse(item.scriptResult); | 
 |  |  |                 } | 
 |  |  |               }); | 
 |  |  |               return; | 
 |  |  |             } else { | 
 |  |  |               this.getExternalfollowup(); | 
 |  |  |             } | 
 |  |  |           } else { | 
 |  |  |             this.getExternalfollowup(); | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       ); | 
 |  |  |     }, | 
 |  |  |     getExternalfollowup() { | 
 |  |  |       getExternalfollowup({ param1: this.taskid, param2: this.patid }).then( | 
 |  |  |         (res) => { | 
 |  |  |           if (res.code == 200) { | 
 |  |  |             this.questionList = res.rows; | 
 |  |  |             // 处理题目收集结果格式 | 
 |  |  |             this.questionList.forEach((item) => { | 
 |  |  |               item.nextScriptno = Number(item.nextScriptno); | 
 |  |  |               if (item.scriptType == 2) { | 
 |  |  |                 item.scriptResult = []; | 
 |  |  |               } | 
 |  |  |             }); | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       ); | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // 加密函数 | 
 |  |  |     encrypt(txt) { | 
 |  |  |       const encryptor = new JSEncrypt(); | 
 |  |  | 
 |  |  |     // 提交 | 
 |  |  |     submitForm() { | 
 |  |  |       // 提交表单逻辑 | 
 |  |  |       console.log(this.questionList); | 
 |  |  |       let form = { | 
 |  |  |         param1: this.encrypt(this.taskid), | 
 |  |  |         param2: this.encrypt(this.patid), | 
 |  |  |         ivrTaskcalldetailList: [], | 
 |  |  |         param1: this.taskid, | 
 |  |  |         param2: this.patid, | 
 |  |  |         serviceSubtaskDetailList: [], | 
 |  |  |       }; | 
 |  |  |       this.questionList.forEach((item) => { | 
 |  |  |         let optionarr = []; | 
 |  |  |         item.ivrLibaScriptTargetoptionList.forEach((option) => { | 
 |  |  |           optionarr.push(option.targetvalue); | 
 |  |  |         }); | 
 |  |  |         let ivrTaskcalldetail = { | 
 |  |  |           asrtext: item.asrtext, | 
 |  |  |           valueType: item.valueType, | 
 |  |  |           questiontext: item.questionText, | 
 |  |  |           targetoptions: optionarr.join(","), | 
 |  |  |         }; | 
 |  |  |         form.ivrTaskcalldetailList.push(ivrTaskcalldetail); | 
 |  |  |       const arr = structuredClone(this.questionList); | 
 |  |  |       arr.forEach((item) => { | 
 |  |  |         item.asrtext = JSON.stringify(item.scriptResult); | 
 |  |  |       }); | 
 |  |  |       console.log(form, "form"); | 
 |  |  |  | 
 |  |  |       SetsaveQuestionAnswer(form).then((res) => { | 
 |  |  |       form.serviceSubtaskDetailList = arr; | 
 |  |  |       Submitaquestionnaire(form).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.$modal.msgSuccess("提交成功"); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       // 可以将数据提交到后端或者进行其他处理 | 
 |  |  |     }, | 
 |  |  |     // 缓存 | 
 |  |  |     cache(subm) { | 
 |  |  |       let form = { | 
 |  |  |         param1: this.taskid, | 
 |  |  |         param2: this.patid, | 
 |  |  |         svyLibTemplateScriptVOS: [], | 
 |  |  |       }; | 
 |  |  |       const arr = structuredClone(this.questionList); | 
 |  |  |       arr.forEach((item) => { | 
 |  |  |         item.scriptResult = JSON.stringify(item.scriptResult); | 
 |  |  |       }); | 
 |  |  |       form.svyLibTemplateScriptVOS = arr; | 
 |  |  |       Cachequestionnaire(form).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.$modal.msgSuccess("提交成功"); | 
 |  |  |           if (subm) { | 
 |  |  |             this.submitForm(); | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  | 
 |  |  |  | 
 |  |  | <style lang="scss" scoped> | 
 |  |  | .questionnaire { | 
 |  |  |   // background-image: url("../assets/images/chainbackground.jpg"); | 
 |  |  |   // background-repeat: no-repeat; | 
 |  |  |   // background-position: center center; | 
 |  |  |   // background-size: cover; | 
 |  |  |   // height: 100vh; | 
 |  |  |   background-image: url("../assets/images/chainbackground.jpg"); | 
 |  |  |   background-size: cover; | 
 |  |  |   background-attachment: fixed; /* 保持背景固定 */ |