|  |  | 
 |  |  | <template> | 
 |  |  |   <div class="questionnaire"> | 
 |  |  |     <div class="CONTENT"> | 
 |  |  |       <div class="title">暑期问卷</div> | 
 |  |  |       <div class="title">随访问卷</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="item.sort" | 
 |  |  |             v-if="item.scriptType == 1" | 
 |  |  |           > | 
 |  |  |             <div class="dev-text"> | 
 |  |  |               {{ item.sort }}、[单选]<span>{{ item.scriptContent }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="dev-xx"> | 
 |  |  |               <el-radio-group v-model="item.remark"> | 
 |  |  |                 <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.radio"> | 
 |  |  |               <el-radio | 
 |  |  |                 v-for="(items, index) in item.ivrLibaScriptTargetoptionList" | 
 |  |  |                 :key="items.id" | 
 |  |  |                 :label="items.id" | 
 |  |  |                 >{{ items.targetvalue }}</el-radio | 
 |  |  |               > | 
 |  |  |             </el-radio-group> | 
 |  |  |           <!-- 多选 --> | 
 |  |  |           <div | 
 |  |  |             class="scriptTopic-dev" | 
 |  |  |             :key="item.sort" | 
 |  |  |             v-if="item.scriptType == 2" | 
 |  |  |           > | 
 |  |  |             <div class="dev-text"> | 
 |  |  |               {{ item.sort }}、[多选]<span>{{ item.scriptContent }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="dev-xx"> | 
 |  |  |               <el-checkbox-group v-model="qremark"> | 
 |  |  |                 <el-checkbox | 
 |  |  |                   v-for="(items, index) in item.svyLibTemplateTargetoptions" | 
 |  |  |                   :key="index" | 
 |  |  |                   :label="index" | 
 |  |  |                 > | 
 |  |  |                   {{ items.optioncontent }} | 
 |  |  |                 </el-checkbox> | 
 |  |  |               </el-checkbox-group> | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |           <div v-else> | 
 |  |  |             <el-input | 
 |  |  |               type="textarea" | 
 |  |  |               placeholder="未获取到信息" | 
 |  |  |               v-model.sync="item.questionResult" | 
 |  |  |               :rows="2" | 
 |  |  |             /> | 
 |  |  |           <!-- 填空 --> | 
 |  |  |           <div | 
 |  |  |             class="scriptTopic-dev" | 
 |  |  |             :key="item.sort" | 
 |  |  |             v-if="item.scriptType == 4" | 
 |  |  |           > | 
 |  |  |             <div class="dev-text"> | 
 |  |  |               {{ item.sort }}、[问答]<span>{{ item.scriptContent }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="dev-xx"> | 
 |  |  |               <el-input placeholder="请输入答案" v-model="radioas" clearable> | 
 |  |  |               </el-input> | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import { getExternalfollowup } from "@/api/AiCentre/index"; | 
 |  |  | import CryptoJS from "crypto-js"; | 
 |  |  | import { | 
 |  |  |   getExternalfollowup, | 
 |  |  |   Submitaquestionnaire, | 
 |  |  | } from "@/api/AiCentre/index"; | 
 |  |  | import JSEncrypt from "jsencrypt"; | 
 |  |  | export default { | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  | 
 |  |  |         "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKR0yHv0rbJWQE+Sc7/FwpW66qMd9qX2k6z+SDgkSdxWh/1GbBoAP7bDQQRF6vXmoKsD2ya42H6XRLSDXAoayuMCAwEAAQ== ", | 
 |  |  |       // 后端私钥 | 
 |  |  |       privateKey: | 
 |  |  |         "MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==", | 
 |  |  |         " MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==", | 
 |  |  |       formData: { | 
 |  |  |         question1: "", | 
 |  |  |         question2: "", | 
 |  |  | 
 |  |  |     this.getQuestionnaire(); | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     submitForm() { | 
 |  |  |       // 提交表单逻辑 | 
 |  |  |       console.log(this.formData); | 
 |  |  |       // 可以将数据提交到后端或者进行其他处理 | 
 |  |  |     }, | 
 |  |  |     // 获取数据 | 
 |  |  |     getQuestionnaire() { | 
 |  |  |       let taskid = this.$route.query.param1; | 
 |  |  |       let patid = this.$route.query.param2; | 
 |  |  |       taskid = this.decryptData(taskid, this.privateKey); | 
 |  |  |       patid = this.decryptData(patid, this.privateKey); | 
 |  |  |       this.taskid = taskid; | 
 |  |  |       this.patid = patid; | 
 |  |  |       this.taskid = this.$route.query.param1; | 
 |  |  |       this.patid = this.$route.query.param2; | 
 |  |  |       let taskname = this.$route.query.param3; | 
 |  |  |       let routertf = this.$route.query.param5; | 
 |  |  |  | 
 |  |  |       // console.log(taskid, "taskid"); | 
 |  |  |       // console.log(patid, "patid"); | 
 |  |  |       // console.log(taskname, "taskname"); | 
 |  |  |       // console.log(routertf, "routertf"); | 
 |  |  |       // let taskid = | 
 |  |  |       //   "OFp7tn/B6x7IzKJetvGWHdSWBj7msRlnlj6am9dyuHTH6sEt4uBbVCUXs5kcF/e4O2W6vqHf2Bz9K3/evbYDmw=="; | 
 |  |  |       // let patid = | 
 |  |  |       //   "CVk0j8O86AeCqhV5WPsBBYDg9fec0wDoDlP9imYK4wDBNIkxywZzMJEGlPagOxnq6qr2WYZo0U8MUGWRGnq8ZA=="; | 
 |  |  |       // 解密 | 
 |  |  |       // this.taskid = this.decrypt(taskid); | 
 |  |  |       // this.patid = this.decrypt(patid); | 
 |  |  |  | 
 |  |  |       // this.taskid = taskid; | 
 |  |  |       // this.patid = patid; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |       this.$modal.msgSuccess("用户id为" + this.patid); | 
 |  |  |       this.$modal.msgSuccess("任务id为" + this.taskid); | 
 |  |  |       getExternalfollowup({ param1: this.taskid, param2: this.patid }).then( | 
 |  |  |         (res) => { | 
 |  |  |           if (res.code == 200) { | 
 |  |  |             this.questionList = res.rows; | 
 |  |  |           } | 
 |  |  |       // let taskids = this.encrypt(this.taskid); | 
 |  |  |       // let patids = this.encrypt(this.patid); | 
 |  |  |       getExternalfollowup({ param1: this.taskid, param2: this.patid }).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.questionList = res.rows; | 
 |  |  |         } | 
 |  |  |       ); | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     // 加密函数 | 
 |  |  |     encryptData(data, publicKey) { | 
 |  |  |       // 将公钥转换为CryptoJS格式 | 
 |  |  |       let key = CryptoJS.enc.Utf8.parse(publicKey); | 
 |  |  |  | 
 |  |  |       // 使用公钥进行加密 | 
 |  |  |       let encrypted = CryptoJS.AES.encrypt(data, key, { | 
 |  |  |         mode: CryptoJS.mode.ECB, | 
 |  |  |         padding: CryptoJS.pad.Pkcs7, | 
 |  |  |       }); | 
 |  |  |  | 
 |  |  |       // 返回加密后的数据 | 
 |  |  |       return encrypted.toString(); | 
 |  |  |     encrypt(txt) { | 
 |  |  |       const encryptor = new JSEncrypt(); | 
 |  |  |       encryptor.setPublicKey(this.publicKey); // 设置公钥 | 
 |  |  |       return encryptor.encrypt(txt); // 对数据进行加密 | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  |     // 解密函数 | 
 |  |  |     decryptData(encryptedData, privateKey) { | 
 |  |  |       // 将私钥转换为CryptoJS格式 | 
 |  |  |       let key = CryptoJS.enc.Utf8.parse(privateKey); | 
 |  |  |  | 
 |  |  |       // 使用私钥进行解密 | 
 |  |  |       let decrypted = CryptoJS.AES.decrypt(encryptedData, key, { | 
 |  |  |         mode: CryptoJS.mode.ECB, | 
 |  |  |         padding: CryptoJS.pad.Pkcs7, | 
 |  |  |     decrypt(txt) { | 
 |  |  |       const encryptor = new JSEncrypt(); | 
 |  |  |       encryptor.setPrivateKey(this.privateKey); // 设置私钥 | 
 |  |  |       return encryptor.decrypt(txt); // 对数据进行解密 | 
 |  |  |     }, | 
 |  |  |     // 提交 | 
 |  |  |     submitForm() { | 
 |  |  |       // 提交表单逻辑 | 
 |  |  |       console.log(this.questionList); | 
 |  |  |       let form = { | 
 |  |  |         param1: this.taskid, | 
 |  |  |         param2: this.patid, | 
 |  |  |         ivrTaskcalldetailList: [], | 
 |  |  |       }; | 
 |  |  |       this.questionList.forEach((item) => { | 
 |  |  |         let optionarr = []; | 
 |  |  |         item.ivrLibaScriptTargetoptionList.forEach((option) => { | 
 |  |  |           optionarr.push(option.targetvalue); | 
 |  |  |         }); | 
 |  |  |         let ivrTaskcalldetail = { | 
 |  |  |           asrtext: item.asrtext, | 
 |  |  |           valueType: item.valueType, | 
 |  |  |           scriptContent: item.scriptContent, | 
 |  |  |           targetoptions: optionarr.join(","), | 
 |  |  |         }; | 
 |  |  |         form.ivrTaskcalldetailList.push(ivrTaskcalldetail); | 
 |  |  |       }); | 
 |  |  |       console.log(form, "form"); | 
 |  |  |  | 
 |  |  |       // 将解密后的数据转换为字符串并返回 | 
 |  |  |       return decrypted.toString(CryptoJS.enc.Utf8); | 
 |  |  |       Submitaquestionnaire(form).then((res) => { | 
 |  |  |         if (res.code == 200) { | 
 |  |  |           this.$modal.msgSuccess("提交成功"); | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |       // 可以将数据提交到后端或者进行其他处理 | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  | }; |