WXL
2024-08-19 9bc27231d681cbc1bae6d8f199521d332c9c23f7
src/views/repositoryai/templateku/configurat/index.vue
@@ -2,14 +2,27 @@
  <div class="Questionnairemanagement">
    <!-- 左侧栏 -->
    <div class="sidecolumn">
      <div style="height: 400px">
        <el-steps direction="vertical" :active="Editprogress">
          <el-step title="基础信息"></el-step>
          <el-step title="随访模版题目"></el-step>
          <el-step
            title="随访模版预览"
            description="查看随访模版预览,可导出PDF"
          ></el-step>
      <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>
@@ -29,55 +42,68 @@
          <el-row>
            <el-col :span="12">
              <el-form-item label="模版名称" prop="region">
                <div style="width: 30%">
                  <el-input v-model="ruleForm.name"></el-input>
                <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.classify"
                  v-model="ruleForm.assortid"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  <el-option-group
                    v-for="group in indexAssortlist"
                    :key="group.id"
                    :label="group.indexAssortName"
                  >
                  </el-option>
                    <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-form-item label="模版简介" prop="name">
          <el-form-item label="模版简介" prop="note">
            <div style="width: 50%">
              <el-input type="textarea" v-model="ruleForm.name"></el-input>
              <el-input
                type="textarea"
                placeholder="请输入简介"
                v-model="ruleForm.note"
              ></el-input>
            </div>
          </el-form-item>
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="版本号" prop="name">
                <el-input v-model="currentVersion"></el-input> </el-form-item
            <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="9">
            <el-col :span="12">
              <el-form-item label="可用状态" prop="region">
                <el-select
                  v-model="ruleForm.classify"
                  v-model="ruleForm.usestate"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                  placeholder="请选择"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in options"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -86,57 +112,94 @@
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="通知变量" prop="name">
            <el-row v-for="item in variablelist">
              <el-col :span="4">
                <el-input v-model="item.variable"></el-input>
              </el-col>
              <el-col :span="8" :offset="1">
                <el-input v-model="item.value"></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
                  type="success"
                  icon="el-icon-plus"
                  circle
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                  type="danger"
                  icon="el-icon-delete"
                  circle
                  @click="delvariable(item)"
                ></el-button>
              </el-col>
            </el-row>
          </el-form-item>
          <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"
                :key="tag.tagname"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClose(tag)"
                @close="handleClosetag(tag)"
              >
                {{ tag }}
                {{ tag.tagname }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                  allow-create
                  default-first-option
                remote
                allow-create
                reserve-keyword
                default-first-option
                :remote-method="remoteMethodtag"
                :loading="loading"
                placeholder="请选择"
              >
                <el-option
                v-for="item in optionstag"
                  :key="item.tagname"
                    :label="item.tagname"
                    :value="item.tagname"
                  v-for="item in optionstag"
                  :key="item.tagid"
                  :label="item.tagname"
                  :value="item.tagname"
                >
                </el-option>
              </el-select>
@@ -149,112 +212,62 @@
              >
            </div>
          </el-form-item>
          <el-row :gutter="20">
            <el-col :span="6">
              <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.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
            <el-col :span="9">
              <el-form-item label="播报优先" prop="region">
                <el-radio-group v-model="ruleForm.classify">
                  <el-radio :label="3">语言合成优先</el-radio>
                  <el-radio :label="6">语言文件优先</el-radio>
                </el-radio-group>
              </el-form-item></el-col
            >
          </el-row>
          <el-form-item label="随访方式" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.way"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类(多选)"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in xjxsoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
          <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"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用疾病" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.illness"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类(多选)"
                {{ 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
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          </div>
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.courtyard"
              style="width: 500px"
              v-model="ruleForm.campus"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                v-for="item in courtyardlist"
                :key="item.label"
                :label="item.label"
                :value="item.value"
                :value="item.label"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用科室" prop="region">
            <el-select
            <el-cascader
              style="width: 500px"
              v-model="ruleForm.administrative"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类(多选)"
              v-model="tempDetpRelevanceslist"
              :options="deptList"
              :props="props"
              :show-all-levels="false"
              clearable
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
              <template slot-scope="{ node, data }">
                <span>{{ data.deptName }}</span>
                <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
              </template>
            </el-cascader>
          </el-form-item>
          <el-form-item label="通用库" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.way"
              v-model="ruleForm.submoduleID"
              size="medium"
              multiple
              filterable
@@ -262,50 +275,30 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in xjxsoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
                v-for="item in generallist"
                :key="item.id"
                :label="item.extName"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-row :gutter="20">
            <el-col :span="8">
            <el-col :span="12">
              <el-form-item label="随访前处理" prop="name">
                <el-select
                  v-model="ruleForm.languageq"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in xjxsoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select> </el-form-item
                <el-input
                  type="textarea"
                  show-word-limit
                  v-model="ruleForm.revisitBefore"
                ></el-input></el-form-item
            ></el-col>
            <el-col :span="9">
            <el-col :span="12">
              <el-form-item label="随访后处理" prop="region">
                <el-select
                  v-model="ruleForm.languageh"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in xjxsoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select> </el-form-item
                <el-input
                  type="textarea"
                  show-word-limit
                  v-model="ruleForm.revisitAfter"
                ></el-input> </el-form-item
            ></el-col>
          </el-row>
          <el-row :gutter="20">
@@ -313,23 +306,32 @@
              <el-form-item label="静默时间(秒)" prop="name">
                <div style="width: 40%">
                  <el-input
                    v-model="ruleForm.name"
                    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.name"></el-input>
                  <el-input v-model="ruleForm.mateNum"></el-input>
                </div> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item>
            <el-button type="success" @click="nextstep('ruleForm')"
            <el-button type="success" plain @click="nextstep('ruleForm')"
              >下一步</el-button
            >
            <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
            <el-button @click="submitForm('ruleForm')"
              >保存随访模版基础信息</el-button
            <el-button
              type="success"
              @click="Departmenttreatment('ruleForm')"
              >{{ task ? "保存到任务模版" : "保存随访模版基础信息" }}</el-button
            >
          </el-form-item>
        </el-form>
@@ -343,32 +345,35 @@
            type="primary"
            icon="el-icon-plus"
            round
            @click="drawer = true"
            @click="getaddtopiclist"
            >添加题目</el-button
          >
        </div>
        <div class="presentation">
          <div class="presentation-left">
            <el-card class="box-card" style="min-height: 688px">
              <el-table v-loading="loading" :data="userList">
              <el-table
                v-loading="loading"
                :data="ruleForm.ivrLibaTemplateScriptVOList"
              >
                <el-table-column
                  label="编号"
                  align="center"
                  key="userid"
                  prop="userid"
                  key="targetid"
                  prop="targetid"
                />
                <el-table-column
                  label="标题"
                  align="center"
                  key="userName"
                  prop="userName"
                  key="scriptTopic"
                  prop="scriptTopic"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  label="问题话术"
                  align="center"
                  key="verbaltrick"
                  prop="verbaltrick"
                  key="scriptContent"
                  prop="scriptContent"
                  :show-overflow-tooltip="true"
                />
@@ -389,7 +394,7 @@
                      type="danger"
                      icon="el-icon-delete"
                      circle
                      @click="deloption(scope.row)"
                      @click="handleDelete(scope.row)"
                    ></el-button>
                    <el-button
                      @click="syioption(scope.row)"
@@ -407,14 +412,6 @@
                </el-table-column>
              </el-table>
            </el-card>
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="queryParams.pageNum"
              :limit.sync="queryParams.pageSize"
              @pagination="getList"
            />
          </div>
          <div class="presentation-right">
            <el-card class="box-card">
@@ -425,181 +422,259 @@
              >
                <div class="headline">
                  题目设置详情
                  <span style="margin-left: 30px"
                  <!-- <span style="margin-left: 30px"
                    ><el-button type="primary" @click="Submittopicobj"
                      >保存</el-button
                    ></span
                  >
                  > -->
                </div>
                <el-form-item label="题目标题">
                  <el-input
                    v-model="topicobj.title"
                    placeholder="请输入标题"
                    v-model="topicobj.scriptTopic"
                    placeholder="请从左侧列表选择"
                  ></el-input>
                </el-form-item>
                <el-form-item label="问题节点">
                  <el-input
                    v-model="topicobj.targetid"
                    placeholder="请从左侧列表选择"
                    :disabled="true"
                  ></el-input>
                </el-form-item>
                <el-row :gutter="10">
                  <el-col :span="12"
                    ><el-form-item label="是否必答">
                      <el-radio-group v-model="topicobj.resource">
                        <el-radio label="是"></el-radio>
                        <el-radio label="否"></el-radio>
                      </el-radio-group> </el-form-item
                    ><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-radio-group v-model="topicobj.resourcea">
                        <el-radio label="是"></el-radio>
                        <el-radio label="否"></el-radio>
                      </el-radio-group> </el-form-item
                    ><el-form-item label="取值类型">
                      <el-select
                        v-model="topicobj.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>
                <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>
                <div class="topicxq" v-for="item in 2">
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="处理">
                        <el-input
                          type="text"
                          placeholder="(默认)无声"
                          v-model="queryParams.text"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="12"
                      ><el-form-item label="节点ID">
                        <el-input
                          type="text"
                          placeholder="请输入分值"
                          v-model="queryParams.text"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="选中提示">
                        <el-input
                          type="text"
                          placeholder="请输入内容"
                          v-model="queryParams.text"
                          maxlength="10"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="12"
                      ><el-form-item label="选中跳转">
                        <el-input
                          type="text"
                          placeholder="请输入题号"
                          v-model="queryParams.text"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-form-item label="语音文本">
                    <el-input
                      style="width: 24vw"
                      type="textarea"
                      placeholder="请输入题号"
                      v-model="queryParams.text"
                      show-word-limit
                    >
                    </el-input>
                  </el-form-item>
                <el-form-item label="问题语音" v-if="topicobj.scriptVoice">
                  <mini-audio :audio-source="topicobj.scriptVoice"></mini-audio>
                </el-form-item>
                  <el-row :gutter="10">
                    <el-col :span="16">
                      <el-form-item label="语音文件">
                        <el-upload
                          class="upload-demo"
                          style="display: flex"
                          action="https://jsonplaceholder.typicode.com/posts/"
                          :on-change="handleChange"
                          :file-list="fileList"
                          :limit="1"
                          :on-exceed="handleExceed"
                        >
                          <el-button size="small" type="primary"
                            >点击上传</el-button
                          >
                        </el-upload>
                      </el-form-item></el-col
                    >
                    <el-col :span="8">
                      <div style="text-align: right; padding-right: 10px">
                        <el-button type="danger" round>删除</el-button>
                      </div>
                <div
                  class="topicxq"
                  v-if="topicobj.valueType == 2 || topicobj.valueType == 3"
                >
                  <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.ivrLibaScriptTargetoptionList"
                    @deloption="deloption"
                    :controlsc="false"
                  />
                  <!-- 无匹配类型 -->
                  <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 :gutter="10">
                      <el-col :span="16">
                        <el-form-item
                          label="无匹配语音"
                          v-if="topicobj.nomatchvoice"
                        >
                          <mini-audio
                            :audio-source="topicobj.nomatchvoice"
                          ></mini-audio> </el-form-item
                      ></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 :gutter="10">
                      <el-col :span="16">
                        <el-form-item
                          label="语音文件"
                          v-if="topicobj.noclearlyvoice"
                        >
                          <mini-audio
                            :audio-source="
                              topicobj.noclearlyvoice
                                ? topicobj.noclearlyvoice
                                : 'https://example.com/example.mp3'
                            "
                          ></mini-audio> </el-form-item
                      ></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 :gutter="10">
                      <el-col :span="16">
                        <el-form-item
                          label="语音文件"
                          v-if="topicobj.sliencevoice"
                        >
                          <mini-audio
                            :audio-source="
                              topicobj.sliencevoice
                                ? topicobj.sliencevoice
                                : 'https://example.com/example.mp3'
                            "
                          ></mini-audio> </el-form-item
                      ></el-col>
                    </el-row>
                  </div>
                </div>
              </el-form>
            </el-card>
          </div>
        </div>
        <el-button type="success" @click="nextstep('ruleForm')"
          >下一步</el-button
        <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="primary" @click="laststep()">上一步</el-button>
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
        <el-button @click="Saveproblem('ruleForm')">保存题目数据</el-button>
      </div>
      <!-- 随访模版预览 -->
      <div v-if="Editprogress == 3">
        <div class="leftvlue-jbxx">随访模版预览</div>
        <div class="leftvlue-jbxx">随访模版问题预览</div>
        <el-divider></el-divider>
        <div class="preview-left">
          <!-- 单选 -->
          <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
          <div
            class="scriptTopic-dev"
            v-for="item in valssu"
            :key="item.targetid"
            v-if="item.valueType == 1"
          >
            <div class="dev-text">
              {{ item.idd }}、[单选]<span>{{ item.wssd }}</span>
              {{ item.targetid }}、[单选]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-radio-group v-model="radio">
              <el-radio-group v-model="item.remark">
                <el-radio
                  v-for="(items, index) in item.sdadd"
                  v-for="(items, index) in item.ivrLibaScriptTargetoptionList"
                  :key="index"
                  :label="index"
                  >{{ items }}</el-radio
                  >{{ items.targetvalue }}</el-radio
                >
              </el-radio-group>
            </div>
          </div>
          <!-- 多选 -->
          <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
          <div
            class="scriptTopic-dev"
            v-for="item in valssu"
            :key="item.targetid"
            v-if="item.valueType == 2"
          >
            <div class="dev-text">
              {{ item.idd }}、[多选]<span>{{ item.wssd }}</span>
              {{ item.targetid }}、[多选]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-checkbox-group v-model="radios">
              <el-checkbox-group v-model="item.remark">
                <el-checkbox
                  v-for="(items, index) in item.sdadd"
                  v-for="(items, index) in item.ivrLibaScriptTargetoptionList"
                  :key="index"
                  :label="index"
                >
                  {{ items }}
                  {{ items.targetvalue }}
                </el-checkbox>
              </el-checkbox-group>
            </div>
          </div>
          <!-- 填空 -->
          <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
          <div
            class="scriptTopic-dev"
            v-for="item in valssu"
            :key="item.targetid"
            v-if="item.valueType == 3"
          >
            <div class="dev-text">
              {{ item.idd }}、[填空]<span>{{ item.wssd }}</span>
              {{ item.targetid }}、[填空]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-input placeholder="请输入答案" v-model="radioas" clearable>
@@ -607,9 +682,9 @@
            </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>
        <el-button>导出为pdf</el-button>
        <el-button type="primary" @click="laststep()">上一步</el-button>
      </div>
    </div>
    <!-- 添加题目弹窗 -->
@@ -617,182 +692,572 @@
      title="添加题目"
      :visible.sync="drawer"
      custom-class="demo-drawer"
      width="50%"
      size="50%"
    >
      <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.userName"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="主题" prop="sickness">
            <el-select
              v-model="ruleForm.classify"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
      <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-option>
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-button
              type="primary"
              icon="el-icon-search"
              size="medium"
              @click="handleQuery"
              >搜索</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="userName"
            prop="userName"
            width="100"
          />
          <el-table-column
            label="问题话术"
            align="center"
            key="verbaltrick"
            prop="verbaltrick"
            width="200"
            :show-overflow-tooltip="true"
          />
                <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-table-column
            label="操作"
            align="center"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row)"
                ><span class="button-textxg"
                  ><i class="el-icon-circle-plus-outline"></i>添加</span
                ></el-button
                <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="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"
              >
            </template>
          </el-table-column>
        </el-table>
                <div class="headline">
                  题目设置详情
                  <span style="margin-left: 30px"
                    ><el-button type="primary" @click="Submittopicobj"
                      >保存新增</el-button
                    ></span
                  >
                </div>
                <el-divider></el-divider>
                <el-form-item label="题目标题">
                  <el-input
                    v-model="indexform.scriptTopic"
                    placeholder="请输入题目标题"
                  ></el-input>
                </el-form-item>
                <el-form-item label="问题节点">
                  <el-input
                    v-model="indexform.targetid"
                    placeholder="请输入问题节点"
                  ></el-input>
                </el-form-item>
                <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-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.scriptVoice"
                      >{{
                        indexform.scriptVoice.substring(
                          indexform.scriptVoice.lastIndexOf("/") + 1
                        )
                      }}</span
                    >
                  </el-col>
                  <el-col :span="6">
                    <mini-audio
                      :audio-source="
                        indexform.scriptVoice
                          ? indexform.scriptVoice
                          : 'https://example.com/example.mp3'
                      "
                    ></mini-audio>
                  </el-col>
                </el-row>
                <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-if="indexform.scriptType == 2">
                  <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-else>
                  <div class="headline">
                    <div class="basics">选项设置</div>
                  </div>
                  <el-divider></el-divider>
                  <Regular
                    :TargetoptionList="indexform.ivrLibaScriptTargetoptionList"
                    @deloption="deloption"
                    :controlsc="false"
                  />
                  <!-- 无匹配类型 -->
                  <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
                            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 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>
              </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,
  delFollowupclassify,
  addFollowupclassify,
  addtargetillness,
  getvFollowup,
  compileFollowup,
  getverbaltricklist,
  getverbaltrick,
  delFollowupinfo,
  Followupinfo,
  getFollowuplist,
  deltargetillness,
  getillnesslist,
  illnesslistget,
  getillness,
  getgenerallist,
} from "@/api/AiCentre/index";
import OptionalForm from "@/components/OptionalForm"; //正则组件
import { getToken } from "@/utils/auth";
export default {
  name: "Tpuconfigurat",
  components: { Regular, OptionalForm },
  data() {
    return {
      sidecolumnrabs: "left", //方向
      Editprogress: 2, //编辑进度
      currentVersion: "1.2.3", //当前版本
      headers: {
        Authorization: "Bearer " + getToken(),
      },
      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort",
      Editprogress: 1, //编辑进度
      loading: false, // 遮罩层
      drawer: false, //控制展开
      radio: "false", //单选题选中
      radios: [], //多选题选中
      radioas: "", //填空题答案
      dynamicTags: ["标签一", "标签二", "标签三"],
      inputVisible: false,
      task: null, //是否来自任务
      taskform: null, //任务信息
      indexform: {
        ivrLibaScriptTargetoptionList: [],
      },
      labelInfovalue: [], //标签临时存储
      deptNamesvalue: [], //科室临时存储
      dialogVisiblepatient: false, //适用疾病窗口
      dynamicTags: [],
      indexAssortlist: [],
      inputValue: "",
      topicobj: {},
      // 总条数
      inputValueillness: "",
      topicobj: {
        noMatchText: "",
        noClearlyText: "",
        slienceText: "",
      },
      total: 1,
      id: "",
      ruleForm: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        templatevalue: "",
        data2: "",
        templateName: "",
        ivrLibaTemplateTagList: [],
        ivrLibaTemplateScriptVOList: [],
        tempDetpRelevances: [],
      },
      rules: {},
      rulesa: {},
      optionstag:[],
      xjxsoptions: [
        {
          value: "选项1",
          label: "图文",
        },
        {
          value: "选项2",
          label: "视频",
        },
        {
          value: "选项3",
          label: "音频",
        },
      optionstag: [],
      prefollowuplist: [],
      postfollowuplist: [],
      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",
        },
      ],
      options: [
        {
          value: "选项1",
          label: "疾病随访模版",
        },
        {
          value: "选项2",
          label: "入院随访模版",
        },
        {
          value: "选项3",
          label: "手术随访模版",
        },
        {
          value: "选项4",
          label: "护理随访模版",
        },
      administrativelist: [
        { value: "1", label: "心外科" },
        { value: "2", label: "心内科" },
      ],
      languagelist: [
        {
          value: "1",
          label: "普通话",
        },
        {
          value: "2",
          label: "粤语",
        },
        {
          value: "3",
          label: "英文",
        },
      standbylist: [],
      themelist: [],
      languagelist: [],
      courtyardlist: [],
      precedencetype: [],
      usable: [],
      required: [],
      valuetype: [],
      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: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      variablelist: [
        {
          variable: "paitent",
@@ -800,37 +1265,11 @@
        },
      ],
      valssu: [
        {
          idd: 1,
          wssd: "你最近怎么样",
          sdadd: ["sss", "ssccss", "ssaas", "ss"],
        },
      ],
      valssu: [],
      radio: "",
      addvalue: "添加题目",
      // 题目表格数据
      userList: [
        {
          userid: "1",
          userName: "一号随访模版",
          verbaltrick: "一号随访模版",
        },
        {
          userid: "2",
          userName: "二号随访模版",
          verbaltrick: "一号随访模版",
        },
        {
          userid: "3",
          userName: "三号随访模版",
          verbaltrick: "一号随访模版",
        },
        {
          userid: "4",
          userName: "四号随访模版",
          verbaltrick: "一号随访模版",
        },
      ],
      userList: [],
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -845,25 +1284,202 @@
  },
  created() {
    this.RoutingDataProcessing();
    this.gettabList();
    this.getvFollowup();
    this.auxiliary();
    this.mode = store.getters.mode;
    this.usable = store.getters.usable;
    this.required = store.getters.required;
    this.valuetype = store.getters.valuetype;
    this.languagelist = store.getters.languagelist;
    this.courtyardlist = store.getters.courtyardlist;
    this.precedencetype = store.getters.precedencetype;
  },
  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);
    },
    submitForm(formName) {
      this.rules = this.rulesa;
      //   提交
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("submit!");
        } else {
          console.log("error submit!!");
          return false;
    processElement(element) {
      return { ...element, isoperation: 0 };
    },
    // 路由数据处理
    RoutingDataProcessing() {
      this.id = this.$route.query.id;
      this.task = this.$route.query.task;
      // console.log(this.task, "task");
      // if (this.task) {
      //   this.id = this.$route.query.id;
      // }
    },
    // 获取表单数据
    getvFollowup() {
      if (this.id) {
        getvFollowup({ id: this.id }).then((res) => {
          if (res.code == 200) {
            console.log(2211);
            this.ruleForm = res.data;
            this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
            this.ruleForm.suitway = this.ruleForm.suitway.split(",");
            this.ruleForm.campus = this.ruleForm.campus.split(",");
            this.ruleForm.submoduleID = this.ruleForm.submoduleID.split(",");
            this.ruleForm.submoduleID = this.ruleForm.submoduleID.map((res) => {
              return Number(res);
            });
            console.log(
              this.ruleForm.submoduleID,
              "this.ruleForm.submoduleID取"
            );
            this.dynamicTags = this.ruleForm.ivrLibaTemplateTagList;
            this.dynamicTags = this.ruleForm.ivrLibaTemplateTagList.map(
              this.processElement
            );
            console.log(this.ruleForm.suitway);
          }
        });
        getillness({ outid: this.id, type: 3 }).then((res) => {
          this.illnesslist = res.rows;
          this.illnesslist.forEach((item) => {
            item.icdname = item.icd10name;
          });
        });
      }
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
    // 附属数据表
    auxiliary() {
      // 分类
      getFollowupclassify({}).then((res) => {
        this.indexAssortlist = res.rows;
        if (this.$route.query.assortid) {
          this.ruleForm.assortid = Number(this.$route.query.assortid);
        }
      });
      // 科室
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
      // 疾病
      getillnesslist({
        pageNum: 1,
        pageSize: 100,
      }).then((response) => {
        this.optionsillness = response.rows;
      });
      getgenerallist({
        pageNum: 1,
        pageSize: 100,
      }).then((res) => {
        this.generallist = res.rows;
      });
      // 疾病列
    },
    //
    submitForm(formName) {
      if (this.ruleForm.id) {
        this.ruleForm.isoperation = 2;
      } else {
        this.ruleForm.isoperation = 1;
      }
      this.ruleForm.labelInfo = JSON.stringify(this.dynamicTags);
      this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      this.ruleForm.campus = this.ruleForm.campus.join(",");
      this.ruleForm.submoduleID = this.ruleForm.submoduleID.join(",");
      //   提交
      this.ruleForm.ivrLibaTemplateScriptVOList.forEach((res) => {
        if (!res.isoperation) {
          res.isoperation = 2;
        }
        res.ivrLibaScriptTargetoptionList =
          res.ivrLibaScriptTargetoptionList.map((item) => {
            if (!item.isoperation) {
              item.isoperation = 2;
              item.templateID = this.ruleForm.id;
            }
            return item;
          });
      });
      compileFollowup(this.ruleForm).then((res) => {
        this.$modal.msgSuccess("编辑成功");
        this.confirmillness(res.data);
        this.$router.go(-1);
      });
    },
    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.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist);
      this.ruleForm.ivrLibaTemplateScriptVOList =
        this.ruleForm.ivrLibaTemplateScriptVOList.concat(this.delScriptVOList);
      const result = this.tempDetpRelevanceslist.map(
        (subArr) => subArr[subArr.length - 1]
      );
      // id数组查数组对象
      result.forEach((item) => {
        const condition = this.ruleForm.tempDetpRelevances.some(
          (obj) => obj.deptId === item
        );
        if (!condition) {
          listDept({ deptId: item }).then((res) => {
            res.data[0].type = 2;
            this.ruleForm.tempDetpRelevances.push(res.data[0]);
          });
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      // 数组对象查id数组
      this.ruleForm.tempDetpRelevances.forEach((item) => {
        const condition = result.some((obj) => obj === item.deptId);
        if (!condition) {
          const index = this.ruleForm.tempDetpRelevances.indexOf(item);
          this.ruleForm.tempDetpRelevances[index].delFlag = 1;
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      setTimeout(() => {
        this.submitForm();
      }, 1000);
      // this.submitForm();
    },
    // 下一步
    nextstep() {
@@ -892,43 +1508,22 @@
          });
        });
    },
    // 保存题目信息
    Saveproblem() {},
    /** 查询题目列表 */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
        console.log(response);
        // this.userList = response.data;
        // this.total = response.total;
        // this.loading = false;
        console.log(this.userList);
      });
      //   const { rows } = await listUser();
      //   console.log(rows);
      //   this.list = rows;
    },
    // 修改题目信息
    Submittopicobj() {},
    // 新增变量
    addvariable() {
      this.variablelist.push({
        variable: "",
        value: "",
      });
    },
    // 删除变量
    delvariable(item) {
      const index = this.variablelist.indexOf(item);
      if (index !== -1) {
        this.variablelist.splice(index, 1); // 从索引位置删除一个元素
      } else {
        console.log("未找到该对象");
    //控制语音文件
    handleChange(response, file, additionalParam) {
      console.log(response);
      console.log(additionalParam);
      if (additionalParam == 1) {
        this.indexform.scriptVoice = response.url;
        console.log(this.indexform.scriptVoice);
      } else if (additionalParam == 2) {
        this.indexform.nomatchvoice = response.url;
        console.log(this.indexform.nomatchvoice);
      } else if (additionalParam == 3) {
        this.indexform.sliencevoice = response.url;
      } else if (additionalParam == 4) {
        this.indexform.noclearlyvoice = response.url;
      }
    },
    // 控制文件
    handleChange(file, fileList) {
      this.fileList = fileList.slice(-3);
      this.$forceUpdate();
    },
    // 文件超出个数限制时的钩子
    handleExceed(files, fileList) {
@@ -950,64 +1545,212 @@
        this.optionstag = response.rows;
      });
    },
    handleClose(tag) {
    handleClosetag(tag) {
      console.log(tag);
      console.log(this.dynamicTags.indexOf(tag));
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.ruleForm.ivrLibaTemplateTagList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      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,
            };
          }
          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;
      // 自动获取焦点
      // this.$nextTick((_) => {
      //   this.$refs.saveTagInput.$refs.input.focus();
      // });
    },
    //测试表单 ---------------------------------
    //话术题目----------------
    addzbiao() {},
    handleUpdate() {},
    deloption(item) {
      const index = this.userList.indexOf(item);
      if (index !== -1) {
        this.userList.splice(index, 1); // 从索引位置删除一个元素
    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) {
      console.log(row);
      if (
        this.ruleForm.ivrLibaTemplateScriptVOList.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.ivrLibaScriptTargetoptionList.forEach((item) => {
          item.isoperation = 1;
        });
        this.ruleForm.ivrLibaTemplateScriptVOList.push(res.data);
        this.sortFn();
        this.$modal.msgSuccess("添加成功");
      });
    },
    handleDelete(row) {
      this.$modal
        .confirm('是否确认删除问题:"' + row.scriptTopic + '"?')
        .then(() => {
          this.ruleForm.ivrLibaTemplateScriptVOList.splice(
            this.ruleForm.ivrLibaTemplateScriptVOList.indexOf(row),
            1
          );
          row.isoperation = 3;
          this.delScriptVOList.push(row);
          this.$modal.msgSuccess("已删除,保存模版生效");
        })
        .catch(() => {});
    },
    handleUpdate(row) {
      console.log(row);
      this.optionIndex = this.ruleForm.ivrLibaTemplateScriptVOList.indexOf(row);
      if (row.ivrLibaScriptTargetoptionList.length) {
        console.log(11);
        this.topicobj = row;
        this.topicobj.valueType = row.valueType;
      } else {
        console.log("未找到该对象");
        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.userList, row);
      const item = this.userList.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中
      this.userList.splice(index - 1, 0, item); // 将item插入到索引位置的前一位
      const index = this.getIndexInArray(
        this.ruleForm.ivrLibaTemplateScriptVOList,
        row
      );
      const item = this.ruleForm.ivrLibaTemplateScriptVOList.splice(
        index,
        1
      )[0]; // 移除指定索引处的元素,并保存到item变量中
      this.ruleForm.ivrLibaTemplateScriptVOList.splice(index - 1, 0, item); // 将item插入到索引位置的前一位
      this.sortFn();
    },
    xiayioption(row) {
      const index = this.getIndexInArray(this.userList, row);
      const item = this.userList.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中
      this.userList.splice(index + 1, 0, item); // 将item插入到索引位置的前一位
      const index = this.getIndexInArray(
        this.ruleForm.ivrLibaTemplateScriptVOList,
        row
      );
      const item = this.ruleForm.ivrLibaTemplateScriptVOList.splice(
        index,
        1
      )[0]; // 移除指定索引处的元素,并保存到item变量中
      this.ruleForm.ivrLibaTemplateScriptVOList.splice(index + 1, 0, item); // 将item插入到索引位置的前一位
      this.sortFn();
    },
    // 问题排序
    sortFn() {
      this.userList = this.userList.map((item, index) => {
        return {
          userid: index + 1,
          userName: item.userName,
          verbaltrick: item.verbaltrick,
        };
      this.ruleForm.ivrLibaTemplateScriptVOList =
        this.ruleForm.ivrLibaTemplateScriptVOList.map((item, index) => {
          return Object.assign({}, item, { targetid: (index + 1).toString() });
        });
      this.ruleForm.ivrLibaTemplateScriptVOList.forEach((question, index) => {
        question.ivrLibaScriptTargetoptionList =
          question.ivrLibaScriptTargetoptionList.map((option) => {
            option.nextQuestion = Number(question.targetid) + 1;
            return option;
          });
      });
      console.log(this.userList);
      console.log(this.ruleForm.ivrLibaTemplateScriptVOList);
    },
    // -----------------------话术选项
    deloption() {},
    // 修改题目信息
    Submittopicobj() {
      this.ruleForm.ivrLibaTemplateScriptVOList[this.optionIndex] =
        this.topicobj;
      this.$modal.msgSuccess("暂存选项成功");
    },
    // ---------------------
    // 查询题库
    handleQuery() {},
    resetQuery() {},
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // 预览---------------
    preview() {
      console.log(this.ruleForm);
      this.valssu = this.ruleForm.ivrLibaTemplateScriptVOList;
      this.Editprogress = 3;
    },
    // 前往测试
    measurement() {
      this.$modal
        .confirm("即将前往模版测试页面,请确认模版数据已保存。")
        .then((res) => {
          this.$router.push({
            path: "/knowledge/tpuconfigurat/measurement",
            query: { id: this.id, name: this.ruleForm.templateName },
          });
        })
        .catch(() => {});
    },
    // 新建模版中临时题目
    // 题目类型更换
    typeselection(row) {
      if (row == 1 && !this.indexform.ivrLibaScriptTargetoptionList.length) {
        this.indexform.ivrLibaScriptTargetoptionList.push({
          guid: 1,
          isoperation: 1,
          targetvalue: "",
          targetregex: "",
          targetregex2: "",
          dynamiccruxs: [],
          nodynamiccruxs: [],
          dynamiccruxsJson: "",
          nodynamiccruxsJson: "",
        });
      }
    },
  },
};
@@ -1015,14 +1758,9 @@
<style lang="scss" scoped>
.Questionnairemanagement {
  display: flex;
  // display: flex;
}
.sidecolumn {
  width: 300px;
  min-height: 100vh;
  text-align: center;
  //   display: flex;
  //   margin-top: 20px;
  margin: 20px;
  margin-bottom: 0;
  padding: 30px;
@@ -1034,9 +1772,8 @@
.leftvlue {
  //   display: flex;
  //   flex: 1;
  width: 80%;
  margin-top: 20px;
  //   margin: 20px;
  // width: 80%;
  margin: 20px;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;
@@ -1069,12 +1806,27 @@
  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);
  .topic-dev {
  .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 {
@@ -1101,6 +1853,14 @@
    vertical-align: bottom;
  }
}
.xinz-infs {
  font-size: 18px;
  line-height: 48px;
  .el-tag + .el-tag {
    margin-left: 10px;
  }
}
.addtopic {
  margin-top: 30px;
}
@@ -1120,8 +1880,10 @@
  .presentation-right {
    width: 55%;
    max-height: 688px;
    padding: 0 20px;
    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;