WXL
2024-01-04 f93cb40b76468c6f1063081a3be16027d69b4832
指标完成
已添加6个文件
已修改12个文件
5677 ■■■■■ 文件已修改
src/api/AiCentre/Qtemplate.js 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/general.js 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/publicity.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/questionnaire.js 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/smartor/ivrtarget.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 176 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/compilequer/index.vue 451 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/index.vue 828 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/index.vue 654 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/particulars/index.vue 753 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 487 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/index.vue 889 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/general/index.vue 793 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/general/particulars/index.vue 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/intention/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/particulars/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Qtemplate.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
import request from "@/utils/request";
// æŸ¥è¯¢é—®å·æ¨¡ç‰ˆåˆ—表
export function getQtemplatelist(data) {
  return request({
    url: "/smartor/svytitle/selectSvyLibTitlelist",
    method: "post",
    data: data,
  });
}
// é—®å·æ¨¡ç‰ˆè¯¦æƒ…
export function Qtemplateinfo(Id) {
  return request({
    url: "/smartor/svytitle/" + Id,
    method: "get",
  });
}
// åˆ é™¤é—®å·æ¨¡ç‰ˆ
export function delQtemplateinfo(Id) {
    return request({
      url: "/smartor/svytitle/remove/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæˆ–修改问卷模版详情
export function compileQtemplate(data) {
    return request({
      url: "/smartor/svytitle/saveOrUpdateTitle",
      method: "post",
      data: data,
    });
  }
  // æ–°å¢žé—®å·æ¨¡ç‰ˆåˆ†ç±»
  export function addQtemplateclassify(data) {
    return request({
      url: "/smartor/svyLibTitleCategory/addtree",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤é—®å·æ¨¡ç‰ˆåˆ†ç±»
export function delQtemplateclassify(Id) {
  return request({
    url: "/smartor/svyLibTitleCategory/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢é—®å·æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function getQtemplateclassify(data) {
    return request({
      url: "/smartor/svyLibTitleCategory/selectIvrLibasvytitleList",
      method: "post",
      data: data,
    });
  }
src/api/AiCentre/general.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,106 @@
import request from "@/utils/request";
// æŸ¥è¯¢é€šç”¨æ¨¡ç‰ˆåˆ—表
export function getgenerallist(data) {
  return request({
    url: "/smartor/extemplate/list",
    method: "post",
    data: data,
  });
}
// åˆ é™¤é€šç”¨æ¨¡ç‰ˆ
export function delgeneralinfo(Id) {
    return request({
      url: "/smartor/extemplate/remove/" + Id,
      method: "get",
    });
  }
    // æŸ¥è¯¢é€šç”¨æ¨¡ç‰ˆè¯¦æƒ…列表
    export function getgeneralinfo(Id) {
    return request({
      url: "/smartor/extemplate/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæ¨¡ç‰ˆ
export function addgeneral(data) {
    return request({
      url: "/smartor/extemplate/add",
      method: "post",
      data: data,
    });
  }
//   ä¿®æ”¹é€šç”¨æ¨¡ç‰ˆ
  export function editgeneral(data) {
    return request({
      url: "/smartor/extemplate/edit",
      method: "post",
      data: data,
    });
  }
  // æ–°å¢žé€šç”¨æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function addgeneralclassify(data) {
    return request({
      url: "/smartor/category/add",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤é€šç”¨æ¨¡ç‰ˆåˆ†ç±»
export function delgeneralclassify(Id) {
  return request({
    url: "/smartor/category/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢é€šç”¨æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function getgeneralclassify(data) {
    return request({
      url: "/smartor/category/list",
      method: "post",
      data: data,
    });
  }
  // æŸ¥è¯¢é€šç”¨æ¨¡ç‰ˆè¯æœ¯åˆ—表
export function getgeneravaluellist(data) {
    return request({
      url: "/smartor/extemplatescript/list",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤é€šç”¨æ¨¡ç‰ˆè¯æœ¯
  export function delgeneravaluelinfo(Id) {
      return request({
        url: "/smartor/extemplatescript/remove/" + Id,
        method: "get",
      });
    }
      // æŸ¥è¯¢é€šç”¨æ¨¡ç‰ˆè¯æœ¯è¯¦æƒ…
      export function getgeneravaluelinfo(Id) {
      return request({
        url: "/smartor/extemplatescript/" + Id,
        method: "get",
      });
    }
  // æ–°å¢žæ¨¡ç‰ˆè¯æœ¯
  export function addgeneravaluel(data) {
      return request({
        url: "/smartor/extemplatescript/add",
        method: "post",
        data: data,
      });
    }
  //   ä¿®æ”¹é€šç”¨æ¨¡ç‰ˆè¯æœ¯
    export function editgeneravaluel(data) {
      return request({
        url: "/smartor/extemplatescript/edit",
        method: "post",
        data: data,
      });
    }
src/api/AiCentre/index.js
@@ -1,3 +1,8 @@
export * from './indicator'
export * from './Problemspeaking'
export * from './Followup'
export * from './general'
export * from './publicity'
export * from './Qtemplate'
export * from './questionnaire'
src/api/AiCentre/publicity.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
import request from "@/utils/request";
// æŸ¥è¯¢å®£æ•™æ¨¡ç‰ˆåˆ—表
export function getlibrarylist(data) {
  return request({
    url: "/smartor/library/list",
    method: "post",
    data: data,
  });
}
// åˆ é™¤å®£æ•™æ¨¡ç‰ˆ
export function dellibraryinfo(Id) {
    return request({
      url: "/smartor/library/remove/" + Id,
      method: "get",
    });
  }
    // æŸ¥è¯¢å®£æ•™æ¨¡ç‰ˆè¯¦æƒ…列表
    export function getlibraryinfo(data) {
    return request({
      url: "/smartor/library/selectInfoByCondition",
      method: "post",
      data: data,
    });
  }
// æ–°å¢žæˆ–修改宣教模版
export function compilelibrary(data) {
    return request({
      url: "/smartor/library/saveOrUpdateScript",
      method: "post",
      data: data,
    });
  }
  // æ–°å¢žå®£æ•™æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function addheLibraryAssort(data) {
    return request({
      url: "/smartor/heLibraryAssort/addtree",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤å®£æ•™æ¨¡ç‰ˆåˆ†ç±»
export function delheLibraryAssort(Id) {
  return request({
    url: "/smartor/heLibraryAssort/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢å®£æ•™æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function getheLibraryAssort(data) {
    return request({
      url: "/smartor/heLibraryAssort/selectHeLibraryAssortList",
      method: "post",
      data: data,
    });
  }
src/api/AiCentre/questionnaire.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
import request from "@/utils/request";
// æŸ¥è¯¢é—®å·é—®é¢˜åˆ—表
export function getissuelist(data) {
  return request({
    url: "/smartor/svytopic/list",
    method: "post",
    data: data,
  });
}
// é—®å·é—®é¢˜è¯¦æƒ…
export function issueinfo(Id) {
  return request({
    url: "/smartor/svytopic/getInfo/" + Id,
    method: "get",
  });
}
// åˆ é™¤é—®å·é—®é¢˜
export function delissueinfo(Id) {
    return request({
      url: "/smartor/svytopic/remove/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæˆ–修改问卷问题详情
export function compileissue(data) {
    return request({
      url: "/smartor/svytopic/saveOrUpdateTopic",
      method: "post",
      data: data,
    });
  }
  // æ–°å¢žé—®å·é—®é¢˜åˆ†ç±»
  export function addissueclassify(data) {
    return request({
      url: "/smartor/svyLibTopicCategory/addtree",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤é—®å·é—®é¢˜åˆ†ç±»
export function delissueclassify(Id) {
  return request({
    url: "/smartor/svyLibTopicCategory/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢é—®å·é—®é¢˜åˆ†ç±»æ ‘
  export function getissueclassify(data) {
    return request({
      url: "/smartor/svyLibTopicCategory/selectIvrLibasvytitleList",
      method: "post",
      data: data,
    });
  }
src/api/smartor/ivrtarget.js
@@ -10,9 +10,9 @@
}
// æŸ¥è¯¢æŒ‡æ ‡åº“详细
export function getIvrtarget(targetID) {
export function getIvrtarget(targetid) {
  return request({
    url: '/smartor/ivrtarget/' + targetID,
    url: '/smartor/ivrtarget/' + targetid,
    method: 'get'
  })
}
@@ -36,9 +36,9 @@
}
// åˆ é™¤æŒ‡æ ‡åº“
export function delIvrtarget(targetID) {
export function delIvrtarget(targetid) {
  return request({
    url: '/smartor/ivrtarget/remove/' + targetID,
    url: '/smartor/ivrtarget/remove/' + targetid,
    method: 'get'
  })
}
src/store/getters.js
@@ -72,7 +72,7 @@
  // æ˜¯å¦å¯ç”¨
  usable: (state) => [
    {
      value: '0',
      value: "0",
      label: "可用",
      raw: {
        cssClass: "",
@@ -80,7 +80,7 @@
      },
    },
    {
      value: '1',
      value: "1",
      label: "停用",
      raw: {
        cssClass: "",
@@ -91,7 +91,7 @@
  // ä¼˜å…ˆæ‰§è¡Œ
  precedencetype: (state) => [
    {
      value: '0',
      value: "0",
      label: "语音优先",
      raw: {
        cssClass: "",
@@ -99,7 +99,7 @@
      },
    },
    {
      value: '1',
      value: "1",
      label: "文字优先",
      raw: {
        cssClass: "",
@@ -107,59 +107,131 @@
      },
    },
  ],
    // é€‚用院区
    courtyardlist: (state) => [
      {
        value: '1',
        label: "之江院区",
        raw: {
          cssClass: "",
          listClass: "",
        },
  // é€‚用院区
  courtyardlist: (state) => [
    {
      value: "1",
      label: "之江院区",
      raw: {
        cssClass: "",
        listClass: "",
      },
      {
        value: '2',
        label: "庆春院区",
        raw: {
          cssClass: "",
          listClass: "",
        },
    },
    {
      value: "2",
      label: "庆春院区",
      raw: {
        cssClass: "",
        listClass: "",
      },
      {
        value: '3',
        label: "余杭院区",
        raw: {
          cssClass: "",
          listClass: "",
        },
    },
    {
      value: "3",
      label: "余杭院区",
      raw: {
        cssClass: "",
        listClass: "",
      },
    ],
 // è¯­è¨€
 languagelist: (state) => [
  {
    value: "普通话",
    label: "普通话",
    raw: {
      cssClass: "",
      listClass: "",
    },
  },
  {
    value: "粤语",
    label: "粤语",
    raw: {
      cssClass: "",
      listClass: "",
  ],
  // è¯­è¨€
  languagelist: (state) => [
    {
      value: "普通话",
      label: "普通话",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  },
  {
    value: "英语",
    label: "英语",
    raw: {
      cssClass: "",
      listClass: "",
    {
      value: "粤语",
      label: "粤语",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  },
],};
    {
      value: "英语",
      label: "英语",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
  // å®£æ•™æ–¹å¼
  editableTabs: (state) => [
    {
      value: "短信",
      label: "1",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "钉钉",
      label: "2",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "微信",
      label: "3",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "电话",
      label: "4",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "线下",
      label: "5",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "智能语音",
      label: "6",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
  // é¢˜ç›®ç±»åˆ«
  xjxsoptions:(state) => [
    {
      value: "1",
      label: "单选",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "2",
      label: "多选",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
};
export default getters;
src/views/knowledge/education/compilequer/index.vue
@@ -13,9 +13,7 @@
    <div class="leftvlue">
      <!-- åŸºæœ¬ä¿¡æ¯ -->
      <div v-if="Editprogress == 1">
        <div class="leftvlue-jbxx">
          åŸºæœ¬ä¿¡æ¯<span>当前版本:{{ currentVersion }}</span>
        </div>
        <div class="leftvlue-jbxx">基本信息</div>
        <el-form
          :model="ruleForm"
          :rules="rules"
@@ -25,25 +23,29 @@
        >
          <el-form-item label="宣教分类" prop="region">
            <el-select
              v-model="ruleForm.classify"
              v-model="ruleForm.groupID"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
                v-for="item in sortlist"
                :key="item.id"
                :label="item.assortname"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="宣教标题" prop="name">
          <el-form-item label="宣教标题" prop="extName">
            <div style="width: 30%">
              <el-input v-model="ruleForm.name"></el-input>
              <el-input v-model="ruleForm.extName"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="宣教描述" prop="extName">
            <div style="width: 30%">
              <el-input v-model="ruleForm.note"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="通知变量" prop="name">
@@ -89,29 +91,32 @@
          <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
                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"
                  :key="item.tagid"
                  :label="item.tagname"
                  :value="item.tagname"
                >
                </el-option>
              </el-select>
@@ -127,12 +132,12 @@
          <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-input v-model="ruleForm.version"></el-input> </el-form-item
            ></el-col>
            <el-col :span="9">
              <el-form-item label="可用状态" prop="region">
                <el-select
                  v-model="ruleForm.classify"
                  v-model="ruleForm.isEnable"
                  size="medium"
                  multiple
                  filterable
@@ -140,7 +145,7 @@
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in options"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -168,24 +173,47 @@
            </el-select>
          </el-form-item>
          <el-form-item label="适用疾病" prop="region">
            <el-select
              v-model="ruleForm.illness"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
            <div class="xinz-infs">
              <el-tag
                :key="item.icd10name"
                type="warning"
                v-for="item in illnesslist"
                closable
                :disable-transitions="false"
                @close="handleCloseillness(item)"
              >
              </el-option>
            </el-select>
                {{ item.icd10name }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="illnessVisible"
                @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="illnessshowInput"
                >+ æ–°å¢žç–¾ç—…</el-button
              >
            </div>
          </el-form-item>
          <el-form-item label="使用院区" prop="region">
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.courtyard"
              size="medium"
@@ -194,7 +222,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in courtyardlist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -225,9 +253,7 @@
              >下一步</el-button
            >
            <el-button @click="resetForm('ruleForm')">重置</el-button>
            <el-button type="info" @click="closeFm('ruleForm')"
                >关闭</el-button
              >
            <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
          </el-form-item>
        </el-form>
      </div>
@@ -303,10 +329,23 @@
<script>
import { quillEditor } from "vue-quill-editor";
import {
  getheLibraryAssort,
  delheLibraryAssort,
  addheLibraryAssort,
  addtargetillness,
  getlibrarylist,
  dellibraryinfo,
  compilelibrary,
  getlibraryinfo,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
// import * as Quill from "quill";
import Quill from "quill";
import { listtag } from "@/api/system/label";
import store from "@/store";
// è¿™é‡Œå¼•入修改过的video模块并注册
import Video from "./video";
@@ -354,8 +393,9 @@
        },
      ],
      content: "", //最终保存的内容
      dynamicTags: ["标签一", "标签二", "标签三"],
      dynamicTags: [],
      inputVisible: false,
      illnessVisible: false,
      inputValue: "",
      // å¯Œæ–‡æœ¬
      editorOption: {
@@ -405,88 +445,31 @@
      radioas: "", //填空题答案
      // æ€»æ¡æ•°
      total: 1,
      ruleForm: {
        name: "",
        shape: "",
        classify: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        templatevalue: "",
        data2: "",
      },
      ruleForm: {},
      rules: {},
      rulesa: {
        name: [
          { required: true, message: "请输入活动名称", trigger: "blur" },
          { min: 3, max: 5, message: "长度在 3 åˆ° 5 ä¸ªå­—符", trigger: "blur" },
        ],
        region: [
          { required: true, message: "请选择活动区域", trigger: "change" },
        ],
        date1: [
          {
            type: "date",
            required: true,
            message: "请选择日期",
            trigger: "change",
          },
        ],
        date2: [
          {
            type: "date",
            required: true,
            message: "请选择时间",
            trigger: "change",
          },
        ],
        type: [
          {
            type: "array",
            required: true,
            message: "请至少选择一个活动性质",
            trigger: "change",
          },
        ],
        resource: [
          { required: true, message: "请选择活动资源", trigger: "change" },
        ],
        desc: [{ required: true, message: "请填写活动形式", trigger: "blur" }],
      },
      options: [
        {
          value: "选项1",
          label: "疾病宣教",
        },
        {
          value: "选项2",
          label: "入院宣教",
        },
        {
          value: "选项3",
          label: "手术宣教",
        },
        {
          value: "选项4",
          label: "护理宣教",
        },
      ],
      optionstag:[],
      rulesa: {},
      mode: [],
      editableTabs: [],
      sortlist: [],
      usable: [],
      courtyardlist: [],
      precedencetype: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      options: [],
      optionstag: [],
      xjxsoptions: [
        {
          value: "选项1",
          value: "1",
          label: "图文",
        },
        {
          value: "选项2",
          value: "2",
          label: "视频",
        },
        {
          value: "选项3",
          value: "3",
          label: "音频",
        },
      ],
@@ -498,25 +481,7 @@
        },
      ],
      addvalue: "添加题目",
      // é¢˜ç›®è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: "1",
          userName: "一号宣教",
        },
        {
          userid: "2",
          userName: "二号宣教",
        },
        {
          userid: "3",
          userName: "三号宣教",
        },
        {
          userid: "4",
          userName: "四号宣教",
        },
      ],
      variablelist: [
        {
          variable: "paitent",
@@ -527,17 +492,19 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
    };
  },
  created() {
    this.gettabList();
    this.getList();
    this.illnessUpdate();
    this.mode = store.getters.mode;
    this.editableTabs = store.getters.editableTabs;
    this.usable = store.getters.usable;
    this.precedencetype = store.getters.precedencetype;
    this.courtyardlist = store.getters.courtyardlist;
  },
  watch: {
    content(newVal, oldVal) {
@@ -548,6 +515,28 @@
  },
  methods: {
    getList() {
      this.loading = true;
      getlibraryinfo({ id: this.$route.query.id }).then((res) => {
        this.ruleForm = res.data;
      });
      getheLibraryAssort({}).then((res) => {
        this.sortlist = res.rows;
        console.log(res);
      });
    },
    /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
    gettabList() {
      const tagqueryParams = {
        pageNum: 1,
        pageSize: 1000,
        tagcategoryid: "0",
      };
      listtag(tagqueryParams).then((response) => {
        console.log(response);
        this.optionstag = response.rows;
      });
    },
    // å®Œæˆ
    submitForm(formName) {
      this.rules = this.rulesa;
@@ -572,48 +561,26 @@
      this.Editprogress = this.Editprogress - 1;
    },
    // å…³é—­
    closeFm(){
      this.$confirm('退出不会保留页面内容更改, æ˜¯å¦ç»§ç»­?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$router.go(-1)
        }).catch(() => {
    closeFm() {
      this.$confirm("退出不会保留页面内容更改, æ˜¯å¦ç»§ç»­?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.$router.go(-1);
        })
        .catch(() => {
          this.$message({
            type: 'info',
            message: '已取消'
          });
            type: "info",
            message: "已取消",
          });
        });
    },
    // ä¿å­˜é¢˜ç›®ä¿¡æ¯
    Saveproblem(){},
    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;
    },
    /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
    gettabList() {
      const tagqueryParams = {
        pageNum: 1,
        pageSize: 1000,
        tagcategoryid: "0",
      };
      listtag(tagqueryParams).then((response) => {
        console.log(response);
        this.optionstag = response.rows;
      });
    },
    // æ–°å¢žå˜é‡
    addvariable() {
      this.variablelist.push({
@@ -635,23 +602,135 @@
      this.fileList = fileList.slice(-3);
    },
    // æ ‡ç­¾-----------------
    handleClose(tag) {
    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.ruleForm.ivrLibaTemplateTargetList[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.ivrLibaTemplateTargetList.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();
      // });
    },
    // ç–¾ç—…-----------------------
    illnessUpdate() {
      this.illnesslistapi = [];
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
      };
      getillnesslist(illnessqueryParams).then((response) => {
        console.log(response);
        this.optionsillness = response.rows;
      });
      getillness({ outid: this.$route.query.id, type: 6 }).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) {
      console.log(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 = 6;
        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("编辑成功");
    },
    illnessshowInput() {
      this.illnessVisible = true;
    },
    // --------------------------
src/views/knowledge/education/index.vue
@@ -13,84 +13,34 @@
          class="input-with-select"
          size="medium"
        >
          <el-button
            @click="sidecolumnss"
            slot="append"
            icon="el-icon-search"
          ></el-button>
        </el-input>
      </div>
      <div class="bottom-fl">
        <el-menu
          default-active="3"
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          @select="handleSelect"
      <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"
        >
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>分类一</span>
            </template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
            <el-menu-item index="1-3">选项3</el-menu-item>
            <el-menu-item index="1-4">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span>分类二</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
            <el-menu-item index="2-3">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-document"></i>
              <span>分类三</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>分类四</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>
        <!-- <el-tabs tab-position="right">
          <el-tab-pane :label="`全部 (${numberlb})`"></el-tab-pane>
          <el-tab-pane
            class="tab-paness"
            :key="item.title"
            v-for="(item, index) in editableTabs"
          >
            <span slot="label">
              {{
                item.title + " (" + item.number + ")"
              }}&nbsp&nbsp&nbsp<el-popover
                placement="top-start"
                width="100"
                trigger="hover"
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
              <el-button
                type="text"
                icon="el-icon-delete"
                circle
                size="mini"
                @click="() => remove(node, data)"
              >
                <div style="text-align: center">
                  <el-button type="text" @click="popoveramend(item)"
                    >修改</el-button
                  ><el-button type="text" @click="deletefenlei(item)"
                    ><span style="color: rgb(173, 55, 55)"
                      >删除</span
                    ></el-button
                  >
                </div>
                <i slot="reference" class="el-icon-share"></i> </el-popover
            ></span>
          </el-tab-pane>
        </el-tabs> -->
              </el-button>
            </span>
          </span>
        </el-tree>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
@@ -161,10 +111,10 @@
                  placeholder="请选择"
                >
                  <el-option
                    v-for="(item, index) in editableTabsky"
                    :key="index++"
                    :label="item.title"
                    :value="index++"
                    v-for="item in qyoptions"
                    :key="item.value"
                    :label="item.value"
                    :value="item.label"
                  >
                  </el-option>
                </el-select>
@@ -215,11 +165,7 @@
              <!-- <el-col :span="1.5"> </el-col> -->
            </el-row>
            <!-- <right-toolbar
          :showSearch.sync="showSearch"
          @queryTable="getList"
          :columns="columns"
        ></right-toolbar> -->
            <el-table
              v-loading="loading"
              :data="userList"
@@ -227,28 +173,23 @@
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
                label="序号"
                align="center"
                key="userid"
                prop="userid"
              />
              <el-table-column label="序号" align="center" key="id" prop="id" />
              <el-table-column
                label="标题"
                align="center"
                key="userName"
                prop="userName"
                key="extName"
                prop="extName"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="版本"
                align="center"
                key="nickName"
                prop="nickName"
                key="version"
                prop="version"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="主要内容"
                label="主要内容(缺)"
                align="center"
                key="userNamevalue"
                prop="userNamevalue"
@@ -256,20 +197,33 @@
              />
              <el-table-column
                label="适用疾病"
                label="适用疾病(缺)"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                width="120"
              /><el-table-column
                label="适用科室"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="适用科室(缺)"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                width="120"
              />
              <el-table-column
                label="标签"
                label="标签(缺)"
                align="center"
                key="tagList"
                prop="tagList"
@@ -281,31 +235,31 @@
                </template>
              </el-table-column>
              <el-table-column
                label="宣教方式"
                label="宣教方式(缺)"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                width="120"
              />
              <el-table-column
                label="资料形式"
                label="资料形式(缺)"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                key="cphonenumbers"
                prop="cphonenumbers"
                width="120"
              />
              <el-table-column
                label="最近修改"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                key="updateTime"
                prop="updateTime"
                width="120"
              />
              <el-table-column
                label="是否可用"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                key="isEnable"
                prop="isEnable"
                width="120"
              />
@@ -366,134 +320,32 @@
            />
          </el-col>
        </el-row>
        <!-- æ·»åŠ æˆ–ä¿®æ”¹å®£æ•™é…ç½®å¯¹è¯æ¡† -->
        <el-dialog
          :title="title"
          :visible.sync="open"
          width="900px"
          append-to-body
        >
          <el-form ref="form" :model="form" :rules="rules" label-width="100px">
            <el-row>
              <el-col :span="12">
                <el-form-item label="姓名" prop="nickName">
                  <el-input
                    v-model="form.nickName"
                    placeholder="请输入姓名"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="性别" prop="deptId">
                  <el-select v-model="form.sex" placeholder="请选择性别">
                    <el-option
                      v-for="dict in dict.type.sys_user_sex"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="证件类型" prop="phonenumber">
                  <el-input
                    v-model="form.phonenumber"
                    placeholder="请选择证件类型"
                    maxlength="11"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="证件号" prop="email">
                  <el-input
                    v-model="form.email"
                    placeholder="请输入证件号"
                    maxlength="50"
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="本人手机号" prop="userName">
                  <el-input
                    v-model="form.userName"
                    placeholder="请输入手机号"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="亲属手机号" prop="password">
                  <el-input
                    v-model="form.password"
                    placeholder="请输入亲属手机号"
                    type="password"
                    maxlength="20"
                    show-password
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="患者标签">
                  <el-cascader
                    :options="optionss"
                    :props="propss"
                    clearable
                  ></el-cascader>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="备注">
                  <el-input
                    v-model="form.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
          <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="amendtag ? '修改类别' : '新增类别'"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
    <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="请选择宣教大类">
          <el-select v-model="classifyform.broadheading" placeholder="请选择">
        <el-form-item label="请选择问题大类" v-if="radio == '子分类'">
          <el-select v-model="classifyform.pid" placeholder="请选择">
            <el-option
              v-for="item in optionss"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="item in deptOptions"
              :key="item.id"
              :label="item.assortname"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
          :label="amendtag ? '请输入新的类别名称' : '请输入类别名称'"
        >
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.categoryname"
            v-model="classifyform.assortname"
            autocomplete="off"
          ></el-input>
        </el-form-item>
@@ -503,18 +355,52 @@
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <!-- åˆ é™¤ç±»åˆ«ç¡®è®¤æ¡† -->
    <el-dialog title="警告" :visible.sync="deleteVisible" width="40%">
      <div style="font-size: 20px; color: rgb(247, 76, 76)">
        æ˜¯å¦ç¡®è®¤åˆ é™¤åˆ†ç±»ï¼š[<span>{{ deletefenl }}</span
        >]?
      </div>
      <div style="font-size: 20px">
        æ­¤æ“ä½œä¼šå°†è¯¥ç±»åˆ«ä¸‹æ‰€æœ‰æ¨¡å—转移至[未分类],是否继续删除此分类?
    <!-- ç–¾ç—…弹框 -->
    <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="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
        <el-button @click="illnessVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="confirmillness">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <!-- äºŒç»´ç å±•示弹框 -->
@@ -530,8 +416,22 @@
</template>
<script>
import { listUser, delUser, addUser, updateUser } from "@/api/system/user";
import {
  getheLibraryAssort,
  delheLibraryAssort,
  addheLibraryAssort,
  addtargetillness,
  getlibrarylist,
  dellibraryinfo,
  compilelibrary,
  getlibraryinfo,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
import store from "@/store";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
@@ -555,13 +455,25 @@
      total: 0,
      nameeducation: "",
      haoeducation: "",
      indexid: null,
      inputValue: "",
      radio: "主分类",
      inputVisible: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "heLibraryAssortList",
        label: "assortname",
      },
      // ç”¨æˆ·è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: 1,
          userName: "三号宣教",
          nickName: "1.2.4",
          aphonenumber: "关节炎症",
          bphonenumber: "很棒",
          cphonenumber: "2022-12-12",
@@ -593,224 +505,42 @@
      classifyform: {
        categoryname: "",
      }, //类别表单
      optionss: [
        {
          value: 1,
          label: "类型一",
        },
        {
          value: 2,
          label: "类型二",
        },
        {
          value: 3,
          label: "类型三",
        },
        {
          value: 4,
          label: "类型四",
        },
      ],
      xjxsoptions: [
        {
          value: 1,
          label: "视频",
        },
        {
          value: 2,
          label: "讲座",
        },
        {
          value: 3,
          label: "语音",
        },
      ],
      editableTabsky: [
        {
          title: "可用",
          number: "1",
        },
        {
          title: "停用",
          number: "2",
        },
      ],
      optionss: [],
      mode: [],
      languagelist: [],
      qyoptions: [],
      precedencetype: [],
      xjxsoptions: [],
      //类别列表
      editableTabs: [
        {
          title: "短信",
          number: "1",
        },
        {
          title: "钉钉",
          number: "2",
        },
        {
          title: "微信",
          number: "3",
        },
        {
          title: "电话",
          number: "4",
        },
        {
          title: "线下",
          number: "5",
        },
        {
          title: "智能语音",
          number: "6",
        },
      ],
      editableTabs: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        sickness: "",
        classifyvalue: "",
        shapevalue: "",
        userName: undefined,
      },
      // åˆ—信息
      columns: [
        { key: 0, label: `用户编号`, visible: true },
        { key: 1, label: `用户名称`, visible: true },
        { key: 2, label: `用户昵称`, visible: true },
        { key: 3, label: `部门`, visible: true },
        { key: 4, label: `手机号码`, visible: true },
        { key: 5, label: `状态`, visible: true },
        { key: 6, label: `创建时间`, visible: true },
      ],
      // è¡¨å•校验
      rules: {
        userName: [
          { required: true, message: "用户名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        nickName: [
          { required: true, message: "用户昵称不能为空", trigger: "blur" },
        ],
        password: [
          { required: true, message: "用户密码不能为空", trigger: "blur" },
          {
            min: 5,
            max: 20,
            message: "用户密码长度必须介于 5 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        email: [
          {
            type: "email",
            message: "请输入正确的邮箱地址",
            trigger: ["blur", "change"],
          },
        ],
        phonenumber: [
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        IDnumber: [
          {
            pattern:
              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
            message: "请输入正确的身份证号码",
            trigger: "blur",
          },
        ],
      },
    };
  },
  watch: {},
  created() {
    this.getList();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
    this.precedencetype = store.getters.precedencetype;
  },
  methods: {
    /** æŸ¥è¯¢ç”¨æˆ·åˆ—表 */
    /** æŸ¥è¯¢å®£æ•™åˆ—表 */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
      getlibrarylist(this.queryParams).then((response) => {
        console.log(response);
        // this.userList = response.data;
        // this.total = response.total;
        // this.loading = false;
        console.log(this.userList);
        this.userList = response.rows;
      });
      //   const { rows } = await listUser();
      //   console.log(rows);
      //   this.list = rows;
    },
    // æ·»åŠ ç±»åˆ«
    submitsidecolumn() {
      this.dialogFormVisible = false;
    },
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
      this.idds = tagcategoryid;
      this.amendtag = true;
      this.dialogFormVisible = true;
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
      if (this.amendtag) {
        this.classifyform.tagcategoryid = this.idds;
        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      } else {
        // addtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      }
      this.classifyform = {
        categoryname: "",
      };
      this.idds = "";
      this.dialogFormVisible = false;
    },
    //删除分类
    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;
      }
    },
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
    },
    //搜索类别
    sidecolumnss() {},
    // åˆ‡æ¢å…±äº«/本地
    tophandleClick() {},
    // å–消按钮
    cancel() {
      this.open = false;
@@ -823,20 +553,7 @@
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        userId: undefined,
        deptId: undefined,
        userName: undefined,
        nickName: undefined,
        password: undefined,
        phonenumber: undefined,
        email: undefined,
        sex: undefined,
        status: "0",
        remark: undefined,
        postIds: [],
        roleIds: [],
      };
      this.form = {};
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
@@ -879,39 +596,171 @@
      });
    },
    /** æ›´æ–°/修改提交按钮 */
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .then(function () {
          return delUser(userIds);
          return delFollowupinfo(userIds);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    },
    // åˆ†ç±»æ ‘-----------------------------------------
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
      this.idds = tagcategoryid;
      this.amendtag = true;
      this.dialogFormVisible = true;
    },
    // æŸ¥è¯¢æ ‘
    getDeptTree() {
      getheLibraryAssort({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    // æ·»åŠ ç±»åˆ«æ ‘
    submitsidecolumn() {
      let calssvalue = {};
      if (
        this.classifyform.pid &&
        this.classifyform.assortname &&
        this.radio == "子分类"
      ) {
        const index = this.deptOptions.findIndex(
          (obj) => obj.id == this.classifyform.pid
        );
        calssvalue = this.deptOptions[index];
        calssvalue.heLibraryAssortList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.assortname) {
        this.classifyform.pid = null;
        this.classifyform.heLibraryAssortList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addheLibraryAssort(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.assortname + '"的数据项?')
          .then(function () {
            return delheLibraryAssort(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.assortname +
              '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delheLibraryAssort(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      }
    },
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.assortname.indexOf(value) !== -1;
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
      this.getList();
    },
    // ç–¾ç—…-----------------------
    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: 6 }).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) {
      console.log(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 = 6;
        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("编辑成功");
    },
    showInput() {
      this.inputVisible = true;
    },
  },
};
@@ -1010,6 +859,45 @@
    font-size: 20px;
  }
}
.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;
  }
}
::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-button--mini.is-circle {
  padding: 7px;
  margin: 0;
  color: red;
}
.button-text {
  color: rgb(70, 204, 238);
}
src/views/knowledge/questionbank/index.vue
@@ -13,56 +13,34 @@
          class="input-with-select"
          size="medium "
        >
          <el-button
            @click="sidecolumnss"
            slot="append"
            icon="el-icon-search"
          ></el-button>
        </el-input>
      </div>
      <div class="bottom-fl">
        <el-menu
          default-active="3"
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          @select="handleSelect"
      <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"
        >
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>分类一</span>
            </template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
            <el-menu-item index="1-3">选项3</el-menu-item>
            <el-menu-item index="1-4">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span>分类二</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
            <el-menu-item index="2-3">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-document"></i>
              <span>分类三</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>分类四</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
              <el-button
                type="text"
                icon="el-icon-delete"
                circle
                size="mini"
                @click="() => remove(node, data)"
              >
              </el-button>
            </span>
          </span>
        </el-tree>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
@@ -175,18 +153,19 @@
              <el-table-column
                label="序号"
                align="center"
                key="userId"
                prop="userId"
                key="topicid"
                prop="topicid"
              />
              <el-table-column
                label="题目标题"
                align="center"
                key="userName"
                prop="userName"
                key="topic"
                prop="topic"
                width="200"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="题目内容"
                label="题目内容(缺)"
                align="center"
                key="nickName"
                prop="nickName"
@@ -194,23 +173,34 @@
                :show-overflow-tooltip="true"
              />
              /><el-table-column
                label="适用方式"
                label="适用方式(缺)"
                align="center"
                key="application"
                prop="application"
                width="120"
              />
              /><el-table-column
                label="适用疾病"
                label="适用疾病(缺)"
                align="center"
                key="Applicable"
                prop="Applicable"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="标签"
                label="标签(缺)"
                align="center"
                key="tagList"
                prop="tagList"
@@ -221,16 +211,9 @@
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                </template>
              </el-table-column>
              <el-table-column
                label="语言"
                align="center"
                key="indicator"
                prop="indicator"
                width="120"
              />
              <el-table-column
                label="可用"
                label="可用(缺)"
                align="center"
                key="usable"
                prop="usable"
@@ -239,20 +222,10 @@
              <el-table-column
                label="最近修改"
                align="center"
                key="Recentrevision"
                prop="Recentrevision"
                key="updateTime"
                prop="updateTime"
                width="120"
              />
              <el-table-column label="是否可用" align="center" key="status">
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
@@ -304,28 +277,29 @@
      </div>
    </div>
    <!-- æ·»åŠ ç±»åˆ«å¼¹æ¡† -->
    <el-dialog
      :title="amendtag ? '修改类别' : '新增类别'"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
    <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="请选择问卷题目大类">
          <el-select v-model="classifyform.broadheading" placeholder="请选择">
        <el-form-item label="请选择问题大类" v-if="radio == '子分类'">
          <el-select v-model="classifyform.pid" placeholder="请选择">
            <el-option
              v-for="item in editableTabs"
              :key="item.title"
              :label="item.title"
              :value="item.title"
              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="amendtag ? '请输入新的子类别名称' : '请输入子类别名称'"
        >
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.categoryname"
            v-model="classifyform.indexAssortName"
            autocomplete="off"
          ></el-input>
        </el-form-item>
@@ -335,37 +309,79 @@
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <!-- åˆ é™¤ç±»åˆ«ç¡®è®¤æ¡† -->
    <el-dialog title="警告" :visible.sync="deleteVisible" width="40%">
      <div style="font-size: 20px; color: rgb(247, 76, 76)">
        æ˜¯å¦ç¡®è®¤åˆ é™¤åˆ†ç±»ï¼š[<span>{{ deletefenl }}</span
        >]?
      </div>
      <div style="font-size: 20px">
        æ­¤æ“ä½œä¼šå°†è¯¥ç±»åˆ«ä¸‹æ‰€æœ‰æ¨¡å—转移至[未分类],是否继续删除此分类?
    <!-- æ·»åŠ ç–¾ç—…å¯¹è¯æ¡† -->
    <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="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
        <el-button @click="illnessVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="confirmillness">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import store from "@/store";
import {
  listUser,
  getUser,
  delUser,
  addUser,
  updateUser,
} from "@/api/system/user";
  getissueclassify,
  delissueclassify,
  addissueclassify,
  getissuelist,
  issueinfo,
  compileissue,
  delissueinfo,
  Followupinfo,
  deltargetillness,
  addtargetillness,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "questionnaire",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  components: { Treeselect },
  data() {
    return {
@@ -393,17 +409,7 @@
        categoryname: "",
      }, //类别表单
      // è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: 1,
          userName: "血常规、尿常规",
          nickName: "贫血",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          bphonenumber: "选择",
          cphonenumber: "普通话",
          status: "0",
        },
      ],
      userList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
@@ -423,205 +429,213 @@
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      propss: { multiple: true },
      languagelist: [
        {
          value: 1,
          label: "汉语",
        },
        {
          value: 3,
          label: "英语",
        },
      ], //语言列表
      qyoptions: [
        {
          value: 1,
          label: "可用",
        },
        {
          value: 2,
          label: "禁用",
        },
      ],
      //类别列表
      editableTabs: [
        {
          title: "问题分类一",
          number: "1",
        },
        {
          title: "问题分类二",
          number: "2",
        },
        {
          title: "问题分类三",
          number: "2",
        },
        {
          title: "问题分类四",
          number: "2",
        },
        {
          title: "问题分类五",
          number: "2",
        },
      ],
      indexid: null,
      inputValue: "",
      radio: "主分类",
      inputVisible: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "svyLibTopicCategoryList",
        label: "indexAssortName",
      },
      mode: [],
      languagelist: [],
      qyoptions: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
      // è¡¨å•校验
      rules: {
        userName: [
          { required: true, message: "主旨不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        nickName: [
          { required: true, message: "用户昵称不能为空", trigger: "blur" },
        ],
        password: [
          { required: true, message: "用户密码不能为空", trigger: "blur" },
          {
            min: 5,
            max: 20,
            message: "用户密码长度必须介于 5 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        email: [
          {
            type: "email",
            message: "请输入正确的邮箱地址",
            trigger: ["blur", "change"],
          },
        ],
        phonenumber: [
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        IDnumber: [
          {
            pattern:
              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
            message: "请输入正确的身份证号码",
            trigger: "blur",
          },
        ],
      },
      rules: {},
    };
  },
  watch: {},
  created() {
    this.getList();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
  },
  methods: {
    /** æŸ¥è¯¢ç”¨æˆ·åˆ—表 */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
        console.log(response);
      this.loading = true;
      getissuelist(this.queryParams).then((res) => {
        this.loading = false;
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList);
      });
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
      if (this.amendtag) {
        this.classifyform.tagcategoryid = this.idds;
        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      } else {
        // addtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      }
      this.classifyform = {
        categoryname: "",
      };
      this.idds = "";
      this.dialogFormVisible = false;
    },
    //删除分类
    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;
      }
    },
    compileUpdate(row) {
      this.$router.push({
        path: "/knowledge/questionbank/particulars/",
        query: { id: "1" },
        query: { id: row.topicid },
      });
    },
    // é¢˜ç›®çŠ¶æ€ä¿®æ”¹
    handleStatusChange(row) {
      let text = row.status === "0" ? "可用" : "停用";
      this.$modal
        .confirm('确认要"' + text + '""' + row.userName + '"用户吗?')
        .then(function () {
          return changeUserStatus(row.userId, row.status);
        })
        .then(() => {
          this.$modal.msgSuccess(text + "成功");
        })
        .catch(function () {
          row.status = row.status === "0" ? "1" : "0";
    // ç–¾ç—…-----------------------
    illnessUpdate(row) {
      this.illnessVisible = true;
      this.indexid = row.topicid;
      this.illnesslistapi = [];
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
      };
      getillnesslist(illnessqueryParams).then((response) => {
        console.log(response);
        this.optionsillness = response.rows;
      });
      getillness({ outid: row.topicid, type: 4 }).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) {
      console.log(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);
    },
    // ä¾§è¾¹--------------
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    illnessConfirm(item) {
      let opeavalue = {};
      let tagname = this.inputValue;
      illnesslistget(item).then((res) => {
        opeavalue = res.data;
        opeavalue.outid = this.indexid;
        opeavalue.type = 4;
        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 = "";
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    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("编辑成功");
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
    showInput() {
      this.inputVisible = true;
    },
    //搜索类别
    sidecolumnss() {},
    // ä¾¿æ·æ ‡ç­¾
    tsgnameto() {},
    // å–消按钮
    cancel() {
      this.indexopen = false;
      this.reset();
    // åˆ†ç±»æ ‘-----------------------------------------
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
      this.idds = tagcategoryid;
      this.amendtag = true;
      this.dialogFormVisible = true;
    },
    // æŸ¥è¯¢æ ‘
    getDeptTree() {
      getissueclassify({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    // æ·»åŠ ç±»åˆ«æ ‘
    submitsidecolumn() {
      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];
        calssvalue.ivrLibaTemplateAssortList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.indexAssortName) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaTemplateAssortList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addissueclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
          .then(function () {
            return delissueclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.indexAssortName +
              '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delissueclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      }
    },
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.indexAssortName.indexOf(value) !== -1;
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
      this.getList();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        userId: undefined,
        topicid: undefined,
        deptId: undefined,
        userName: undefined,
        nickName: undefined,
@@ -651,7 +665,7 @@
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.userId);
      this.ids = selection.map((item) => item.topicid);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
@@ -659,7 +673,7 @@
    handleAdd() {
      this.$router.push({
        path: "/knowledge/verbaltrick/particulars/",
        query: { id: "1" },
        query: { id: "" },
      });
    },
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
@@ -669,33 +683,13 @@
      this.dialogFormVisible = true;
    },
    /** æ›´æ–°/修改提交按钮 */
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.indexopen = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.indexopen = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      const topicids = row.topicid || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .confirm('是否确认删除用户编号为"' + topicids + '"的数据项?')
        .then(function () {
          return delUser(userIds);
          return delissueinfo(topicids);
        })
        .then(() => {
          this.getList();
@@ -815,6 +809,46 @@
    font-size: 20px;
  }
}
.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;
  }
}
::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-button--mini.is-circle {
  padding: 7px;
  margin: 0;
  color: red;
}
.button-text {
  color: rgb(70, 204, 238);
}
src/views/knowledge/questionbank/particulars/index.vue
@@ -11,166 +11,213 @@
              ></span
            >
          </div>
          <div style="margin-left: 8%">
            <el-row :gutter="10">
              <el-col :span="6"
                ><el-form-item label="题目标题">
                  <el-input
                    v-model="topicobj.topic"
                    placeholder="请输入标题"
                  ></el-input> </el-form-item
              ></el-col>
              <el-col :span="6"
                ><el-form-item label="是否可用">
                  <el-select
                    v-model="topicobj.ishide"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
                  >
                    <el-option
                      class="topicobjaa"
                      v-for="item in usable"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select> </el-form-item
              ></el-col>
              <el-col :span="8"
                ><el-form-item label="语言(缺)">
                  <el-select
                    v-model="topicobj.languageh"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
                  >
                    <el-option
                      class="topicobjaa"
                      v-for="item in languagelist"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="10">
              <el-col :span="6"
                ><el-form-item label="是否必答">
                  <el-radio-group v-model="topicobj.ismandatory">
                    <el-radio label="1">是</el-radio>
                    <el-radio label="2">否</el-radio>
                  </el-radio-group>
                </el-form-item></el-col
              >
              <el-col :span="6"
                ><el-form-item label="题目类型">
                  <el-select
                    v-model="topicobj.topictype"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
                  >
                    <el-option
                      class="topicobjaa"
                      v-for="item in xjxsoptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select> </el-form-item
              ></el-col>
              <el-col :span="8"
                ><el-form-item label="适用方式(缺)">
                  <el-select
                    v-model="topicobj.languageh"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
                  >
                    <el-option
                      class="topicobjaa"
                      v-for="item in mode"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option> </el-select></el-form-item
              ></el-col>
            </el-row>
            <el-form-item label="题目内容(缺)">
              <el-input
                style="width: 40vw"
                type="textarea"
                v-model="topicobj.topic"
                placeholder="请输入标题"
              ></el-input>
            </el-form-item>
          <el-row :gutter="10">
            <el-col :span="8"
              ><el-form-item label="题目标题">
                <el-input
                  v-model="topicobj.title"
                  placeholder="请输入标题"
                ></el-input> </el-form-item
            ></el-col>
            <el-col :span="6"
              ><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-col>
            <el-col :span="6"
              ><el-form-item label="语言">
                <el-select
                  v-model="topicobj.languageh"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="topicobjaa"
                    v-for="item in xjxsoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
            <el-row>
              <el-form-item label="标签" prop="desc">
                <div class="xinz-inf">
                  <el-tag
                    :key="tag.tagname"
                    type="success"
                    v-for="tag in dynamicTags"
                    closable
                    :disable-transitions="false"
                    @close="handleClosetag(tag)"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="8"
              ><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-col>
            <el-col :span="12"
              ><el-form-item label="题目类型">
                <el-select
                  v-model="topicobj.languageh"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="topicobjaa"
                    v-for="item in xjxsoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    {{ tag.tagname }}
                  </el-tag>
                  <el-select
                    v-model="inputValue"
                    v-if="inputVisible"
                    @change="handleInputConfirm"
                    filterable
                    remote
                    reserve-keyword
                    default-first-option
                    :remote-method="remoteMethodtag"
                    :loading="loading"
                    placeholder="请选择"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="题目内容">
            <el-input
              style="width: 40vw"
              type="textarea"
              v-model="topicobj.title"
              placeholder="请输入标题"
            ></el-input>
          </el-form-item>
          <el-row :gutter="10">
            <el-col :span="8"
              ><el-form-item label="适用方式">
                <el-select
                  v-model="topicobj.languageh"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="topicobjaa"
                    v-for="item in xjxsoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    <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
                  >
                  </el-option> </el-select></el-form-item
            ></el-col>
            <el-col :span="12"
              ><el-form-item label="适用疾病">
                <el-select
                  v-model="topicobj.languageh"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="topicobjaa"
                    v-for="item in xjxsoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                </div>
              </el-form-item>
            </el-row>
            <el-row>
              <el-form-item label="适用疾病" prop="region">
                <div class="xinz-inf">
                  <el-tag
                    :key="item.icd10name"
                    type="warning"
                    v-for="item in illnesslist"
                    closable
                    :disable-transitions="false"
                    @close="handleCloseillness(item)"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClose(tag)"
              >
                {{ tag }}
              </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.tagname"
                    :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>
                    {{ item.icd10name }}
                  </el-tag>
                  <el-select
                    v-model="inputValueillness"
                    v-if="inputVisibleillness"
                    @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="inputVisibleillness = true"
                    >+ æ–°å¢žç–¾ç—…</el-button
                  >
                </div>
              </el-form-item>
            </el-row>
          </div>
          <div class="headline">
            é€‰é¡¹è®¾ç½®<span style="margin-left: 30px"
              ><el-button type="primary" @click="addoption"
              ><el-button type="primary" round @click="addoption"
                >+新增</el-button
              ></span
            ><span style="margin-left: 30px"
              ><el-button type="success" round @click="drawer = true"
                >+选择指标</el-button
              ></span
            >
          </div>
          <div class="topicxq" v-for="item in optionlist">
            <el-row :gutter="10">
              <el-col :span="11"
                ><el-form-item label="选项">
                ><el-form-item label="题号">
                  <el-input
                    type="text"
                    placeholder="请输入选项"
                    v-model="text"
                    placeholder="请输入"
                    v-model="item.optionid"
                    show-word-limit
                  >
                  </el-input> </el-form-item
@@ -179,28 +226,20 @@
                ><el-form-item label="分值">
                  <el-input
                    type="text"
                    placeholder="请输入分值"
                    v-model="text"
                    placeholder="请输入"
                    v-model="item.score"
                    show-word-limit
                  >
                  </el-input> </el-form-item
              ></el-col>
              <el-col :span="2">
                <el-button
                  type="danger"
                  icon="el-icon-delete"
                  circle
                ></el-button>
              </el-col>
            </el-row>
            <el-row :gutter="10">
              <el-col :span="11"
                ><el-form-item label="选中提示">
                ><el-form-item label="选项">
                  <el-input
                    type="text"
                    placeholder="请输入内容"
                    v-model="text"
                    maxlength="10"
                    placeholder="请输入选项"
                    v-model="item.optioncontent"
                    show-word-limit
                  >
                  </el-input> </el-form-item
@@ -210,21 +249,147 @@
                  <el-input
                    type="text"
                    placeholder="请输入题号"
                    v-model="text"
                    v-model="item.jump"
                    show-word-limit
                  >
                  </el-input> </el-form-item
              ></el-col>
              <el-col :span="2">
                <el-button
                  type="danger"
                  icon="el-icon-delete"
                  circle
                  @click="deletexuanx(item)"
                ></el-button>
              </el-col>
            </el-row>
            <el-row :gutter="10">
              <el-form-item label="选中提示">
                <el-input
                  style="width: 40vw"
                  type="textarea"
                  autosize
                  placeholder="请输入内容"
                  v-model="item.prompt"
                >
                </el-input
              ></el-form-item>
            </el-row>
          </div>
        </el-form>
      </el-card>
    </div>
    <el-drawer
      title="添加题目"
      :visible.sync="drawer"
      custom-class="demo-drawer"
      width="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="queryParams.classify"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in optionsclass"
                :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-table v-loading="loading" :data="userList">
          <el-table-column
            label="标题"
            align="center"
            key="userid"
            prop="userid"
            width="100"
          />
          <el-table-column
            label="问题内容"
            align="center"
            key="userName"
            prop="userName"
            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="selectlabel(scope.row)"
                ><span class="button-textxg"
                  ><i class="el-icon-circle-plus-outline"></i>添加</span
                ></el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-drawer>
  </div>
</template>
<script>
import { listtag } from "@/api/system/label";
import store from "@/store";
import {
  getissueclassify,
  delissueclassify,
  addissueclassify,
  getissuelist,
  issueinfo,
  compileissue,
  delissueinfo,
  Followupinfo,
  deltargetillness,
  addtargetillness,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
export default {
  data() {
@@ -232,50 +397,130 @@
      topicobj: {},
      inputVisible: false,
      inputValue: "",
      dynamicTags: ["标签一", "标签二", "标签三"],
      drawer: false,
      loading: false,
      id: [],
      userList: [
        {
          userid: "1",
          userName: "指标",
        },
        {
          userid: "2",
          userName: "二号问卷",
        },
      ],
      dynamicTags: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
      },
      optionlist: [
        { value: "topic", table: "topic" },
        { value: "topic", table: "topic" },
        { value: "topic", table: "topic" },
      ],
      options: [
        {
          value: "选项1",
          label: "心血管",
        },
        {
          value: "选项2",
          label: "骨科",
        },
        {
          value: "选项3",
          label: "妇科",
        },
      ],
      optionstag:[],
      xjxsoptions: [
        {
          value: "1",
          label: "单选",
        },
        {
          value: "2",
          label: "多选",
        },
      ],
      inputValueillness: "",
      themelist: [],
      languagelist: [],
      courtyardlist: [],
      precedencetype: [],
      inputVisible: false,
      inputVisibleillness: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      optionstag: [],
      xjxsoptions: [],
      usable: [],
      mode: [], //方式
    };
  },
  created() {
    this.gettabList();
    this.getissueinfo();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.xjxsoptions = store.getters.xjxsoptions;
  },
  methods: {
    Submittopicobj() {},
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    // èŽ·å–æ•°æ®
    getissueinfo() {
      this.id = this.$route.query.id;
      issueinfo(this.id).then((res) => {
        this.topicobj = res.data;
      });
      getillnesslist({
        pageNum: 1,
        pageSize: 100,
      }).then((response) => {
        this.optionsillness = response.rows;
      });
      getillness({ outid: this.id, type: 4 }).then((res) => {
        this.illnesslist = res.rows;
      });
    },
    // æ–°å¢žæˆ–修改详情
    compileissue() {
      if (this.id) {
        this.topicobj.isoperation = 1;
        compileissue(this.topicobj).then((res) => {
          if (res.code == 1) {
            this.$message({
              message: "修改成功",
              type: "success",
            });
            this.$router.go(-1);
          } else {
            this.$message({
              message: "修改失败",
              type: "error",
            });
          }
        });
      } else {
        this.topicobj.isoperation = 2;
        compileissue(this.topicobj).then((res) => {
          if (res.code == 1) {
            this.$message({
              message: "新增成功",
              type: "success",
            });
            this.$router.go(-1);
          } else {
            this.$message({
              message: "新增失败",
              type: "error",
            });
          }
        });
      }
    },
    // åˆ é™¤é€‰é¡¹
    deletexuanx(row) {
      const index = this.getIndexInArray(this.optionlist, row);
      this.optionlist.splice(index, 1);
    },
    // æ–°å¢žé€‰é¡¹
    addoption() {},
    addoption() {
      this.optionlist.push({ value: "topic", table: "topic" });
    },
    // é€‰æ‹©æŒ‡æ ‡
    selectlabel(row) {},
    // æ ‡ç­¾-----------------
    /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
    gettabList() {
      const tagqueryParams = {
        pageNum: 1,
@@ -284,27 +529,115 @@
      };
      listtag(tagqueryParams).then((response) => {
        console.log(response);
        this.options = response.rows;
        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.ivrLibaTemplateTargetList[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.ivrLibaTemplateTargetList.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();
      // });
    },
    // ç–¾ç—…-----------------------
    handleCloseillness(tag) {
      this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
      if (tag.id) {
        this.illnesslistapi.push(tag.id);
      }
    },
    remoteMethod(value) {
      console.log(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.inputValueillness;
      illnesslistget(item).then((res) => {
        opeavalue = res.data;
        opeavalue.outid = this.id;
        opeavalue.type = 4;
        opeavalue.icd10id = opeavalue.icdid;
        opeavalue.icd10name = opeavalue.icdname;
        opeavalue.icd10code = opeavalue.icdcode;
        if (tagname) {
          this.illnesslist.push(opeavalue);
        }
      });
      console.log(this.illnesslist);
      this.inputVisibleillness = false;
      this.inputValueillness = "";
    },
    // ä¿å­˜
    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("编辑成功");
    },
    // æŸ¥è¯¢é¢˜åº“
    handleQuery() {},
    resetQuery() {},
  },
};
</script>
@@ -322,13 +655,18 @@
    margin: 15px 0;
  }
  .topicxq {
    width: 50%;
    width: 68%;
    background-color: #e2f5fc;
    border-radius: 4px;
    margin-top: 10px;
    margin-top: 15px;
    margin-left: 10%;
    padding-left: 10px;
    padding-top: 15px;
    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);
  }
  .xinz-inf {
    font-size: 18px;
    white-space: nowrap;
@@ -353,4 +691,25 @@
    }
  }
}
.preview-left {
  margin: 20px;
  //   margin: 20px;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
  .topic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
}
::v-deep.ruleFormaa.el-select {
  display: inline-block;
  position: relative;
  width: 700px;
}
</style>
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -17,9 +17,7 @@
    <div class="leftvlue">
      <!-- åŸºæœ¬ä¿¡æ¯ -->
      <div v-if="Editprogress == 1">
        <div class="leftvlue-jbxx">
          åŸºæœ¬ä¿¡æ¯
        </div>
        <div class="leftvlue-jbxx">基本信息</div>
        <el-divider></el-divider>
        <el-form
          :model="ruleForm"
@@ -30,7 +28,7 @@
        >
          <el-form-item label="问卷分类" prop="region">
            <el-select
              v-model="ruleForm.classify"
              v-model="ruleForm.categoryid"
              size="medium"
              multiple
              filterable
@@ -38,7 +36,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in optionsclass"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -48,16 +46,32 @@
          </el-form-item>
          <el-form-item label="问卷标题" prop="name">
            <div style="width: 30%">
              <el-input v-model="ruleForm.name"></el-input>
              <el-input v-model="ruleForm.svyname"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="问卷描述">
            <el-input
              style="width: 40vw"
              type="textarea"
              autosize
              placeholder="请输入内容"
              v-model="ruleForm.description"
            >
            </el-input
          ></el-form-item>
          <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-input
                  v-model="item.name"
                  placeholder="请输入变量名"
                ></el-input>
              </el-col>
              <el-col :span="8" :offset="1">
                <el-input v-model="item.value"></el-input>
                <el-input
                  v-model="item.value"
                  placeholder="请输入变量内容"
                ></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
@@ -67,6 +81,7 @@
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                  v-if="item"
                  type="danger"
                  icon="el-icon-delete"
                  circle
@@ -91,53 +106,101 @@
              </el-upload>
            </div>
          </el-form-item>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClose(tag)"
              >
                {{ tag }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                  allow-create
          <el-row>
            <el-form-item label="标签" prop="desc">
              <div class="xinz-inf">
                <el-tag
                  :key="tag.tagname"
                  type="success"
                  v-for="tag in dynamicTags"
                  closable
                  :disable-transitions="false"
                  @close="handleClosetag(tag)"
                >
                  {{ tag.tagname }}
                </el-tag>
                <el-select
                  v-model="inputValue"
                  v-if="inputVisible"
                  @change="handleInputConfirm"
                  filterable
                  remote
                  reserve-keyword
                  default-first-option
                placeholder="请选择"
              >
                <el-option
                  v-for="item in optionstag"
                  :key="item.tagname"
                  :remote-method="remoteMethodtag"
                  :loading="loading"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in optionstag"
                    :key="item.tagid"
                    :label="item.tagname"
                    :value="item.tagname"
                  >
                  </el-option>
                </el-select>
                <el-button
                  v-else
                  class="button-new-tag"
                  size="small"
                  @click="showInput"
                  >+ æ–°å¢žæ ‡ç­¾</el-button
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput"
                >+ æ–°å¢žæ ‡ç­¾</el-button
              >
            </div>
          </el-form-item>
              </div>
            </el-form-item>
          </el-row>
          <el-row>
            <el-form-item label="适用疾病" prop="region">
              <div class="xinz-inf">
                <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="inputValueillness"
                  v-if="inputVisibleillness"
                  @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="inputVisibleillness = true"
                  >+ æ–°å¢žç–¾ç—…</el-button
                >
              </div>
            </el-form-item>
          </el-row>
          <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-input v-model="ruleForm.version"></el-input> </el-form-item
            ></el-col>
            <el-col :span="9">
              <el-form-item label="可用状态" prop="region">
                <el-select
                  v-model="ruleForm.classify"
                  v-model="ruleForm.isenable"
                  size="medium"
                  multiple
                  filterable
@@ -145,7 +208,7 @@
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in options"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -154,7 +217,7 @@
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="问卷方式" prop="region">
          <el-form-item label="问卷方式(缺)" prop="region">
            <el-select
              v-model="ruleForm.way"
              size="medium"
@@ -172,24 +235,7 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用疾病" prop="region">
            <el-select
              v-model="ruleForm.illness"
              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>
            </el-select>
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.courtyard"
@@ -199,7 +245,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in courtyardlist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -217,7 +263,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in courtyardlist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -345,51 +391,70 @@
                  ></el-col>
                </el-row>
                <div class="headline">选项设置</div>
                <div class="topicxq" v-for="item in 2">
                <div class="topicxq" v-for="item in optionlist">
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="选项">
                    <el-col :span="11"
                      ><el-form-item label="题号">
                        <el-input
                          type="text"
                          placeholder="请输入选项"
                          v-model="text"
                          placeholder="请输入"
                          v-model="item.optionid"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="12"
                    <el-col :span="11"
                      ><el-form-item label="分值">
                        <el-input
                          type="text"
                          placeholder="请输入分值"
                          v-model="text"
                          placeholder="请输入"
                          v-model="item.score"
                          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-col :span="11"
                      ><el-form-item label="选项">
                        <el-input
                          type="text"
                          placeholder="请输入内容"
                          v-model="text"
                          maxlength="10"
                          placeholder="请输入选项"
                          v-model="item.optioncontent"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="12"
                    <el-col :span="11"
                      ><el-form-item label="下题跳转">
                        <el-input
                          type="text"
                          placeholder="请输入题号"
                          v-model="text"
                          v-model="item.jump"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="2">
                      <el-button
                        type="danger"
                        icon="el-icon-delete"
                        circle
                        @click="deletexuanx(item)"
                      ></el-button>
                    </el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-form-item label="选中提示">
                      <el-input
                        style="width: 20vw"
                        type="textarea"
                        autosize
                        placeholder="请输入内容"
                        v-model="item.prompt"
                      >
                      </el-input
                    ></el-form-item>
                  </el-row>
                </div>
              </el-form>
@@ -483,22 +548,13 @@
            />
          </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"
              >
              </el-option>
            </el-select>
            <el-input
              v-model="queryParams.userName"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item>
            <el-button
@@ -554,6 +610,22 @@
<script>
import { listtag } from "@/api/system/label";
import store from "@/store";
import {
  getQtemplateclassify,
  delQtemplateclassify,
  addQtemplateclassify,
  getQtemplatelist,
  Qtemplateinfo,
  compileissue,
  delQtemplateinfo,
  Followupinfo,
  deltargetillness,
  addtargetillness,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
export default {
  data() {
@@ -566,27 +638,20 @@
      radio: "false", //单选题选中
      radios: [], //多选题选中
      radioas: "", //填空题答案
      dynamicTags: ["标签一", "标签二", "标签三"],
      dynamicTags: [],
      inputVisible: false,
      inputValue: "",
      topicobj: {},
      // æ€»æ¡æ•°
      total: 1,
      ruleForm: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        templatevalue: "",
        data2: "",
      },
      ruleForm: {},
      rules: {},
      rulesa: {},
      optionstag:[],
      optionsclass: [], //分类列表
      optionlist: [
        { value: "topic", table: "topic" },
        { value: "topic", table: "topic" },
      ],
      xjxsoptions: [
        {
          value: "选项1",
@@ -620,14 +685,6 @@
          value: "选项2",
          label: "入院问卷",
        },
        {
          value: "选项3",
          label: "手术问卷",
        },
        {
          value: "选项4",
          label: "护理问卷",
        },
      ],
      variablelist: [
        {
@@ -654,15 +711,24 @@
          userid: "2",
          userName: "二号问卷",
        },
        {
          userid: "3",
          userName: "三号问卷",
        },
        {
          userid: "4",
          userName: "四号问卷",
        },
      ],
      themelist: [],
      languagelist: [],
      courtyardlist: [],
      precedencetype: [],
      inputValueillness: "",
      inputVisible: false,
      inputVisibleillness: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      optionstag: [],
      xjxsoptions: [],
      usable: [],
      mode: [], //方式
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
@@ -678,22 +744,35 @@
  created() {
    this.gettabList();
    this.getissueinfo();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.xjxsoptions = store.getters.xjxsoptions;
    this.courtyardlist = store.getters.courtyardlist;
  },
  methods: {
    submitForm(formName) {
      this.rules = this.rulesa;
      //   æäº¤
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("submit!");
        } else {
          console.log("error submit!!");
          return false;
        }
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    // èŽ·å–æ•°æ®
    getissueinfo() {
      this.id = this.$route.query.id;
      Qtemplateinfo(this.id).then((res) => {
        this.ruleForm = res.data;
      });
      getillnesslist({
        pageNum: 1,
        pageSize: 100,
      }).then((response) => {
        this.optionsillness = response.rows;
      });
      getillness({ outid: this.id, type: 5 }).then((res) => {
        this.illnesslist = res.rows;
      });
    },
    submitForm(formName) {},
    // ä¸‹ä¸€æ­¥
    nextstep() {
      if (this.Editprogress <= 2) {
@@ -706,17 +785,19 @@
    },
    // å…³é—­
    closeFm() {
      this.$confirm('退出不会保留页面内容更改, æ˜¯å¦ç»§ç»­?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$router.go(-1)
        }).catch(() => {
      this.$confirm("退出不会保留页面内容更改, æ˜¯å¦ç»§ç»­?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.$router.go(-1);
        })
        .catch(() => {
          this.$message({
            type: 'info',
            message: '已取消'
          });
            type: "info",
            message: "已取消",
          });
        });
    },
    // ä¿å­˜é¢˜ç›®ä¿¡æ¯
@@ -758,8 +839,7 @@
      this.fileList = fileList.slice(-3);
    },
    // æ ‡ç­¾-----------------
     /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
     gettabList() {
    gettabList() {
      const tagqueryParams = {
        pageNum: 1,
        pageSize: 1000,
@@ -770,23 +850,108 @@
        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.ivrLibaTemplateTargetList[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.ivrLibaTemplateTargetList.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();
      // });
    },
    // ç–¾ç—…-----------------------
    handleCloseillness(tag) {
      this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
      if (tag.id) {
        this.illnesslistapi.push(tag.id);
      }
    },
    remoteMethod(value) {
      console.log(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.inputValueillness;
      illnesslistget(item).then((res) => {
        opeavalue = res.data;
        opeavalue.outid = this.id;
        opeavalue.type = 5;
        opeavalue.icd10id = opeavalue.icdid;
        opeavalue.icd10name = opeavalue.icdname;
        opeavalue.icd10code = opeavalue.icdcode;
        if (tagname) {
          this.illnesslist.push(opeavalue);
        }
      });
      console.log(this.illnesslist);
      this.inputVisibleillness = false;
      this.inputValueillness = "";
    },
    // ä¿å­˜
    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("编辑成功");
    },
    // --------------------------
    // æŸ¥è¯¢é¢˜åº“
@@ -833,9 +998,9 @@
  }
  .leftvlue-jbxx {
    font-size: 24px;
      border-left: 5px solid #41a1be;
      padding-left: 5px;
      margin: 15px 0;
    border-left: 5px solid #41a1be;
    padding-left: 5px;
    margin: 15px 0;
  }
  .demo-cascader {
    margin-right: 20px;
src/views/knowledge/questionnaire/index.vue
@@ -13,84 +13,34 @@
          class="input-with-select"
          size="medium "
        >
          <el-button
            @click="sidecolumnss"
            slot="append"
            icon="el-icon-search"
          ></el-button>
        </el-input>
      </div>
      <div class="bottom-fl">
        <el-menu
          default-active="3"
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          @select="handleSelect"
      <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"
        >
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>分类一</span>
            </template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
            <el-menu-item index="1-3">选项3</el-menu-item>
            <el-menu-item index="1-4">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span>分类二</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
            <el-menu-item index="2-3">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-document"></i>
              <span>分类三</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>分类四</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>
        <!-- <el-tabs tab-position="right">
          <el-tab-pane :label="`全部 (${numberlb})`"></el-tab-pane>
          <el-tab-pane
            class="tab-paness"
            :key="item.title"
            v-for="(item, index) in editableTabs"
          >
            <span slot="label">
              {{
                item.title + " (" + item.number + ")"
              }}&nbsp&nbsp&nbsp<el-popover
                placement="top-start"
                width="100"
                trigger="hover"
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
              <el-button
                type="text"
                icon="el-icon-delete"
                circle
                size="mini"
                @click="() => remove(node, data)"
              >
                <div style="text-align: center">
                  <el-button type="text" @click="popoveramend(item)"
                    >修改</el-button
                  ><el-button type="text" @click="deletefenlei(item)"
                    ><span style="color: rgb(173, 55, 55)"
                      >删除</span
                    ></el-button
                  >
                </div>
                <i slot="reference" class="el-icon-share"></i> </el-popover
            ></span>
          </el-tab-pane>
        </el-tabs> -->
              </el-button>
            </span>
          </span>
        </el-tree>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
@@ -119,7 +69,7 @@
              <el-form-item label="适用科室" prop="sickness">
                <el-cascader
                  v-model="queryParams.sickness"
                  :options="optionss"
                  :options="editableTabs"
                  :props="propss"
                  clearable
                ></el-cascader>
@@ -136,7 +86,7 @@
              <el-form-item label="适用方式" prop="shape">
                <el-cascader
                  v-model="queryParams.shapevalue"
                  :options="optionss"
                  :options="editableTabs"
                  :props="propss"
                  clearable
                ></el-cascader>
@@ -161,7 +111,7 @@
                  placeholder="请选择"
                >
                  <el-option
                    v-for="(item, index) in editableTabsky"
                    v-for="(item, index) in editableTabs"
                    :key="index++"
                    :label="item.title"
                    :value="index++"
@@ -223,46 +173,58 @@
              <el-table-column
                label="序号"
                align="center"
                key="userId"
                prop="userId"
                key="svyid"
                prop="svyid"
              />
              <el-table-column
                label="问卷标题"
                align="center"
                key="userName"
                prop="userName"
                key="svyname"
                prop="svyname"
                width="160"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="版本"
                align="center"
                key="nickName"
                prop="nickName"
                key="version"
                prop="version"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="主要内容"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                width="120"
                key="description"
                prop="description"
                width="260"
              /><el-table-column
                label="适用疾病"
                label="适用疾病(缺)"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                width="120"
              />
                key="Applicable"
                prop="Applicable"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="适用科室"
                label="适用科室(缺)"
                align="center"
                key="administrative"
                prop="administrative"
                width="120"
              />
              <el-table-column
                label="标签"
                label="标签(缺)"
                align="center"
                key="tagList"
                prop="tagList"
@@ -273,20 +235,9 @@
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                </template>
              </el-table-column>
              <el-table-column
                label="宣教方式"
                align="center"
                key="wayList"
                prop="wayList"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.wayList">{{ item }} </span>
                </template>
              </el-table-column>
              <el-table-column
                label="资料形式"
                label="资料形式(缺)"
                align="center"
                key="cphonenumaber"
                prop="cphonenumaber"
@@ -295,15 +246,19 @@
              <el-table-column
                label="可用"
                align="center"
                key="cphonenumbker"
                prop="cphonenumbker"
                key="isenable"
                prop="isenable"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <dict-tag :options="qyoptions" :value="scope.row.isenable" />
                </template>
              </el-table-column>
              <el-table-column
                label="最近编辑"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                key="updateTime"
                prop="updateTime"
                width="120"
              />
@@ -364,134 +319,32 @@
            />
          </el-col>
        </el-row>
        <!-- æ·»åŠ æˆ–ä¿®æ”¹é—®å·é…ç½®å¯¹è¯æ¡† -->
        <el-dialog
          :title="title"
          :visible.sync="open"
          width="900px"
          append-to-body
        >
          <el-form ref="form" :model="form" :rules="rules" label-width="100px">
            <el-row>
              <el-col :span="12">
                <el-form-item label="姓名" prop="nickName">
                  <el-input
                    v-model="form.nickName"
                    placeholder="请输入姓名"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="性别" prop="deptId">
                  <el-select v-model="form.sex" placeholder="请选择性别">
                    <el-option
                      v-for="dict in dict.type.sys_user_sex"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="证件类型" prop="phonenumber">
                  <el-input
                    v-model="form.phonenumber"
                    placeholder="请选择证件类型"
                    maxlength="11"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="证件号" prop="email">
                  <el-input
                    v-model="form.email"
                    placeholder="请输入证件号"
                    maxlength="50"
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="本人手机号" prop="userName">
                  <el-input
                    v-model="form.userName"
                    placeholder="请输入手机号"
                    maxlength="30"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="亲属手机号" prop="password">
                  <el-input
                    v-model="form.password"
                    placeholder="请输入亲属手机号"
                    type="password"
                    maxlength="20"
                    show-password
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="12">
                <el-form-item label="患者标签">
                  <el-cascader
                    :options="optionss"
                    :props="propss"
                    clearable
                  ></el-cascader>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="备注">
                  <el-input
                    v-model="form.remark"
                    type="textarea"
                    placeholder="请输入内容"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
          <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="amendtag ? '修改类别' : '新增类别'"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
    <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="请选择问卷大类">
          <el-select v-model="classifyform.broadheading" placeholder="请选择">
        <el-form-item label="请选择问题大类" v-if="radio == '子分类'">
          <el-select v-model="classifyform.pid" placeholder="请选择">
            <el-option
              v-for="item in optionss"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              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="amendtag ? '请输入新的类别名称' : '请输入类别名称'"
        >
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.categoryname"
            v-model="classifyform.indexAssortName"
            autocomplete="off"
          ></el-input>
        </el-form-item>
@@ -501,18 +354,52 @@
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <!-- åˆ é™¤ç±»åˆ«ç¡®è®¤æ¡† -->
    <el-dialog title="警告" :visible.sync="deleteVisible" width="40%">
      <div style="font-size: 20px; color: rgb(247, 76, 76)">
        æ˜¯å¦ç¡®è®¤åˆ é™¤åˆ†ç±»ï¼š[<span>{{ deletefenl }}</span
        >]?
      </div>
      <div style="font-size: 20px">
        æ­¤æ“ä½œä¼šå°†è¯¥ç±»åˆ«ä¸‹æ‰€æœ‰æ¨¡å—转移至[未分类],是否继续删除此分类?
    <!-- æ·»åŠ ç–¾ç—…å¯¹è¯æ¡† -->
    <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="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
        <el-button @click="illnessVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="confirmillness">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <!-- äºŒç»´ç å±•示弹框 -->
@@ -528,19 +415,28 @@
</template>
<script>
import store from "@/store";
import {
  listUser,
  getUser,
  delUser,
  addUser,
  updateUser,
} from "@/api/system/user";
  getQtemplateclassify,
  delQtemplateclassify,
  addQtemplateclassify,
  getQtemplatelist,
  issueinfo,
  compileissue,
  delQtemplateinfo,
  Followupinfo,
  deltargetillness,
  addtargetillness,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "questionnaire",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  components: { Treeselect },
  data() {
    return {
@@ -560,20 +456,8 @@
      namequestionnaire: "",
      haoquestionnaire: "",
      // ç”¨æˆ·è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: 1,
          userName: "三号问卷",
          nickName: "1.2.4",
          aphonenumber: "关节炎症",
          bphonenumber: "很棒",
          cphonenumber: "2022-12-12 ",
        },
      ],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      userList: [],
      // æ—¥æœŸèŒƒå›´
      dateRange: [],
      // å²—位选项
@@ -582,8 +466,7 @@
      roleOptions: [],
      // è¡¨å•参数
      form: {},
      numberlb: 22,
      numberlbs: 2,
      sidecolumnform: {}, //添加类别表单
      goQRCodeVisible: false, //二维码弹框
      sidecolumnval: "", //类别搜索
@@ -591,208 +474,55 @@
      idds: "",
      amendtag: false, //是否修改类别
      dialogFormVisible: false, //修改添加类别弹框
      deleteVisible: false, //分类删除弹框
      deletefenl: "高血压", //删除项
      classifyform: {
        categoryname: "",
      }, //类别表单
      optionss: [
        {
          value: 1,
          label: "东南",
        },
        {
          value: 2,
          label: "西北",
        },
        {
          value: 3,
          label: "仨仨仨",
        },
        {
          value: 4,
          label: "六飒飒飒",
        },
      ],
      //类别列表
      editableTabs: [
        {
          title: "问卷分类一",
          number: "1",
        },
        {
          title: "问卷分类二",
          number: "2",
        },
        {
          title: "问卷分类三",
          number: "2",
        },
        {
          title: "问卷分类四",
          number: "2",
        },
        {
          title: "问卷分类五",
          number: "2",
        },
      ],
      editableTabsky: [
        {
          title: "可用",
          number: "1",
        },
        {
          title: "停用",
          number: "2",
        },
      ],
      classifyform: {}, //类别表单
      indexid: null,
      inputValue: "",
      radio: "主分类",
      inputVisible: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "svyLibTopicCategoryList",
        label: "indexAssortName",
      },
      mode: [],
      languagelist: [],
      qyoptions: [],
      editableTabs: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
      // åˆ—信息
      columns: [
        { key: 0, label: `用户编号`, visible: true },
        { key: 1, label: `用户名称`, visible: true },
        { key: 2, label: `用户昵称`, visible: true },
        { key: 3, label: `部门`, visible: true },
        { key: 4, label: `手机号码`, visible: true },
        { key: 5, label: `状态`, visible: true },
        { key: 6, label: `创建时间`, visible: true },
      ],
      // è¡¨å•校验
      rules: {
        userName: [
          { required: true, message: "用户名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        nickName: [
          { required: true, message: "用户昵称不能为空", trigger: "blur" },
        ],
        password: [
          { required: true, message: "用户密码不能为空", trigger: "blur" },
          {
            min: 5,
            max: 20,
            message: "用户密码长度必须介于 5 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        email: [
          {
            type: "email",
            message: "请输入正确的邮箱地址",
            trigger: ["blur", "change"],
          },
        ],
        phonenumber: [
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        IDnumber: [
          {
            pattern:
              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
            message: "请输入正确的身份证号码",
            trigger: "blur",
          },
        ],
      },
      rules: {},
    };
  },
  watch: {},
  created() {
    this.getList();
    // this.getDeptTree();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
    this.editableTabs = store.getters.editableTabs;
  },
  methods: {
    /** æŸ¥è¯¢ç”¨æˆ·åˆ—表 */
    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);
      this.loading = true;
      getQtemplatelist(this.queryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
      //   const { rows } = await listUser();
      //   console.log(rows);
      //   this.list = rows;
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
      if (this.amendtag) {
        this.classifyform.tagcategoryid = this.idds;
        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      } else {
        // addtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      }
      this.classifyform = {
        categoryname: "",
      };
      this.idds = "";
      this.dialogFormVisible = false;
    },
    //删除分类
    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;
      }
    },
    // ä¾§è¾¹--------------
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
    },
    //搜索类别
    sidecolumnss() {},
    // åˆ‡æ¢å…±äº«/本地
    tophandleClick() {},
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    goQRCode(row) {
      this.goQRCodeVisible = true;
      this.namequestionnaire = row.userName;
@@ -801,7 +531,7 @@
    // è¡¨å•重置
    reset() {
      this.form = {
        userId: undefined,
        svyid: undefined,
        deptId: undefined,
        userName: undefined,
        nickName: undefined,
@@ -831,7 +561,7 @@
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.userId);
      this.ids = selection.map((item) => item.svyid);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
@@ -845,44 +575,217 @@
    handleUpdate(row) {
      this.$router.push({
        path: "/knowledge/questionnaire/compilequer/",
        query: { id: "1" },
        query: { id: row.svyid },
      });
    },
    // æŸ¥çœ‹é—®å·
    ViewQuestionnaire() {
    ViewQuestionnaire(row) {
      this.$router.push({
        path: "/knowledge/questionnaire/examine/",
        query: { id: row.svyid },
      });
    },
    // ç–¾ç—…-----------------------
    illnessUpdate(row) {
      this.illnessVisible = true;
      this.indexid = row.svyid;
      this.illnesslistapi = [];
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
      };
      getillnesslist(illnessqueryParams).then((response) => {
        console.log(response);
        this.optionsillness = response.rows;
      });
      getillness({ outid: row.svyid, type: 5 }).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) {
      console.log(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 = 5;
        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("编辑成功");
    },
    showInput() {
      this.inputVisible = true;
    },
    // åˆ†ç±»æ ‘-----------------------------------------
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    // æŸ¥è¯¢æ ‘
    getDeptTree() {
      getQtemplateclassify({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    // æ·»åŠ ç±»åˆ«æ ‘
    submitsidecolumn() {
      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];
        calssvalue.ivrLibaTemplateAssortList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.indexAssortName) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaTemplateAssortList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addQtemplateclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
          .then(function () {
            return delQtemplateclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.indexAssortName +
              '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delQtemplateclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      }
    },
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.indexAssortName.indexOf(value) !== -1;
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
      this.getList();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        svyid: undefined,
        deptId: undefined,
        userName: undefined,
        nickName: undefined,
        password: undefined,
        phonenumber: undefined,
        email: undefined,
        sex: undefined,
        status: "0",
        remark: undefined,
        postIds: [],
        roleIds: [],
      };
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.queryParams.deptId = undefined;
      this.$refs.tree.setCurrentKey(null);
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.svyid);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.$router.push({
        path: "/knowledge/verbaltrick/particulars/",
        query: { id: "1" },
      });
    },
    /** æ›´æ–°/修改提交按钮 */
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      const svyids = row.svyid || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .confirm('是否确认删除用户编号为"' + svyids + '"的数据项?')
        .then(function () {
          return delUser(userIds);
          return delQtemplateinfo(svyids);
        })
        .then(() => {
          this.getList();
@@ -987,6 +890,46 @@
    font-size: 20px;
  }
}
.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;
  }
}
::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-button--mini.is-circle {
  padding: 7px;
  margin: 0;
  color: red;
}
.button-text {
  color: rgb(70, 204, 238);
}
src/views/repositoryai/general/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,793 @@
<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>
              <el-button
                type="text"
                icon="el-icon-delete"
                circle
                size="mini"
                @click="() => remove(node, data)"
              >
              </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.userName"
                  placeholder="请输入"
                  clearable
                  style="width: 200px"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <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="shape">
                <el-select v-model="queryParams.value" 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.classifyvalue"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="(item, index) in courtyardlist"
                    :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"
                  v-hasPermi="['system:user:add']"
                  >新增</el-button
                >
              </el-col>
              <el-col :span="1.5">
                <el-button
                  type="danger"
                  plain
                  icon="el-icon-delete"
                  size="medium"
                  :disabled="multiple"
                  @click="handleDelete"
                  v-hasPermi="['system:user:remove']"
                  >删除</el-button
                >
              </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="序号"
                align="center"
                key="targetid"
                prop="targetid"
              />
              <el-table-column
                label="通用库名称"
                align="center"
                key="extName"
                prop="extName"
                width="200"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="通用库说明"
                align="center"
                key="note"
                width="250"
                prop="note"
                :show-overflow-tooltip="true"
              >
              </el-table-column>
              <el-table-column
                label="版本号"
                align="center"
                key="version"
                prop="version"
              /><el-table-column
                label="适用方式"
                align="center"
                key="suitWay"
                prop="suitWay"
                width="120"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.suitWay">{{ item }}</span>
                </template>
              </el-table-column>
              <el-table-column
                label="语言"
                align="center"
                key="language"
                prop="language"
                width="120"
              />
              <el-table-column
                label="是否可用"
                align="center"
                key="isEnable"
                prop="isEnable"
              >
                <template slot-scope="scope">
                  <dict-tag :options="usable" :value="scope.row.isEnable" />
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                align="center"
                width="200"
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-edit"></i>修改</span
                    ></el-button
                  >
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleDelete(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><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>
      </div>
    </div>
    <!-- æ·»åŠ ç±»åˆ«å¼¹æ¡† -->
    <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.intertcatid"
              :label="item.categoryname"
              :value="item.intertcatid"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.categoryname"
            autocomplete="off"
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import {
  getgenerallist,
  addgeneral,
  editgeneral,
  delgeneralinfo,
  delgeneralclassify,
  getgeneralclassify,
  addgeneralclassify,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
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 },
  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: "",
      classifyform: {
        categoryname: "",
      }, //类别表单
      // è¡¨æ ¼æ•°æ®
      targetList: null,
      testuserList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æ—¥æœŸèŒƒå›´
      dateRange: [],
      // æ·»åŠ ã€ä¿®æ”¹å‚æ•°
      indexform: {},
      sidecolumnform: {}, //添加类别表单
      dialogFormVisible: false, //添加类别弹框
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      courtyardlist: [],
      mode: [],
      optionstag: [],
      targetoptionList: [],
      deptOptions: [],
      defaultProps: {
        children: "ivrLibaTargetAssortList",
        label: "categoryname",
      },
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
      },
      // è¡¨å•校验
      rules: {},
    };
  },
  watch: {
    // æ ¹æ®åç§°ç­›é€‰éƒ¨é—¨æ ‘
    sidecolumnval(val) {
      this.$refs.tree.filter(val);
    },
  },
  created() {
    this.getList();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.valuetype = store.getters.valuetype;
    this.languagelist = store.getters.languagelist;
    this.courtyardlist = store.getters.courtyardlist;
    this.usable = store.getters.usable;
  },
  methods: {
    /** æŸ¥è¯¢é€šç”¨åº“列表 */
    getList() {
      this.loading = true;
      getgenerallist(this.queryParams).then((res) => {
        this.targetList = res.rows;
        this.total = res.total;
        console.log(this.targetList);
        this.loading = false;
      });
    },
    processElement(element) {
      return { ...element, isoperation: 1 };
    },
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    //删除分类
    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;
      }
    },
    /** æŸ¥è¯¢éƒ¨é—¨ä¸‹æ‹‰æ ‘结构 */
    getDeptTree() {
      getgeneralclassify({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.categoryname.indexOf(value) !== -1;
    },
    // æ·»åŠ ç±»åˆ«æ ‘
    submitsidecolumn() {
      let calssvalue = {};
      if (
        this.classifyform.pid &&
        this.classifyform.categoryname &&
        this.radio == "子分类"
      ) {
        const index = this.deptOptions.findIndex(
          (obj) => obj.intertcatid == this.classifyform.pid
        );
        calssvalue = this.deptOptions[index];
        console.log(calssvalue);
        calssvalue.ivrLibaTargetAssortList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.categoryname) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaTargetAssortList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addgeneralclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.categoryname + '"的数据项?')
          .then(function () {
            return delgeneralclassify(b.intertcatid);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.categoryname +
              '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delgeneralclassify(b.intertcatid);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      }
    },
    handleNodeClick(data) {
      this.queryParams.groupID = data.intertcatid;
      this.getList();
    },
    // å–消按钮
    cancel() {
      this.indexopen = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.indexform = {
        suitWay: undefined,
        targetid: undefined,
        targetdesc: undefined,
        baseTagList: [],
        targetoptionList: [],
      };
      this.resetForm("indexform");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
      };
      this.resetForm("queryForm");
      this.getList();
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.targetid);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.title = "新增通用库";
      this.indexform = {
        baseTagList: [],
        targetoptionList: [],
      };
      this.testuserList = [
        {
          guid: 1,
          isoperation: 1,
          targettype: "1",
          targetvalue: "",
          targetregex: "",
        },
      ];
      this.indexopen = true;
      this.measurement = false;
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.$router.push({
        path: "/knowledge/general/particulars/",
        query: { id: row.id },
      });
    },
    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.$refs["indexform"].validate((valid) => {
        this.indexform.targetoptionList = this.testuserList.concat(
          this.targetoptionList
        );
        if (valid) {
          if (this.indexform.targetid != undefined) {
            this.indexform.isoperation = 2;
            editgeneral(this.indexform).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.indexopen = false;
              this.getList();
            });
          } else {
            this.indexform.targettype = "1";
            this.indexform.isoperation = 1;
            addgeneral(this.indexform).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.indexopen = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.targetid || this.ids;
      this.$modal
        .confirm('是否确认删除通用库名称为"' + row.targetname + '"的数据项?')
        .then(function () {
          return delgeneralinfo(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: #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);
  .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;
  }
}
.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-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>
src/views/repositoryai/general/particulars/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,307 @@
<template>
  <div>
    <el-card style="margin: 20px" class="box-card">
      <div class="elcardiv">
        <div class="leftvlue-jbxx">话术列表</div>
        <el-divider></el-divider>
        <el-table :data="targetList" :row-class-name="tableRowClassName">
          <el-table-column
            label="序号"
            align="center"
            key="targetid"
            prop="targetid"
          />
          <el-table-column
            label="问题主题(缺)"
            align="center"
            key="extName"
            prop="extName"
            width="200"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="问题文本"
            align="center"
            key="switchText"
            width="250"
            prop="switchText"
            :show-overflow-tooltip="true"
          >
          </el-table-column>
          <el-table-column
            label="回复语音(缺)"
            align="center"
            key="switchTexty"
            width="200"
            prop="switchTexty"
            :show-overflow-tooltip="true"
          >
          </el-table-column>
          <el-table-column
            label="适用方式(缺)"
            align="center"
            key="suitWay"
            prop="suitWay"
          >
            <template slot-scope="scope">
              <span v-for="item in scope.row.suitWay">{{ item }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="语言(缺)"
            align="center"
            key="language"
            prop="language"
            width="120"
          />
          <el-table-column
            label="是否可用(改)"
            align="center"
            key="isEnable"
            prop="isEnable"
          >
            <template slot-scope="scope">
              <dict-tag :options="usable" :value="scope.row.isEnable" />
            </template>
          </el-table-column>
          <el-table-column
            label="最近修改"
            align="center"
            key="updateTime"
            width="250"
            prop="updateTime"
            :show-overflow-tooltip="true"
          >
          </el-table-column>
          <el-table-column
            label="操作"
            align="center"
            width="200"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row)"
                v-hasPermi="['system:user:edit']"
                ><span class="button-textxg"
                  ><i class="el-icon-edit"></i>修改</span
                ></el-button
              >
              <el-button
                size="medium"
                type="text"
                @click="handleDelete(scope.row)"
                v-hasPermi="['system:user:remove']"
                ><span class="button-textsc"
                  ><i class="el-icon-delete"></i>删除</span
                ></el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <div style="margin: 15px; margin-top: 50px">
          <div class="leftvlue-jbxx">话术编辑</div>
          <el-divider></el-divider>
          <el-form
            :model="ruleForm"
            :rules="rules"
            ref="ruleForm"
            label-width="100px"
            class="demo-ruleForm"
          >
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="问题主题" prop="name">
                  <el-input v-model="ruleForm.name" placeholder="请输入"></el-input> </el-form-item
              ></el-col>
              <el-col :span="12">
                <el-form-item label="是否可用" prop="resource">
                  <el-select
                    v-model="ruleForm.assortid"
                    placeholder="请选择状态"
                  >
                    <el-option
                      v-for="item in usable"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select> </el-form-item
              ></el-col>
            </el-row>
            <el-form-item label="问题文本" prop="name">
              <el-input v-model="ruleForm.name" placeholder="请输入"></el-input>
            </el-form-item>
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="语言" prop="resource">
                  <el-select v-model="ruleForm.language" placeholder="请选择">
                    <el-option
                      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="resource">
                  <el-select v-model="ruleForm.mode" 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-col>
            </el-row>
            <el-form-item label="问题语音" prop="verbaltrickyy">
              <el-upload
                class="upload-demo"
                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-input v-model="indexform.userName" maxlength="30" /> -->
            </el-form-item>
            <el-form-item label="匹配文本" prop="desc">
              <el-input type="textarea" placeholder="请输入匹配正则" v-model="ruleForm.desc"></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="submitForm('ruleForm')"
                >立即创建</el-button
              >
              <el-button @click="resetForm('ruleForm')">重置</el-button>
            </el-form-item>
          </el-form>
        </div>
      </div>
    </el-card>
  </div>
</template>
<script>
import store from "@/store";
import {
  editgeneravaluel,
  addgeneravaluel,
  getgeneravaluelinfo,
  delgeneravaluelinfo,
  getgeneravaluellist,
} from "@/api/AiCentre/index";
export default {
  data() {
    return {
      loading: false,
      id: null,
      usable: [],
      languagelist: [],
      mode: [],
      pitchon: "还好吗",
      targetList: [{ switchText: "还好吗" }, { switchText: "还不错" }],
      fileList: [
        {
          name: "food.jpeg",
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      ruleForm: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "*(人|打|班啊|唔系真人(è¾¹|咽|咩)*(单位|地方医院|中心|卫生|议员|服务)",
      },
      rules: {},
    };
  },
  created() {
    // this.getList();
    this.usable = store.getters.usable;
    this.languagelist = store.getters.languagelist;
    this.mode = store.getters.mode;
  },
  methods: {
    getList() {
      this.loading = true;
      this.id = this.$route.query.id;
      getgeneravaluelinfo({ pid: this.id }).then((res) => {
        this.targetList = res.rows;
        console.log(this.targetList);
        this.loading = false;
      });
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {},
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.pitchon = row.switchText;
    },
    submitForm() {},
    resetForm() {},
    // æ–‡ä»¶----------------------
    // æŽ§åˆ¶æ–‡ä»¶
    handleChange(file, fileList) {
      this.fileList = fileList.slice(-3);
    },
    // æ–‡ä»¶è¶…出个数限制时的钩子
    handleExceed(files, fileList) {
      this.$message.warning(
        `当前限制选择 1 ä¸ªæ–‡ä»¶ï¼Œæœ¬æ¬¡é€‰æ‹©äº† ${files.length} ä¸ªæ–‡ä»¶ï¼Œå…±é€‰æ‹©äº† ${
          files.length + fileList.length
        } ä¸ªæ–‡ä»¶`
      );
    },
    tableRowClassName({ row, rowIndex }) {
      if (row.switchText == this.pitchon) {
        console.log(123);
        return "warning-row";
      }
      return "";
    },
  },
};
</script>
<style lang="scss" scoped>
.elcardiv {
  padding: 10px;
  .leftvlue-jbxx {
    font-size: 24px;
    border-left: 5px solid #5788fe;
    padding-left: 5px;
    margin: 15px 0;
  }
}
.button-textxg {
  color: rgb(35, 81, 233);
}
.button-textsc {
  color: rgb(235, 23, 23);
}
::v-deep.el-table .warning-row {
  background: rgb(193, 208, 250);
}
</style>
src/views/repositoryai/intention/index.vue
@@ -173,8 +173,8 @@
              <el-table-column
                label="序号"
                align="center"
                key="targetID"
                prop="targetID"
                key="targetid"
                prop="targetid"
              />
              <el-table-column
                label="值类型"
@@ -827,7 +827,7 @@
    // ç–¾ç—…-----------------------
    illnessUpdate(row) {
      this.illnessVisible = true;
      this.indexid = row.targetID;
      this.indexid = row.targetid;
      this.illnesslistapi = [];
      const illnessqueryParams = {
        pageNum: 1,
@@ -837,7 +837,7 @@
        console.log(response);
        this.optionsillness = response.rows;
      });
      getillness({ outid: row.targetID, type: 1 }).then((res) => {
      getillness({ outid: row.targetid, type: 1 }).then((res) => {
        this.illnesslist = res.rows;
        console.log(res);
      });
@@ -1082,7 +1082,7 @@
    reset() {
      this.indexform = {
        suitWay: undefined,
        targetID: undefined,
        targetid: undefined,
        targetdesc: undefined,
        baseTagList: [],
        targetoptionList: [],
@@ -1104,7 +1104,7 @@
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.targetID);
      this.ids = selection.map((item) => item.targetid);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
@@ -1161,7 +1161,7 @@
          this.targetoptionList
        );
        if (valid) {
          if (this.indexform.targetID != undefined) {
          if (this.indexform.targetid != undefined) {
            this.indexform.isoperation = 2;
            gettargetInfoedit(this.indexform).then((response) => {
              this.$modal.msgSuccess("修改成功");
@@ -1182,7 +1182,7 @@
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.targetID || this.ids;
      const userIds = row.targetid || this.ids;
      this.$modal
        .confirm('是否确认删除指标名称为"' + row.targetname + '"的数据项?')
        .then(function () {
src/views/repositoryai/templateku/index.vue
@@ -210,7 +210,7 @@
              >
                <template slot-scope="scope">
                  <div v-if="scope.row.deptNames">
                    <span v-for="item in scope.row.deptNames.split(",")"
                    <span v-for="item in scope.row.deptNames.split(',')"
                      >{{ item }}
                    </span>
                  </div>
@@ -225,15 +225,15 @@
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope" >
                <template slot-scope="scope">
                  <div v-if="scope.row.labelInfo">
                    <span v-for="item in JSON.parse(scope.row.labelInfo)"
                      >{{ item.tagname }}</span>
                    <span v-for="item in JSON.parse(scope.row.labelInfo)">{{
                      item.tagname
                    }}</span>
                  </div>
                  <div v-else>
                    <span>无</span>
                  </div>
                  </span>
                </template>
              </el-table-column>
              <el-table-column
@@ -244,9 +244,11 @@
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope"  >
                <template slot-scope="scope">
                  <div v-if="scope.row.campus">
                    <span v-for="item in JSON.parse(scope.row.campus)">{{ item.label }} </span>
                    <span v-for="item in JSON.parse(scope.row.campus)"
                      >{{ item.label }}
                    </span>
                  </div>
                  <div v-else>
                    <span>无</span>
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -157,7 +157,7 @@
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                v-if="item"
                  v-if="item"
                  type="danger"
                  icon="el-icon-delete"
                  circle
@@ -578,9 +578,7 @@
      ],
      qyoptions: [],
      options: [],
      variablelist: [
      ],
      variablelist: [],
      addvalue: "添加题目",
      languagelist: [], //语言列表
@@ -613,7 +611,9 @@
      getverbaltrick({ id: id }).then((res) => {
        this.indexform = res.data;
        this.indexform.assortid = parseInt(this.indexform.assortid);
        this.variablelist = JSON.parse(this.indexform.parameter)?JSON.parse(this.indexform.parameter):[{name:'',value:''}];
        this.variablelist = JSON.parse(this.indexform.parameter)
          ? JSON.parse(this.indexform.parameter)
          : [{ name: "", value: "" }];
        this.dynamicTags = this.indexform.ivrLibaScriptTagList.map(
          this.processElement
        );
@@ -671,7 +671,7 @@
        if (this.indexform.ivrLibaScriptTargetoptionList.length) {
          return this.Editprogress++;
        }
        gettargetInfo({ targetID: this.indexform.targetid }).then((res) => {
        gettargetInfo({ targetid: this.indexform.targetid }).then((res) => {
          this.indexform.isenable = res.rows[0].isenable;
          this.indexform.targetname = res.rows[0].targetname;
          res.rows[0].targetoptionList.forEach((item) => {