WXL
2024-09-03 a346cfbcb03a303dca252d910d2181f00e7adc20
src/views/outsideChainwt.vue
@@ -1,7 +1,7 @@
<template>
  <div class="questionnaire">
    <div class="CONTENT">
      <div class="title">二期问卷调查表</div>
      <div class="title">{{ taskname ? taskname : "问卷" }}</div>
      <div class="preview-left">
        <!-- 单选 -->
        <div
@@ -9,33 +9,61 @@
          v-for="(item, index) in questionList"
          :key="item.aaa"
        >
          <div class="dev-text">
            {{ index + 1 }}、<span>{{ item.scriptContent }}</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>
@@ -45,7 +73,9 @@
<script>
import {
  getExternalfollowup,
  SetsaveQuestionAnswer,
  getCachequestionnaire,
  Cachequestionnaire,
  Submitaquestionnaire,
} from "@/api/AiCentre/index";
import JSEncrypt from "jsencrypt";
export default {
@@ -74,25 +104,60 @@
  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();
@@ -109,37 +174,44 @@
    // 提交
    submitForm() {
      // 提交表单逻辑
      console.log(this.questionList);
      let form = {
        param1: this.encrypt(this.taskid),
        param2: this.encrypt(this.patid),
        svyTasksingledetailList: [],
        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,
          scriptType: item.scriptType,
          questiontext: item.questiontext,
          questionvoice: item.questionvoice,
          scriptContent: item.scriptContent,
          targetoptions: optionarr.join(","),
        };
        form.svyTasksingledetailList.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();
          }
        }
      });
    },
  },
};
</script>