<template> 
 | 
  <div class="Questionnairemanagement"> 
 | 
    <!-- 左侧栏 --> 
 | 
    <div class="sidecolumn"> 
 | 
      <div class="sidecolumn-top"> 
 | 
        <div class="top-wj">指标分类</div> 
 | 
        <div class="top-tj" @click="dialogFormVisible = true">+添加</div> 
 | 
      </div> 
 | 
      <div class="center-ss"> 
 | 
        <el-input 
 | 
          placeholder="请输入内容" 
 | 
          v-model="sidecolumnval" 
 | 
          class="input-with-select" 
 | 
          size="medium " 
 | 
        > 
 | 
        </el-input> 
 | 
      </div> 
 | 
  
 | 
      <div class="head-container" style="margin-top: 20px"> 
 | 
        <el-tree 
 | 
          :data="deptOptions" 
 | 
          :props="defaultProps" 
 | 
          :expand-on-click-node="false" 
 | 
          :filter-node-method="filterNode" 
 | 
          ref="tree" 
 | 
          node-key="id" 
 | 
          default-expand-all 
 | 
          highlight-current 
 | 
          @node-click="handleNodeClick" 
 | 
        > 
 | 
          <span class="custom-tree-node" slot-scope="{ node, data }"> 
 | 
            <span>{{ node.label }}</span> 
 | 
            <span v-if="data.id > 0"> 
 | 
              <el-button 
 | 
                type="text" 
 | 
                icon="el-icon-delete" 
 | 
                circle 
 | 
                size="mini" 
 | 
                @click="() => remove(node, data)" 
 | 
              > 
 | 
              </el-button> 
 | 
            </span> 
 | 
            <span v-if="data.id > 0"> 
 | 
              <el-button 
 | 
                type="text" 
 | 
                circle 
 | 
                size="mini" 
 | 
                @click="() => altertag(node, data)" 
 | 
                ><span class="button-textxg" 
 | 
                  ><i class="el-icon-edit-outline"></i 
 | 
                ></span> 
 | 
              </el-button> 
 | 
            </span> 
 | 
          </span> 
 | 
        </el-tree> 
 | 
      </div> 
 | 
    </div> 
 | 
    <!-- 右侧数据 --> 
 | 
    <div class="leftvlue"> 
 | 
      <div class="leftvlue-bg"> 
 | 
        <el-row :gutter="20"> 
 | 
          <!--用户数据--> 
 | 
          <el-col :span="24" :xs="24"> 
 | 
            <el-form 
 | 
              :model="queryParams" 
 | 
              ref="queryForm" 
 | 
              size="small" 
 | 
              :inline="true" 
 | 
              v-show="showSearch" 
 | 
              label-width="98px" 
 | 
            > 
 | 
              <el-form-item label="指标名称" prop="userName"> 
 | 
                <el-input 
 | 
                  v-model="queryParams.targetname" 
 | 
                  placeholder="请输入" 
 | 
                  clearable 
 | 
                  style="width: 200px" 
 | 
                  @keyup.enter.native="handleQuery" 
 | 
                /> 
 | 
              </el-form-item> 
 | 
              <el-form-item label="标签名称" prop="userName"> 
 | 
                <el-input 
 | 
                  v-model="queryParams.tagName" 
 | 
                  placeholder="请输入" 
 | 
                  clearable 
 | 
                  style="width: 200px" 
 | 
                  @keyup.enter.native="handleQuery" 
 | 
                /> 
 | 
              </el-form-item> 
 | 
              <el-form-item label="适用场景" prop="shape"> 
 | 
                <el-select v-model="queryParams.suitWay" placeholder="请选择"> 
 | 
                  <el-option 
 | 
                    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="classify"> 
 | 
                <el-select 
 | 
                  v-model="queryParams.scriptType" 
 | 
                  placeholder="请选择" 
 | 
                > 
 | 
                  <el-option 
 | 
                    v-for="(item, index) in askvaluetype" 
 | 
                    :key="item.value" 
 | 
                    :label="item.label" 
 | 
                    :value="item.value" 
 | 
                  > 
 | 
                  </el-option> 
 | 
                </el-select> 
 | 
              </el-form-item> 
 | 
              <el-form-item label="是否可用" prop="classify"> 
 | 
                <el-select 
 | 
                  v-model="queryParams.isAvailable" 
 | 
                  placeholder="请选择" 
 | 
                > 
 | 
                  <el-option 
 | 
                    v-for="(item, index) in usable" 
 | 
                    :key="item.value" 
 | 
                    :label="item.label" 
 | 
                    :value="item.value" 
 | 
                  > 
 | 
                  </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-row :gutter="10" class="mb8"> 
 | 
              <el-col :span="1.5"> 
 | 
                <el-button 
 | 
                  type="primary" 
 | 
                  plain 
 | 
                  icon="el-icon-plus" 
 | 
                  size="medium" 
 | 
                  @click="handleAdd" 
 | 
  
 | 
                  >新增</el-button 
 | 
                > 
 | 
              </el-col> 
 | 
  
 | 
              <el-col :span="1.5"> 
 | 
                <el-button 
 | 
                  type="danger" 
 | 
                  plain 
 | 
                  icon="el-icon-delete" 
 | 
                  size="medium" 
 | 
                  :disabled="multiple" 
 | 
                  @click="handleDelete" 
 | 
  
 | 
                  >删除</el-button 
 | 
                > 
 | 
              </el-col> 
 | 
  
 | 
              <!-- <el-col :span="1.5"> </el-col> --> 
 | 
            </el-row> 
 | 
  
 | 
            <el-table 
 | 
              v-loading="loading" 
 | 
              :data="targetList" 
 | 
              @selection-change="handleSelectionChange" 
 | 
            > 
 | 
              <el-table-column type="selection" width="50" align="center" /> 
 | 
              <!-- <el-table-column 
 | 
                label="序号" 
 | 
                fixed 
 | 
                align="center" 
 | 
                key="id" 
 | 
                prop="id" 
 | 
              /> --> 
 | 
              <el-table-column 
 | 
                label="指标名称" 
 | 
                fixed 
 | 
                align="center" 
 | 
                key="targetname" 
 | 
                prop="targetname" 
 | 
                :show-overflow-tooltip="true" 
 | 
              > 
 | 
              </el-table-column> 
 | 
              <el-table-column 
 | 
                label="指标描述" 
 | 
                align="center" 
 | 
                key="targetdesc" 
 | 
                prop="targetdesc" 
 | 
                :show-overflow-tooltip="true" 
 | 
                width="200" 
 | 
              /> 
 | 
              <el-table-column 
 | 
                label="指标类型" 
 | 
                align="center" 
 | 
                key="valueType" 
 | 
                prop="valueType" 
 | 
                :show-overflow-tooltip="true" 
 | 
              > 
 | 
                <template slot-scope="scope"> 
 | 
                  <dict-tag 
 | 
                    :options="valuetypelb" 
 | 
                    :value="scope.row.valueType" 
 | 
                  /> 
 | 
                </template> 
 | 
              </el-table-column> 
 | 
  
 | 
  
 | 
              <!-- <el-table-column 
 | 
                label="正常值范围" 
 | 
                align="center" 
 | 
                key="warndown" 
 | 
                prop="warndown" 
 | 
                width="200" 
 | 
              > 
 | 
                <template slot-scope="scope"> 
 | 
                  <span>{{ scope.row.warnup }}~{{ scope.row.warndown }}</span> 
 | 
                </template> 
 | 
              </el-table-column> --> 
 | 
             <el-table-column 
 | 
                label="适用场景" 
 | 
                align="center" 
 | 
                key="suitWayList" 
 | 
                prop="suitWayList" 
 | 
                width="120" 
 | 
              > 
 | 
                <template slot-scope="scope"> 
 | 
                  <dict-tag :options="mode" :value="scope.row.suitWayList" /> 
 | 
                </template> 
 | 
              </el-table-column> 
 | 
              <el-table-column 
 | 
                label="适用疾病" 
 | 
                align="center" 
 | 
                key="suitDisease" 
 | 
                prop="suitDisease" 
 | 
                width="120" 
 | 
              > 
 | 
                <template slot-scope="scope"> 
 | 
                  <el-button 
 | 
                    size="medium" 
 | 
                    type="text" 
 | 
                    @click="illnessUpdate(scope.row)" 
 | 
  
 | 
                    ><span class="button-textxg" 
 | 
                      ><i class="el-icon-date"></i>详情</span 
 | 
                    ></el-button 
 | 
                  > 
 | 
                </template> 
 | 
              </el-table-column> 
 | 
              <el-table-column 
 | 
                label="语言" 
 | 
                align="center" 
 | 
                key="language" 
 | 
                prop="language" 
 | 
                width="120" 
 | 
              /> 
 | 
              <el-table-column 
 | 
                label="是否可用" 
 | 
                align="center" 
 | 
                key="isAvailable" 
 | 
                prop="isAvailable" 
 | 
              > 
 | 
                <template slot-scope="scope"> 
 | 
                  <dict-tag :options="usable" :value="scope.row.isAvailable" /> 
 | 
                </template> 
 | 
              </el-table-column> 
 | 
  
 | 
              <el-table-column 
 | 
                label="操作" 
 | 
                fixed="right" 
 | 
                align="center" 
 | 
                width="200" 
 | 
                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-edit"></i>修改</span 
 | 
                    ></el-button 
 | 
                  > 
 | 
                  <!-- <el-button 
 | 
                    size="medium" 
 | 
                    type="text" 
 | 
                    @click="handlemeasurement(scope.row)" 
 | 
                    v-hasPermi="['system:user:edit']" 
 | 
                    ><span class="button-textcs" 
 | 
                      ><i class="el-icon-help"></i>测试</span 
 | 
                    ></el-button 
 | 
                  > --> 
 | 
                  <el-button 
 | 
                    size="medium" 
 | 
                    type="text" 
 | 
                    @click="handleDelete(scope.row)" 
 | 
  
 | 
                    ><span class="button-textsc" 
 | 
                      ><i class="el-icon-delete"></i>删除</span 
 | 
                    ></el-button 
 | 
                  > 
 | 
                </template> 
 | 
              </el-table-column> 
 | 
            </el-table> 
 | 
  
 | 
            <pagination 
 | 
              v-show="total > 0" 
 | 
              :total="total" 
 | 
              :page.sync="queryParams.pageNum" 
 | 
              :limit.sync="queryParams.pageSize" 
 | 
              @pagination="getList" 
 | 
            /> 
 | 
          </el-col> 
 | 
        </el-row> 
 | 
  
 | 
        <!-- 添加或修改指标配置对话框 --> 
 | 
        <el-dialog 
 | 
          :title="title" 
 | 
          :visible.sync="indexopen" 
 | 
          :close-on-click-modal="false" 
 | 
          width="900px" 
 | 
          append-to-body 
 | 
        > 
 | 
          <el-form 
 | 
            ref="indexform" 
 | 
            :model="indexform" 
 | 
            :rules="rules" 
 | 
            label-width="100px" 
 | 
          > 
 | 
            <div class="headline"> 
 | 
              <div class="basics">基础信息</div> 
 | 
            </div> 
 | 
            <el-divider></el-divider> 
 | 
            <el-row v-if="!measurement"> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="指标名称" prop="targetname"> 
 | 
                  <el-input 
 | 
                    v-model="indexform.targetname" 
 | 
                    placeholder="请输入指标名称" 
 | 
                    maxlength="40" 
 | 
                  /> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="指标分类" prop="assortid"> 
 | 
                  <el-select 
 | 
                  style="width: 300px;" 
 | 
                    v-model="indexform.assortid" 
 | 
                    size="medium" 
 | 
                    filterable 
 | 
                    placeholder="请选择分类" 
 | 
                  > 
 | 
                    <el-option-group 
 | 
                      v-for="group in deptOptions" 
 | 
                      :key="group.id" 
 | 
                      :label="group.indexAssortName" 
 | 
                    > 
 | 
                      <el-option 
 | 
                        v-for="item in group.ivrLibaTargetAssortList" 
 | 
                        :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 v-if="!measurement"> 
 | 
              <el-col :span="24"> 
 | 
                <el-form-item label="指标描述" prop="targetdesc"> 
 | 
                  <el-input 
 | 
                    v-model="indexform.targetdesc" 
 | 
                    placeholder="请输入指标描述" 
 | 
                    id="targetdesc" 
 | 
                    @focus="currentInputId = 'targetdesc'" 
 | 
                    maxlength="40" 
 | 
                  /> 
 | 
                </el-form-item> </el-col 
 | 
            ></el-row> 
 | 
            <!-- deptOptions --> 
 | 
            <el-row v-if="!measurement"> 
 | 
              <el-col :span="8"> 
 | 
                <el-form-item label="版本号" prop="deptId"> 
 | 
                  <el-input 
 | 
                    v-model="indexform.version" 
 | 
                    placeholder="默认1.0" 
 | 
                    maxlength="40" 
 | 
                  /> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="8"> 
 | 
                <el-form-item label="语言" prop="language"> 
 | 
                  <el-select 
 | 
                    v-model="indexform.language" 
 | 
                    placeholder="请选择语言" 
 | 
                  > 
 | 
                    <el-option 
 | 
                      v-for="index in languagelist" 
 | 
                      :key="index.value" 
 | 
                      :label="index.label" 
 | 
                      :value="index.value" 
 | 
                    ></el-option> 
 | 
                  </el-select> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="8"> 
 | 
                <el-form-item label="是否可用" prop="isAvailable"> 
 | 
                  <el-radio-group v-model="indexform.isAvailable"> 
 | 
                    <el-radio 
 | 
                      v-for="(item, index) in usable" 
 | 
                      :label="item.value" 
 | 
                      >{{ item.label }}</el-radio 
 | 
                    > 
 | 
                  </el-radio-group> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
            </el-row> 
 | 
  
 | 
            <!-- <el-form-item label="插入填空" prop="scriptContent"> 
 | 
              <div style="display: flex; margin-bottom: 10px"> 
 | 
                <div class="tsgname" @click="tsgnameto">插入填空</div> 
 | 
              </div> 
 | 
            </el-form-item> --> 
 | 
            <el-form-item label="标签" prop="dynamicTags" v-if="!measurement"> 
 | 
              <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 
 | 
                  allow-create 
 | 
                  default-first-option 
 | 
                  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> 
 | 
            <el-row v-if="!measurement"> 
 | 
              <el-col :span="24"> 
 | 
                <el-form-item prop="valueType"> 
 | 
                  <template #label> 
 | 
                    结果类型 
 | 
                    <el-tooltip 
 | 
                      class="item" 
 | 
                      effect="light" 
 | 
                      content="本类型为结果收集类型;选项用于指向性题目如是否等;文本适用复杂情况;数值用于收集数值型数据" 
 | 
                      placement="top-start" 
 | 
                    > 
 | 
                      <i class="el-icon-warning-outline"></i> 
 | 
                    </el-tooltip> 
 | 
                    <!-- 在标签后插入红色星号 --> 
 | 
                  </template> 
 | 
                  <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 v-if="!measurement"> 
 | 
              <el-col :span="24"> 
 | 
                <el-form-item label="适用题型" prop="scriptType"> 
 | 
                  <el-radio-group 
 | 
                    @input="Changtype" 
 | 
                    v-model="indexform.scriptType" 
 | 
                  > 
 | 
                    <el-radio :label="1">单选</el-radio> 
 | 
                    <el-radio :label="2">多选</el-radio> 
 | 
                    <!-- <el-radio :label="3">填空</el-radio> --> 
 | 
                    <el-radio :label="4">问答</el-radio> 
 | 
                  </el-radio-group> 
 | 
                </el-form-item> 
 | 
              </el-col></el-row 
 | 
            > 
 | 
  
 | 
            <el-row v-if="!measurement"> 
 | 
              <el-col :span="24"> 
 | 
                <el-form-item label="适用场景" prop="suitWayList"> 
 | 
                  <el-checkbox-group v-model="indexform.suitWayList"> 
 | 
                    <el-checkbox v-for="item in mode" :label="item.value">{{ 
 | 
                      item.label 
 | 
                    }}</el-checkbox> 
 | 
                  </el-checkbox-group> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
            </el-row> 
 | 
            <div v-if="indexform.scriptType == 1 || indexform.scriptType == 2"> 
 | 
              <div class="headline"> 
 | 
                <div class="basics">选项设置</div> 
 | 
              </div> 
 | 
              <el-divider></el-divider> 
 | 
            </div> 
 | 
            <el-card 
 | 
              class="box-card" 
 | 
              style="margin-bottom: 20px" 
 | 
              v-if="indexform.scriptType == 1 || indexform.scriptType == 2" 
 | 
            > 
 | 
              <Regular 
 | 
                :TargetoptionList="testuserList" 
 | 
                :intent="false" 
 | 
                :hasValue="hasValue" 
 | 
                @addoption="addoption" 
 | 
                @deloption="deloption" 
 | 
                @syioption="syioption" 
 | 
                @xiayioption="xiayioption" 
 | 
              /> 
 | 
            </el-card> 
 | 
            <!-- <div v-if="indexform.scriptType == 3"> 
 | 
              <el-form-item label="收集信息"> 
 | 
                <el-card class="box-card"> 
 | 
                  <div v-for="item in testuserList" style="margin-bottom: 10px"> 
 | 
                    <el-input 
 | 
                      type="text" 
 | 
                      placeholder="填入收集信息" 
 | 
                      v-model="indexform.optiondesc" 
 | 
                    > 
 | 
                      <el-button 
 | 
                        slot="append" 
 | 
                        @click="deloption(item)" 
 | 
                        type="danger" 
 | 
                        icon="el-icon-delete" 
 | 
                        circle 
 | 
                      ></el-button> 
 | 
                      <span slot="prepend">{{ "(" + item.orderno + ")" }}</span> 
 | 
                    </el-input> 
 | 
                  </div> 
 | 
                </el-card> 
 | 
              </el-form-item> 
 | 
            </div> --> 
 | 
            <div class="headline"> 
 | 
              <div class="basics">指标测试</div> 
 | 
            </div> 
 | 
            <el-divider></el-divider> 
 | 
            <el-row :gutter="20"> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="测试输入" prop="nickName"> 
 | 
                  <el-input 
 | 
                    v-model="indexform.content" 
 | 
                    placeholder="请输入测试内容" 
 | 
                    maxlength="40" 
 | 
                  /> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="4"> 
 | 
                <el-button type="success" @click="testtagerlist" 
 | 
                  >开始测试</el-button 
 | 
                > 
 | 
              </el-col> 
 | 
            </el-row> 
 | 
          </el-form> 
 | 
          <div> 
 | 
            <el-input 
 | 
              type="textarea" 
 | 
              :rows="4" 
 | 
              placeholder="此处展示识别结果" 
 | 
              v-model="testgovalue" 
 | 
            > 
 | 
            </el-input> 
 | 
          </div> 
 | 
          <div slot="footer" class="dialog-footer"> 
 | 
            <el-button type="primary" @click="submitForm">保 存</el-button> 
 | 
            <el-button @click="cancel">关 闭</el-button> 
 | 
          </div> 
 | 
        </el-dialog> 
 | 
      </div> 
 | 
    </div> 
 | 
    <!-- 添加疾病对话框 --> 
 | 
    <el-dialog title="指标疾病" :visible.sync="illnessVisible" width="50%"> 
 | 
      <div> 
 | 
        <div class="xinz-infs"> 
 | 
          <el-tag 
 | 
            :key="item.icd10name" 
 | 
            type="warning" 
 | 
            v-for="item in illnesslist" 
 | 
            closable 
 | 
            :disable-transitions="false" 
 | 
            @close="handleCloseillness(item)" 
 | 
          > 
 | 
            {{ item.icd10name }} 
 | 
          </el-tag> 
 | 
          <el-select 
 | 
            v-model="inputValue" 
 | 
            v-if="inputVisible" 
 | 
            @change="illnessConfirm" 
 | 
            :remote-method="remoteMethod" 
 | 
            filterable 
 | 
            remote 
 | 
            allow-create 
 | 
            default-first-option 
 | 
            placeholder="请选择/查询" 
 | 
            :loading="loading" 
 | 
          > 
 | 
            <el-option 
 | 
              v-for="item in optionsillness" 
 | 
              :key="item.icdid" 
 | 
              :label="item.icdname" 
 | 
              :value="item.icdid" 
 | 
            > 
 | 
            </el-option> 
 | 
          </el-select> 
 | 
          <el-button 
 | 
            v-else 
 | 
            class="button-new-tag" 
 | 
            size="small" 
 | 
            @click="showInput" 
 | 
            >+ 新增疾病</el-button 
 | 
          > 
 | 
        </div> 
 | 
      </div> 
 | 
      <span slot="footer" class="dialog-footer"> 
 | 
        <el-button @click="illnessVisible = false">取 消</el-button> 
 | 
        <el-button type="primary" @click="confirmillness">确 定</el-button> 
 | 
      </span> 
 | 
    </el-dialog> 
 | 
    <!-- 添加类别弹框 --> 
 | 
    <el-dialog title="类别编辑" width="30%" :visible.sync="dialogFormVisible"> 
 | 
      <div style="text-align: center; margin-bottom: 20px"> 
 | 
        <el-radio-group v-model="radio"> 
 | 
          <el-radio-button label="主分类"></el-radio-button> 
 | 
          <el-radio-button label="子分类"></el-radio-button> 
 | 
        </el-radio-group> 
 | 
      </div> 
 | 
      <el-divider></el-divider> 
 | 
  
 | 
      <el-form :model="classifyform"> 
 | 
        <el-form-item label="请选择问题大类" v-if="radio == '子分类'"> 
 | 
          <el-select v-model="classifyform.pid" placeholder="请选择"> 
 | 
            <el-option 
 | 
              v-for="item in deptOptions" 
 | 
              :key="item.id" 
 | 
              :label="item.indexAssortName" 
 | 
              :value="item.id" 
 | 
            > 
 | 
            </el-option> 
 | 
          </el-select> 
 | 
        </el-form-item> 
 | 
        <el-form-item label="请输入类别名称"> 
 | 
          <el-input 
 | 
            v-model="classifyform.indexAssortName" 
 | 
            autocomplete="off" 
 | 
          ></el-input> 
 | 
        </el-form-item> 
 | 
      </el-form> 
 | 
      <div slot="footer" class="dialog-footer"> 
 | 
        <el-button @click="getDeptTree()">取 消</el-button> 
 | 
        <el-button type="primary" @click="submitsidecolumn">确 定</el-button> 
 | 
      </div> 
 | 
    </el-dialog> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import { 
 | 
  gettargetInfo, 
 | 
  particulartarget, 
 | 
  gettargetInfoedit, 
 | 
  testtagerlist, 
 | 
  addtarget, 
 | 
  deletetarget, 
 | 
  getillnesslist, 
 | 
  illnesslistget, 
 | 
  getillness, 
 | 
  deltargetillness, 
 | 
  addtargetillness, 
 | 
  selectIvrLibaTargetAssortList, 
 | 
  addtreeselectIvrLibaTargetAssort, 
 | 
  edittreeselectIvrLibaTargetAssort, 
 | 
  delselectIvrLibaTargetAssort, 
 | 
} from "@/api/AiCentre/index"; 
 | 
import { getToken } from "@/utils/auth"; 
 | 
import Treeselect from "@riophae/vue-treeselect"; 
 | 
import Regular from "@/components/Regular"; //正则组件 
 | 
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; 
 | 
import { listtag } from "@/api/system/label"; 
 | 
import store from "@/store"; 
 | 
  
 | 
export default { 
 | 
  name: "questionnaire", 
 | 
  dicts: ["sys_normal_disable", "sys_user_sex"], 
 | 
  components: { Treeselect, Regular }, 
 | 
  data() { 
 | 
    return { 
 | 
      topactiveName: "Local", //顶部选择 
 | 
      // 遮罩层 
 | 
      loading: false, 
 | 
      // 选中数组 
 | 
      ids: [], 
 | 
      // 非单个禁用 
 | 
      single: true, 
 | 
      // 非多个禁用 
 | 
      multiple: true, 
 | 
      // 显示搜索条件 
 | 
      showSearch: true, 
 | 
      measurement: false, 
 | 
      languagelist: [], 
 | 
      usable: [], 
 | 
      indexid: null, 
 | 
      // 总条数 
 | 
      total: 0, 
 | 
      idds: "", 
 | 
      amendtag: false, //是否修改类别 
 | 
      dialogFormVisible: false, //修改添加类别弹框 
 | 
      deleteVisible: false, //分类删除弹框 
 | 
      deletefenl: "高血压", //删除项 
 | 
      radio: "主分类", 
 | 
      testvalue: "", 
 | 
      testgovalue: "", 
 | 
      creatype: "", //指标临时类型 
 | 
      hasValue: true, 
 | 
      classifyform: { 
 | 
        categoryname: "", 
 | 
      }, //类别表单 
 | 
      // 表格数据 
 | 
      targetList: null, 
 | 
      testuserList: [], 
 | 
      // 弹出层标题 
 | 
      title: "", 
 | 
      // 是否显示弹出层 
 | 
      open: false, 
 | 
      // 日期范围 
 | 
      dateRange: [], 
 | 
      // 岗位选项 
 | 
      postOptions: [], 
 | 
      // 角色选项 
 | 
      roleOptions: [], 
 | 
      // 添加、修改参数 
 | 
      indexform: {}, 
 | 
      numberlb: 22, 
 | 
      numberlbs: 2, 
 | 
      deptOptions: [], 
 | 
      defaultProps: { 
 | 
        children: "ivrLibaTargetAssortList", 
 | 
        label: "indexAssortName", 
 | 
      }, 
 | 
      sidecolumnform: {}, //添加类别表单 
 | 
      dialogFormVisible: false, //添加类别弹框 
 | 
      sidecolumnval: "", //类别搜索 
 | 
      indexopen: false, //弹框展示否 
 | 
      inputVisible: false, 
 | 
      illnessVisible: false, //指标疾病弹框 
 | 
      inputValue: "", 
 | 
      propss: { multiple: true }, 
 | 
      dynamicTags: [], 
 | 
      illnesslist: [], 
 | 
      illnesslistapi: [], 
 | 
      optionsillness: [], 
 | 
      mode: [], 
 | 
      optionstag: [], 
 | 
      targetoptionList: [], 
 | 
      Temporarytype: "", 
 | 
  
 | 
      // 查询参数 
 | 
      queryParams: { 
 | 
        pageNum: 1, 
 | 
        pageSize: 10, 
 | 
      }, 
 | 
      askvaluetype: [], 
 | 
  
 | 
      // 表单校验 
 | 
      rules: { 
 | 
        targetname: [ 
 | 
          { required: true, message: "指标名称不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
        assortid: [ 
 | 
          { required: true, message: "指标分类不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
        language: [ 
 | 
          { required: true, message: "语言不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
        isAvailable: [ 
 | 
          { required: true, message: "可用状态不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
        targetdesc: [ 
 | 
          { required: true, message: "指标描述不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
        valueType: [ 
 | 
          { required: true, message: "结果类型不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
        scriptType: [ 
 | 
          { required: true, message: "适用题型不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
        suitWayList: [ 
 | 
          { required: true, message: "适用场景不能为空", trigger: "blur" }, 
 | 
        ], 
 | 
      }, 
 | 
    }; 
 | 
  }, 
 | 
  watch: { 
 | 
    // 根据名称筛选部门树 
 | 
    sidecolumnval(val) { 
 | 
      console.log(val); 
 | 
      this.$refs.tree.filter(val); 
 | 
    }, 
 | 
  }, 
 | 
  created() { 
 | 
    // 初始化数据 
 | 
    this.getList(); 
 | 
    this.gettabList(); 
 | 
    this.getDeptTree(); 
 | 
    this.mode = store.getters.mode; 
 | 
    this.askvaluetype = store.getters.askvaluetype; 
 | 
    this.valuetypelb = store.getters.valuetypelb; 
 | 
    this.languagelist = store.getters.languagelist; 
 | 
    this.usable = store.getters.usable; 
 | 
  }, 
 | 
  methods: { 
 | 
    /** 查询指标列表 */ 
 | 
    getList() { 
 | 
      this.loading = true; 
 | 
      gettargetInfo(this.queryParams).then((res) => { 
 | 
        this.targetList = res.rows; 
 | 
        this.total = res.total; 
 | 
        console.log(this.targetList); 
 | 
        this.loading = false; 
 | 
      }); 
 | 
    }, 
 | 
  
 | 
    processElement(element) { 
 | 
      // 返回一个新的对象,将element对象的属性isoperation设置为1 
 | 
      return { ...element, isoperation: 1 }; 
 | 
    }, 
 | 
    // 返回数组中指定元素的索引 
 | 
    getIndexInArray(arr, obj) { 
 | 
      // 返回数组中指定元素的索引 
 | 
      return arr.indexOf(obj); 
 | 
    }, 
 | 
    changeselect(row) { 
 | 
      console.log(row); 
 | 
      this.hasValue = row.includes("2"); 
 | 
    }, 
 | 
    //删除分类 
 | 
    deletefenlei(row) { 
 | 
      if (this.deleteVisible) { 
 | 
        // deletetagcategory(this.idds).then((response) => { 
 | 
        //   console.log(response); 
 | 
        //   this.gitclasify(); 
 | 
        // }); 
 | 
        this.deleteVisible = false; 
 | 
        this.idds = ""; 
 | 
      } else { 
 | 
        this.deleteVisible = true; 
 | 
        this.idds = row.tagcategoryid; 
 | 
        this.deletefenl = row.title; 
 | 
      } 
 | 
    }, 
 | 
    // 便捷标签插入填空 
 | 
    tsgnameto(row) { 
 | 
      let inputValueArr = ""; 
 | 
      let value = this.testuserList.length + 1; 
 | 
  
 | 
      let el = document.querySelector("#" + this.currentInputId); 
 | 
      //el.selectionStart; 这就是当前光标所在的位置(字符串中字符的index) 
 | 
      if (this.currentInputId == "targetdesc") { 
 | 
        inputValueArr = this.indexform.targetdesc.split(""); 
 | 
      } else { 
 | 
        return; 
 | 
      } 
 | 
      //将输入框内容切成数组,方便后续操作 
 | 
      // inputValueArr = this.inputValue.split(""); 
 | 
      // 拿到选中文字的长度(后续可以用来替换选中的文字) 
 | 
      let selectLength = el.selectionEnd - el.selectionStart; 
 | 
      // 将要插入/替换的文字插入/替换(value.name是要插入/替换的字符串) 
 | 
      inputValueArr.splice( 
 | 
        el.selectionStart, 
 | 
        selectLength, 
 | 
        "__" + value + "__" 
 | 
      ); 
 | 
      this.testuserList.push({ 
 | 
        orderno: value, 
 | 
        optiondesc: "", 
 | 
        isoperation: 1, 
 | 
      }); 
 | 
      // 把数组重新转换为字符串并赋值 
 | 
      inputValueArr = inputValueArr.join(""); 
 | 
  
 | 
      console.log(inputValueArr); 
 | 
      if (this.currentInputId == "targetdesc") { 
 | 
        this.indexform.targetdesc = inputValueArr; 
 | 
      } else { 
 | 
        return; 
 | 
      } 
 | 
    }, 
 | 
    Changtype(item) { 
 | 
      console.log(this.testuserList); 
 | 
      console.log(item, "选项变更的处理"); 
 | 
  
 | 
      if (item == 3 && this.testuserList[0].targetvalue) { 
 | 
        this.$modal 
 | 
          .confirm("更改类型为填空后选项将清空是否继续?") 
 | 
          .then(() => { 
 | 
            this.testuserList = []; 
 | 
            this.Temporarytype = this.indexform.scriptType; 
 | 
          }) 
 | 
          .catch(() => { 
 | 
            this.indexform.scriptType = this.Temporarytype; 
 | 
          }); 
 | 
      } else if (item == 3) { 
 | 
        this.testuserList = []; 
 | 
        this.Temporarytype = this.indexform.scriptType; 
 | 
      } 
 | 
      { 
 | 
        this.Temporarytype = this.indexform.scriptType; 
 | 
      } 
 | 
    }, 
 | 
    // 疾病----------------------- 
 | 
    illnessUpdate(row) { 
 | 
      this.illnessVisible = true; 
 | 
      this.indexid = row.id; 
 | 
      this.illnesslistapi = []; 
 | 
      const illnessqueryParams = { 
 | 
        pageNum: 1, 
 | 
        pageSize: 100, 
 | 
      }; 
 | 
      getillnesslist(illnessqueryParams).then((response) => { 
 | 
        console.log(response); 
 | 
        this.optionsillness = response.rows; 
 | 
      }); 
 | 
      getillness({ outid: row.id, type: 1 }).then((res) => { 
 | 
        this.illnesslist = res.rows; 
 | 
        console.log(res); 
 | 
      }); 
 | 
    }, 
 | 
    handleCloseillness(tag) { 
 | 
      this.illnesslist.splice(this.illnesslist.indexOf(tag), 1); 
 | 
      if (tag.id) { 
 | 
        this.illnesslistapi.push(tag.id); 
 | 
      } 
 | 
    }, 
 | 
    remoteMethod(value) { 
 | 
      const illnessqueryParams = { 
 | 
        pageNum: 1, 
 | 
        pageSize: 100, 
 | 
        icdname: value, 
 | 
      }; 
 | 
      this.loading = true; 
 | 
      setTimeout(() => { 
 | 
        this.loading = false; 
 | 
        getillnesslist(illnessqueryParams).then((response) => { 
 | 
          this.optionsillness = response.rows; 
 | 
        }); 
 | 
      }, 200); 
 | 
    }, 
 | 
    illnessConfirm(item) { 
 | 
      let opeavalue = {}; 
 | 
      let tagname = this.inputValue; 
 | 
      illnesslistget(item).then((res) => { 
 | 
        opeavalue = res.data; 
 | 
        opeavalue.outid = this.indexid; 
 | 
        opeavalue.type = "1"; 
 | 
        opeavalue.icd10id = opeavalue.icdid; 
 | 
        opeavalue.icd10name = opeavalue.icdname; 
 | 
        opeavalue.icd10code = opeavalue.icdcode; 
 | 
        if (tagname) { 
 | 
          this.illnesslist.push(opeavalue); 
 | 
        } 
 | 
      }); 
 | 
      console.log(this.illnesslist); 
 | 
      this.inputVisible = false; 
 | 
      this.inputValue = ""; 
 | 
    }, 
 | 
    confirmillness() { 
 | 
      this.illnesslist.forEach((item, index) => { 
 | 
        if (!item.id) { 
 | 
          addtargetillness(item).then((res) => {}); 
 | 
        } 
 | 
      }); 
 | 
      if (this.illnesslistapi.length) { 
 | 
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {}); 
 | 
      } 
 | 
      this.illnessVisible = false; 
 | 
      this.$modal.msgSuccess("编辑成功"); 
 | 
    }, 
 | 
  
 | 
    // 标签----------------- 
 | 
    gettabList() { 
 | 
      const tagqueryParams = { 
 | 
        pageNum: 1, 
 | 
        pageSize: 1000, 
 | 
        tagcategoryid: "0", 
 | 
      }; 
 | 
      listtag(tagqueryParams).then((response) => { 
 | 
        console.log(response); 
 | 
        this.optionstag = response.rows; 
 | 
      }); 
 | 
    }, 
 | 
    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.indexform.ivrLibaTargetTagList[lindex].delFlag = 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, 
 | 
            }; 
 | 
          } 
 | 
          console.log(tagvalue); 
 | 
          this.indexform.ivrLibaTargetTagList.push(tagvalue); 
 | 
          this.dynamicTags.push(tagvalue); 
 | 
          console.log(this.indexform.ivrLibaTargetTagList); 
 | 
          console.log(this.dynamicTags); 
 | 
        }); 
 | 
      } 
 | 
      this.inputVisible = false; 
 | 
      this.inputValue = ""; 
 | 
    }, 
 | 
    showInput() { 
 | 
      this.inputVisible = true; 
 | 
    }, 
 | 
    //测试表单 -------------------------- 
 | 
    addoption() { 
 | 
      const objvakue = { 
 | 
        guid: 1, 
 | 
        id: this.indexform.id, 
 | 
        targettype: this.indexform.targettype, 
 | 
        isoperation: 1, 
 | 
        isabnormal: 0, 
 | 
        targetvalue: "", 
 | 
        targetregex: "", 
 | 
        targetregex2: "", 
 | 
        picturePath: "", 
 | 
        dynamiccruxs: [], 
 | 
        nodynamiccruxs: [], 
 | 
        dynamiccruxsJson: "", 
 | 
        nodynamiccruxsJson: "", 
 | 
      }; 
 | 
      this.testuserList.push(objvakue); 
 | 
      // this.indexform.targetoptionList.push(objvakue); 
 | 
      console.log(this.testuserList); 
 | 
      this.sortFn(); 
 | 
    }, 
 | 
    deloption(item) { 
 | 
      const index = this.testuserList.indexOf(item); 
 | 
      if (index !== -1) { 
 | 
        this.testuserList[index].isoperation = 3; 
 | 
        this.targetoptionList.push(this.testuserList[index]); 
 | 
        console.log(this.targetoptionList, "aaaa.targetoptionList"); 
 | 
        this.testuserList.splice(index, 1); // 从索引位置删除一个元素 
 | 
        this.sortFn(); 
 | 
  
 | 
        if (this.indexform.scriptType == 3) { 
 | 
          this.$modal.msgWarning( 
 | 
            "填空项已删除请手动删除题目内容中对应的填空项" 
 | 
          ); 
 | 
        } 
 | 
      } else { 
 | 
        console.log("未找到该对象"); 
 | 
      } 
 | 
    }, 
 | 
  
 | 
    syioption(row) { 
 | 
      const index = this.getIndexInArray(this.testuserList, row); 
 | 
      const item = this.testuserList.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中 
 | 
      this.testuserList.splice(index - 1, 0, item); // 将item插入到索引位置的前一位 
 | 
      this.sortFn(); 
 | 
    }, 
 | 
    xiayioption(row) { 
 | 
      const index = this.getIndexInArray(this.testuserList, row); 
 | 
      const item = this.testuserList.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中 
 | 
      this.testuserList.splice(index + 1, 0, item); // 将item插入到索引位置的前一位 
 | 
      this.sortFn(); 
 | 
    }, 
 | 
    sortFn() { 
 | 
      this.testuserList = this.testuserList.map((item, index) => { 
 | 
        return { 
 | 
          guid: index + 1, 
 | 
          targetvalue: item.targetvalue, 
 | 
          targetregex2: item.targetregex2, 
 | 
          targetregex: item.targetregex, 
 | 
          id: this.indexform.id, 
 | 
          targettype: this.indexform.targettype, 
 | 
          isoperation: item.targetoptionid ? 2 : 1, 
 | 
          categoryName: item.categoryName, 
 | 
          language: item.language, 
 | 
          dynamiccruxs: item.dynamiccruxs, 
 | 
          nodynamiccruxs: item.nodynamiccruxs, 
 | 
          dynamiccruxsJson: item.dynamiccruxsJson, 
 | 
          nodynamiccruxsJson: item.nodynamiccruxsJson, 
 | 
          targetoptionid: item.targetoptionid, 
 | 
          isabnormal: item.isabnormal, 
 | 
          picturePath: item.picturePath, 
 | 
          optiondesc: item.optiondesc, 
 | 
        }; 
 | 
      }); 
 | 
      console.log(this.testuserList); 
 | 
    }, 
 | 
    // --------------------- 
 | 
  
 | 
    /** 查询部门下拉树结构 */ 
 | 
    getDeptTree() { 
 | 
      selectIvrLibaTargetAssortList({}).then((res) => { 
 | 
        this.deptOptions = res.rows; 
 | 
        this.dialogFormVisible = false; 
 | 
      }); 
 | 
    }, 
 | 
    // 筛选节点 
 | 
    filterNode(value, data) { 
 | 
      if (!value) return true; 
 | 
      return data.indexAssortName.indexOf(value) !== -1; 
 | 
    }, 
 | 
    // 添加类别树 
 | 
    submitsidecolumn() { 
 | 
      if (this.classifyform.id) { 
 | 
        edittreeselectIvrLibaTargetAssort(this.classifyform).then((res) => { 
 | 
          this.getDeptTree(); 
 | 
          this.$modal.msgSuccess("修改成功"); 
 | 
          this.classifyform = {}; 
 | 
          this.dialogFormVisible = false; 
 | 
        }); 
 | 
        return; 
 | 
      } 
 | 
      let calssvalue = {}; 
 | 
      if ( 
 | 
        this.classifyform.pid && 
 | 
        this.classifyform.indexAssortName && 
 | 
        this.radio == "子分类" 
 | 
      ) { 
 | 
        const index = this.deptOptions.findIndex( 
 | 
          (obj) => obj.id == this.classifyform.pid 
 | 
        ); 
 | 
        calssvalue = this.deptOptions[index]; 
 | 
        console.log(calssvalue); 
 | 
        calssvalue.ivrLibaTargetAssortList.push(this.classifyform); 
 | 
      } else if (this.radio == "主分类" && this.classifyform.indexAssortName) { 
 | 
        this.classifyform.pid = null; 
 | 
        this.classifyform.ivrLibaTargetAssortList = []; 
 | 
      } else { 
 | 
        return this.$modal.msgError("请填写完整信息"); 
 | 
      } 
 | 
  
 | 
      addtreeselectIvrLibaTargetAssort(this.classifyform).then((res) => { 
 | 
        this.getDeptTree(); 
 | 
        this.$modal.msgSuccess("新增成功"); 
 | 
        this.classifyform = {}; 
 | 
        this.dialogFormVisible = false; 
 | 
      }); 
 | 
    }, 
 | 
    remove(a, b) { 
 | 
      if (b.pid) { 
 | 
        this.$modal 
 | 
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?') 
 | 
          .then(function () { 
 | 
            return delselectIvrLibaTargetAssort(b.id); 
 | 
          }) 
 | 
          .then(() => { 
 | 
            this.getDeptTree(); 
 | 
            this.$modal.msgSuccess("删除成功"); 
 | 
          }) 
 | 
          .catch(() => {}); 
 | 
      } else { 
 | 
        this.$modal 
 | 
          .confirm( 
 | 
            '是否确认删除一级分类"' + 
 | 
              b.indexAssortName + 
 | 
              '"?删除后其下分类将归类‘未分类’' 
 | 
          ) 
 | 
          .then(() => { 
 | 
            return delselectIvrLibaTargetAssort(b.id); 
 | 
          }) 
 | 
          .then(() => { 
 | 
            this.getDeptTree(); 
 | 
            this.$modal.msgSuccess("删除成功"); 
 | 
          }) 
 | 
          .catch(() => {}); 
 | 
      } 
 | 
    }, 
 | 
    altertag(a, b) { 
 | 
      this.dialogFormVisible = true; 
 | 
      if (!b.pid) { 
 | 
        this.radio = "主分类"; 
 | 
      } else { 
 | 
        this.radio = "子分类"; 
 | 
      } 
 | 
      this.classifyform = b; 
 | 
      this.dialogFormVisible = true; 
 | 
    }, 
 | 
    handleNodeClick(data) { 
 | 
      this.queryParams.assortid = data.id; 
 | 
      this.getList(); 
 | 
    }, 
 | 
  
 | 
    // 取消按钮 
 | 
    cancel() { 
 | 
      this.indexform = null; 
 | 
      this.indexopen = false; 
 | 
      this.reset(); 
 | 
    }, 
 | 
  
 | 
    // 表单重置 
 | 
    reset() { 
 | 
      this.indexform = { 
 | 
        suitWayList: undefined, 
 | 
        id: undefined, 
 | 
        targetdesc: undefined, 
 | 
        ivrLibaTargetTagList: [], 
 | 
        targetoptionList: [], 
 | 
      }; 
 | 
      // this.resetForm("indexform"); 
 | 
    }, 
 | 
    /** 搜索按钮操作 */ 
 | 
    handleQuery() { 
 | 
      this.queryParams.pageNum = 1; 
 | 
      this.getList(); 
 | 
    }, 
 | 
    /** 重置按钮操作 */ 
 | 
    resetQuery() { 
 | 
      this.dateRange = []; 
 | 
      this.resetForm("queryForm"); 
 | 
      this.queryParams = { 
 | 
        pageNum: 1, 
 | 
        pageSize: 10, 
 | 
      }; 
 | 
      this.$refs.tree.setCurrentKey(null); 
 | 
      this.handleQuery(); 
 | 
    }, 
 | 
    // 多选框选中数据 
 | 
    handleSelectionChange(selection) { 
 | 
      this.ids = selection.map((item) => item.id); 
 | 
      this.single = selection.length != 1; 
 | 
      this.multiple = !selection.length; 
 | 
    }, 
 | 
    /** 新增按钮操作 */ 
 | 
    handleAdd() { 
 | 
      this.reset(); 
 | 
      this.title = "新增指标"; 
 | 
      this.indexform = { 
 | 
        ivrLibaTargetTagList: [], 
 | 
        targetoptionList: [], 
 | 
        suitWayList: [], 
 | 
      }; 
 | 
      this.dynamicTags = []; 
 | 
      this.testuserList = [ 
 | 
        { 
 | 
          targettype: "1", 
 | 
          targetvalue: "", 
 | 
          targetregex: "", 
 | 
          targetregex2: "", 
 | 
          isoperation: 1, 
 | 
          isabnormal:0, 
 | 
          picturePath: "", 
 | 
          dynamiccruxs: [], 
 | 
          nodynamiccruxs: [], 
 | 
          dynamiccruxsJson: "", 
 | 
          nodynamiccruxsJson: "", 
 | 
        }, 
 | 
      ]; 
 | 
      this.indexopen = true; 
 | 
      this.measurement = false; 
 | 
    }, 
 | 
    /** 修改按钮操作 */ 
 | 
    handleUpdate(row) { 
 | 
      this.reset(); 
 | 
      this.title = "指标详情"; 
 | 
      this.indexform = {}; 
 | 
      this.indexform = row; 
 | 
      this.indexform.scriptType = Number(row.scriptType); 
 | 
      this.Temporarytype = this.indexform.scriptType; 
 | 
      if (!row.targetoptionList[0]) { 
 | 
        row.targetoptionList = [ 
 | 
          { 
 | 
            targettype: "1", 
 | 
            targetvalue: "", 
 | 
            targetregex: "", 
 | 
            targetregex2: "", 
 | 
            isoperation: 1, 
 | 
            orderno: 1, 
 | 
            dynamiccruxs: [], 
 | 
            nodynamiccruxs: [], 
 | 
            dynamiccruxsJson: "", 
 | 
            nodynamiccruxsJson: "", 
 | 
          }, 
 | 
        ]; 
 | 
      } 
 | 
      this.dynamicTags = row.ivrLibaTargetTagList.map(this.processElement); 
 | 
      this.testuserList = row.targetoptionList; 
 | 
      console.log(this.testuserList, "bbbb"); 
 | 
      this.testvalue = ""; 
 | 
      this.indexopen = true; 
 | 
      this.measurement = false; 
 | 
    }, 
 | 
    handlemeasurement(row) { 
 | 
      this.reset(); 
 | 
      this.title = "指标详情"; 
 | 
      this.indexopen = true; 
 | 
      this.measurement = true; 
 | 
    }, 
 | 
    // 修改分类弹框 
 | 
    popoveramend(tagcategoryid) { 
 | 
      this.idds = tagcategoryid; 
 | 
      this.amendtag = true; 
 | 
      this.dialogFormVisible = true; 
 | 
    }, 
 | 
  
 | 
    /** 更新/修改提交按钮 */ 
 | 
    submitForm: function () { 
 | 
      // this.indexform.targetoptionList = this.indexform.targetoptionList.map( 
 | 
      //   (res) => { 
 | 
      //     res.isoperation = 2; 
 | 
      //     return res; 
 | 
      //   } 
 | 
      // ); 
 | 
  
 | 
      this.$refs["indexform"].validate((valid) => { 
 | 
        this.indexform.targetoptionList = this.testuserList.concat( 
 | 
          this.targetoptionList 
 | 
        ); 
 | 
        console.log(this.indexform.targetoptionList, "11"); 
 | 
        this.indexform.targetoptionList.forEach((item) => { 
 | 
          if (item.isoperation != 3 && item.targetoptionid) { 
 | 
            console.log(item, "item"); 
 | 
            item.isoperation = 2; 
 | 
          } else { 
 | 
          } 
 | 
        }); 
 | 
        if (valid) { 
 | 
          this.indexform.optionDesc = this.testuserList 
 | 
            .filter((item) => item.isoperation != 3) 
 | 
            .map((item) => item.targetvalue) 
 | 
            .join(", "); 
 | 
          if (!this.indexform.version) this.indexform.version = "1.0"; 
 | 
          if (this.indexform.id != undefined) { 
 | 
            this.indexform.isoperation = 2; 
 | 
            gettargetInfoedit(this.indexform).then((response) => { 
 | 
              this.$modal.msgSuccess("修改成功"); 
 | 
              this.indexopen = false; 
 | 
              this.getList(); 
 | 
            }); 
 | 
          } else { 
 | 
            this.indexform.targettype = "1"; 
 | 
            this.indexform.isoperation = 1; 
 | 
            gettargetInfoedit(this.indexform).then((response) => { 
 | 
              this.$modal.msgSuccess("新增成功"); 
 | 
              this.indexopen = false; 
 | 
              this.getList(); 
 | 
            }); 
 | 
          } 
 | 
        } 
 | 
      }); 
 | 
    }, 
 | 
    // 测试表单 
 | 
    testtagerlist() { 
 | 
      if (this.indexform.content) { 
 | 
        let data = this.indexform; 
 | 
        data.targetoptionList = this.testuserList.concat(this.targetoptionList); 
 | 
        testtagerlist(data).then((res) => { 
 | 
          this.$modal.msgSuccess("测试成功"); 
 | 
          this.testgovalue = res.msg; 
 | 
          this.getList(); 
 | 
        }); 
 | 
      } else { 
 | 
        this.$modal.msgError("请填写测试内容"); 
 | 
        return; 
 | 
      } 
 | 
    }, 
 | 
    /** 删除按钮操作 */ 
 | 
    handleDelete(row) { 
 | 
      const userIds = row.id || this.ids; 
 | 
      this.$modal 
 | 
        .confirm('是否确认删除指标名称为"' + row.targetname + '"的数据项?') 
 | 
        .then(function () { 
 | 
          return deletetarget(userIds); 
 | 
        }) 
 | 
        .then(() => { 
 | 
          this.getList(); 
 | 
          this.$modal.msgSuccess("删除成功"); 
 | 
        }) 
 | 
        .catch(() => {}); 
 | 
    }, 
 | 
  }, 
 | 
}; 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.Questionnairemanagement { 
 | 
  display: flex; 
 | 
} 
 | 
.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; 
 | 
  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; 
 | 
  } 
 | 
} 
 | 
.sidecolumn { 
 | 
  width: 300px; 
 | 
  min-height: 100vh; 
 | 
  text-align: center; 
 | 
  //   display: flex; 
 | 
  margin-top: 20px; 
 | 
  margin: 20px; 
 | 
  padding: 30px; 
 | 
  background: #fff; 
 | 
  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); 
 | 
  .sidecolumn-top { 
 | 
    display: flex; 
 | 
    justify-content: space-between; 
 | 
    .top-wj { 
 | 
      font-size: 20px; 
 | 
    } 
 | 
    .top-tj { 
 | 
      font-size: 18px; 
 | 
  
 | 
      color: rgb(0, 89, 255); 
 | 
      cursor: pointer; 
 | 
    } 
 | 
  } 
 | 
  .center-ss { 
 | 
    margin-top: 30px; 
 | 
    .input-with-select { 
 | 
      height: 40px !important; 
 | 
    } 
 | 
  } 
 | 
  .bottom-fl { 
 | 
    margin-top: 30px; 
 | 
    display: center !important; 
 | 
  } 
 | 
} 
 | 
.tsgname { 
 | 
  width: 90px; 
 | 
  margin-right: 10px; 
 | 
  text-align: center; 
 | 
  cursor: pointer; 
 | 
  height: 40px; 
 | 
  line-height: 40px; 
 | 
  background: #66c18c; 
 | 
  color: #ffff; 
 | 
  font-size: 18px; 
 | 
  border-radius: 5px; 
 | 
} 
 | 
.tsgname:hover { 
 | 
  background: #20894d; 
 | 
} 
 | 
.headline { 
 | 
  display: flex; 
 | 
  justify-content: space-between; 
 | 
  font-size: 20px; 
 | 
  border-left: 4px solid #41a1be; 
 | 
  padding-left: 5px; 
 | 
  margin: 15px 0; 
 | 
} 
 | 
.qrcode-dialo { 
 | 
  text-align: center; 
 | 
  //   display: flex; 
 | 
  margin: 20px; 
 | 
  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); 
 | 
  .qrcode-text { 
 | 
    font-size: 20px; 
 | 
    span { 
 | 
      margin-left: 20px; 
 | 
    } 
 | 
  } 
 | 
  .qrcode-img { 
 | 
    width: 300px; 
 | 
    height: 400px; 
 | 
  } 
 | 
} 
 | 
::v-deep.el-tabs--left, 
 | 
.el-tabs--right { 
 | 
  overflow: hidden; 
 | 
  align-items: center; 
 | 
  display: flex; 
 | 
} 
 | 
::v-deep.el-input--medium .el-input__inner { 
 | 
  height: 40px !important; 
 | 
} 
 | 
::v-deep.el-tabs--right .el-tabs__active-bar.is-right { 
 | 
  height: 40px; 
 | 
  width: 5px; 
 | 
  left: 0; 
 | 
} 
 | 
::v-deep.el-tabs--right .el-tabs__item.is-right { 
 | 
  display: block; 
 | 
  font-size: 20px; 
 | 
} 
 | 
.leftvlue { 
 | 
  //   display: flex; 
 | 
  //   flex: 1; 
 | 
  width: 80%; 
 | 
  margin-top: 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); 
 | 
  .mulsz { 
 | 
    font-size: 20px; 
 | 
  } 
 | 
} 
 | 
::v-deep .el-tree-node__content { 
 | 
  display: -webkit-box; 
 | 
  display: -ms-flexbox; 
 | 
  display: flex; 
 | 
  -webkit-box-align: center; 
 | 
  -ms-flex-align: center; 
 | 
  align-items: center; 
 | 
  height: 46px; 
 | 
  font-size: 20px; 
 | 
  cursor: pointer; 
 | 
} 
 | 
::v-deep .el-tree { 
 | 
  position: relative; 
 | 
  cursor: default; 
 | 
  border-radius: 5px; 
 | 
  background: #eff8fe; 
 | 
  color: #606266; 
 | 
  border: 1px solid #bbe1fa; 
 | 
  // 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); 
 | 
} 
 | 
::v-deep 
 | 
  .el-tree--highlight-current 
 | 
  .el-tree-node.is-current 
 | 
  > .el-tree-node__content { 
 | 
  background-color: #7799fb; 
 | 
  color: #fff; 
 | 
} 
 | 
::v-deep .el-button--mini.is-circle { 
 | 
  padding: 7px; 
 | 
  margin: 0; 
 | 
  color: red; 
 | 
} 
 | 
.button-text { 
 | 
  color: rgb(70, 204, 238); 
 | 
} 
 | 
.button-textcs { 
 | 
  color: rgb(39, 167, 67); 
 | 
} 
 | 
.button-textxg { 
 | 
  color: rgb(35, 81, 233); 
 | 
} 
 | 
.button-textsc { 
 | 
  color: rgb(235, 23, 23); 
 | 
} 
 | 
</style> 
 |