WXL
2024-12-03 294e513504423b4726c36046decc649f272851e0
测试完成
已添加1个文件
已修改9个文件
2815 ■■■■■ 文件已修改
src/api/AiCentre/Followup.js 135 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/external.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/UploadImg/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/index.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/detailpage/index.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/taskub.vue 2530 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Followup.js
@@ -17,78 +17,85 @@
}
// åˆ é™¤éšè®¿æ¨¡æ¿
export function delFollowupinfo(Id) {
    return request({
      url: "/smartor/template/remove/" + Id,
      method: "get",
    });
  }
  return request({
    url: "/smartor/template/remove/" + Id,
    method: "get",
  });
}
// æ–°å¢žæˆ–修改随访模板
export function compileFollowup(data) {
    return request({
      url: "/smartor/template/saveOrUpdateScript",
      method: "post",
      data: data,
    });
  }
    // æŸ¥è¯¢éšè®¿æ¨¡æ¿è¯¦æƒ…列表
  return request({
    url: "/smartor/template/saveOrUpdateScript",
    method: "post",
    data: data,
  });
}
// æŸ¥è¯¢éšè®¿æ¨¡æ¿è¯¦æƒ…列表
export function getvFollowup(data) {
    return request({
        url: "/smartor/template/selectInfoByCondition",
      method: "post",
      data: data,
    });
  }
  return request({
    url: "/smartor/template/selectInfoByCondition",
    method: "post",
    data: data,
  });
}
export function getTaskFollowup(id) {
  return request({
    url: "/smartor/ivrTaskTemplate/getTemplateInfoByID/"+id,
    method: "get",
    // data: data,
  });
}
  // æ–°å¢žéšè®¿æ¨¡æ¿åˆ†ç±»æ ‘
  export function addFollowupclassify(data) {
    return request({
      url: "/smartor/templateassort/addtree",
      method: "post",
      data: data,
    });
  }
  // æ–°å¢žéšè®¿æ¨¡æ¿åˆ†ç±»æ ‘
  export function editFollowupclassify(data) {
    return request({
      url: "/smartor/templateassort/edit",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤éšè®¿æ¨¡æ¿åˆ†ç±»
// æ–°å¢žéšè®¿æ¨¡æ¿åˆ†ç±»æ ‘
export function addFollowupclassify(data) {
  return request({
    url: "/smartor/templateassort/addtree",
    method: "post",
    data: data,
  });
}
// æ–°å¢žéšè®¿æ¨¡æ¿åˆ†ç±»æ ‘
export function editFollowupclassify(data) {
  return request({
    url: "/smartor/templateassort/edit",
    method: "post",
    data: data,
  });
}
// åˆ é™¤éšè®¿æ¨¡æ¿åˆ†ç±»
export function delFollowupclassify(Id) {
  return request({
    url: "/smartor/templateassort/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢éšè®¿æ¨¡æ¿åˆ†ç±»æ ‘
  export function getFollowupclassify(data) {
    return request({
      url: "/smartor/templateassort/selectIvrLibaTemplateAssortList",
      method: "post",
      data: data,
    });
  }
      // é—®å·ä»»åŠ¡æ¨¡æ¿æ–°å¢žä¿®æ”¹
      export function Taskparticty(data) {
        return request({
          url: "/smartor/ivrTaskTemplate/saveOrUpdateTempScript",
          method: "post",
          data: data,
        });
      }
        // åˆ é™¤ä»»åŠ¡æ¨¡æ¿
    export function deleteTaskparticty(svyid) {
      return request({
        url: "/smartor/ivrTaskTemplate/remove/" + svyid,
        method: "get",
      });
    }
// æŸ¥è¯¢éšè®¿æ¨¡æ¿åˆ†ç±»æ ‘
export function getFollowupclassify(data) {
  return request({
    url: "/smartor/templateassort/selectIvrLibaTemplateAssortList",
    method: "post",
    data: data,
  });
}
// é—®å·ä»»åŠ¡æ¨¡æ¿æ–°å¢žä¿®æ”¹
export function Taskparticty(data) {
  return request({
    url: "/smartor/ivrTaskTemplate/saveOrUpdateTempScript",
    method: "post",
    data: data,
  });
}
// åˆ é™¤ä»»åŠ¡æ¨¡æ¿
export function deleteTaskparticty(svyid) {
  return request({
    url: "/smartor/ivrTaskTemplate/remove/" + svyid,
    method: "get",
  });
}
        export function getTaskparticty(svyid) {
          return request({
            url: "/smartor/ivrTaskTemplate/getInfo/" + svyid,
            method: "get",
          });
        }
export function getTaskparticty(svyid) {
  return request({
    url: "/smartor/ivrTaskTemplate/getInfo/" + svyid,
    method: "get",
  });
}
src/api/AiCentre/external.js
@@ -3,7 +3,7 @@
// å¤–链获取随访
export function getExternalfollowup(data) {
  return request({
    url: "/smartor/servicetask/getScriptInfoByCondition",
    url: "/servicetask/getScriptInfoByCondition",
    // url: "/servicetask/getScriptInfoByCondition",
    method: "post",
    data: data
@@ -12,7 +12,7 @@
// åˆ é™¤é€šç”¨æ¨¡æ¿s
export function geturlinfo(id) {
  return request({
    url: "/smartor/outPath/getInfoByParam",
    url: "/outPath/getInfoByParam",
    method: 'post',
    params: {param:id}
  });
@@ -21,7 +21,7 @@
export function SetsaveQuestionAnswer(data) {
  return request({
    // url: "/ivrtaskcalldetail/saveQuestionAnswer",
    url: "/smartor/serviceSubtask/saveQuestionAnswer",
    url: "/serviceSubtask/saveQuestionAnswer",
    method: "post",
    data: data
  });
@@ -30,7 +30,7 @@
// ç¼“存问卷
export function Cachequestionnaire(data) {
  return request({
    url: "/smartor/subtaskAnswer/saveQuestionCache",
    url: "/subtaskAnswer/saveQuestionCache",
    method: "post",
    data: data
  });
@@ -38,7 +38,7 @@
// æ‹¿ç¼“存问卷
export function getCachequestionnaire(data) {
  return request({
    url: "/smartor/subtaskAnswer/getQuestionCache",
    url: "/subtaskAnswer/getQuestionCache",
    method: "post",
    data: data
  });
@@ -46,7 +46,7 @@
// æäº¤é—®å·
export function Submitaquestionnaire(data) {
  return request({
    url: "/smartor/subtaskAnswer/saveQuestionAnswer",
    url: "/subtaskAnswer/saveQuestionAnswer",
    method: "post",
    data: data
  });
@@ -71,12 +71,12 @@
// èŽ·å–è¯­éŸ³æœåŠ¡ï¼ˆå†…ï¼‰
export function getPersonVoices(data) {
  return request({
    url: "/smartor/smartor/serviceSubtaskDetail/getPersonVoice",
    url: "/smartor/serviceSubtaskDetail/getPersonVoice",
    method: "post",
    data: data
  });
}
// èŽ·å–è¯­éŸ³æœåŠ¡ï¼ˆå†…ï¼‰
// æ›´æ–°è¯­éŸ³æœåŠ¡ï¼ˆå†…ï¼‰
export function updatePersonVoices(data) {
  return request({
    url: "/smartor/serviceSubtaskDetail/batchEdit",
src/components/UploadImg/index.vue
@@ -29,8 +29,8 @@
<script>
import COS from "cos-js-sdk-v5";
var cos = new COS({
  SecretId: "AKIDxlNmyua2FDwSjmeHGVVHxNYVghSyFhus",
  SecretKey: "nPp8D5mKgomaBawHPI1avzuhJhqombCZ",
  SecretId: "",
  SecretKey: "",
});
console.log(cos);
export default {
src/components/index.js
@@ -1,11 +1,11 @@
import PageTools from "@/components/PageTools"
import UploadExcel from "@/components/UploadExcel"
import UploadImg from "@/components/UploadImg"
const component=[PageTools,UploadExcel,UploadImg]
// import UploadImg from "@/components/UploadImg"
const component=[PageTools,UploadExcel]
export default{
    install(Vue){
        component.forEach((component)=>{
            Vue.component(component.name,component)
        })
    }
}
}
src/views/followvisit/discharge/index.vue
@@ -1093,7 +1093,7 @@
          taskid: row.taskid,
          patid: row.patid,
          id: row.id,
          Voicetype: type,
          Voicetype: 1,
        },
      });
    },
src/views/followvisit/record/detailpage/index.vue
@@ -418,7 +418,7 @@
  getsearchrResults,
  getPersonVoices,
  getTaskservelist,
  getTaskparticty,
  getTaskFollowup,
  Editsingletaskson,
  serviceSubtaskDetailedit,
  serviceSubtaskDetailadd,
@@ -434,6 +434,7 @@
      taskname: "",
      activeName: "wj",
      voice: "",
      templateid:'',
      tableDatatop: [], //题目表
      voiceDatatop: [], //题目表
      Whetherall: false, //是否全部记录展示
@@ -513,13 +514,31 @@
              item.scriptResult = [];
            }
          });
          if (!this.tableDatatop.length) {
          this.puttaskid(this.templateid);
          }
        }
      });
    },
    // èŽ·å–é—®å·å®Œæ•´æ•°æ®æ¯”å¯¹
    puttaskid(id) {
      getTaskparticty(id).then((res) => {
      getTaskFollowup(id).then((res) => {
        if (res.code == 200) {
          this.tableDatatop = res.data.ivrTaskTemplateScriptVOList;
          this.tableDatatop.forEach((item) => {
            // ç±»åž‹åˆ¤æ–­èµ‹å€¼
            if (item.ivrTaskScriptTargetoptionList) {
              item.targetvalue=1;
              item.questiontext=item.scriptContent;
              item.targetvalue = item.ivrTaskScriptTargetoptionList.map(obj => obj.targetvalue).join('&');
            }
            if (item.targetvalue) {
              item.scriptResult = item.targetvalue.split("&");
            } else {
              item.scriptResult = [];
            }
          });
          console.log(this.tableDatatop,'this.tableDatatop');
        }
      });
@@ -593,7 +612,7 @@
      }).then((res) => {
        if (res.code == 200) {
          this.logsheetlist = res.rows[0].serviceSubtaskList;
          this.puttaskid(this.logsheetlist[0].templateid)
          this.templateid=this.logsheetlist[0].templateid
        }
      });
    },
src/views/patient/propaganda/particty.vue
@@ -218,7 +218,7 @@
                          class="ruleFormaa"
                          v-for="item in belongDepts"
                          :key="item.deptCode"
                          :label="item.deptName"
                          :label="item.label"
                          :value="item.deptCode"
                        >
                        </el-option>
@@ -297,6 +297,10 @@
                      placeholder="请点击右侧选择"
                    />
                    <el-button
                      v-if="
                        (form.templateid && form.sendState == 1) ||
                        !form.templateid
                      "
                      style="margin-left: 10px"
                      type="primary"
                      icon="el-icon-edit"
@@ -308,7 +312,7 @@
                      v-if="form.templatename"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnmb"
                      @click="previewfnmb()"
                      circle
                    ></el-button>
                  </el-form-item>
@@ -396,7 +400,6 @@
                    <el-col :span="1.5">
                      <div v-if="form.longTask">
                        <el-tooltip
                          class="item"
                          effect="dark"
                          content="长期任务不支持手动添加患者!"
@@ -815,8 +818,18 @@
      <span slot="footer" class="dialog-footer">
        <!-- <el-button @click="previewGo">保存模板详情修改</el-button> -->
        <el-button type="primary" @click="Departmenttreatment"
          >保存使用</el-button
        <el-button
          v-if="(form.templateid && form.sendState == 1) || !form.templateid"
          type="primary"
          @click="Departmenttreatment"
          >{{ form.templateid ? "替换使用" : "选择使用" }}</el-button
        >
        <el-button
          :type="previewtftype ? 'success' : 'warning'"
          @click="Modifytemplate"
          >{{
            previewtftype ? "前往修改已选择模板" : "新增保存并前往修改"
          }}</el-button
        >
      </span>
    </el-dialog>
@@ -915,11 +928,10 @@
} from "@/api/AiCentre/index";
import { deptTreeSelect } from "@/api/system/user";
import SFtable from "@/components/SFtable"; //表格组件
export default {
  name: "ServiceDetails",
  name: "Particty",
  data() {
    return {
      title: "宣教内容列表",
@@ -939,6 +951,7 @@
      Editprogress: 1, //编辑进度
      drawermb: false, //选择模板弹窗
      previewtf: false, //预览
      previewtftype: 0, //预览情况0新模板预览1已选择模板修改
      loading: false, // é®ç½©å±‚
      patientloading: false, // é®ç½©å±‚
      dialogVisiblepatient: false, //添加患者弹框
@@ -946,6 +959,7 @@
      checkboxlist: [],
      tableLabel: [],
      questionList: [],
      skip: false,
      usable: [
        { value: "0", label: "可用" },
        { value: "1", label: "停用" },
@@ -985,7 +999,7 @@
      ],
      tableLabelwj: [
      { label: "创建人", width: "", prop: "createBy" },
        { label: "创建人", width: "", prop: "createBy" },
        { label: "模板标题", width: "", prop: "templateName" },
        { label: "随访描述", width: "", prop: "note" },
        { label: "修改日期", width: "", prop: "updateTime" },
@@ -1230,7 +1244,15 @@
    this.getFollowupclassify();
  },
  activated() {
    console.log(this.id, "CS", this.$route.query.id);
    if (this.id != this.$route.query.id) {
      this.id = this.$route.query.id;
      this.newadd = this.$route.query.newadd;
      this.form.type = this.$route.query.type;
      this.form.typename = this.$route.query.typename;
      this.serviceType = Number(this.$route.query.serviceType);
      this.form.serviceType = Number(this.$route.query.serviceType);
      this.Acquisitiontype();
      this.Getdetails();
      this.getDeptTree();
@@ -1239,11 +1261,6 @@
  },
  methods: {
    // {
    //   å§“名: { "${name}": "龙傲天" },
    //   åœ°å€: { "${dzz}": "龙宫" },
    //   ç”µè¯: { "${dhh}": "八个八" },
    // }
    // å˜é‡è½¬æ¢å¯¹è±¡è½¬æ•°ç»„
    convertFormat1ToFormat2(data) {
      let result = [];
@@ -1551,15 +1568,18 @@
            this.objyl.suitway = this.objyl.suitway.split(",");
          this.queryParamsdept.tempid = this.form.templateid;
          this.queryParamsdept.type = 21;
          // ç–¾ç—…
          this.getillness(this.form.libtemplateid);
          // æ‰§è¡ŒèŽ·å–è¯¥ä»»åŠ¡æ¨¡æ¿id
          this.listDept();
          this.previewtf = true;
          getvFollowup({ id: this.form.libtemplateid }).then((res) => {
            if (res.code == 200) {
              this.previewtf = true;
              this.previewtftype = 1;
              this.questionList = res.data.ivrLibaTemplateScriptVOList;
              this.objyl.ivrLibaTemplateScriptVOList =
                res.data.ivrLibaTemplateScriptVOList;
            } else {
            }
          });
        }
@@ -1971,7 +1991,7 @@
        this.objyl.ivrLibaTemplateScriptVOList;
      this.objyl.isoperation = 1;
      if (this.form.id) {
        this.objyl.taskid=this.form.id
        this.objyl.taskid = this.form.id;
      }
      if (this.form.templateid) {
        deleteTaskparticty(this.form.templateid).then((res) => {
@@ -1982,7 +2002,16 @@
              this.form.templateid = response.data;
              this.putbelongDepts(response.data);
              this.form.templatename = this.objyl.templateName;
              this.$modal.msgSuccess("选择模板成功");
              this.$modal.msgSuccess("替换模板成功");
              this.drawermb = false;//选择模板弹窗
              this.previewtf = false;//预览
              if (this.skip) {
                // è·³è½¬å‰å¾€ä¿®æ”¹
                this.$router.push({
                  path: "/knowledge/taskub/",
                  query: { id: response.data },
                });
              }
            });
          }
        });
@@ -1994,6 +2023,15 @@
          this.putbelongDepts(response.data);
          this.form.templatename = this.objyl.templateName;
          this.$modal.msgSuccess("选择模板成功");
          this.drawermb = false;//选择模板弹窗
          this.previewtf = false;//预览
          if (this.skip) {
            // è·³è½¬å‰å¾€ä¿®æ”¹
            this.$router.push({
              path: "/knowledge/taskub/",
              query: { id: response.data },
            });
          }
        });
      }
    },
@@ -2063,6 +2101,27 @@
        this.previewFn();
      }, 1000);
    },
    // å‰å¾€ä¿®æ”¹
    Modifytemplate() {
      if (this.form.templateid && this.previewtftype) {
        this.$modal.confirm("是否前往修改任务模板详细内容?").then(() => {
          this.drawermb = false;//选择模板弹窗
          this.previewtf = false;//预览
          this.$router.push({
            path: "/knowledge/taskub/",
            query: { id: this.form.templateid },
          });
        });
      } else {
        this.$modal
          .confirm("当前为基础预览是否创建任务模板并前往修改详情?")
          .then(() => {
            // èµ°å–先绑定后修改操作
            this.Departmenttreatment();
            this.skip = true;
          });
      }
    },
  },
};
</script>
src/views/repositoryai/templateku/configurat/index.vue
@@ -2120,7 +2120,7 @@
    },
    handleDelete(row) {
      this.$modal
        .confirm('是否确认删除问题:"' + row.scriptTopic + '"?')
        .confirm('是否确认删除问题:"' + row.scriptTopic + '?')
        .then(() => {
          this.ruleForm.ivrLibaTemplateScriptVOList.splice(
            this.ruleForm.ivrLibaTemplateScriptVOList.indexOf(row),
src/views/repositoryai/templateku/configurat/taskub.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2530 @@
<template>
  <div class="Questionnairemanagement">
    <!-- å·¦ä¾§æ  -->
    <div class="sidecolumn">
      <div>
        <el-steps finish-status="success" :active="Editprogress" simple>
          <el-step>
            <template slot="title">
              <span style="cursor: pointer" @click="Editprogress = 1"
                >基础信息</span
              >
            </template>
          </el-step>
          <el-step>
            <template slot="title">
              <span style="cursor: pointer" @click="Editprogress = 2"
                >随访模板题目</span
              >
            </template>
          </el-step>
          <el-step description="查看随访模板预览,可导出PDF">
            <template slot="title">
              <span style="cursor: pointer" @click="preview">随访模板预览</span>
            </template>
          </el-step>
        </el-steps>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
    <div class="leftvlue">
      <!-- åŸºæœ¬ä¿¡æ¯ -->
      <div v-if="Editprogress == 1">
        <div class="leftvlue-jbxx">基本信息</div>
        <el-divider></el-divider>
        <el-form
          :model="ruleForm"
          :rules="rules"
          ref="ruleForm"
          label-width="120px"
          class="demo-ruleForm"
        >
          <el-row>
            <el-col :span="12">
              <el-form-item label="模板名称" prop="region">
                <div>
                  <el-input
                    v-model="ruleForm.templateName"
                    placeholder="请输入名称"
                  ></el-input>
                </div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="随访模板分类" prop="region">
                <el-select
                  v-model="ruleForm.assortid"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option-group
                    v-for="group in indexAssortlist"
                    :key="group.id"
                    :label="group.indexAssortName"
                  >
                    <el-option
                      v-for="item in group.ivrLibaTemplateAssortList"
                      :key="item.id"
                      :label="item.indexAssortName"
                      :value="item.id"
                    >
                    </el-option>
                  </el-option-group>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="模板简介" prop="note">
                <div>
                  <el-input
                    type="textarea"
                    placeholder="请输入简介"
                    v-model="ruleForm.note"
                  ></el-input>
                </div>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="版本号" prop="version">
                <el-input
                  style="width: 220px"
                  v-model="ruleForm.version"
                  placeholder="默认1.0.1"
                ></el-input> </el-form-item
            ></el-col>
            <el-col :span="12">
              <el-form-item label="可用状态" prop="region">
                <el-select
                  v-model="ruleForm.isenable"
                  size="medium"
                  placeholder="请选择"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="语言" prop="name">
                <el-select
                  v-model="ruleForm.language"
                  size="medium"
                  filterable
                  placeholder="请选择语言"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in languagelist"
                    :key="item.label"
                    :label="item.label"
                    :value="item.label"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
            <el-col :span="12">
              <el-form-item label="播报优先" prop="playType">
                <el-select
                  v-model="ruleForm.playType"
                  size="medium"
                  filterable
                  placeholder="请选择语言"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in precedencetype"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="随访方式" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.suitway"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类(多选)"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in mode"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag.tagname"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClosetag(tag)"
              >
                {{ tag.tagname }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                remote
                allow-create
                reserve-keyword
                default-first-option
                :remote-method="remoteMethodtag"
                :loading="loading"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in optionstag"
                  :key="item.tagid"
                  :label="item.tagname"
                  :value="item.tagname"
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput"
                >+ æ–°å¢žæ ‡ç­¾</el-button
              >
            </div>
          </el-form-item>
          <div class="xinz-infs">
            <el-form-item label="适用疾病" prop="region">
              <el-tag
                v-for="tag in displayedTags"
                :key="tag.icdid"
                type="warning"
                :disable-transitions="false"
              >
                {{ tag.icdname }}
              </el-tag>
              <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag>
            </el-form-item>
          </div>
          <div style="margin-left: 120px; margin-bottom: 10px">
            <el-button type="warning" @click="$refs.child.handleAddpatient()"
              >疾病详情</el-button
            >
          </div>
          <el-form-item label="适用通用库" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.submoduleID"
              size="medium"
              multiple
              filterable
              placeholder="请选择通用库"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in generallist"
                :key="item.id"
                :label="item.extName"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.campus"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in courtyardlist"
                :key="item.label"
                :label="item.label"
                :value="item.label"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-row>
            <el-col :span="20"
              ><el-form-item label="适用科室" prop="region">
                <el-select
                  v-model="tempDetpRelevanceslist"
                  @remove-tag="removetag"
                  style="width: 55vw"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择科室"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in flatArray"
                    :key="item.deptCode"
                    :label="item.label"
                    :value="item.deptCode"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-row>
            <el-col :span="20"
              ><el-form-item label="适用病区" prop="region">
                <el-select
                  v-model="tempbelongWards"
                  @remove-tag="removehpsp"
                  style="width: 55vw"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择科室"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in flatArray"
                    :key="item.deptCode"
                    :label="item.label"
                    :value="item.deptCode"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-row>
            <el-col :span="12"
              ><el-form-item label="开场白" prop="revisitBefore">
                <el-input
                  type="textarea"
                  :rows="3"
                  v-model="ruleForm.revisitBefore"
                  placeholder="请输入开场白"
                /> </el-form-item
            ></el-col>
            <el-col :span="12"
              ><el-form-item label="结束语" prop="revisitAfter">
                <el-input
                  type="textarea"
                  :rows="3"
                  v-model="ruleForm.revisitAfter"
                  placeholder="请输入结束语"
                /> </el-form-item
            ></el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="静默时间(秒)" prop="name">
                <div style="width: 40%">
                  <el-input
                    v-model="ruleForm.silencetime"
                  ></el-input></div></el-form-item
            ></el-col>
            <el-col :span="8">
              <el-form-item label="静默次数" prop="name">
                <div style="width: 40%">
                  <el-input
                    v-model="ruleForm.noVoiceNum"
                  ></el-input></div></el-form-item
            ></el-col>
            <el-col :span="8">
              <el-form-item label="无匹配重复(次)" prop="region">
                <div style="width: 40%">
                  <el-input v-model="ruleForm.mateNum"></el-input>
                </div> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item>
            <el-button type="success" plain @click="nextstep('ruleForm')"
              >下一步</el-button
            >
            <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
            <el-button
              type="success"
              @click="Departmenttreatment('ruleForm')"
              >{{ task ? "保存到任务模板" : "保存随访模板基础信息" }}</el-button
            >
          </el-form-item>
        </el-form>
      </div>
      <!-- éšè®¿æ¨¡æ¿è®¾ç½® -->
      <div v-if="Editprogress == 2">
        <div class="leftvlue-jbxx">随访模板题目设置</div>
        <el-divider></el-divider>
        <div class="addtopic">
          <el-button
            type="primary"
            icon="el-icon-plus"
            round
            @click="getaddtopiclist"
            >添加题目</el-button
          >
          <el-button
            type="success"
            icon="el-icon-edit-outline"
            round
            @click="Operateit = !Operateit"
            >{{ !Operateit ? "编辑题目" : "完整信息展示" }}</el-button
          >
        </div>
        <div class="presentation">
          <div :class="Operateit ? 'presentation-left' : 'spresentation-left'">
            <el-card class="box-card" style="min-height: 688px">
              <el-table
                v-loading="loading"
                :data="ruleForm.ivrTaskTemplateScriptVOList"
              >
                <el-table-column
                  label="编号"
                  align="center"
                  key="sort"
                  prop="sort"
                />
                <el-table-column
                  label="标题"
                  align="center"
                  key="scriptTopic"
                  prop="scriptTopic"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  v-if="!Operateit"
                  label="问题话术"
                  align="center"
                  key="scriptContent"
                  prop="scriptContent"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  v-if="!Operateit"
                  label="问题话术"
                  align="center"
                  key="scriptContent"
                  prop="scriptContent"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  label="下题跳转"
                  align="center"
                  key="nextScriptno"
                  prop="nextScriptno"
                  :show-overflow-tooltip="true"
                >
                  <template slot-scope="scope">
                    <span>{{
                      scope.row.nextScriptno == 0
                        ? "已是最后一题"
                        : scope.row.nextScriptno
                    }}</span>
                  </template>
                </el-table-column>
                <el-table-column
                  label="操作"
                  v-if="Operateit"
                  align="center"
                  width="250"
                  class-name="small-padding fixed-width"
                >
                  <template slot-scope="scope">
                    <el-button
                      icon="el-icon-edit"
                      type="primary"
                      circle
                      @click="handleUpdate(scope.row)"
                    ></el-button>
                    <el-button
                      type="danger"
                      icon="el-icon-delete"
                      circle
                      @click="handleDelete(scope.row)"
                    ></el-button>
                    <el-button
                      @click="syioption(scope.row)"
                      type="success"
                      icon="el-icon-top"
                      circle
                    ></el-button>
                    <el-button
                      @click="xiayioption(scope.row)"
                      type="success"
                      icon="el-icon-bottom"
                      circle
                    ></el-button>
                  </template>
                </el-table-column>
              </el-table>
            </el-card>
          </div>
          <div class="presentation-right" v-if="Operateit">
            <el-card class="box-card">
              <el-form
                :model="topicobj"
                :inline="true"
                class="demo-form-inline"
              >
                <div class="headline">题目设置详情</div>
                <el-row>
                  <el-col :span="24"
                    ><el-form-item label="题目标题">
                      <el-input
                        v-model="topicobj.scriptTopic"
                        placeholder="请从左侧列表选择"
                      ></el-input> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                  <el-col :span="24"
                    ><el-form-item label="问题话术">
                      <el-input
                        type="textarea"
                        style="width: 600px"
                        v-model="topicobj.scriptContent"
                        placeholder="请从左侧列表选择"
                      ></el-input> </el-form-item
                  ></el-col>
                </el-row>
                <el-row :gutter="10">
                  <el-col :span="12"
                    ><el-form-item label="问题节点">
                      <el-input
                        v-model="topicobj.sort"
                        placeholder="请从左侧列表选择"
                        :disabled="true"
                      ></el-input> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="下题跳转">
                      <el-input
                        v-model="topicobj.nextScriptno"
                        placeholder="请输入题号"
                      ></el-input> </el-form-item
                  ></el-col>
                </el-row>
                <el-row :gutter="10">
                  <el-col :span="12"
                    ><el-form-item label="是否必填">
                      <el-select
                        v-model="topicobj.isMust"
                        placeholder="默认必填"
                      >
                        <el-option
                          v-for="item in required"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="题目类型">
                      <el-select
                        v-model="topicobj.scriptType"
                        placeholder="请选择"
                        :disabled="true"
                      >
                        <el-option
                          v-for="item in askvaluetype"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item
                  label="是否由选项配置跳转"
                  v-if="topicobj.scriptType == 1"
                >
                  <el-radio-group v-model="topicobj.branchFlag">
                    <el-radio :label="'1'">是</el-radio>
                    <el-radio :label="'0'">否</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="选中提示" v-if="topicobj.scriptType != 1">
                  <el-input
                    style="width: 24vw"
                    type="textarea"
                    autosize
                    placeholder="请输入内容"
                    v-model="topicobj.prompt"
                  >
                  </el-input
                ></el-form-item>
                <el-row>
                  <el-col :span="24"
                    ><el-form-item label="语音文本">
                      <el-input
                        type="textarea"
                        style="width: 600px"
                        v-model="topicobj.ivrtext"
                        placeholder="请从左侧列表选择"
                      ></el-input> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                  <el-col :span="6">
                    <el-form-item label="语音文件" prop="verbaltrickyy">
                      <el-upload
                        class="upload-demo"
                        :action="uploadImgUrl"
                        :headers="headers"
                        :show-file-list="false"
                        :on-success="
                          (response, file) => handleChanges(response, file, 1)
                        "
                        accept=".wav,.mp3"
                        :limit="1"
                      >
                        <el-button size="small" type="primary"
                          >点击上传</el-button
                        >
                      </el-upload>
                    </el-form-item>
                  </el-col>
                  <el-col :span="6">
                    <span
                      style="font-size: 18px; margin-top: 10px"
                      v-if="topicobj.ivrVoice"
                      >{{
                        topicobj.ivrVoice.substring(
                          topicobj.ivrVoice.lastIndexOf("/") + 1
                        )
                      }}</span
                    >
                  </el-col>
                  <el-col :span="6">
                    <mini-audio
                      :audio-source="
                        topicobj.ivrVoice
                          ? topicobj.ivrVoice
                          : 'https://example.com/example.mp3'
                      "
                    ></mini-audio>
                  </el-col>
                </el-row>
                <div class="topicxq" v-if="topicobj.scriptType == 4">
                  <el-row>
                    <el-col :span="20">
                      <el-form-item label="收集内容">
                        <el-input
                          style="width: 400px"
                          type="textarea"
                          v-model="topicobj.value"
                          placeholder="问题收集内容"
                        ></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </div>
                <div v-else>
                  <div class="headline">
                    <div class="basics">选项设置</div>
                    <!-- <div class="headbottom">
                      <el-button
                        type="primary"
                        icon="el-icon-circle-plus-outline"
                        @click="addzbiao"
                        >添加指标</el-button
                      >
                    </div> -->
                  </div>
                  <Regular
                    :TargetoptionList="topicobj.ivrTaskScriptTargetoptionList"
                    @deloption="deloption"
                    @branchFlagfn="branchFlagfn"
                    :branchFlag="topicobj.branchFlag ? true : false"
                    :controlsc="false"
                    :scriptType="topicobj.scriptType"
                  />
                  <!-- æ— åŒ¹é…ç±»åž‹ -->
                  <div class="topicxq">
                    <el-row :gutter="10">
                      <el-col :span="20"
                        ><el-form-item label="无匹配话术">
                          <el-input
                            type="textarea"
                            style="width: 400px"
                            placeholder="请输入"
                            v-model="topicobj.noMatchText"
                            show-word-limit
                          >
                          </el-input> </el-form-item
                      ></el-col>
                    </el-row>
                    <el-row>
                      <el-col :span="6">
                        <el-form-item label="无匹配语音" prop="verbaltrickyy">
                          <el-upload
                            class="upload-demo"
                            :action="uploadImgUrl"
                            :show-file-list="false"
                            :headers="headers"
                            :on-success="
                              (response, file) =>
                                handleChanges(response, file, 2)
                            "
                            accept=".wav,.mp3"
                            :limit="1"
                          >
                            <el-button size="small" type="primary"
                              >点击上传</el-button
                            >
                          </el-upload>
                        </el-form-item>
                      </el-col>
                      <el-col :span="6">
                        <span
                          style="font-size: 12px"
                          v-if="topicobj.nomatchvoice"
                          >{{
                            topicobj.nomatchvoice.substring(
                              topicobj.nomatchvoice.lastIndexOf("/") + 1
                            )
                          }}</span
                        >
                      </el-col>
                      <el-col :span="6">
                        <mini-audio
                          :audio-source="
                            topicobj.nomatchvoice
                              ? topicobj.nomatchvoice
                              : 'https://example.com/example.mp3'
                          "
                        ></mini-audio>
                      </el-col>
                    </el-row>
                  </div>
                  <div class="topicxq">
                    <el-row :gutter="10">
                      <el-col :span="20"
                        ><el-form-item label="听不清话术">
                          <el-input
                            style="width: 400px"
                            type="textarea"
                            placeholder="请输入"
                            v-model="topicobj.noClearlyText"
                            show-word-limit
                          >
                          </el-input> </el-form-item
                      ></el-col>
                    </el-row>
                    <el-row>
                      <el-col :span="6">
                        <el-form-item label="听不清语音" prop="verbaltrickyy">
                          <el-upload
                            class="upload-demo"
                            :action="uploadImgUrl"
                            :show-file-list="false"
                            :headers="headers"
                            :on-success="
                              (response, file) =>
                                handleChanges(response, file, 4)
                            "
                            accept=".wav,.mp3"
                            :limit="1"
                          >
                            <el-button size="small" type="primary"
                              >点击上传</el-button
                            >
                          </el-upload>
                        </el-form-item>
                      </el-col>
                      <el-col :span="6">
                        <span
                          style="font-size: 12px"
                          v-if="topicobj.noclearlyvoice"
                          >{{
                            topicobj.noclearlyvoice.substring(
                              topicobj.noclearlyvoice.lastIndexOf("/") + 1
                            )
                          }}</span
                        >
                      </el-col>
                      <el-col :span="6">
                        <mini-audio
                          :audio-source="
                            topicobj.noclearlyvoice
                              ? topicobj.noclearlyvoice
                              : 'https://example.com/example.mp3'
                          "
                        ></mini-audio>
                      </el-col>
                    </el-row>
                  </div>
                  <div class="topicxq">
                    <el-row :gutter="10">
                      <el-col :span="20"
                        ><el-form-item label="静默话术">
                          <el-input
                            type="textarea"
                            style="width: 400px"
                            placeholder="请输入"
                            v-model="topicobj.slienceText"
                            show-word-limit
                          >
                          </el-input> </el-form-item
                      ></el-col>
                    </el-row>
                    <el-row>
                      <el-col :span="6">
                        <el-form-item label="静默语音" prop="verbaltrickyy">
                          <el-upload
                            class="upload-demo"
                            :action="uploadImgUrl"
                            :show-file-list="false"
                            :headers="headers"
                            :on-success="
                              (response, file) =>
                                handleChanges(response, file, 3)
                            "
                            accept=".wav,.mp3"
                            :limit="1"
                          >
                            <el-button size="small" type="primary"
                              >点击上传</el-button
                            >
                          </el-upload>
                        </el-form-item>
                      </el-col>
                      <el-col :span="6">
                        <span
                          style="font-size: 12px"
                          v-if="topicobj.sliencevoice"
                          >{{
                            topicobj.sliencevoice.substring(
                              topicobj.sliencevoice.lastIndexOf("/") + 1
                            )
                          }}</span
                        >
                      </el-col>
                      <el-col :span="6">
                        <mini-audio
                          :audio-source="
                            topicobj.sliencevoice
                              ? topicobj.sliencevoice
                              : 'https://example.com/example.mp3'
                          "
                        ></mini-audio>
                      </el-col>
                    </el-row>
                  </div>
                </div>
              </el-form>
            </el-card>
          </div>
        </div>
        <el-button type="success" @click="Departmenttreatment('ruleForm')">{{
          task ? "保存到任务模板" : "保存题目数据"
        }}</el-button>
        <el-button type="primary" plain @click="laststep()">上一步</el-button>
        <el-button type="success" plain @click="preview('ruleForm')"
          >查看预览</el-button
        >
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
      </div>
      <!-- éšè®¿æ¨¡æ¿é¢„览 -->
      <div v-if="Editprogress == 3">
        <div class="leftvlue-jbxx">随访模板问题预览</div>
        <el-divider></el-divider>
        <div class="preview-left">
          <div v-for="item in valssu">
            <!-- å•选 -->
            <div
              class="scriptTopic-dev"
              :key="item.sort"
              v-if="item.valueType == 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.ivrTaskScriptTargetoptionList"
                    :key="index"
                    :label="index"
                    >{{ items.targetvalue }}</el-radio
                  >
                </el-radio-group>
              </div>
            </div>
            <!-- å¤šé€‰ -->
            <div
              class="scriptTopic-dev"
              :key="item.sort"
              v-if="item.valueType == 2"
            >
              <div class="dev-text">
                {{ item.sort }}、[多选]<span>{{ item.scriptContent }}</span>
              </div>
              <div class="dev-xx">
                <el-checkbox-group v-model="item.remark">
                  <el-checkbox
                    v-for="(items, index) in item.ivrTaskScriptTargetoptionList"
                    :key="index"
                    :label="index"
                  >
                    {{ items.targetvalue }}
                  </el-checkbox>
                </el-checkbox-group>
              </div>
            </div>
            <!-- å¡«ç©º -->
            <div
              class="scriptTopic-dev"
              :key="item.sort"
              v-if="item.valueType == 3"
            >
              <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>
        <el-button type="primary" plain @click="laststep()">上一步</el-button>
        <el-button type="warning" @click="measurement()">前往测试</el-button>
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
      </div>
    </div>
    <!-- æ·»åŠ é¢˜ç›®å¼¹çª— -->
    <el-drawer
      title="添加题目"
      @close="$forceUpdate()"
      @closed="$forceUpdate()"
      :visible.sync="drawer"
      custom-class="demo-drawer"
      size="50%"
    >
      <div style="margin: 0 25px">
        <el-tabs v-model="activeName">
          <el-tab-pane label="题库选取" name="first">
            <div class="preview-left">
              <el-form
                :model="queryParams"
                ref="queryForm"
                size="small"
                :inline="true"
                label-width="98px"
              >
                <el-form-item label="标题" prop="userName">
                  <el-input
                    v-model="queryParams.scriptTopic"
                    placeholder="请输入"
                    clearable
                    style="width: 200px"
                    @keyup.enter.native="getaddtopiclist"
                  />
                </el-form-item>
                <el-form-item>
                  <el-button
                    type="primary"
                    icon="el-icon-search"
                    size="medium"
                    @click="getaddtopiclist"
                    >搜索</el-button
                  >
                  <el-button
                    icon="el-icon-refresh"
                    size="medium"
                    @click="resetQuery"
                    >重置</el-button
                  >
                </el-form-item>
              </el-form>
              <el-table v-loading="loading" :data="userList">
                <el-table-column
                  label="标题"
                  align="center"
                  key="scriptTopic"
                  prop="scriptTopic"
                  width="100"
                />
                <el-table-column
                  label="问题话术"
                  align="center"
                  key="scriptContent"
                  prop="scriptContent"
                  width="200"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  label="问题类型"
                  align="center"
                  key="valueType"
                  prop="valueType"
                  width="120"
                >
                  <template slot-scope="scope">
                    <dict-tag
                      :options="valuetypes"
                      :value="scope.row.valueType"
                    />
                  </template>
                </el-table-column>
                <el-table-column
                  label="选项内容"
                  align="center"
                  key="targetoptions"
                  prop="targetoptions"
                  width="200"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  label="操作"
                  align="center"
                  class-name="small-padding fixed-width"
                >
                  <template slot-scope="scope">
                    <el-button
                      size="medium"
                      type="text"
                      @click="addtopic(scope.row)"
                      ><span class="button-textxg"
                        ><i class="el-icon-circle-plus-outline"></i>添加</span
                      ></el-button
                    >
                  </template>
                </el-table-column>
              </el-table>
              <pagination
                :total="total"
                :page.sync="queryParams.pageNum"
                :limit.sync="queryParams.pageSize"
                @pagination="getaddtopiclist"
              />
            </div>
          </el-tab-pane>
          <el-tab-pane label="手动配置" name="second">
            <div class="preview-left">
              <el-form
                :inline="true"
                :model="indexform"
                class="demo-form-inline"
              >
                <div class="headline">
                  é¢˜ç›®è®¾ç½®è¯¦æƒ…
                  <span style="margin-left: 30px"
                    ><el-button type="primary" @click="Submittopicobj"
                      >保存新增</el-button
                    ></span
                  >
                </div>
                <el-divider></el-divider>
                <div>
                  <el-row :gutter="10">
                    <el-col :span="12">
                      <el-form-item label="题目标题">
                        <el-input
                          v-model="indexform.scriptTopic"
                          placeholder="请输入题目标题"
                        ></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="问题节点">
                        <el-input
                          v-model="indexform.sort"
                          placeholder="请输入问题节点"
                        ></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-col :span="18"
                      ><el-form-item label="问题话术">
                        <el-input
                          style="width: 600px"
                          type="textarea"
                          v-model="indexform.scriptContent"
                          placeholder="请从左侧列表选择"
                        ></el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="是否必填">
                        <el-select
                          v-model="indexform.isMust"
                          placeholder="默认必填"
                        >
                          <el-option
                            v-for="item in required"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value"
                          >
                          </el-option>
                        </el-select> </el-form-item
                    ></el-col>
                    <!-- <el-col :span="12"
                      ><el-form-item label="取值类型">
                        <el-select
                          v-model="indexform.valueType"
                          placeholder="请选择"
                          :disabled="true"
                        >
                          <el-option
                            v-for="item in valuetype"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value"
                          >
                          </el-option>
                        </el-select> </el-form-item
                    ></el-col> -->
                  </el-row>
                  <el-form-item
                    label="选中提示"
                    v-if="topicobj.scriptType != 1"
                  >
                    <el-input
                      style="width: 24vw"
                      type="textarea"
                      autosize
                      placeholder="请输入内容"
                      v-model="indexform.prompt"
                    >
                    </el-input
                  ></el-form-item>
                  <el-row :gutter="10">
                    <el-col :span="18"
                      ><el-form-item label="语音文本">
                        <el-input
                          style="width: 600px"
                          type="textarea"
                          v-model="indexform.ivrtext"
                          placeholder="请从左侧列表选择"
                        ></el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-row>
                    <el-col :span="6">
                      <el-form-item label="语音文件" prop="verbaltrickyy">
                        <el-upload
                          class="upload-demo"
                          :action="uploadImgUrl"
                          :headers="headers"
                          :show-file-list="false"
                          :on-success="
                            (response, file) => handleChange(response, file, 1)
                          "
                          accept=".wav,.mp3"
                          :limit="1"
                        >
                          <el-button size="small" type="primary"
                            >点击上传</el-button
                          >
                        </el-upload>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <span
                        style="font-size: 18px; margin-top: 10px"
                        v-if="indexform.ivrVoice"
                        >{{
                          indexform.ivrVoice.substring(
                            indexform.ivrVoice.lastIndexOf("/") + 1
                          )
                        }}</span
                      >
                    </el-col>
                    <el-col :span="6">
                      <mini-audio
                        :audio-source="
                          indexform.ivrVoice
                            ? indexform.ivrVoice
                            : 'https://example.com/example.mp3'
                        "
                      ></mini-audio>
                    </el-col>
                  </el-row>
                </div>
                <div>
                  <el-form-item label="指标名称" prop="deptId">
                    <el-input
                      v-model="indexform.targetname"
                      placeholder="请输入指标名称"
                      maxlength="20"
                    />
                  </el-form-item>
                  <el-form-item label="指标描述" prop="deptId">
                    <el-input
                      v-model="indexform.targetdesc"
                      placeholder="请输入指标描述"
                      maxlength="60"
                    />
                  </el-form-item>
                  <el-row>
                    <el-col :span="20">
                      <el-form-item label="值类型">
                        <el-radio-group v-model="indexform.valueType">
                          <el-radio :label="1">选项</el-radio>
                          <el-radio :label="2">文本</el-radio>
                          <el-radio :label="3">数值</el-radio>
                        </el-radio-group>
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row>
                    <el-col :span="20">
                      <el-form-item label="题目类型">
                        <el-radio-group
                          @input="typeselection"
                          v-model="indexform.scriptType"
                        >
                          <el-radio :label="1">单选</el-radio>
                          <!-- <el-radio :label="2">多选</el-radio> -->
                          <el-radio :label="4">问答</el-radio>
                        </el-radio-group>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </div>
                <div class="topicxq" v-show="indexform.scriptType == 4">
                  <el-row>
                    <el-col :span="20">
                      <el-form-item label="收集内容">
                        <el-input
                          style="width: 400px"
                          type="textarea"
                          v-model="indexform.value"
                          placeholder="问题收集内容"
                        ></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </div>
                <div v-show="indexform.scriptType == 1">
                  <div class="headline">
                    <div class="basics">选项设置</div>
                  </div>
                  <el-divider></el-divider>
                  <Regular
                    :TargetoptionList="indexform.ivrTaskScriptTargetoptionList"
                    @deloption="deloption"
                    @addoption="addoptionson"
                    :controlsc="false"
                    :addoption="true"
                  />
                  <!-- æ— åŒ¹é…ç±»åž‹ -->
                  <div class="topicxq">
                    <el-row :gutter="10">
                      <el-col :span="20"
                        ><el-form-item label="无匹配话术">
                          <el-input
                            type="textarea"
                            style="width: 400px"
                            placeholder="请输入"
                            v-model="indexform.noMatchText"
                            show-word-limit
                          >
                          </el-input> </el-form-item
                      ></el-col>
                    </el-row>
                    <el-row>
                      <el-col :span="6">
                        <el-form-item label="无匹配语音" prop="verbaltrickyy">
                          <el-upload
                            class="upload-demo"
                            :action="uploadImgUrl"
                            :show-file-list="false"
                            :headers="headers"
                            :on-success="
                              (response, file) =>
                                handleChange(response, file, 2)
                            "
                            accept=".wav,.mp3"
                            :limit="1"
                          >
                            <el-button size="small" type="primary"
                              >点击上传</el-button
                            >
                          </el-upload>
                        </el-form-item>
                      </el-col>
                      <el-col :span="6">
                        <span
                          style="font-size: 12px"
                          v-if="indexform.nomatchvoice"
                          >{{
                            indexform.nomatchvoice.substring(
                              indexform.nomatchvoice.lastIndexOf("/") + 1
                            )
                          }}</span
                        >
                      </el-col>
                      <el-col :span="6">
                        <mini-audio
                          :audio-source="
                            indexform.nomatchvoice
                              ? indexform.nomatchvoice
                              : 'https://example.com/example.mp3'
                          "
                        ></mini-audio>
                      </el-col>
                    </el-row>
                  </div>
                  <div class="topicxq">
                    <el-row :gutter="10">
                      <el-col :span="20"
                        ><el-form-item label="静默话术">
                          <el-input
                            type="textarea"
                            style="width: 400px"
                            placeholder="请输入"
                            v-model="indexform.slienceText"
                            show-word-limit
                          >
                          </el-input> </el-form-item
                      ></el-col>
                    </el-row>
                    <el-row>
                      <el-col :span="6">
                        <el-form-item label="静默语音" prop="verbaltrickyy">
                          <el-upload
                            class="upload-demo"
                            :action="uploadImgUrl"
                            :show-file-list="false"
                            :headers="headers"
                            :on-success="
                              (response, file) =>
                                handleChange(response, file, 3)
                            "
                            accept=".wav,.mp3"
                            :limit="1"
                          >
                            <el-button size="small" type="primary"
                              >点击上传</el-button
                            >
                          </el-upload>
                        </el-form-item>
                      </el-col>
                      <el-col :span="6">
                        <span
                          style="font-size: 12px"
                          v-if="indexform.sliencevoice"
                          >{{
                            indexform.sliencevoice.substring(
                              indexform.sliencevoice.lastIndexOf("/") + 1
                            )
                          }}</span
                        >
                      </el-col>
                      <el-col :span="6">
                        <mini-audio
                          :audio-source="
                            indexform.sliencevoice
                              ? indexform.sliencevoice
                              : 'https://example.com/example.mp3'
                          "
                        ></mini-audio>
                      </el-col>
                    </el-row>
                  </div>
                  <div class="topicxq">
                    <el-row :gutter="10">
                      <el-col :span="20"
                        ><el-form-item label="听不清话术">
                          <el-input
                            style="width: 400px"
                            type="textarea"
                            placeholder="请输入"
                            v-model="indexform.noClearlyText"
                            show-word-limit
                          >
                          </el-input> </el-form-item
                      ></el-col>
                    </el-row>
                    <el-row>
                      <el-col :span="6">
                        <el-form-item label="听不清语音" prop="verbaltrickyy">
                          <el-upload
                            class="upload-demo"
                            :action="uploadImgUrl"
                            :show-file-list="false"
                            :headers="headers"
                            :on-success="
                              (response, file) =>
                                handleChange(response, file, 4)
                            "
                            accept=".wav,.mp3"
                            :limit="1"
                          >
                            <el-button size="small" type="primary"
                              >点击上传</el-button
                            >
                          </el-upload>
                        </el-form-item>
                      </el-col>
                      <el-col :span="6">
                        <span
                          style="font-size: 12px"
                          v-if="indexform.noclearlyvoice"
                          >{{
                            indexform.noclearlyvoice.substring(
                              indexform.noclearlyvoice.lastIndexOf("/") + 1
                            )
                          }}</span
                        >
                      </el-col>
                      <el-col :span="6">
                        <mini-audio
                          :audio-source="
                            indexform.noclearlyvoice
                              ? indexform.noclearlyvoice
                              : 'https://example.com/example.mp3'
                          "
                        ></mini-audio>
                      </el-col>
                    </el-row>
                  </div>
                </div>
              </el-form>
            </div>
          </el-tab-pane>
        </el-tabs>
      </div>
    </el-drawer>
    <!-- æ·»åŠ é€‚ç”¨ç–¾ç—…çª—å£ -->
    <Optional-Form
      ref="child"
      :dialogVisiblepatient="dialogVisiblepatient"
      :overallCase="illnesslist"
      @addoption="dialogVisiblepatient = false"
      @kkoption="dialogVisiblepatient = true"
    />
  </div>
</template>
<script>
import { listtag } from "@/api/system/label";
import store from "@/store";
import { listDept } from "@/api/system/dept";
import Regular from "@/components/Regular"; //正则组件
import {
  getFollowupclassify,
  addtargetillness,
  getTaskFollowup,
  Taskparticty,
  getverbaltricklist,
  getverbaltrick,
  delFollowupinfo,
  Followupinfo,
  getFollowuplist,
  deltargetillness,
  getillnesslist,
  depthospgetson,
  depthospgetsonlist,
  illnesslistget,
  getillness,
  getgenerallist,
} from "@/api/AiCentre/index";
import OptionalForm from "@/components/OptionalForm"; //正则组件
import { getToken } from "@/utils/auth";
import { deptTreeSelect } from "@/api/system/user";
export default {
  name: "tpuconfigurat",
  components: { Regular, OptionalForm },
  data() {
    return {
      headers: {
        Authorization: "Bearer " + getToken(),
      },
      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort",
      Editprogress: 1, //编辑进度
      loading: false, // é®ç½©å±‚
      drawer: false, //控制展开
      radios: [], //多选题选中
      radioas: "", //填空题答案
      task: null, //是否来自任务
      taskform: null, //任务信息
      Operateit: true,
      indexform: {
        ivrTaskScriptTargetoptionList: [],
      },
      labelInfovalue: [], //标签临时存储
      deptNamesvalue: [], //科室临时存储
      dialogVisiblepatient: false, //适用疾病窗口
      dynamicTags: [],
      indexAssortlist: [],
      inputValue: "",
      inputValueillness: "",
      topicobj: {
        noMatchText: "抱歉,我没有听懂,您能再说一遍吗?",
        noClearlyText: "抱歉,我没有听清您说的话,您可以再说一次吗?",
        slienceText: "抱歉,我没有听到您说的话,您可以再说一次吗?",
      },
      total: 1,
      id: "",
      ruleForm: {
        templateName: "",
        revisitBefore:
          "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
        revisitAfter:
          "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
        ivrLibaTemplateTagList: [],
        ivrTaskTemplateScriptVOList: [],
        tempDetpRelevances: [],
      },
      rules: {},
      optionstag: [],
      prefollowuplist: [],
      postfollowuplist: [],
      tempDetpRelevanceslist: [], //科室数据
      tempDetpRelevanceslistform: [], //科室数据
      tempbelongWards: [], //病区数据
      tempbelongWardsform: [], //病区数据
      generallist: [
        { value: "1", label: "随访通用库一" },
        { value: "2", label: "随访二库" },
      ],
      fileList: [
        {
          name: "food.jpeg",
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      administrativelist: [
        { value: "1", label: "心外科" },
        { value: "2", label: "心内科" },
      ],
      standbylist: [],
      themelist: [],
      languagelist: [],
      courtyardlist: [],
      precedencetype: [],
      usable: [],
      required: [],
      valuetype: [],
      valuetypes: [],
      askvaluetype: [],
      mode: [],
      inputVisible: false,
      inputVisibleillness: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "ivrLibaTemplateAssortList",
        label: "indexAssortName",
      },
      tempDetpRelevanceslist: [],
      delScriptVOList: [],
      optionIndex: "",
      activeName: "first",
      variablelist: [
        { variatename: "姓名", variate: "${name}", default: 1 },
        { variatename: "电话", variate: "${phone}", default: 1 },
        { variatename: "病情", variate: "${illness}", default: 1 },
      ],
      deptlist: [],
      hosplist: [],
      flatArray: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      variablelist: [
        {
          variable: "paitent",
          value: "表示患者的标识",
        },
      ],
      queryParamsdept: {
        tempid: "",
        type: 2,
      },
      valssu: [],
      radio: "",
      addvalue: "添加题目",
      // é¢˜ç›®è¡¨æ ¼æ•°æ®
      userList: [],
      belongWards: [],
      belongDepts: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
    };
  },
  activated() {
    if (this.id != this.$route.query.id) {
      console.log(1);
      this.RoutingDataProcessing();
      this.gettabList();
      this.getvFollowup();
      this.auxiliary();
    } else {
      this.tempDetpRelevanceslistform = [];
      this.tempbelongWardsform = [];
    }
  },
  created() {
    this.RoutingDataProcessing();
    this.gettabList();
    this.getvFollowup();
    this.auxiliary();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.usable = store.getters.usable;
    this.required = store.getters.required;
    this.valuetype = store.getters.valuetype;
    this.valuetypes = store.getters.valuetypelb;
    this.askvaluetype = store.getters.askvaluetype;
    this.languagelist = store.getters.languagelist;
    this.courtyardlist = store.getters.courtyardlist;
    this.precedencetype = store.getters.precedencetype;
    this.belongWards = store.getters.belongWards;
    this.belongDepts = store.getters.belongDepts;
  },
  mounted() {},
  computed: {
    displayedTags() {
      // è¿”回前10个tag
      return this.illnesslist.slice(0, 10);
    },
    hasMore() {
      // åˆ¤æ–­æ˜¯å¦æœ‰æ›´å¤šçš„tag
      return this.illnesslist.length > 10;
    },
    remaining() {
      // è®¡ç®—剩余的tag数量
      return this.illnesslist.length - 10;
    },
  },
  methods: {
    //公共方法--------------------
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    processElement(element) {
      return { ...element, isoperation: 0 };
    },
    // è·¯ç”±æ•°æ®å¤„理
    RoutingDataProcessing() {
      this.id = this.$route.query.id;
      this.task = this.$route.query.task;
      this.queryParamsdept.tempid = this.id;
    },
    // èŽ·å–ç§‘å®¤æ ‘
    getDeptTree() {
      // ç§‘室列表
      deptTreeSelect().then((response) => {
        this.deptOptions = response.data;
        this.flatArray = this.flattenArray(response.data);
      });
    },
    flattenArray(multiArray) {
      let result = [];
      // é€’归函数,用于将多级数组转换为一维数组,只包含最底层的元素
      function flatten(element) {
        // å¦‚果当前元素有子元素,继续递归
        if (element.children && element.children.length > 0) {
          element.children.forEach((child) => flatten(child));
        } else {
          // å…‹éš†å…ƒç´ ä»¥é¿å…ä¿®æ”¹åŽŸå§‹æ•°æ®
          let item = JSON.parse(JSON.stringify(element));
          result.push(item); // å°†æœ€åº•层的元素添加到结果数组
        }
      }
      // ä»Žé¡¶å±‚元素开始递归
      multiArray.forEach((element) => flatten(element));
      return result; // è¿”回只包含最底层元素的一维数组
    },
    // èŽ·å–è¡¨å•æ•°æ®
    getvFollowup() {
      if (this.id) {
        getTaskFollowup(this.id).then((res) => {
          if (res.code == 200) {
            console.log(res, "任务模板");
            this.ruleForm = res.data;
            if (this.ruleForm.deptNames)
              // this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
              this.ruleForm.suitway = this.ruleForm.suitway.split(",");
            if (this.ruleForm.campus)
              this.ruleForm.campus = this.ruleForm.campus.split(",");
            this.ruleForm.submoduleID = this.ruleForm.submoduleID.split(",");
            console.log(this.ruleForm.submoduleID, "submoduleID");
            this.ruleForm.submoduleID = this.ruleForm.submoduleID.map((res) => {
              return Number(res);
            });
            this.dynamicTags = this.ruleForm.ivrLibaTemplateTagList;
            if (this.ruleForm.ivrLibaTemplateTagList)
              this.dynamicTags = this.ruleForm.ivrLibaTemplateTagList.map(
                this.processElement
              );
            this.sortFn();
          }
        });
        getillness({ outid: this.id, type: 3 }).then((res) => {
          this.illnesslist = res.rows;
          this.illnesslist.forEach((item) => {
            item.icdname = item.icd10name;
          });
        });
      } else {
        this.ruleForm = {
          templateName: "",
          ivrLibaTemplateTagList: [],
          ivrTaskTemplateScriptVOList: [],
          tempDetpRelevances: [],
        };
        this.deptOptions = [];
        this.optionsillness = [];
        this.illnesslistapi = [];
        this.illnesslist = [];
        this.dynamicTags = [];
        this.tempDetpRelevanceslist = [];
      }
    },
    // é™„属数据表
    auxiliary() {
      // åˆ†ç±»
      getFollowupclassify({}).then((res) => {
        this.indexAssortlist = res.rows;
      });
      this.tempDetpRelevanceslist = [];
      this.tempbelongWards = [];
      if (this.id) {
        depthospgetsonlist(this.queryParamsdept).then((res) => {
          if (res.code == 200) {
            let arr = res.rows;
            console.log(arr, "arr");
            arr.forEach((item) => {
              if (item.deptType == 1) {
                console.log(this.deptlist, "11");
                this.deptlist.push(item);
                console.log("22");
                this.tempDetpRelevanceslist.push(item.deptCode);
              } else if (item.deptType == 2) {
                this.hosplist.push(item);
                this.tempbelongWards.push(item.deptCode);
                console.log("33");
              }
            });
          }
        });
      }
      // ç–¾ç—…
      getillnesslist({
        pageNum: 1,
        pageSize: 100,
      }).then((response) => {
        this.optionsillness = response.rows;
      });
      getgenerallist({
        pageNum: 1,
        pageSize: 100,
      }).then((res) => {
        this.generallist = res.rows;
      });
      // ç–¾ç—…列
    },
    // é€‰é¡¹é…ç½®è·³è½¬è§¦å‘
    branchFlagfn(row) {
      if (this.topicobj.branchFlag == 1 && this.topicobj.nextScriptno != 0) {
        this.topicobj.nextScriptno =
          this.topicobj.ivrTaskScriptTargetoptionList[0].nextQuestion;
      }
    },
    //保存
    submitForm(formName) {
      if (this.ruleForm.id) {
        this.ruleForm.isoperation = 2;
      } else {
        this.ruleForm.isoperation = 1;
      }
      if (!this.ruleForm.assortid) {
        this.ruleForm.assortid = -1;
      }
      this.ruleForm.labelInfo = JSON.stringify(this.dynamicTags);
      if (Array.isArray(this.ruleForm.suitway))
        this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      if (Array.isArray(this.ruleForm.campus))
        this.ruleForm.campus = this.ruleForm.campus.join(",");
      if (Array.isArray(this.ruleForm.submoduleID))
        this.ruleForm.submoduleID = this.ruleForm.submoduleID.join(",");
      //   æäº¤
      this.ruleForm.ivrTaskTemplateScriptVOList.forEach((res) => {
        if (!res.isoperation) {
          res.isoperation = 2;
        }
        res.ivrTaskScriptTargetoptionList =
          res.ivrTaskScriptTargetoptionList.map((item) => {
            if (!item.isoperation) {
              item.isoperation = 2;
              item.templateID = this.ruleForm.id;
            }
            return item;
          });
      });
      this.delScriptVOList.forEach((item) => {
        this.ruleForm.ivrTaskTemplateScriptVOList.push(item);
      });
      // Taskparticty(this.ruleForm).then((res) => {
      //   if (res.code == 200) {
      //     this.$modal.msgSuccess("编辑成功");
      //     this.$modal.closeLoading();
      //     this.confirmillness(res.data);
      //     // window.location.reload();
      //     // const obj = { path: "/knowledge/tpuconfigurat/?id=" + this.id };
      //     // this.$tab.closeOpenPage(obj);
      //   } else {
      //     this.$modal.msgError("保存失败");
      //     this.$modal.closeLoading();
      //   }
      // });
      if (this.id) {
        this.ruleForm.isoperation = 2;
        this.ruleForm.tempDetpRelevances = [];
        Taskparticty(this.ruleForm).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("修改成功");
            this.confirmillness();
            this.putbelongDepts(this.id);
            this.$modal.closeLoading();
            this.$router.go(-1);
            // window.location.reload();
          } else {
            this.$modal.closeLoading();
          }
        });
      } else {
        this.ruleForm.isoperation = 1;
        this.ruleForm.version = this.ruleForm.version
          ? this.ruleForm.version
          : "1.0";
        this.ruleForm.tempDetpRelevances = [];
        Taskparticty(this.ruleForm).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("新增成功");
            this.confirmillness(res.data);
            this.putbelongDepts(res.data);
            this.$modal.closeLoading();
            this.$router.go(-1);
          } else {
            this.$modal.closeLoading();
          }
        });
      }
    },
    confirmillness(guid) {
      this.illnesslist.forEach((item, index) => {
        if (guid) {
          item.outid = guid;
        } else {
          console.log(this.ruleForm);
          item.outid = this.ruleForm.id;
        }
        item.icd10name = item.icdname;
        item.icd10code = item.icdcode;
        item.type = 3;
        if (!item.id) {
          addtargetillness(item).then((res) => {});
        }
      });
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑成功");
    },
    // ç§‘室处理
    Departmenttreatment() {
      this.$modal.loading("正在修正保存数据,请稍候...");
      this.tempDetpRelevanceslist.forEach((item) => {
        let result = this.deptlist.some((obj) => obj.deptCode == item);
        if (!result) {
          this.tempDetpRelevanceslistform.push({
            deptType: 1,
            longTemp: this.ruleForm.longTemp,
            deptCode: item,
            tempid: this.id,
            type: 2,
          });
        }
      });
      this.tempbelongWards.forEach((item) => {
        let result = this.hosplist.some((obj) => obj.deptCode == item);
        if (!result) {
          this.tempbelongWardsform.push({
            deptType: 2,
            longTemp: this.ruleForm.longTemp,
            deptCode: item,
            tempid: this.id,
            type: 2,
            // 1 : é—®å·æ¨¡æ¿åº“id、11:问卷任务模板库id;2 :语音问卷库id、21:语音任务模板库id,3 : å®£æ•™æ¨¡æ¿åº“id,33:宣教任务模板库id
          });
        }
      });
      setTimeout(() => {
        this.submitForm();
      }, 1000);
      // this.submitForm();
    },
    // ä¿å­˜ç§‘室/病区
    putbelongDepts(id) {
      this.tempDetpRelevanceslistform.forEach((item) => {
        if (!item.tempid) item.tempid = id;
      });
      this.tempbelongWardsform.forEach((item) => {
        if (!item.tempid) item.tempid = id;
      });
      if (this.tempDetpRelevanceslistform.length > 0) {
        depthospgetson(this.tempDetpRelevanceslistform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("科室新增成功");
          }
        });
      }
      if (this.tempbelongWardsform.length > 0) {
        depthospgetson(this.tempbelongWardsform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("院区新增成功");
          }
        });
      }
    },
    // ä¸‹ä¸€æ­¥
    nextstep() {
      if (this.Editprogress <= 2) {
        return this.Editprogress++;
      }
    },
    // ä¸Šä¸€æ­¥
    laststep() {
      this.Editprogress = this.Editprogress - 1;
    },
    // å…³é—­
    closeFm() {
      this.$confirm("退出不会保留页面内容更改, æ˜¯å¦ç»§ç»­?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          const obj = { path: "/knowledge/templateku/" };
          this.$tab.closeOpenPage(obj);
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消",
          });
        });
    },
    //控制语音文件(新)
    handleChange(response, file, additionalParam) {
      console.log(response);
      console.log(additionalParam);
      if (additionalParam == 1) {
        this.indexform.ivrVoice = response.url;
      } else if (additionalParam == 2) {
        this.indexform.nomatchvoice = response.url;
      } else if (additionalParam == 3) {
        this.indexform.sliencevoice = response.url;
      } else if (additionalParam == 4) {
        this.indexform.noclearlyvoice = response.url;
      }
      this.$forceUpdate();
    },
    //控制语音文件
    handleChanges(response, file, additionalParam) {
      console.log(response);
      console.log(additionalParam);
      if (additionalParam == 1) {
        this.topicobj.ivrVoice = response.url;
      } else if (additionalParam == 2) {
        this.topicobj.nomatchvoice = response.url;
      } else if (additionalParam == 3) {
        this.topicobj.sliencevoice = response.url;
      } else if (additionalParam == 4) {
        this.topicobj.noclearlyvoice = response.url;
      }
      this.$forceUpdate();
    },
    // æ–‡ä»¶è¶…出个数限制时的钩子
    handleExceed(files, fileList) {
      this.$message.warning(
        `当前限制选择 1 ä¸ªæ–‡ä»¶ï¼Œæœ¬æ¬¡é€‰æ‹©äº† ${files.length} ä¸ªæ–‡ä»¶ï¼Œå…±é€‰æ‹©äº† ${
          files.length + fileList.length
        } ä¸ªæ–‡ä»¶`
      );
    },
    // æ ‡ç­¾-----------------
    gettabList() {
      const tagqueryParams = {
        pageNum: 1,
        pageSize: 1000,
        tagcategoryid: "0",
      };
      listtag(tagqueryParams).then((response) => {
        this.optionstag = response.rows;
      });
    },
    handleClosetag(tag) {
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.ruleForm.ivrLibaTemplateTagList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let tagvalue = {};
      let tagname = this.inputValue;
      if (tagname) {
        listtag({
          pageNum: 1,
          pageSize: 1000,
          tagcategoryid: "0",
          tagname: tagname,
        }).then((res) => {
          if (res.rows[0]) {
            tagvalue = res.rows[0];
            tagvalue.isoperation = 1;
          } else {
            tagvalue = {
              tagname: tagname,
              isoperation: 1,
            };
          }
          const exists = this.dynamicTags.some(
            (department) => department.tagname === tagname
          );
          if (exists) {
            this.$modal.msgError("标签重复");
            return;
          }
          this.ruleForm.ivrLibaTemplateTagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
        });
      }
      this.inputVisible = false;
      this.inputValue = "";
    },
    remoteMethodtag(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          listtag({ tagname: query, tagcategoryid: "0" }).then((res) => {
            this.optionstag = res.rows;
          });
        }, 200);
      } else {
        this.optionstag = [];
      }
    },
    showInput() {
      this.inputVisible = true;
    },
    //话术题目----------------
    addzbiao() {},
    resetQuery() {
      this.queryParams = { pageNum: 1, pageSize: 10 };
      this.getaddtopiclist();
    },
    getaddtopiclist() {
      this.drawer = true;
      getverbaltricklist(this.queryParams).then((res) => {
        this.loading = false;
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList);
      });
    },
    addtopic(row) {
      if (
        this.ruleForm.ivrTaskTemplateScriptVOList.some(
          (obj) => obj.scriptTopic == row.scriptTopic
        )
      ) {
        this.$modal.msgError("该题目已存在");
        return;
      }
      getverbaltrick({ id: row.id }).then((res) => {
        console.log(res, "详情");
        res.data.isoperation = 1;
        res.data.pid = this.ruleForm.id;
        res.data.ivrTaskScriptTargetoptionList.forEach((item) => {
          item.isoperation = 1;
        });
        this.ruleForm.ivrTaskTemplateScriptVOList.push(res.data);
        this.sortFn();
        this.$modal.msgSuccess("添加成功");
      });
    },
    handleDelete(row) {
      this.$modal
        .confirm('是否确认删除问题:"' + row.scriptTopic + '"?')
        .then(() => {
          this.ruleForm.ivrTaskTemplateScriptVOList.splice(
            this.ruleForm.ivrTaskTemplateScriptVOList.indexOf(row),
            1
          );
          row.isoperation = 3;
          if (row.id) {
            this.delScriptVOList.push(row);
          }
          this.sortFn();
          this.$modal.msgSuccess("已删除,保存模板生效");
        })
        .catch(() => {});
    },
    handleUpdate(row) {
      console.log(row, "单体数据");
      this.optionIndex = this.ruleForm.ivrTaskTemplateScriptVOList.indexOf(row);
      if (row.ivrTaskScriptTargetoptionList.length) {
        this.topicobj = row;
        this.topicobj.valueType = row.valueType;
      } else {
        getverbaltrick({ id: row.id }).then((res) => {
          if (res.data) {
            this.topicobj = res.data;
            console.log(res.data, "topicobj");
          } else {
            this.topicobj = row;
            console.log("没找到选项,请查看问题库是否正确配置");
          }
        });
      }
    },
    syioption(row) {
      const index = this.getIndexInArray(
        this.ruleForm.ivrTaskTemplateScriptVOList,
        row
      );
      const item = this.ruleForm.ivrTaskTemplateScriptVOList.splice(
        index,
        1
      )[0]; // ç§»é™¤æŒ‡å®šç´¢å¼•处的元素,并保存到item变量中
      this.ruleForm.ivrTaskTemplateScriptVOList.splice(index - 1, 0, item); // å°†item插入到索引位置的前一位
      this.sortFn();
    },
    xiayioption(row) {
      const index = this.getIndexInArray(
        this.ruleForm.ivrTaskTemplateScriptVOList,
        row
      );
      const item = this.ruleForm.ivrTaskTemplateScriptVOList.splice(
        index,
        1
      )[0]; // ç§»é™¤æŒ‡å®šç´¢å¼•处的元素,并保存到item变量中
      this.ruleForm.ivrTaskTemplateScriptVOList.splice(index + 1, 0, item); // å°†item插入到索引位置的前一位
      this.sortFn();
    },
    // é—®é¢˜æŽ’序
    sortFn() {
      console.log(this.ruleForm.ivrTaskTemplateScriptVOList);
      this.ruleForm.ivrTaskTemplateScriptVOList.forEach((item, index) => {
        item.sort = Number(index) + 1;
        console.log(this.ruleForm.ivrTaskTemplateScriptVOList.length);
        console.log(item.sort);
        if (item.sort == this.ruleForm.ivrTaskTemplateScriptVOList.length) {
          item.nextScriptno = 0;
        } else {
          item.nextScriptno = item.sort + 1;
        }
        if (item.ivrTaskScriptTargetoptionList && !item.branchFlag) {
          item.ivrTaskScriptTargetoptionList.forEach((items) => {
            items.nextQuestion = Number(item.sort) + 1;
          });
        }
      });
      this.$forceUpdate();
      console.log(this.ruleForm.ivrTaskTemplateScriptVOList);
    },
    // -----------------------话术选项
    deloption(item) {
      const index = this.topicobj.ivrTaskScriptTargetoptionList.indexOf(item);
      if (index != -1) {
        if (item.id) {
          console.log(item, "chunz");
          item.isoperation = 3;
          console.log(this.topicobj.ivrTaskScriptTargetoptionList);
          this.$forceUpdate();
        } else {
          this.topicobj.ivrTaskScriptTargetoptionList.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
        }
        // this.sortFn();
      } else {
        console.log("未找到该对象");
      }
    },
    // ä¿®æ”¹é¢˜ç›®ä¿¡æ¯
    Submittopicobj() {
      this.$modal
        .confirm(
          '是否确认新增名称为"' + this.indexform.scriptTopic + '"的问题数据?'
        )
        .then(() => {
          this.indexform.isoperation = 1;
          this.indexform.pid = this.ruleForm.id;
          this.indexform.ivrTaskScriptTargetoptionList.forEach((item) => {
            item.isoperation = 1;
          });
          this.ruleForm.ivrTaskTemplateScriptVOList.push(this.indexform);
          this.indexform = {
            ivrTaskScriptTargetoptionList: [],
          };
          this.drawer = false;
          this.sortFn();
          this.$modal.msgSuccess("题目新增成功,保存模板生效");
        });
    },
    // ---------------------
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // ç§‘室删除触发
    removetag(row) {
      let result = this.deptlist
        .filter((item) => item.deptCode == row)
        .map((item) => item.id);
      console.log(result.length);
      if (result.length) {
        depthospgetsondel(result).then((res) => {
          if (res.code) {
          }
        });
      }
    },
    // åˆ é™¤åˆ é™¤è§¦å‘
    removehpsp(row) {
      let result = this.hosplist
        .filter((item) => item.deptCode == row)
        .map((item) => item.id);
      if (result.length) {
        depthospgetsondel(result).then((res) => {
          if (res.code) {
          }
        });
      }
    },
    // é¢„览---------------
    preview() {
      console.log(this.ruleForm);
      this.valssu = this.ruleForm.ivrTaskTemplateScriptVOList;
      this.Editprogress = 3;
    },
    // å‰å¾€æµ‹è¯•
    measurement() {
      this.$modal
        .confirm("即将前往模板测试页面,请确认模板数据已保存。")
        .then((res) => {
          this.$router.push({
            path: "/knowledge/templateku/configurat/measurement",
            query: {
              id: this.id,
              name: this.ruleForm.templateName,
              timeout: this.ruleForm.silencetime,
            },
          });
        })
        .catch(() => {});
    },
    // æ–°å»ºæ¨¡æ¿ä¸­ä¸´æ—¶é¢˜ç›®
    // é¢˜ç›®ç±»åž‹æ›´æ¢
    typeselection(row) {
      if (row == 1 && !this.indexform.ivrTaskScriptTargetoptionList.length) {
        this.indexform.ivrTaskScriptTargetoptionList.push({
          guid: 1,
          isoperation: 1,
          targetvalue: "",
          targetregex: "",
          targetregex2: "",
          dynamiccruxs: [],
          nodynamiccruxs: [],
          dynamiccruxsJson: "",
          nodynamiccruxsJson: "",
        });
      }
      this.$forceUpdate();
    },
    addoptionson() {
      this.indexform.ivrTaskScriptTargetoptionList.push({
        guid: 1,
        isoperation: 1,
        targetvalue: "",
        targetregex: "",
        targetregex2: "",
        dynamiccruxs: [],
        nodynamiccruxs: [],
        dynamiccruxsJson: "",
        nodynamiccruxsJson: "",
      });
    },
  },
};
</script>
<style lang="scss" scoped>
.Questionnairemanagement {
  // display: flex;
}
.sidecolumn {
  margin: 20px;
  margin-bottom: 0;
  padding: 30px;
  background: #edf1f7;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
}
.leftvlue {
  //   display: flex;
  //   flex: 1;
  // width: 80%;
  margin: 20px;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
  .mulsz {
    font-size: 20px;
  }
  .leftvlue-jbxx {
    font-size: 24px;
    border-left: 5px solid #41a1be;
    padding-left: 5px;
    margin: 15px 0;
  }
  .demo-cascader {
    margin-right: 20px;
  }
  .PreviewTemplate {
    color: #02a7f0;
    cursor: pointer;
    font-size: 20px;
    margin: 0 20px;
  }
}
.preview-left {
  margin: 20px;
  //   margin: 20px;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
  .scriptTopic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
  .headline {
    display: flex;
    justify-content: space-between;
    font-size: 20px;
    border-left: 3px solid #41a1be;
    padding-left: 5px;
    margin: 15px 0;
  }
  .topicxq {
    background-color: #e2f5fc;
    border-radius: 4px;
    margin-top: 10px;
    padding-left: 10px;
    padding-top: 15px;
  }
}
.xinz-inf {
  font-size: 18px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 48px;
  .el-tag + .el-tag {
    margin-left: 10px;
  }
  .button-new-tag {
    margin-left: 10px;
    height: 32px;
    line-height: 30px;
    padding-top: 0;
    padding-bottom: 0;
  }
  .input-new-tag {
    width: 90px;
    margin-left: 10px;
    vertical-align: bottom;
  }
}
.xinz-infs {
  font-size: 18px;
  line-height: 48px;
  .el-tag + .el-tag {
    margin-left: 10px;
  }
}
.addtopic {
  margin-top: 30px;
}
.presentation {
  margin: 20px 0;
  display: flex;
  .presentation-left {
    width: 45%;
    // height: 500px;
    .button-textxg {
      color: #024df0;
    }
    .button-textsc {
      color: #f52727;
    }
  }
  .spresentation-left {
    width: 100%;
    // height: 500px;
    .button-textxg {
      color: #024df0;
    }
    .button-textsc {
      color: #f52727;
    }
  }
  .presentation-right {
    width: 55%;
    max-height: 688px;
    margin: 0 20px;
    font-size: 18px;
    -webkit-box-shadow: 0 2px 4px 0 rgba(32, 32, 32, 0.12),
      0 0 6px 0 rgba(58, 57, 57, 0.04);
    overflow: auto;
    .headline {
      display: flex;
      justify-content: space-between;
      font-size: 20px;
      border-left: 3px solid #41a1be;
      padding-left: 5px;
      margin: 15px 0;
    }
    .topicxq {
      background-color: #e2f5fc;
      border-radius: 4px;
      margin-top: 10px;
      padding-left: 10px;
      padding-top: 15px;
    }
  }
}
::v-deep .addtopic-input {
  input {
    background: #02a7f0;
    color: #edf1f7;
    width: 150px;
  }
}
::v-deep.el-step.is-vertical .el-step__title {
  font-size: 20px;
}
::v-deep.el-input--medium {
  font-size: 18px !important;
}
::v-deep.ruleFormaa.el-select {
  display: inline-block;
  position: relative;
  width: 700px;
}
.el-select__tags {
  font-size: 20px;
  max-width: 888px !important;
}
::v-deep.el-radio__inner {
  width: 22px;
  height: 22px;
}
// ::v-deep.topic-dev.el-radio__label {
//   font-size: 24px;
// }
::v-deep.el-radio-group {
  span {
    font-size: 20px;
  }
}
::v-deep.el-checkbox-group {
  span {
    font-size: 20px;
  }
}
// ::v-deep.el-form-item--medium .el-form-item__content {
//   line-height: 36px;
//   display: flex;
// }
</style>
vue.config.js
@@ -37,9 +37,9 @@
      [process.env.VUE_APP_BASE_API]: {
        // target: `http://192.168.168.60:8095`,
        // target: `http://10.202.20.185:8095`,
        target: `http://192.168.2.13:8095`,
        // target: `http://192.168.2.10:8095`,
        // target:`http://localhost:8095`,
        // target: `http://192.168.101.135:8095`,
        target: `http://192.168.101.135:8095`,
        // target: `http://192.168.101.166:8093`,
        // target: `http://192.168.191.181:8095`,
        changeOrigin: true,