| | |
| | | <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; /* 保持背景固定 */ |