WXL
2024-01-11 3b774a197bd7087ee42999937ccc1e7e048eb1aa
指标完成
已添加3个文件
已修改22个文件
2595 ■■■■■ 文件已修改
src/api/AiCentre/Hetask.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Qtemplate.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/questionnaire.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 97 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/regular.js 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/compilequer/index.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/education/index.vue 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/index.vue 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/particulars/index.vue 354 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 350 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/index.vue 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/general/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/general/particulars/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/intention/index.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/index.vue 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/particulars/index.vue 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/shortmessage/healthinformation/index.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dept/index.vue 190 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Hetask.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
import request from "@/utils/request";
// æŸ¥è¯¢å®£æ•™ä»»åŠ¡åˆ—è¡¨
export function gethetasklist(data) {
  return request({
    url: "/smartor/hetask/list",
    method: "post",
    data: data,
  });
}
// åˆ é™¤å®£æ•™ä»»åŠ¡
export function delhetaskinfo(Id) {
    return request({
      url: "/smartor/hetask/remove/" + Id,
      method: "get",
    });
  }
    // æŸ¥è¯¢å®£æ•™ä»»åŠ¡è¯¦æƒ…åˆ—è¡¨
    export function gethetaskinfo(Id) {
    return request({
      url: "/smartor/hetask/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæ¨¡ç‰ˆ
export function addhetask(data) {
    return request({
      url: "/smartor/hetask/add",
      method: "post",
      data: data,
    });
  }
//   ä¿®æ”¹å®£æ•™ä»»åŠ¡
  export function edithetask(data) {
    return request({
      url: "/smartor/hetask/edit",
      method: "post",
      data: data,
    });
  }
  //   èŽ·å–æ‚£è€…ä¿¡æ¯
  export function getTaskpatient(data) {
    return request({
      url: "/smartor/hetask/getPatientInfo",
      method: "post",
      data: data,
    });
  }
src/api/AiCentre/Qtemplate.js
@@ -50,7 +50,7 @@
  // æŸ¥è¯¢é—®å·æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function getQtemplateclassify(data) {
    return request({
      url: "/smartor/svyLibTitleCategory/selectIvrLibasvytitleList",
      url: "/smartor/svyLibTitleCategory/list",
      method: "post",
      data: data,
    });
src/api/AiCentre/index.js
@@ -5,4 +5,6 @@
export * from './publicity'
export * from './Qtemplate'
export * from './questionnaire'
export * from './Hetask'
src/api/AiCentre/questionnaire.js
@@ -50,7 +50,7 @@
  // æŸ¥è¯¢é—®å·é—®é¢˜åˆ†ç±»æ ‘
  export function getissueclassify(data) {
    return request({
      url: "/smartor/svyLibTopicCategory/selectIvrLibasvytitleList",
      url: "/smartor/svyLibTopicCategory/list",
      method: "post",
      data: data,
    });
src/components/Regular/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,294 @@
<template>
  <div>
    <div class="topicxq" v-for="item in TargetoptionList">
      <el-row :gutter="10">
        <el-col :span="12"
          ><el-form-item label="选项名">
            <el-input
              type="text"
              placeholder="请输入"
              v-model="item.targetvalue"
              show-word-limit
            >
            </el-input> </el-form-item
        ></el-col>
        <el-col :span="12"
          ><el-form-item label="节点ID">
            <el-input
              type="text"
              placeholder="请输入节点"
              v-model="item.targetid"
              show-word-limit
            >
            </el-input> </el-form-item
        ></el-col>
      </el-row>
      <el-row :gutter="10">
        <el-col :span="12"
          ><el-form-item label="处理">
            <el-input
              type="text"
              placeholder="(默认)无声"
              v-model="item.text"
              maxlength="10"
              show-word-limit
            >
            </el-input> </el-form-item
        ></el-col>
        <el-col :span="12"
          ><el-form-item label="选中跳转(缺)">
            <el-input
              type="text"
              placeholder="请输入题目节点"
              v-model="item.jump"
              show-word-limit
            >
            </el-input> </el-form-item
        ></el-col>
      </el-row>
      <el-form-item label="关键字(含)" prop="desc">
        <div class="xinz-inf">
          <el-tag
            :key="crux"
            type="success"
            v-for="crux in dynamiccruxs"
            closable
            :disable-transitions="false"
            @close="handleClosecrux(crux)"
          >
            {{ crux }}
          </el-tag>
          <el-select
            v-model="inputValue"
            v-if="inputVisible"
            @change="handleInputConfirm"
            filterable
            remote
            reserve-keyword
            default-first-option
            :loading="loading"
            placeholder="请选择"
          >
            <el-option
              v-for="item in regular"
              :key="item.label"
              :label="item.label"
              :value="item.label"
            >
            </el-option>
          </el-select>
          <el-button
            v-else
            class="button-new-tag"
            size="small"
            @click="showInput"
            >+ æ–°å¢ž</el-button
          >
        </div>
      </el-form-item>
      <el-form-item label="关键字(非)" prop="desc">
        <div class="xinz-inf">
          <el-tag
            :key="crux"
            type="warning"
            v-for="crux in nodynamiccruxs"
            closable
            :disable-transitions="false"
            @close="handleClosecrux(crux)"
          >
            {{ crux }}
          </el-tag>
          <el-select
            v-model="inputValue"
            v-if="noinputVisible"
            @change="handleInputConfirm"
            filterable
            remote
            reserve-keyword
            default-first-option
            :loading="loading"
            placeholder="请选择"
          >
            <el-option
              v-for="item in noregular"
              :key="item.value"
              :label="item.label"
              :value="item.label"
            >
            </el-option>
          </el-select>
          <el-button
            v-else
            class="button-new-tag"
            size="small"
            @click="showInputno"
            >+ æ–°å¢ž</el-button
          >
        </div>
      </el-form-item>
      <el-row :gutter="10">
        <el-col :span="16">
          <el-form-item label="语音文件">
            <el-upload
              class="upload-demo"
              style="display: flex"
              action="https://jsonplaceholder.typicode.com/posts/"
              :on-change="handleChange"
              :file-list="fileList"
              :limit="1"
              :on-exceed="handleExceed"
            >
              <el-button size="small" type="primary">点击上传</el-button>
            </el-upload>
          </el-form-item></el-col
        >
        <el-col :span="8">
          <div style="text-align: right; padding-right: 10px">
            <el-button type="danger" @click="deloption(item)" round
              >删除</el-button
            >
          </div>
        </el-col>
      </el-row>
    </div>
  </div>
</template>
<script>
import store from "@/store";
export default {
  data() {
    return {
      zz1: "^(?!.不)(.(我|ä½ |他|可以|是|好|知道|没错)+.*)$",
      zz2: "^(?!.不)(?=.?(我|ä½ |他|可以|是|好|知道|没错)).*$",
      fileList: [
        {
          name: "food.jpeg",
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      whether: 1, //1为关键词,2为否定关键词
      inputValue: "",
      inputVisible: false,
      noinputVisible: false,
      loading: false,
      regular: [],
      noregular: [],
      nodynamiccruxs: ["别"],
      dynamiccruxs: ["好"],
    };
  },
  props: {
    TargetoptionList: {
      type: Array,
      required: true,
      default: () => [],
    },
  },
  created() {
    this.regular = store.getters.regular;
    this.noregular = store.getters.noregular;
  },
  methods: {
    // ç”Ÿæˆæ­£åˆ™
    generateRegex() {
      let regex = "";
      let regexno = "";
      let hostregex = "";
      for (let i = 0; i < this.dynamiccruxs.length; i++) {
        regex += `${this.dynamiccruxs[i]}|`;
      }
      for (let i = 0; i < this.nodynamiccruxs.length; i++) {
        regexno += `${this.nodynamiccruxs[i]}|`;
      }
      regex = regex.slice(0, -1);
      regexno = regexno.slice(0, -1);
      hostregex = "^(?!." + `${regexno}` + ")(.(" + `${regex}` + ")+.*)$";
      console.log(hostregex);
    },
    // æŽ§åˆ¶æ–‡ä»¶
    handleChange(file, fileList) {
      this.fileList = fileList.slice(-3);
    },
    // æ–‡ä»¶è¶…出个数限制时的钩子
    handleExceed(files, fileList) {
      this.$message.warning(
        `当前限制选择 1 ä¸ªæ–‡ä»¶ï¼Œæœ¬æ¬¡é€‰æ‹©äº† ${files.length} ä¸ªæ–‡ä»¶ï¼Œå…±é€‰æ‹©äº† ${
          files.length + fileList.length
        } ä¸ªæ–‡ä»¶`
      );
    },
    handleClosecrux(crux) {
      if (this.whether == 1) {
        this.dynamiccruxs.splice(this.dynamiccruxs.indexOf(crux), 1);
      } else {
        this.nodynamiccruxs.splice(this.nodynamiccruxs.indexOf(crux), 1);
      }
      this.generateRegex();
    },
    handleInputConfirm() {
      if (this.whether == 1 && this.inputValue) {
        if (this.dynamiccruxs.indexOf(this.inputValue) == -1) {
          this.dynamiccruxs.push(this.inputValue);
        } else {
          this.$message.error("关键字已存在");
        }
        this.inputVisible = false;
      } else if (this.whether == 2 && this.inputValue) {
        console.log(this.inputValue);
        console.log(this.nodynamiccruxs.indexOf(this.inputValue));
        if (this.nodynamiccruxs.indexOf(this.inputValue) == -1) {
          this.nodynamiccruxs.push(this.inputValue);
        } else {
          this.$message.error("关键字已存在");
        }
        this.noinputVisible = false;
      }
      this.generateRegex();
      this.inputValue = "";
    },
    showInput() {
      this.inputVisible = true;
      this.whether = 1;
    },
    showInputno() {
      this.noinputVisible = true;
      this.whether = 2;
      console.log(2);
    },
  },
};
</script>
<style lang="scss" scoped>
.topicxq {
  background-color: #e2f5fc;
  border-radius: 4px;
  margin-top: 10px;
  padding: 10px;
}
.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;
}
</style>
src/store/getters.js
@@ -15,6 +15,9 @@
  topbarRouters: (state) => state.permission.topbarRouters,
  defaultRoutes: (state) => state.permission.defaultRoutes,
  sidebarRouters: (state) => state.permission.sidebarRouters,
  // æ­£åˆ™
  regular: (state) => state.regular.regular,
  noregular: (state) => state.regular.noregular,
  // é€‚用方式
  mode: (state) => [
    {
@@ -88,11 +91,11 @@
      },
    },
  ],
  // ä¼˜å…ˆæ‰§è¡Œ
  precedencetype: (state) => [
   // æ˜¯å¦å¿…å¡«
   required: (state) => [
    {
      value: "0",
      label: "语音优先",
      label: "必填",
      raw: {
        cssClass: "",
        listClass: "",
@@ -100,6 +103,25 @@
    },
    {
      value: "1",
      label: "非必填",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
  // ä¼˜å…ˆæ‰§è¡Œ
  precedencetype: (state) => [
    {
      value: 0,
      label: "语音优先",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: 1,
      label: "文字优先",
      raw: {
        cssClass: "",
@@ -164,53 +186,97 @@
  // å®£æ•™æ–¹å¼
  editableTabs: (state) => [
    {
      value: "短信",
      label: "1",
      label: "短信",
      value: "1",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "钉钉",
      label: "2",
      label: "钉钉",
      value: "2",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "微信",
      label: "3",
      label: "微信",
      value: "3",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "电话",
      label: "4",
      label: "电话",
      value: "4",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "线下",
      label: "5",
      label: "线下",
      value: "5",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "智能语音",
      label: "6",
      label: "智能语音",
      value: "6",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
  // å®£æ•™å½¢å¼
  editabshape  : (state) => [
    {
      label: "文本",
      value: "1",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      label: "图片",
      value: "2",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      label: "语音",
      value: "3",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      label: "视频",
      value: "4",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      label: "混合",
      value: "5",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
  // é¢˜ç›®ç±»åˆ«
  xjxsoptions:(state) => [
@@ -232,6 +298,7 @@
    },
  ],
  // æ­£åˆ™
};
export default getters;
src/store/index.js
@@ -3,6 +3,7 @@
import app from './modules/app'
import dict from './modules/dict'
import user from './modules/user'
import regular from './modules/regular'
import tagsView from './modules/tagsView'
import permission from './modules/permission'
import settings from './modules/settings'
@@ -15,6 +16,7 @@
    app,
    dict,
    user,
    regular,
    tagsView,
    permission,
    settings
src/store/modules/regular.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
const user = {
  state: {
    regular: [
      { value: "1", label: "优" },
      { value: "2", label: "美" },
      { value: "3", label: "善" },
      { value: "4", label: "美好" },
      { value: "5", label: "幸福" },
      { value: "6", label: "甜美" },
      { value: "7", label: "可爱" },
      { value: "8", label: "美满" },
      { value: "9", label: "美丽" },
      { value: "10", label: "快乐" },
      { value: "11", label: "幸福美满" },
      { value: "12", label: "美好幸福" },
      { value: "13", label: "美满幸福" },
      { value: "14", label: "美丽幸福" },
      { value: "15", label: "美好快乐" },
      { value: "16", label: "幸福快乐" },
      { value: "17", label: "美满快乐" },
      { value: "18", label: "美丽快乐" },
      { value: "19", label: "美好甜美" },
      { value: "20", label: "幸福甜美" },
      { value: "21", label: "美满甜美" },
      { value: "22", label: "美丽甜美" },
      { value: "23", label: "善良美好" },
      { value: "24", label: "优美幸福" },
      { value: "25", label: "善良幸福" },
      { value: "26", label: "优美快乐" },
      { value: "27", label: "善良快乐" },
      { value: "28", label: "优美甜美" },
      { value: "29", label: "善良甜美" },
      { value: "30", label: "美好可爱" },
    ],
    noregular: [
      { value: "1", label: "否" },
      { value: "2", label: "未" },
      { value: "3", label: "非" },
      { value: "4", label: "无" },
      { value: "5", label: "不是" },
      { value: "6", label: "不可" },
      { value: "7", label: "不行" },
      { value: "8", label: "不合" },
      { value: "9", label: "不良" },
      { value: "10", label: "不善" },
      { value: "11", label: "不好" },
      { value: "12", label: "不美" },
      { value: "13", label: "不幸" },
      { value: "14", label: "不甜" },
      { value: "15", label: "不可爱" },
      { value: "16", label: "不满" },
      { value: "17", label: "不快" },
      { value: "18", label: "不甜美" },
      { value: "19", label: "不善良" },
      { value: "20", label: "不优美" },
      { value: "21", label: "不美满" },
      { value: "22", label: "不幸福" },
      { value: "23", label: "不可爱" },
      { value: "24", label: "不美好" },
      { value: "25", label: "不可取" },
      { value: "26", label: "不可信" },
      { value: "27", label: "不可行" },
      { value: "28", label: "不可靠" },
      { value: "29", label: "不可理" },
      { value: "30", label: "不可用" },
    ],
  },
  mutations: {},
  actions: {},
  getters: {},
};
export default user;
src/utils/request.js
@@ -49,7 +49,7 @@
      const s_url = sessionObj.url;                  // è¯·æ±‚地址
      const s_data = sessionObj.data;                // è¯·æ±‚数据
      const s_time = sessionObj.time;                // è¯·æ±‚æ—¶é—´
      const interval = 50;                         // é—´é𔿗¶é—´(ms),小于此时间视为重复提交
      const interval = 10;                         // é—´é𔿗¶é—´(ms),小于此时间视为重复提交
      if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
        const message = '数据正在处理,请勿重复提交';
        console.warn(`[${s_url}]: ` + message)
src/views/knowledge/education/compilequer/index.vue
@@ -23,7 +23,7 @@
        >
          <el-form-item label="宣教分类" prop="region">
            <el-select
              v-model="ruleForm.groupID"
              v-model="ruleForm.assortid"
              size="medium"
              filterable
              placeholder="请选择分类"
@@ -38,39 +38,48 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="宣教标题" prop="extName">
          <el-form-item label="宣教标题" prop="preachname">
            <div style="width: 30%">
              <el-input v-model="ruleForm.extName"></el-input>
              <el-input v-model="ruleForm.preachname"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="宣教描述" prop="extName">
          <el-form-item label="宣教描述" prop="preachdescription">
            <div style="width: 30%">
              <el-input v-model="ruleForm.note"></el-input>
              <el-input v-model="ruleForm.preachdescription"></el-input>
            </div>
          </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-col>
              <el-col :span="8" :offset="1">
                <el-input v-model="item.value"></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
                  type="success"
                  icon="el-icon-plus"
                  circle
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                  type="danger"
                  icon="el-icon-delete"
                  circle
                  @click="delvariable(item)"
                ></el-button>
              </el-col>
            </el-row>
            <div style="margin-bottom: 5px" v-for="item in variablelist">
              <el-row>
                <el-col :span="5">
                  <el-input
                    v-model="item.variatename"
                    placeholder="请输入变量名"
                  ></el-input>
                </el-col>
                <el-col :span="8" :offset="1">
                  <el-input
                    v-model="item.variate"
                    placeholder="请输入变量内容"
                  ></el-input>
                </el-col>
                <el-col :span="8" :offset="1">
                  <el-button
                    type="success"
                    icon="el-icon-plus"
                    circle
                    @click="addvariable(item)"
                  ></el-button>
                  <el-button
                    v-if="!item.default"
                    type="danger"
                    icon="el-icon-delete"
                    circle
                    @click="delvariable(item)"
                  ></el-button>
                </el-col>
              </el-row>
            </div>
          </el-form-item>
          <el-form-item label="文件" prop="sickness">
@@ -137,9 +146,8 @@
            <el-col :span="9">
              <el-form-item label="可用状态" prop="region">
                <el-select
                  v-model="ruleForm.isEnable"
                  v-model="ruleForm.isavailable"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                >
@@ -156,7 +164,7 @@
          </el-row>
          <el-form-item label="宣教方式" prop="region">
            <el-select
              v-model="ruleForm.way"
              v-model="ruleForm.suitway"
              size="medium"
              multiple
              filterable
@@ -164,10 +172,10 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in xjxsoptions"
                :key="item.value"
                v-for="item in mode"
                :key="item.label"
                :label="item.label"
                :value="item.value"
                :value="item.label"
              >
              </el-option>
            </el-select>
@@ -215,7 +223,7 @@
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.courtyard"
              v-model="ruleForm.campus"
              size="medium"
              filterable
              placeholder="请选择分类"
@@ -231,22 +239,18 @@
            </el-select>
          </el-form-item>
          <el-form-item label="适用科室" prop="region">
            <el-select
              v-model="ruleForm.administrative"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            <el-cascader
              v-model="tempDetpRelevanceslist"
              :options="deptList"
              :props="props"
              :show-all-levels="false"
              clearable
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
              <template slot-scope="{ node, data }">
                <span>{{ data.deptName }}</span>
                <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
              </template>
            </el-cascader>
          </el-form-item>
          <el-form-item>
            <el-button type="success" @click="nextstep('ruleForm')"
@@ -264,10 +268,10 @@
          <el-col :span="12">
            <div>
              <el-button @click="laststep('ruleForm')">上一步</el-button>
              <el-button type="success" @click="submitForm('ruleForm')"
              <el-button type="success" @click="Departmenttreatment('ruleForm')"
                >保存</el-button
              >
              <el-button type="warning" @click="submitForm('ruleForm')"
              <el-button type="warning" @click="Departmenttreatment('ruleForm')"
                >另存新版本</el-button
              >
              <el-button type="info" @click="closeFm('ruleForm')"
@@ -276,6 +280,19 @@
            </div></el-col
          >
        </el-row>
        <el-row>
          <el-col :span="24">
            <div style="display: flex; margin-left: 66px; margin-bottom: 10px">
              <div
                v-for="item in variablelist"
                class="tsgname"
                @click="tsgnameto(item)"
              >
                {{ item.variatename }}
              </div>
            </div>
          </el-col></el-row
        >
        <div>
          <el-form
@@ -342,6 +359,7 @@
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
// import * as Quill from "quill";
import Quill from "quill";
import { listtag } from "@/api/system/label";
@@ -459,6 +477,9 @@
      illnesslist: [],
      options: [],
      optionstag: [],
      deptList: [],
      tempDetpRelevanceslist: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      xjxsoptions: [
        {
          value: "1",
@@ -483,10 +504,9 @@
      addvalue: "添加题目",
      variablelist: [
        {
          variable: "paitent",
          value: "表示患者的标识",
        },
        { variatename: "姓名", variate: "${name}", default: 1 },
        { variatename: "电话", variate: "${phone}", default: 1 },
        { variatename: "病情", variate: "${illness}", default: 1 },
      ],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
@@ -519,11 +539,20 @@
      this.loading = true;
      getlibraryinfo({ id: this.$route.query.id }).then((res) => {
        this.ruleForm = res.data;
        this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
        this.ruleForm.suitway = this.ruleForm.suitway.split(",");
        this.variablelist = JSON.parse(this.ruleForm.otherdata)
          ? JSON.parse(this.ruleForm.otherdata)
          : this.variablelist;
      });
      getheLibraryAssort({}).then((res) => {
        this.sortlist = res.rows;
        console.log(res);
      });
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
      this.loading = false;
    },
    /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
    gettabList() {
@@ -537,18 +566,28 @@
        this.optionstag = response.rows;
      });
    },
    // å®Œæˆ
    submitForm(formName) {
      this.rules = this.rulesa;
      //   æäº¤
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("submit!");
        } else {
          console.log("error submit!!");
          return false;
        }
      let tgs = [];
      this.dynamicTags.forEach((item) => {
        tgs.push(item.tagname);
      });
      this.ruleForm.labelInfo = tgs.join(",");
      this.ruleForm.otherdata = JSON.stringify(this.variablelist);
      this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      if (this.id) {
        this.ruleForm.isoperation = 2;
        compilelibrary(this.ruleForm).then((response) => {
          this.$modal.msgSuccess("修改成功");
          this.$router.go(-1);
        });
      } else {
        this.ruleForm.isoperation = 1;
        compilelibrary(this.ruleForm).then((response) => {
          this.$modal.msgSuccess("新增成功");
          this.$router.go(-1);
        });
      }
    },
    // ä¸‹ä¸€æ­¥
    nextstep() {
@@ -577,6 +616,42 @@
          });
        });
    },
    // ç§‘室处理
    Departmenttreatment() {
      this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist);
      console.log(this.tempDetpRelevanceslist);
      const result = this.tempDetpRelevanceslist.map(
        (subArr) => subArr[subArr.length - 1]
      );
      console.log(result);
      // id数组查数组对象
      result.forEach((item) => {
        const condition = this.ruleForm.tempDetpRelevances.some(
          (obj) => obj.deptId === item
        );
        if (!condition) {
          listDept({ deptId: item }).then((res) => {
            console.log(res.data[0]);
            res.data[0].type = 2;
            this.ruleForm.tempDetpRelevances.push(res.data[0]);
          });
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      // æ•°ç»„对象查id数组
      this.ruleForm.tempDetpRelevances.forEach((item) => {
        const condition = result.some((obj) => obj === item.deptId);
        if (!condition) {
          const index = this.ruleForm.tempDetpRelevances.indexOf(item);
          this.ruleForm.tempDetpRelevances[index].delFlag = 1;
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      setTimeout(() => {
        this.submitForm();
      }, 1000);
      // this.submitForm();
    },
    // ä¿å­˜é¢˜ç›®ä¿¡æ¯
    Saveproblem() {},
    /** æŸ¥è¯¢é¢˜ç›®åˆ—表 */
@@ -584,8 +659,8 @@
    // æ–°å¢žå˜é‡
    addvariable() {
      this.variablelist.push({
        variable: "",
        value: "",
        variatename: "",
        variate: "",
      });
    },
    // åˆ é™¤å˜é‡
@@ -618,7 +693,7 @@
      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;
      this.ruleForm.heLibraryTagList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let tagvalue = {};
@@ -639,7 +714,7 @@
              isoperation: 1,
            };
          }
          this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue);
          this.ruleForm.heLibraryTagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
        });
      }
src/views/knowledge/education/index.vue
@@ -29,7 +29,7 @@
        >
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
            <span v-if="data.id > 0">
              <el-button
                type="text"
                icon="el-icon-delete"
@@ -66,13 +66,21 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="适用科室" prop="sickness">
              <el-form-item label="适用科室" prop="region">
                <el-cascader
                  v-model="queryParams.sickness"
                  :options="optionss"
                  :props="propss"
                  v-model="queryParams.administrative"
                  :options="deptList"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                ></el-cascader>
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.deptName }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item>
              <el-form-item label="通知内容" prop="userName">
                <el-input
@@ -97,10 +105,10 @@
                  placeholder="请选择"
                >
                  <el-option
                    v-for="(item, index) in editableTabs"
                    :key="index++"
                    :label="item.title"
                    :value="index++"
                    v-for="(item, index) in editabshape"
                    :key="item.label"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
@@ -111,7 +119,7 @@
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in qyoptions"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.value"
                    :value="item.label"
@@ -177,8 +185,8 @@
              <el-table-column
                label="标题"
                align="center"
                key="extName"
                prop="extName"
                key="preachname"
                prop="preachname"
                :show-overflow-tooltip="true"
              />
              <el-table-column
@@ -189,15 +197,15 @@
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="主要内容(缺)"
                label="主要内容"
                align="center"
                key="userNamevalue"
                prop="userNamevalue"
                key="preachcontent"
                prop="preachcontent"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="适用疾病(缺)"
                label="适用疾病"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
@@ -215,39 +223,48 @@
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="适用科室(缺)"
                label="标签"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                width="120"
              />
              <el-table-column
                label="标签(缺)"
                align="center"
                key="tagList"
                prop="tagList"
                key="labelInfo"
                prop="labelInfo"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                  <span v-for="item in scope.row.labelInfo.split(',')"
                    >{{ item }}、
                  </span>
                </template>
              </el-table-column>
              <el-table-column
                label="宣教方式(缺)"
                label="适用方式"
                align="center"
                key="cphonenumber"
                prop="cphonenumber"
                key="suitway"
                prop="suitway"
                width="120"
              />
              >
              <template slot-scope="scope">
                  <span v-for="item in scope.row.suitway.split(',')"
                    >{{ item }}、
                  </span>
                </template>
            </el-table-column>
              <el-table-column
                label="资料形式(缺)"
                label="内容形式"
                align="center"
                key="cphonenumbers"
                prop="cphonenumbers"
                key="preachform"
                prop="preachform"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <dict-tag
                    :options="editabshape"
                    :value="scope.row.preachform"
                  />
                </template>
              </el-table-column>
              <el-table-column
                label="最近修改"
                align="center"
@@ -258,10 +275,14 @@
              <el-table-column
                label="是否可用"
                align="center"
                key="isEnable"
                prop="isEnable"
                key="isavailable"
                prop="isavailable"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <dict-tag :options="usable" :value="scope.row.isavailable" />
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
@@ -429,6 +450,7 @@
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
import { getToken } from "@/utils/auth";
import store from "@/store";
@@ -508,9 +530,12 @@
      optionss: [],
      mode: [],
      languagelist: [],
      qyoptions: [],
      editabshape: [],
      usable: [],
      precedencetype: [],
      xjxsoptions: [],
      deptList: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      //类别列表
      editableTabs: [],
@@ -518,6 +543,7 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        isavailable: "",
      },
    };
  },
@@ -527,8 +553,9 @@
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
    this.usable = store.getters.usable;
    this.precedencetype = store.getters.precedencetype;
    this.editabshape = store.getters.editabshape;
  },
  methods: {
@@ -538,6 +565,9 @@
      getlibrarylist(this.queryParams).then((response) => {
        console.log(response);
        this.userList = response.rows;
      });
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
@@ -649,6 +679,7 @@
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
        this.dialogFormVisible = false;
      });
    },
    remove(a, b) {
src/views/knowledge/questionbank/index.vue
@@ -88,8 +88,11 @@
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="是否可用" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
              <el-form-item label="是否可用" prop="isavailable">
                <el-select
                  v-model="queryParams.isavailable"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in qyoptions"
                    :key="item.value"
@@ -165,23 +168,27 @@
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="题目内容(缺)"
                label="题目内容"
                align="center"
                key="nickName"
                prop="nickName"
                key="topicContent"
                prop="topicContent"
                width="200"
                :show-overflow-tooltip="true"
              />
              /><el-table-column
                label="适用方式(缺)"
                label="适用方式"
                align="center"
                key="application"
                prop="application"
                key="suitway"
                prop="suitway"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <dict-tag :options="mode" :value="scope.row.suitway" />
                </template>
              </el-table-column>
              /><el-table-column
                label="适用疾病(缺)"
                label="适用疾病"
                align="center"
                key="Applicable"
                prop="Applicable"
@@ -200,7 +207,7 @@
                </template>
              </el-table-column>
              <el-table-column
                label="标签(缺)"
                label="标签"
                align="center"
                key="tagList"
                prop="tagList"
@@ -208,17 +215,26 @@
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                  <span v-for="item in scope.row.tag.split(',')"
                    >{{ item }}、
                  </span>
                </template>
              </el-table-column>
              <el-table-column
                label="可用(缺)"
                label="可用"
                align="center"
                key="usable"
                prop="usable"
                key="isavailable"
                prop="isavailable"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <dict-tag
                    :options="qyoptions"
                    :value="scope.row.isavailable"
                  />
                </template>
              </el-table-column>
              <el-table-column
                label="最近修改"
                align="center"
@@ -291,17 +307,14 @@
            <el-option
              v-for="item in deptOptions"
              :key="item.id"
              :label="item.indexAssortName"
              :label="item.name"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.indexAssortName"
            autocomplete="off"
          ></el-input>
          <el-input v-model="classifyform.name" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -411,6 +424,7 @@
      // è¡¨æ ¼æ•°æ®
      userList: [],
      // å¼¹å‡ºå±‚标题
      tag: "",
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
@@ -440,7 +454,7 @@
      illnesslist: [],
      defaultProps: {
        children: "svyLibTopicCategoryList",
        label: "indexAssortName",
        label: "name",
      },
      mode: [],
      languagelist: [],
@@ -449,6 +463,7 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        isavailable: "",
      },
      // è¡¨å•校验
      rules: {},
@@ -457,6 +472,7 @@
  watch: {},
  created() {
    this.getList();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
@@ -573,29 +589,31 @@
      let calssvalue = {};
      if (
        this.classifyform.pid &&
        this.classifyform.indexAssortName &&
        this.classifyform.name &&
        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) {
        calssvalue.svyLibTopicCategoryList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.name) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaTemplateAssortList = [];
        this.classifyform.svyLibTopicCategoryList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addissueclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
        this.dialogFormVisible = false;
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
          .confirm('是否确认删除分类项为"' + b.name + '"的数据项?')
          .then(function () {
            return delissueclassify(b.id);
          })
@@ -607,9 +625,7 @@
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.indexAssortName +
              '"?删除后其下分类将归类‘未分类’'
            '是否确认删除一级分类"' + b.name + '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delissueclassify(b.id);
@@ -625,7 +641,7 @@
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.indexAssortName.indexOf(value) !== -1;
      return data.name.indexOf(value) !== -1;
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
src/views/knowledge/questionbank/particulars/index.vue
@@ -6,7 +6,7 @@
          <div class="headline">
            é¢˜ç›®è®¾ç½®è¯¦æƒ…
            <span style="margin-left: 30px"
              ><el-button type="primary" @click="Submittopicobj"
              ><el-button type="primary" @click="compileissue"
                >保存</el-button
              ></span
            >
@@ -23,7 +23,7 @@
              <el-col :span="6"
                ><el-form-item label="是否可用">
                  <el-select
                    v-model="topicobj.ishide"
                    v-model="topicobj.isavailable"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
@@ -41,7 +41,7 @@
              <el-col :span="8"
                ><el-form-item label="语言(缺)">
                  <el-select
                    v-model="topicobj.languageh"
                    v-model="topicobj.language"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
@@ -59,13 +59,23 @@
            </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-form-item label="是否必填">
                  <el-select
                    v-model="topicobj.ismandatory"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
                  >
                    <el-option
                      class="topicobjaa"
                      v-for="item in required"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select> </el-form-item
              ></el-col>
              <el-col :span="6"
                ><el-form-item label="题目类型">
                  <el-select
@@ -85,9 +95,9 @@
                  </el-select> </el-form-item
              ></el-col>
              <el-col :span="8"
                ><el-form-item label="适用方式(缺)">
                ><el-form-item label="适用方式">
                  <el-select
                    v-model="topicobj.languageh"
                    v-model="topicobj.suitway"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
@@ -102,11 +112,13 @@
                    </el-option> </el-select></el-form-item
              ></el-col>
            </el-row>
            <el-form-item label="题目内容(缺)">
            <el-form-item label="题目内容">
              <el-input
                style="width: 40vw"
                type="textarea"
                v-model="topicobj.topic"
                id="questiontext"
                v-model="topicobj.topicContent"
                @focus="handleInput('questiontext')"
                placeholder="请输入标题"
              ></el-input>
            </el-form-item>
@@ -115,14 +127,14 @@
              <el-form-item label="标签" prop="desc">
                <div class="xinz-inf">
                  <el-tag
                    :key="tag.tagname"
                    :key="tag"
                    type="success"
                    v-for="tag in dynamicTags"
                    closable
                    :disable-transitions="false"
                    @close="handleClosetag(tag)"
                  >
                    {{ tag.tagname }}
                    {{ tag }}
                  </el-tag>
                  <el-select
                    v-model="inputValue"
@@ -197,6 +209,54 @@
                </div>
              </el-form-item>
            </el-row>
            <el-form-item label="通知变量" prop="name">
              <div style="margin-bottom: 5px" v-for="item in variablelist">
                <el-row>
                  <el-col :span="5">
                    <el-input
                      v-model="item.variatename"
                      placeholder="请输入变量名"
                    ></el-input>
                  </el-col>
                  <el-col :span="8" :offset="1">
                    <el-input
                      v-model="item.variate"
                      placeholder="请输入变量内容"
                    ></el-input>
                  </el-col>
                  <el-col :span="8" :offset="1">
                    <el-button
                      type="success"
                      icon="el-icon-plus"
                      circle
                      @click="addvariable(item)"
                    ></el-button>
                    <el-button
                      v-if="!item.default"
                      type="danger"
                      icon="el-icon-delete"
                      circle
                      @click="delvariable(item)"
                    ></el-button>
                  </el-col>
                </el-row>
              </div>
            </el-form-item>
            <el-row>
              <el-col :span="24">
                <div
                  style="display: flex; margin-left: 66px; margin-bottom: 10px"
                >
                  <div
                    v-for="item in variablelist"
                    class="tsgname"
                    @click="tsgnameto(item)"
                  >
                    {{ item.variatename }}
                  </div>
                </div>
              </el-col></el-row
            >
          </div>
          <div class="headline">
@@ -210,14 +270,18 @@
              ></span
            >
          </div>
          <div class="topicxq" v-for="item in optionlist">
          <div
            class="topicxq"
            v-for="item in topicobj.svyLibTopicoptions"
            v-if="item.isoperation != 3"
          >
            <el-row :gutter="10">
              <el-col :span="11"
                ><el-form-item label="题号">
                ><el-form-item label="选项">
                  <el-input
                    type="text"
                    placeholder="请输入"
                    v-model="item.optionid"
                    placeholder="请输入选项"
                    v-model="item.optioncontent"
                    show-word-limit
                  >
                  </el-input> </el-form-item
@@ -232,28 +296,6 @@
                  >
                  </el-input> </el-form-item
              ></el-col>
            </el-row>
            <el-row :gutter="10">
              <el-col :span="11"
                ><el-form-item label="选项">
                  <el-input
                    type="text"
                    placeholder="请输入选项"
                    v-model="item.optioncontent"
                    show-word-limit
                  >
                  </el-input> </el-form-item
              ></el-col>
              <el-col :span="11"
                ><el-form-item label="下题跳转">
                  <el-input
                    type="text"
                    placeholder="请输入题号"
                    v-model="item.jump"
                    show-word-limit
                  >
                  </el-input> </el-form-item
              ></el-col>
              <el-col :span="2">
                <el-button
                  type="danger"
@@ -263,6 +305,7 @@
                ></el-button>
              </el-col>
            </el-row>
            <el-row :gutter="10">
              <el-form-item label="选中提示">
                <el-input
@@ -295,37 +338,20 @@
        >
          <el-form-item label="标题" prop="userName">
            <el-input
              v-model="queryParams.userName"
              v-model="queryParams.targetname"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
              @keyup.enter.native="gettargetInfo"
            />
          </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"
              @click="gettargetInfo"
              >搜索</el-button
            >
            <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
@@ -333,19 +359,19 @@
            >
          </el-form-item>
        </el-form>
        <el-table v-loading="loading" :data="userList">
        <el-table v-loading="loading" :data="targetList">
          <el-table-column
            label="标题"
            align="center"
            key="userid"
            prop="userid"
            key="targetname"
            prop="targetname"
            width="100"
          />
          <el-table-column
            label="问题内容"
            align="center"
            key="userName"
            prop="userName"
            key="targetdesc"
            prop="targetdesc"
            width="200"
            :show-overflow-tooltip="true"
          />
@@ -367,6 +393,13 @@
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="gettargetInfo"
        />
      </div>
    </el-drawer>
  </div>
@@ -376,9 +409,7 @@
import { listtag } from "@/api/system/label";
import store from "@/store";
import {
  getissueclassify,
  delissueclassify,
  addissueclassify,
  gettargetInfo,
  getissuelist,
  issueinfo,
  compileissue,
@@ -394,27 +425,29 @@
export default {
  data() {
    return {
      topicobj: {},
      topicobj: {
        svyLibTopicoptions: [],
      },
      inputVisible: false,
      inputValue: "",
      currentInputId: "",
      total: 0,
      drawer: false,
      loading: false,
      id: [],
      userList: [
        {
          userid: "1",
          userName: "指标",
        },
        {
          userid: "2",
          userName: "二号问卷",
        },
      ],
      targetList: [],
      dynamicTags: [],
      optionsclass: [],
      variablelist: [
        { variatename: "姓名", variate: "${name}", default: 1 },
        { variatename: "电话", variate: "${phone}", default: 1 },
        { variatename: "病情", variate: "${illness}", default: 1 },
      ],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        isavailable: "",
      },
      optionlist: [
        { value: "topic", table: "topic" },
@@ -422,6 +455,7 @@
        { value: "topic", table: "topic" },
      ],
      inputValueillness: "",
      required: [],
      themelist: [],
      languagelist: [],
      courtyardlist: [],
@@ -444,14 +478,15 @@
  created() {
    this.gettabList();
    this.getissueinfo();
    this.gettargetInfo();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.xjxsoptions = store.getters.xjxsoptions;
    this.required = store.getters.required;
  },
  methods: {
    Submittopicobj() {},
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
@@ -459,8 +494,15 @@
    // èŽ·å–æ•°æ®
    getissueinfo() {
      this.id = this.$route.query.id;
      issueinfo(this.id).then((res) => {
        this.topicobj = res.data;
      if (!this.id) {
        return;
      }
      getissuelist({ topicid: this.id }).then((res) => {
        this.topicobj = res.rows[0];
        this.dynamicTags = this.topicobj.tag.split(",");
        this.variablelist = JSON.parse(this.topicobj.otherdata)
          ? JSON.parse(this.topicobj.otherdata)
          : this.variablelist;
      });
      getillnesslist({
        pageNum: 1,
@@ -472,12 +514,28 @@
        this.illnesslist = res.rows;
      });
    },
    gettargetInfo() {
      gettargetInfo(this.queryParams).then((res) => {
        this.targetList = res.rows;
        this.total = res.total;
      });
    },
    // æ–°å¢žæˆ–修改详情
    compileissue() {
      this.topicobj.svyLibTopicoptions = this.topicobj.svyLibTopicoptions.map(
        (item) => {
          if (item.isoperation != 1 && item.isoperation != 3) {
            item.isoperation = 2;
          }
          return item;
        }
      );
      this.topicobj.otherdata = JSON.stringify(this.variablelist);
      this.topicobj.tag = this.dynamicTags.join(",");
      if (this.id) {
        this.topicobj.isoperation = 1;
        this.topicobj.isoperation = 2;
        compileissue(this.topicobj).then((res) => {
          if (res.code == 1) {
          if (res.code == 200) {
            this.$message({
              message: "修改成功",
              type: "success",
@@ -491,9 +549,9 @@
          }
        });
      } else {
        this.topicobj.isoperation = 2;
        this.topicobj.isoperation = 1;
        compileissue(this.topicobj).then((res) => {
          if (res.code == 1) {
          if (res.code == 200) {
            this.$message({
              message: "新增成功",
              type: "success",
@@ -507,18 +565,41 @@
          }
        });
      }
      this.illnesslist.forEach((item, index) => {
        if (!item.id) {
          addtargetillness(item).then((res) => {});
        }
      });
      if (this.illnesslistapi.length) {
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
    },
    // åˆ é™¤é€‰é¡¹
    deletexuanx(row) {
      const index = this.getIndexInArray(this.optionlist, row);
      this.optionlist.splice(index, 1);
      const index = this.getIndexInArray(this.topicobj.svyLibTopicoptions, row);
      if (this.topicobj.svyLibTopicoptions[index].topicid) {
        this.topicobj.svyLibTopicoptions[index].isoperation = 3;
      } else {
        this.topicobj.svyLibTopicoptions.splice(index, 1);
      }
    },
    // æ–°å¢žé€‰é¡¹
    addoption() {
      this.optionlist.push({ value: "topic", table: "topic" });
      this.topicobj.svyLibTopicoptions.push({
        score: "",
        isoperation: 1,
      });
    },
    // é€‰æ‹©æŒ‡æ ‡
    selectlabel(row) {},
    selectlabel(row) {
      const labellist = row.targetoptionList;
      labellist.forEach((item) => {
        this.topicobj.svyLibTopicoptions.push({
          optioncontent: item.targetvalue,
          isoperation: 1,
        });
      });
    },
    // æ ‡ç­¾-----------------
    gettabList() {
@@ -535,9 +616,7 @@
    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 tagvalue = {};
@@ -558,8 +637,8 @@
              isoperation: 1,
            };
          }
          // this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
          // this.dynamicTags.push(tagvalue);
          this.dynamicTags.push(tagvalue.tagname);
        });
      }
      this.inputVisible = false;
@@ -635,9 +714,71 @@
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑成功");
    },
    // æŸ¥è¯¢é¢˜åº“
    handleQuery() {},
    resetQuery() {},
    // ä¾¿æ·æ ‡ç­¾
    tsgnameto(row) {
      let inputValueArr = "";
      let el = document.querySelector("#" + this.currentInputId);
      //el.selectionStart; è¿™å°±æ˜¯å½“前光标所在的位置(字符串中字符的index)
      if (this.currentInputId == "questiontext") {
        inputValueArr = this.indexform.questiontext.split("");
      } else if (this.currentInputId == "nomatchtext") {
        inputValueArr = this.indexform.nomatchtext.split("");
      } else if (this.currentInputId == "sliencetext") {
        inputValueArr = this.indexform.sliencetext.split("");
      } else if (this.currentInputId == "noclearlytext") {
        inputValueArr = this.indexform.noclearlytext.split("");
      } else if (this.currentInputId == "submoduletext") {
        inputValueArr = this.indexform.submoduletext.split("");
      } else {
        return;
      }
      //将输入框内容切成数组,方便后续操作
      // inputValueArr = this.inputValue.split("");
      // æ‹¿åˆ°é€‰ä¸­æ–‡å­—的长度(后续可以用来替换选中的文字)
      let selectLength = el.selectionEnd - el.selectionStart;
      // å°†è¦æ’å…¥/替换的文字插入/替换(value.name是要插入/替换的字符串)
      inputValueArr.splice(el.selectionStart, selectLength, `${row.variate}`);
      // æŠŠæ•°ç»„重新转换为字符串并赋值
      inputValueArr = inputValueArr.join("");
      console.log(inputValueArr);
      if (this.currentInputId == "questiontext") {
        this.indexform.questiontext = inputValueArr;
      } else if (this.currentInputId == "nomatchtext") {
        this.indexform.nomatchtext = inputValueArr;
      } else if (this.currentInputId == "sliencetext") {
        this.indexform.sliencetext = inputValueArr;
      } else if (this.currentInputId == "noclearlytext") {
        this.indexform.noclearlytext = inputValueArr;
      } else if (this.currentInputId == "submoduletext") {
        this.indexform.submoduletext = inputValueArr;
      } else {
        return;
      }
    },
    // æ–°å¢žå˜é‡
    addvariable() {
      this.variablelist.push({
        variatename: "",
        variate: "",
      });
    },
    // åˆ é™¤å˜é‡
    delvariable(item) {
      const index = this.variablelist.indexOf(item);
      if (index !== -1) {
        this.variablelist.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
      } else {
        console.log("未找到该对象");
      }
    },
    // è¾“入获取id
    handleInput(id) {
      this.currentInputId = id;
      console.log("输入框的值已更新:", this.currentInputId);
      // åœ¨è¿™é‡Œæ‰§è¡Œæ›´æ–°æ•°æ®çš„逻辑
    },
  },
};
</script>
@@ -691,6 +832,21 @@
    }
  }
}
.tsgname {
  width: 90px;
  margin-right: 10px;
  text-align: center;
  cursor: pointer;
  height: 40px;
  line-height: 40px;
  background: #7799fa;
  color: #ffff;
  font-size: 18px;
  border-radius: 5px;
}
.tsgname:hover {
  background: #3366f5;
}
.preview-left {
  margin: 20px;
  //   margin: 20px;
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -30,16 +30,15 @@
            <el-select
              v-model="ruleForm.categoryid"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in optionsclass"
                :key="item.value"
                :label="item.label"
                :value="item.value"
                :key="item.id"
                :label="item.name"
                :value="item.id"
              >
              </el-option>
            </el-select>
@@ -59,37 +58,6 @@
            >
            </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.name"
                  placeholder="请输入变量名"
                ></el-input>
              </el-col>
              <el-col :span="8" :offset="1">
                <el-input
                  v-model="item.value"
                  placeholder="请输入变量内容"
                ></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
                  type="success"
                  icon="el-icon-plus"
                  circle
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                  v-if="item"
                  type="danger"
                  icon="el-icon-delete"
                  circle
                  @click="delvariable(item)"
                ></el-button>
              </el-col>
            </el-row>
          </el-form-item>
          <el-form-item label="文件" prop="sickness">
            <div style="width: 40%">
@@ -110,14 +78,14 @@
            <el-form-item label="标签" prop="desc">
              <div class="xinz-inf">
                <el-tag
                  :key="tag.tagname"
                  :key="tag"
                  type="success"
                  v-for="tag in dynamicTags"
                  closable
                  :disable-transitions="false"
                  @close="handleClosetag(tag)"
                >
                  {{ tag.tagname }}
                  {{ tag }}
                </el-tag>
                <el-select
                  v-model="inputValue"
@@ -202,7 +170,6 @@
                <el-select
                  v-model="ruleForm.isenable"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                >
@@ -217,9 +184,9 @@
                </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"
              v-model="ruleForm.suitway"
              size="medium"
              multiple
              filterable
@@ -227,7 +194,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in xjxsoptions"
                v-for="item in mode"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -238,7 +205,7 @@
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.courtyard"
              v-model="ruleForm.campus"
              size="medium"
              filterable
              placeholder="请选择分类"
@@ -246,37 +213,33 @@
              <el-option
                class="ruleFormaa"
                v-for="item in courtyardlist"
                :key="item.value"
                :key="item.label"
                :label="item.label"
                :value="item.value"
                :value="item.label"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用科室" prop="region">
            <el-select
              v-model="ruleForm.administrative"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            <el-cascader
              v-model="tempDetpRelevanceslist"
              :options="deptList"
              :props="props"
              :show-all-levels="false"
              clearable
            >
              <el-option
                class="ruleFormaa"
                v-for="item in courtyardlist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
              <template slot-scope="{ node, data }">
                <span>{{ data.deptName }}</span>
                <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
              </template>
            </el-cascader>
          </el-form-item>
          <el-form-item>
            <el-button type="success" @click="nextstep('ruleForm')"
              >下一步</el-button
            >
            <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
            <el-button @click="submitForm('ruleForm')"
            <el-button @click="Departmenttreatment('ruleForm')"
              >保存问卷基础信息</el-button
            >
          </el-form-item>
@@ -291,32 +254,32 @@
            type="primary"
            icon="el-icon-plus"
            round
            @click="drawer = true"
            @click="getaddtopiclist"
            >添加题目</el-button
          >
        </div>
        <div class="presentation">
          <div class="presentation-left">
            <el-card class="box-card" style="min-height: 688px">
              <el-table v-loading="loading" :data="userList">
              <el-table v-loading="loading" :data="ruleForm.svyLibTopics">
                <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"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  label="主要内容"
                  align="center"
                  key="maincontent"
                  prop="maincontent"
                  key="topicContent"
                  prop="topicContent"
                  :show-overflow-tooltip="true"
                />
@@ -344,14 +307,6 @@
                </el-table-column>
              </el-table>
            </el-card>
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="queryParams.pageNum"
              :limit.sync="queryParams.pageSize"
              @pagination="getList"
            />
          </div>
          <div class="presentation-right">
            <el-card class="box-card">
@@ -370,35 +325,54 @@
                </div>
                <el-form-item label="题目标题">
                  <el-input
                    v-model="topicobj.title"
                    v-model="topicobj.topic"
                    placeholder="请输入标题"
                  ></el-input>
                </el-form-item>
                <el-row :gutter="10">
                  <el-col :span="12"
                    ><el-form-item label="是否必答">
                      <el-radio-group v-model="topicobj.resource">
                        <el-radio label="是"></el-radio>
                        <el-radio label="否"></el-radio>
                      </el-radio-group> </el-form-item
                    ><el-form-item label="是否必填">
                      <el-select
                        v-model="topicobj.ismandatory"
                        placeholder="请选择"
                      >
                        <el-option
                          v-for="item in required"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="是否隐藏">
                      <el-radio-group v-model="topicobj.resourcea">
                        <el-radio label="是"></el-radio>
                        <el-radio label="否"></el-radio>
                      </el-radio-group> </el-form-item
                    ><el-form-item label="是否可用">
                      <el-select
                        v-model="topicobj.isavailable"
                        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>
                <div class="headline">选项设置</div>
                <div class="topicxq" v-for="item in optionlist">
                <div
                  class="topicxq"
                  v-for="item in topicobj.svyLibTopicoptions"
                >
                  <el-row :gutter="10">
                    <el-col :span="11"
                      ><el-form-item label="题号">
                        <el-input
                          type="text"
                          placeholder="请输入"
                          v-model="item.optionid"
                          v-model="item.topicid"
                          show-word-limit
                        >
                        </el-input> </el-form-item
@@ -467,7 +441,7 @@
        >
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
        <el-button @click="Saveproblem('ruleForm')">保存题目数据</el-button>
        <el-button @click="submitForm('ruleForm')">保存题目数据</el-button>
      </div>
      <!-- é—®å·é¢„览 -->
      <div v-if="Editprogress == 3">
@@ -544,24 +518,16 @@
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
              @keyup.enter.native="getaddtopiclist"
            />
          </el-form-item>
          <el-form-item label="主题" prop="sickness">
            <el-input
              v-model="queryParams.userName"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item>
            <el-button
              type="primary"
              icon="el-icon-search"
              size="medium"
              @click="handleQuery"
              @click="getaddtopiclist"
              >搜索</el-button
            >
            <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
@@ -573,15 +539,15 @@
          <el-table-column
            label="标题"
            align="center"
            key="userid"
            prop="userid"
            key="topic"
            prop="topic"
            width="100"
          />
          <el-table-column
            label="问题内容"
            align="center"
            key="userName"
            prop="userName"
            key="topicContent"
            prop="topicContent"
            width="200"
            :show-overflow-tooltip="true"
          />
@@ -592,10 +558,7 @@
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row)"
              <el-button size="medium" type="text" @click="addtopic(scope.row)"
                ><span class="button-textxg"
                  ><i class="el-icon-circle-plus-outline"></i>添加</span
                ></el-button
@@ -610,16 +573,19 @@
<script>
import { listtag } from "@/api/system/label";
import { listDept } from "@/api/system/dept";
import store from "@/store";
import {
  getQtemplateclassify,
  delQtemplateclassify,
  addQtemplateclassify,
  getQtemplatelist,
  compileQtemplate,
  Qtemplateinfo,
  compileissue,
  delQtemplateinfo,
  Followupinfo,
  getissuelist,
  deltargetillness,
  addtargetillness,
  getillnesslist,
@@ -652,20 +618,7 @@
        { value: "topic", table: "topic" },
        { value: "topic", table: "topic" },
      ],
      xjxsoptions: [
        {
          value: "选项1",
          label: "图文",
        },
        {
          value: "选项2",
          label: "视频",
        },
        {
          value: "选项3",
          label: "音频",
        },
      ],
      fileList: [
        {
          name: "food.jpeg",
@@ -676,16 +629,7 @@
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      options: [
        {
          value: "选项1",
          label: "疾病问卷",
        },
        {
          value: "选项2",
          label: "入院问卷",
        },
      ],
      variablelist: [
        {
          variable: "paitent",
@@ -702,16 +646,9 @@
      ],
      addvalue: "添加题目",
      // é¢˜ç›®è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: "1",
          userName: "一号问卷",
        },
        {
          userid: "2",
          userName: "二号问卷",
        },
      ],
      userList: [],
      deptList: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      themelist: [],
      languagelist: [],
      courtyardlist: [],
@@ -724,20 +661,16 @@
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      tempDetpRelevanceslist: [],
      optionstag: [],
      xjxsoptions: [],
      usable: [],
      required: [],
      mode: [], //方式
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
    };
  },
@@ -748,6 +681,7 @@
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.required = store.getters.required;
    this.xjxsoptions = store.getters.xjxsoptions;
    this.courtyardlist = store.getters.courtyardlist;
  },
@@ -759,8 +693,12 @@
    // èŽ·å–æ•°æ®
    getissueinfo() {
      this.id = this.$route.query.id;
      Qtemplateinfo(this.id).then((res) => {
        this.ruleForm = res.data;
      getQtemplatelist({ svyid: this.id }).then((res) => {
        this.ruleForm = res.rows[0];
        this.dynamicTags = this.ruleForm.labelInfo.split(",");
        this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
        this.ruleForm.suitway = this.ruleForm.suitway.split(",");
        console.log(this.tempDetpRelevanceslist);
      });
      getillnesslist({
        pageNum: 1,
@@ -771,8 +709,67 @@
      getillness({ outid: this.id, type: 5 }).then((res) => {
        this.illnesslist = res.rows;
      });
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
      getQtemplateclassify({}).then((res) => {
        this.optionsclass = res.rows;
      });
    },
    submitForm(formName) {},
    submitForm(formName) {
      this.ruleForm.labelInfo = this.dynamicTags.join(",");
      this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      if (this.id) {
        this.ruleForm.isoperation = 2;
        compileQtemplate(this.ruleForm).then((response) => {
          this.$modal.msgSuccess("修改成功");
          this.$router.go(-1);
        });
      } else {
        this.ruleForm.isoperation = 1;
        compileQtemplate(this.ruleForm).then((response) => {
          this.$modal.msgSuccess("新增成功");
          this.$router.go(-1);
        });
      }
    },
    // ç§‘室处理
    Departmenttreatment() {
      this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist);
      console.log(this.tempDetpRelevanceslist);
      const result = this.tempDetpRelevanceslist.map(
        (subArr) => subArr[subArr.length - 1]
      );
      console.log(result);
      // id数组查数组对象
      result.forEach((item) => {
        const condition = this.ruleForm.tempDetpRelevances.some(
          (obj) => obj.deptId === item
        );
        if (!condition) {
          listDept({ deptId: item }).then((res) => {
            console.log(res.data[0]);
            res.data[0].type = 2;
            this.ruleForm.tempDetpRelevances.push(res.data[0]);
          });
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      // æ•°ç»„对象查id数组
      this.ruleForm.tempDetpRelevances.forEach((item) => {
        const condition = result.some((obj) => obj === item.deptId);
        if (!condition) {
          const index = this.ruleForm.tempDetpRelevances.indexOf(item);
          this.ruleForm.tempDetpRelevances[index].delFlag = 1;
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      setTimeout(() => {
        this.submitForm();
      }, 1000);
      // this.submitForm();
    },
    // ä¸‹ä¸€æ­¥
    nextstep() {
      if (this.Editprogress <= 2) {
@@ -800,22 +797,32 @@
          });
        });
    },
    // ä¿å­˜é¢˜ç›®ä¿¡æ¯
    Saveproblem() {},
    /** æŸ¥è¯¢é¢˜ç›®åˆ—表 */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
        console.log(response);
        // this.userList = response.data;
        // this.total = response.total;
        // this.loading = false;
    // èŽ·å–é¢˜ç›®åˆ—è¡¨
    getaddtopiclist() {
      this.drawer = true;
      getissuelist(this.queryParams).then((res) => {
        this.loading = false;
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList);
      });
      //   const { rows } = await listUser();
      //   console.log(rows);
      //   this.list = rows;
    },
    // æ–°å¢žé¢˜ç›®
    addtopic(row) {
      row.isoperation = 1;
      this.ruleForm.svyLibTopics.push(row);
    },
    handleDelete(row) {
      this.ruleForm.svyLibTopics.splice(
        this.ruleForm.svyLibTopics.indexOf(row),
        1
      );
    },
    handleUpdate(row) {
      console.log(row);
      this.topicobj = row;
    },
    // ä¿®æ”¹é¢˜ç›®ä¿¡æ¯
    Submittopicobj() {},
    // æ–°å¢žå˜é‡
@@ -853,9 +860,8 @@
    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;
      // this.ruleForm.ivrLibaTemplateTargetList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let tagvalue = {};
@@ -877,7 +883,8 @@
            };
          }
          // this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
          // this.dynamicTags.push(tagvalue);
          this.dynamicTags.push(tagvalue.tagname);
        });
      }
      this.inputVisible = false;
@@ -954,9 +961,10 @@
      this.$modal.msgSuccess("编辑成功");
    },
    // --------------------------
    // æŸ¥è¯¢é¢˜åº“
    handleQuery() {},
    resetQuery() {},
    resetQuery() {
      this.queryParams = { pageNum: 1, pageSize: 10 };
      this.getaddtopiclist();
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
src/views/knowledge/questionnaire/index.vue
@@ -29,7 +29,7 @@
        >
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
            <span v-if="node.id > 0">
              <el-button
                type="text"
                icon="el-icon-delete"
@@ -66,13 +66,21 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="适用科室" prop="sickness">
              <el-form-item label="适用科室" prop="region">
                <el-cascader
                  v-model="queryParams.sickness"
                  :options="editableTabs"
                  :props="propss"
                  v-model="queryParams.administrative"
                  :options="deptList"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                ></el-cascader>
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.deptName }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item>
              <el-form-item label="通知内容" prop="userName">
                <el-input
@@ -199,7 +207,7 @@
                prop="description"
                width="260"
              /><el-table-column
                label="适用疾病(缺)"
                label="适用疾病"
                align="center"
                key="Applicable"
                prop="Applicable"
@@ -216,33 +224,22 @@
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="适用科室(缺)"
                label="标签"
                align="center"
                key="administrative"
                prop="administrative"
                width="120"
              />
              <el-table-column
                label="标签(缺)"
                align="center"
                key="tagList"
                prop="tagList"
                key="labelInfo"
                prop="labelInfo"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                  <span v-for="item in scope.row.labelInfo.split(',')"
                    >{{ item }}、
                  </span>
                </template>
              </el-table-column>
              <el-table-column
                label="资料形式(缺)"
                align="center"
                key="cphonenumaber"
                prop="cphonenumaber"
                width="120"
              />
              <el-table-column
                label="可用"
                align="center"
@@ -336,17 +333,14 @@
            <el-option
              v-for="item in deptOptions"
              :key="item.id"
              :label="item.indexAssortName"
              :label="item.name"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.indexAssortName"
            autocomplete="off"
          ></el-input>
          <el-input v-model="classifyform.name" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -432,6 +426,8 @@
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -485,9 +481,11 @@
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "svyLibTopicCategoryList",
        label: "indexAssortName",
        children: "svyLibTitleCategoryList",
        label: "name",
      },
      deptList: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      mode: [],
      languagelist: [],
      qyoptions: [],
@@ -505,7 +503,7 @@
  watch: {},
  created() {
    this.getList();
    // this.getDeptTree();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
@@ -520,6 +518,9 @@
        this.userList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
@@ -675,29 +676,31 @@
      let calssvalue = {};
      if (
        this.classifyform.pid &&
        this.classifyform.indexAssortName &&
        this.classifyform.name &&
        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) {
        calssvalue.svyLibTitleCategoryList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.name) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaTemplateAssortList = [];
        this.classifyform.svyLibTitleCategoryList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addQtemplateclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
        this.dialogFormVisible = false;
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
          .confirm('是否确认删除分类项为"' + b.name + '"的数据项?')
          .then(function () {
            return delQtemplateclassify(b.id);
          })
@@ -709,9 +712,7 @@
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.indexAssortName +
              '"?删除后其下分类将归类‘未分类’'
            '是否确认删除一级分类"' + b.name + '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delQtemplateclassify(b.id);
@@ -727,7 +728,7 @@
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.indexAssortName.indexOf(value) !== -1;
      return data.name.indexOf(value) !== -1;
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
src/views/patient/propaganda/particty.vue
@@ -536,8 +536,14 @@
</template>
<script>
import { messagelistpatient } from "@/api/patient/homepage";
import {
  getTaskpatient,
  edithetask,
  addhetask,
  gethetaskinfo,
  delhetaskinfo,
} from "@/api/AiCentre/index";
import SFtable from "@/components/SFtable"; //表格组件
export default {
@@ -679,6 +685,9 @@
  methods: {
    // èŽ·å–å½“å‰ç±»åž‹
    Acquisitiontype() {
      getTaskpatient({ allhosp: 1 }).then((res) => {
        console.log(res);
      });
      this.currenttype = this.$route.query.type;
      console.log(this.currenttype);
      if (this.currenttype == 1) {
src/views/repositoryai/general/index.vue
@@ -153,12 +153,7 @@
              @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="id" prop="id" />
              <el-table-column
                label="通用库名称"
                align="center"
@@ -463,6 +458,8 @@
      addgeneralclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
        this.dialogFormVisible = false;
      });
    },
    remove(a, b) {
@@ -509,7 +506,7 @@
    reset() {
      this.indexform = {
        suitWay: undefined,
        targetid: undefined,
        id: undefined,
        targetdesc: undefined,
        baseTagList: [],
        targetoptionList: [],
@@ -533,7 +530,7 @@
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.targetid);
      this.ids = selection.map((item) => item.id);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
@@ -585,7 +582,7 @@
          this.targetoptionList
        );
        if (valid) {
          if (this.indexform.targetid != undefined) {
          if (this.indexform.id != undefined) {
            this.indexform.isoperation = 2;
            editgeneral(this.indexform).then((response) => {
              this.$modal.msgSuccess("修改成功");
@@ -606,7 +603,7 @@
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.targetid || this.ids;
      const userIds = row.id || this.ids;
      this.$modal
        .confirm('是否确认删除通用库名称为"' + row.targetname + '"的数据项?')
        .then(function () {
src/views/repositoryai/general/particulars/index.vue
@@ -9,8 +9,8 @@
          <el-table-column
            label="序号"
            align="center"
            key="targetid"
            prop="targetid"
            key="id"
            prop="id"
          />
          <el-table-column
            label="问题主题(缺)"
src/views/repositoryai/intention/index.vue
@@ -170,12 +170,7 @@
              @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="id" prop="id" />
              <el-table-column
                label="值类型"
                align="center"
@@ -541,6 +536,9 @@
                </el-table-column>
              </el-table>
            </el-card>
            <el-card class="box-card" style="margin-bottom: 20px">
              <Regular :TargetoptionList="testuserList" />
            </el-card>
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="测试输入" prop="nickName">
@@ -682,6 +680,7 @@
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import Regular from "@/components/Regular"; //正则组件
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { listtag } from "@/api/system/label";
import store from "@/store";
@@ -689,7 +688,7 @@
export default {
  name: "questionnaire",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  components: { Treeselect },
  components: { Treeselect, Regular },
  data() {
    return {
      topactiveName: "Local", //顶部选择
@@ -827,7 +826,7 @@
    // ç–¾ç—…-----------------------
    illnessUpdate(row) {
      this.illnessVisible = true;
      this.indexid = row.targetid;
      this.indexid = row.id;
      this.illnesslistapi = [];
      const illnessqueryParams = {
        pageNum: 1,
@@ -837,7 +836,7 @@
        console.log(response);
        this.optionsillness = response.rows;
      });
      getillness({ outid: row.targetid, type: 1 }).then((res) => {
      getillness({ outid: row.id, type: 1 }).then((res) => {
        this.illnesslist = res.rows;
        console.log(res);
      });
@@ -949,7 +948,7 @@
    addoption() {
      const objvakue = {
        guid: 1,
        targetid: this.indexform.targetid,
        id: this.indexform.id,
        targettype: this.indexform.targettype,
        targetvalue: "贫血",
        targetregex: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
@@ -989,7 +988,7 @@
          targetvalue: item.targetvalue,
          targetregex: item.targetregex,
          targetoptionid: item.targetoptionid,
          targetid: this.indexform.targetid,
          id: this.indexform.id,
          targettype: this.indexform.targettype,
          isoperation: item.targetoptionid ? 2 : 1,
          categoryName: item.categoryName,
@@ -1036,6 +1035,8 @@
      addtreeselectIvrLibaTargetAssort(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
        this.dialogFormVisible = false;
      });
    },
    remove(a, b) {
@@ -1082,7 +1083,7 @@
    reset() {
      this.indexform = {
        suitWay: undefined,
        targetid: undefined,
        id: undefined,
        targetdesc: undefined,
        baseTagList: [],
        targetoptionList: [],
@@ -1104,7 +1105,7 @@
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.targetid);
      this.ids = selection.map((item) => item.id);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
@@ -1161,7 +1162,7 @@
          this.targetoptionList
        );
        if (valid) {
          if (this.indexform.targetid != undefined) {
          if (this.indexform.id != undefined) {
            this.indexform.isoperation = 2;
            gettargetInfoedit(this.indexform).then((response) => {
              this.$modal.msgSuccess("修改成功");
@@ -1182,7 +1183,7 @@
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.targetid || this.ids;
      const userIds = row.id || this.ids;
      this.$modal
        .confirm('是否确认删除指标名称为"' + row.targetname + '"的数据项?')
        .then(function () {
src/views/repositoryai/templateku/configurat/index.vue
@@ -115,20 +115,27 @@
            ></el-col>
            <el-col :span="12">
              <el-form-item label="播报优先" prop="playType">
                <el-radio-group v-model="ruleForm.playType">
                  <el-radio
                <el-select
                  v-model="ruleForm.playType"
                  size="medium"
                  filterable
                  placeholder="请选择语言"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in precedencetype"
                    :label="item.value"
                    >{{ item.label }}</el-radio
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                </el-radio-group>
              </el-form-item></el-col
            >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="随访方式" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.way"
              v-model="ruleForm.suitway"
              size="medium"
              multiple
              filterable
@@ -229,7 +236,7 @@
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="campusvalue"
              v-model="ruleForm.campus"
              size="medium"
              multiple
              filterable
@@ -246,28 +253,23 @@
            </el-select>
          </el-form-item>
          <el-form-item label="适用科室" prop="region">
            <el-select
              style="width: 500px"
              v-model="deptNamesvalue"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类(多选)"
            <el-cascader
              v-model="tempDetpRelevanceslist"
              :options="deptList"
              :props="props"
              :show-all-levels="false"
              clearable
            >
              <el-option
                class="ruleFormaa"
                v-for="item in administrativelist"
                :key="item.label"
                :label="item.label"
                :value="item.label"
              >
              </el-option>
            </el-select>
              <template slot-scope="{ node, data }">
                <span>{{ data.deptName }}</span>
                <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
              </template>
            </el-cascader>
          </el-form-item>
          <el-form-item label="通用库" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.waya"
              v-model="ruleForm.submoduleID"
              size="medium"
              multiple
              filterable
@@ -341,7 +343,7 @@
              >下一步</el-button
            >
            <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
            <el-button @click="submitForm('ruleForm')"
            <el-button @click="Departmenttreatment('ruleForm')"
              >保存随访模版基础信息</el-button
            >
          </el-form-item>
@@ -356,32 +358,35 @@
            type="primary"
            icon="el-icon-plus"
            round
            @click="drawer = true"
            @click="getaddtopiclist"
            >添加题目</el-button
          >
        </div>
        <div class="presentation">
          <div class="presentation-left">
            <el-card class="box-card" style="min-height: 688px">
              <el-table v-loading="loading" :data="userList">
              <el-table
                v-loading="loading"
                :data="ruleForm.ivrLibaTemplateScriptVOList"
              >
                <el-table-column
                  label="编号"
                  align="center"
                  key="userid"
                  prop="userid"
                  key="id"
                  prop="id"
                />
                <el-table-column
                  label="标题"
                  align="center"
                  key="userName"
                  prop="userName"
                  key="questiontitle"
                  prop="questiontitle"
                  :show-overflow-tooltip="true"
                />
                <el-table-column
                  label="问题话术"
                  align="center"
                  key="verbaltrick"
                  prop="verbaltrick"
                  key="questionText"
                  prop="questionText"
                  :show-overflow-tooltip="true"
                />
@@ -402,7 +407,7 @@
                      type="danger"
                      icon="el-icon-delete"
                      circle
                      @click="deloption(scope.row)"
                      @click="handleDelete(scope.row)"
                    ></el-button>
                    <el-button
                      @click="syioption(scope.row)"
@@ -420,14 +425,6 @@
                </el-table-column>
              </el-table>
            </el-card>
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="queryParams.pageNum"
              :limit.sync="queryParams.pageSize"
              @pagination="getList"
            />
          </div>
          <div class="presentation-right">
            <el-card class="box-card">
@@ -446,24 +443,40 @@
                </div>
                <el-form-item label="题目标题">
                  <el-input
                    v-model="topicobj.title"
                    v-model="topicobj.questiontitle"
                    placeholder="请输入标题"
                  ></el-input>
                </el-form-item>
                <el-row :gutter="10">
                  <el-col :span="12"
                    ><el-form-item label="是否必答">
                      <el-radio-group v-model="topicobj.resource">
                        <el-radio label="是"></el-radio>
                        <el-radio label="否"></el-radio>
                      </el-radio-group> </el-form-item
                    ><el-form-item label="是否必填">
                      <el-select
                        v-model="topicobj.ismandatory"
                        placeholder="请选择"
                      >
                        <el-option
                          v-for="item in required"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="是否隐藏">
                      <el-radio-group v-model="topicobj.resourcea">
                        <el-radio label="是"></el-radio>
                        <el-radio label="否"></el-radio>
                      </el-radio-group> </el-form-item
                    ><el-form-item label="是否可用">
                      <el-select
                        v-model="topicobj.isavailable"
                        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>
                <div class="headline">
@@ -477,14 +490,17 @@
                    >
                  </div>
                </div>
                <div class="topicxq" v-for="item in 2">
                <div
                  class="topicxq"
                  v-for="item in topicobj.ivrLibaScriptTargetoptionList"
                >
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="选项名">
                        <el-input
                          type="text"
                          placeholder="请输入"
                          v-model="queryParams.text"
                          v-model="item.targetvalue"
                          show-word-limit
                        >
                        </el-input> </el-form-item
@@ -494,7 +510,7 @@
                        <el-input
                          type="text"
                          placeholder="请输入节点"
                          v-model="queryParams.text"
                          v-model="item.targetid"
                          show-word-limit
                        >
                        </el-input> </el-form-item
@@ -506,18 +522,18 @@
                        <el-input
                          type="text"
                          placeholder="(默认)无声"
                          v-model="queryParams.text"
                          v-model="item.text"
                          maxlength="10"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="12"
                      ><el-form-item label="选中跳转">
                      ><el-form-item label="选中跳转(缺)">
                        <el-input
                          type="text"
                          placeholder="请输入题目节点"
                          v-model="queryParams.text"
                          v-model="item.jump"
                          show-word-limit
                        >
                        </el-input> </el-form-item
@@ -528,7 +544,7 @@
                      style="width: 24vw"
                      type="textarea"
                      placeholder="请输入题号"
                      v-model="queryParams.text"
                      v-model="item.targetregex"
                      show-word-limit
                    >
                    </el-input>
@@ -569,7 +585,9 @@
        >
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
        <el-button @click="Saveproblem('ruleForm')">保存题目数据</el-button>
        <el-button @click="Departmenttreatment('ruleForm')"
          >保存题目数据</el-button
        >
      </div>
      <!-- éšè®¿æ¨¡ç‰ˆé¢„览 -->
      <div v-if="Editprogress == 3">
@@ -642,35 +660,20 @@
        >
          <el-form-item label="标题" prop="userName">
            <el-input
              v-model="queryParams.userName"
              v-model="queryParams.questiontitle"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
              @keyup.enter.native="getaddtopiclist"
            />
          </el-form-item>
          <el-form-item label="主题" prop="sickness">
            <el-select
              v-model="ruleForm.classify"
              size="medium"
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in themelist"
                :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"
              @click="getaddtopiclist"
              >搜索</el-button
            >
            <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
@@ -682,15 +685,15 @@
          <el-table-column
            label="标题"
            align="center"
            key="userName"
            prop="userName"
            key="questiontitle"
            prop="questiontitle"
            width="100"
          />
          <el-table-column
            label="问题话术"
            align="center"
            key="verbaltrick"
            prop="verbaltrick"
            key="questionText"
            prop="questionText"
            width="200"
            :show-overflow-tooltip="true"
          />
@@ -701,10 +704,7 @@
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row)"
              <el-button size="medium" type="text" @click="addtopic(scope.row)"
                ><span class="button-textxg"
                  ><i class="el-icon-circle-plus-outline"></i>添加</span
                ></el-button
@@ -720,7 +720,7 @@
<script>
import { listtag } from "@/api/system/label";
import store from "@/store";
import { listDept } from "@/api/system/dept";
import {
  getFollowupclassify,
  delFollowupclassify,
@@ -728,6 +728,8 @@
  addtargetillness,
  getvFollowup,
  compileFollowup,
  getverbaltricklist,
  getverbaltrick,
  delFollowupinfo,
  Followupinfo,
  getFollowuplist,
@@ -744,7 +746,6 @@
      drawer: false, //控制展开
      radios: [], //多选题选中
      radioas: "", //填空题答案
      campusvalue: [], //院区临时存储
      labelInfovalue: [], //标签临时存储
      deptNamesvalue: [], //科室临时存储
      dynamicTags: [],
@@ -759,7 +760,10 @@
      optionstag: [],
      prefollowuplist: [],
      postfollowuplist: [],
      generallist: [{ value: "1", label: "随访通用库一" }],
      generallist: [
        { value: "1", label: "随访通用库一" },
        { value: "2", label: "随访二库" },
      ],
      fileList: [
        {
@@ -776,6 +780,7 @@
      courtyardlist: [],
      precedencetype: [],
      usable: [],
      required: [],
      mode: [],
      inputVisible: false,
      inputVisibleillness: false,
@@ -788,6 +793,14 @@
        children: "ivrLibaTemplateAssortList",
        label: "indexAssortName",
      },
      tempDetpRelevanceslist: [],
      variablelist: [
        { variatename: "姓名", variate: "${name}", default: 1 },
        { variatename: "电话", variate: "${phone}", default: 1 },
        { variatename: "病情", variate: "${illness}", default: 1 },
      ],
      deptList: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      variablelist: [
        {
@@ -846,6 +859,7 @@
    this.auxiliary();
    this.mode = store.getters.mode;
    this.usable = store.getters.usable;
    this.required = store.getters.required;
    this.languagelist = store.getters.languagelist;
    this.courtyardlist = store.getters.courtyardlist;
    this.precedencetype = store.getters.precedencetype;
@@ -855,12 +869,24 @@
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    processElement(element) {
      return { ...element, isoperation: 0 };
    },
    // èŽ·å–è¡¨å•æ•°æ®
    getvFollowup() {
      this.id = this.$route.query.id;
      getvFollowup({ id: this.id }).then((res) => {
        this.ruleForm = res.data;
        this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
        this.ruleForm.suitway = this.ruleForm.suitway.split(",");
        this.ruleForm.campus = this.ruleForm.campus.split(",");
        this.ruleForm.submoduleID = this.ruleForm.submoduleID.split(",");
        this.dynamicTags = this.ruleForm.ivrLibaTemplateTagList;
        this.dynamicTags = this.ruleForm.ivrLibaTemplateTagList.map(
          this.processElement
        );
        console.log(this.ruleForm.suitway);
      });
      getillnesslist({
        pageNum: 1,
@@ -870,6 +896,9 @@
      });
      getillness({ outid: this.id, type: 3 }).then((res) => {
        this.illnesslist = res.rows;
      });
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
    // é™„属数据表
@@ -884,22 +913,60 @@
      if (this.ruleForm.id) {
        this.ruleForm.isoperation = 2;
      } else {
        this.ruleForm.isoperation = 2;
        this.ruleForm.isoperation = 1;
      }
      this.ruleForm.campus = JSON.stringify(this.illnesslist);
      this.ruleForm.deptNames = this.deptNamesvalue.join(",");
      this.ruleForm.labelInfo = JSON.stringify(this.dynamicTags);
      this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      this.ruleForm.campus = this.ruleForm.campus.join(",");
      this.ruleForm.submoduleID = this.ruleForm.submoduleID.join(",");
      //   æäº¤
      this.$refs[formName].validate((valid) => {
        if (valid) {
          compileFollowup(this.ruleForm).then((res) => {
            this.$modal.msgSuccess("修改成功");
          });
        } else {
          console.log("error submit!!");
          return false;
      compileFollowup(this.ruleForm).then((res) => {
        this.$modal.msgSuccess("编辑成功");
      });
      this.illnesslist.forEach((item, index) => {
        if (!item.id) {
          addtargetillness(item).then((res) => {});
        }
      });
      if (this.illnesslistapi.length) {
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
    },
    // ç§‘室处理
    Departmenttreatment() {
      this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist);
      console.log(this.tempDetpRelevanceslist);
      const result = this.tempDetpRelevanceslist.map(
        (subArr) => subArr[subArr.length - 1]
      );
      // id数组查数组对象
      result.forEach((item) => {
        const condition = this.ruleForm.tempDetpRelevances.some(
          (obj) => obj.deptId === item
        );
        if (!condition) {
          listDept({ deptId: item }).then((res) => {
            res.data[0].type = 2;
            this.ruleForm.tempDetpRelevances.push(res.data[0]);
          });
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      // æ•°ç»„对象查id数组
      this.ruleForm.tempDetpRelevances.forEach((item) => {
        const condition = result.some((obj) => obj === item.deptId);
        if (!condition) {
          const index = this.ruleForm.tempDetpRelevances.indexOf(item);
          this.ruleForm.tempDetpRelevances[index].delFlag = 1;
        }
      });
      console.log(this.ruleForm.tempDetpRelevances);
      setTimeout(() => {
        this.submitForm();
      }, 1000);
      // this.submitForm();
    },
    // ä¸‹ä¸€æ­¥
    nextstep() {
@@ -928,8 +995,7 @@
          });
        });
    },
    // ä¿å­˜é¢˜ç›®ä¿¡æ¯
    Saveproblem() {},
    /** æŸ¥è¯¢é¢˜ç›®åˆ—表 */
    getList() {
      //   this.loading = true;
@@ -976,7 +1042,7 @@
      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;
      this.ruleForm.ivrLibaTemplateTagList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let tagvalue = {};
@@ -997,7 +1063,7 @@
              isoperation: 1,
            };
          }
          this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue);
          this.ruleForm.ivrLibaTemplateTagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
        });
      }
@@ -1020,10 +1086,39 @@
    showInput() {
      this.inputVisible = true;
    },
    //测试表单 ---------------------------------
    //话术题目----------------
    addzbiao() {},
    handleUpdate() {},
    deloption(item) {
    resetQuery() {
      this.queryParams = { pageNum: 1, pageSize: 10 };
      this.getaddtopiclist();
    },
    getaddtopiclist() {
      this.drawer = true;
      getverbaltricklist(this.queryParams).then((res) => {
        this.loading = false;
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList);
      });
    },
    addtopic(row) {
      row.isoperation = 1;
      this.ruleForm.ivrLibaTemplateScriptVOList.push(row);
    },
    handleDelete(row) {
      this.ruleForm.ivrLibaTemplateScriptVOList.splice(
        this.ruleForm.ivrLibaTemplateScriptVOList.indexOf(row),
        1
      );
    },
    handleUpdate(row) {
      console.log(row.id);
      getverbaltrick({ id: row.id }).then((res) => {
        this.topicobj = res.data;
        console.log(res.data);
      });
    },
    handleDelete(item) {
      const index = this.userList.indexOf(item);
      if (index !== -1) {
        this.userList.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
@@ -1055,9 +1150,6 @@
      console.log(this.userList);
    },
    // ---------------------
    // æŸ¥è¯¢é¢˜åº“
    handleQuery() {},
    resetQuery() {},
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
src/views/repositoryai/templateku/index.vue
@@ -1,7 +1,7 @@
<template>
  <div class="Questionnairemanagement">
    <!-- å·¦ä¾§æ  -->
    <div class="sidecolumn" v-show="topactiveName == 'Local'">
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">模版类型</div>
        <div class="top-tj" @click="dialogFormVisible = true">+添加</div>
@@ -44,7 +44,7 @@
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
    <div :class="topactiveName == 'Local' ? 'leftvlue' : 'leftvlues'">
    <div class="leftvlue">
      <div class="leftvlue-bg">
        <el-row :gutter="20">
          <!--用户数据-->
@@ -66,16 +66,21 @@
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="适用科室" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in languagelist"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              <el-form-item label="适用科室" prop="region">
                <el-cascader
                  v-model="queryParams.administrative"
                  :options="deptList"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.deptName }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item>
              <el-form-item label="可用状态" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
@@ -157,7 +162,6 @@
            </el-row>
            <!-- æ ‡å‡†æ¨¡ç‰ˆ -->
            <el-table
              v-if="topactiveName == 'Local'"
              v-loading="loading"
              :data="userList"
              :border="true"
@@ -202,22 +206,6 @@
              </el-table-column>
              <el-table-column
                label="适用科室"
                align="center"
                key="deptNames"
                prop="deptNames"
                width="120"
              >
                <template slot-scope="scope">
                  <div v-if="scope.row.deptNames">
                    <span v-for="item in scope.row.deptNames.split(',')"
                      >{{ item }}
                    </span>
                  </div>
                  <div v-else>''</div>
                </template>
              </el-table-column>
              <el-table-column
                label="标签"
                align="center"
                key="labelInfo"
@@ -246,8 +234,8 @@
              >
                <template slot-scope="scope">
                  <div v-if="scope.row.campus">
                    <span v-for="item in JSON.parse(scope.row.campus)"
                      >{{ item.label }}
                    <span v-for="item in scope.row.campus.split(',')"
                      >{{ item }}、
                    </span>
                  </div>
                  <div v-else>
@@ -435,12 +423,14 @@
  getvFollowup,
  compileFollowup,
  delFollowupinfo,
  getverbaltricklist,
  Followupinfo,
  getFollowuplist,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
export default {
  name: "templateku",
  data() {
@@ -512,6 +502,8 @@
        children: "ivrLibaTemplateAssortList",
        label: "indexAssortName",
      },
      deptList: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      mode: [],
      languagelist: [],
      qyoptions: [],
@@ -540,6 +532,11 @@
        console.log(this.userList);
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList[0].campus.split(","));
      });
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
@@ -657,6 +654,8 @@
      addFollowupclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
        this.dialogFormVisible = false;
      });
    },
    remove(a, b) {
src/views/repositoryai/verbaltrick/index.vue
@@ -68,7 +68,7 @@
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="问题主题" prop="userName">
              <el-form-item label="问题标题" prop="userName">
                <el-input
                  v-model="queryParams.userName"
                  placeholder="请输入"
@@ -87,9 +87,9 @@
                />
              </el-form-item>
              <el-form-item label="适用方式" prop="status">
                <el-select v-model="queryParams.applyway" placeholder="请选择">
                <el-select v-model="queryParams.suitway" placeholder="请选择">
                  <el-option
                    v-for="item in languagelist"
                    v-for="item in mode"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -204,12 +204,12 @@
              /><el-table-column
                label="适用方式"
                align="center"
                key="application"
                prop="application"
                key="suitway"
                prop="suitway"
                width="120"
              >
                <template slot-scope="scope">
                  <dict-tag :options="mode" :value="scope.row.suitWay" />
                  <dict-tag :options="mode" :value="scope.row.suitway" />
                </template>
              </el-table-column>
              <el-table-column
@@ -523,7 +523,7 @@
      getverbaltricklist(this.queryParams).then((res) => {
        this.userList = res.rows;
        this.loading = false;
        this.total=res.total
        this.total = res.total;
      });
    },
@@ -615,6 +615,8 @@
      addbaltrickclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
        this.classifyform = {};
        this.dialogFormVisible = false;
      });
    },
    remove(a, b) {
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -44,7 +44,7 @@
                  placeholder="请选择状态"
                >
                  <el-option
                    v-for="item in qyoptions"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -136,49 +136,51 @@
            </div>
          </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.name"
                  placeholder="请输入变量名"
                ></el-input>
              </el-col>
              <el-col :span="8" :offset="1">
                <el-input
                  v-model="item.value"
                  placeholder="请输入变量内容"
                ></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
                  type="success"
                  icon="el-icon-plus"
                  circle
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                  v-if="item"
                  type="danger"
                  icon="el-icon-delete"
                  circle
                  @click="delvariable(item)"
                ></el-button>
              </el-col>
            </el-row>
            <div style="margin-bottom: 5px" v-for="item in variablelist">
              <el-row>
                <el-col :span="5">
                  <el-input
                    v-model="item.variatename"
                    placeholder="请输入变量名"
                  ></el-input>
                </el-col>
                <el-col :span="8" :offset="1">
                  <el-input
                    v-model="item.variate"
                    placeholder="请输入变量内容"
                  ></el-input>
                </el-col>
                <el-col :span="8" :offset="1">
                  <el-button
                    type="success"
                    icon="el-icon-plus"
                    circle
                    @click="addvariable(item)"
                  ></el-button>
                  <el-button
                    v-if="!item.default"
                    type="danger"
                    icon="el-icon-delete"
                    circle
                    @click="delvariable(item)"
                  ></el-button>
                </el-col>
              </el-row>
            </div>
          </el-form-item>
          <el-row>
            <el-col :span="12">
            <el-col :span="6">
              <el-form-item label="仅限院区" prop="region">
                <el-select
                  v-model="indexform.courtyard"
                  v-model="indexform.campus"
                  size="medium"
                  filterable
                  placeholder="请选择"
                >
                  <el-option
                    class="indexformaa"
                    v-for="item in options"
                    v-for="item in courtyardlist"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -187,7 +189,24 @@
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
            <el-col :span="6">
              <el-form-item label="适用方式" prop="status">
                <el-select
                  v-model="indexform.suitway"
                  multiple
                  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-col :span="8">
              <el-form-item label="关联指标" prop="region">
                <el-select
                  v-model="indexform.targetid"
@@ -196,13 +215,14 @@
                  reserve-keyword
                  placeholder="请输入关键词"
                  :remote-method="remoteMethod"
                  @change="targetchange"
                  :loading="loading"
                >
                  <el-option
                    v-for="item in targetlist"
                    :key="item.targetid"
                    :key="item.id"
                    :label="item.targetname"
                    :value="item.targetid"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
@@ -219,7 +239,7 @@
                  class="tsgname"
                  @click="tsgnameto(item)"
                >
                  {{ item.name }}
                  {{ item.variatename }}
                </div>
              </div>
            </el-col></el-row
@@ -377,8 +397,9 @@
          >
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="nextstep">ç¡® å®š</el-button>
          <el-button type="primary" @click="nextstep">下一步</el-button>
          <el-button @click="closeFm">关 é—­</el-button>
          <el-button @click="Saveproblem()">保存数据</el-button>
        </div>
      </div>
      <!-- æŒ‡æ ‡è®¾ç½® -->
@@ -518,7 +539,7 @@
        </div>
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="info" @click="closeFm()">关闭</el-button>
        <el-button @click="Saveproblem()">保存指标数据</el-button>
        <el-button @click="Saveproblem()">保存数据</el-button>
      </div>
    </div>
  </div>
@@ -556,7 +577,7 @@
      mode: [],
      questionclass: [],
      currentInputId: "",
      courtyardlist: [],
      // æ€»æ¡æ•°
      total: 1,
@@ -576,9 +597,13 @@
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      qyoptions: [],
      usable: [],
      options: [],
      variablelist: [],
      variablelist: [
        { variatename: "姓名", variate: "${name}", default: 1 },
        { variatename: "电话", variate: "${phone}", default: 1 },
        { variatename: "病情", variate: "${illness}", default: 1 },
      ],
      addvalue: "添加题目",
      languagelist: [], //语言列表
@@ -601,7 +626,8 @@
    this.mode = store.getters.mode;
    this.valuetype = store.getters.valuetype;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
    this.usable = store.getters.usable;
    this.courtyardlist = store.getters.courtyardlist;
  },
  methods: {
@@ -610,20 +636,20 @@
      let id = this.$route.query.id;
      getverbaltrick({ id: id }).then((res) => {
        this.indexform = res.data;
        this.indexform.suitway = this.indexform.suitway.split(",");
        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.otherdata).length
          ? JSON.parse(this.indexform.otherdata)
          : this.variablelist;
        this.dynamicTags = this.indexform.ivrLibaScriptTagList.map(
          this.processElement
        );
        this.targetlist = [
          {
            targetid: this.indexform.targetid,
            id: this.indexform.targetid,
            targetname: this.indexform.targetname,
          },
        ];
        console.log(this.targetlist);
      });
      // æ ‘
      getbaltrickclassify({}).then((res) => {
@@ -634,12 +660,20 @@
    // ä¿å­˜è¯¦ç»†ä¿¡æ¯
    Saveproblem() {
      console.log(this.variablelist);
      this.indexform.otherdata = JSON.stringify(this.variablelist);
      this.indexform.suitway = this.indexform.suitway.join(",");
      if (this.indexform.id) {
        this.indexform.isoperation = 2;
        this.indexform.parameter = JSON.stringify(this.variablelist);
        compileverbaltrick(this.indexform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("修改成功");
            this.$router.go(-1);
          } else {
            this.$message({
              message: "修改失败",
              type: "error",
            });
          }
        });
      } else {
@@ -647,6 +681,12 @@
        compileverbaltrick(this.indexform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("新增成功");
            this.$router.go(-1);
          } else {
            this.$message({
              message: "新增失败",
              type: "error",
            });
          }
        });
      }
@@ -664,6 +704,24 @@
        this.targetlist = [];
      }
    },
    targetchange(res) {
      console.log(res);
      gettargetInfo({ id: res }).then((res) => {
        this.indexform.targetname = res.rows[0].targetname;
        this.$modal
          .confirm('是否添加"' + this.indexform.targetname + '"指标的选项?')
          .then(() => {
            this.indexform.isenable = res.rows[0].isenable;
            res.rows[0].targetoptionList.forEach((item) => {
              item.isoperation = 1;
              this.indexform.ivrLibaScriptTargetoptionList.push(item);
            });
          })
          .catch(() => {
            this.$modal.msgSuccess("已取消");
          });
      });
    },
    // ä¸‹ä¸€æ­¥
    nextstep() {
@@ -671,14 +729,7 @@
        if (this.indexform.ivrLibaScriptTargetoptionList.length) {
          return this.Editprogress++;
        }
        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) => {
            item.isoperation = 1;
            this.indexform.ivrLibaScriptTargetoptionList.push(item);
          });
        });
        return this.Editprogress++;
      } else {
        this.$message.warning("请先选择关联指标");
@@ -779,7 +830,6 @@
    showInput() {
      this.inputVisible = true;
    },
    // --------------------------
    //测试表单 --------------------------
    gettagerlist() {
      gettagerlist({ targetname: this.targetname }).then((response) => {
@@ -796,7 +846,7 @@
      });
      this.sortFn();
    },
    deloption() {
    deloption(item) {
      const index = this.indexform.ivrLibaScriptTargetoptionList.indexOf(item);
      if (index !== -1) {
        this.indexform.ivrLibaScriptTargetoptionList.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
@@ -870,7 +920,7 @@
      // æ‹¿åˆ°é€‰ä¸­æ–‡å­—的长度(后续可以用来替换选中的文字)
      let selectLength = el.selectionEnd - el.selectionStart;
      // å°†è¦æ’å…¥/替换的文字插入/替换(value.name是要插入/替换的字符串)
      inputValueArr.splice(el.selectionStart, selectLength, `${row.value}`);
      inputValueArr.splice(el.selectionStart, selectLength, `${row.variate}`);
      // æŠŠæ•°ç»„重新转换为字符串并赋值
      inputValueArr = inputValueArr.join("");
      console.log(inputValueArr);
@@ -892,8 +942,8 @@
    // æ–°å¢žå˜é‡
    addvariable() {
      this.variablelist.push({
        variable: "",
        value: "",
        variatename: "",
        variate: "",
      });
    },
    // åˆ é™¤å˜é‡
src/views/shortmessage/healthinformation/index.vue
@@ -65,19 +65,21 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="适用科室" prop="userName">
                <el-select
              <el-form-item label="适用科室" prop="region">
                <el-cascader
                  v-model="queryParams.administrative"
                  placeholder="请选择"
                  :options="deptList"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                >
                  <el-option
                    v-for="item in optionks"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
                  <template slot-scope="{ node, data }">
                    <span>{{ data.deptName }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item>
              <el-form-item label="通知标题" prop="userName">
                <el-input
@@ -420,19 +422,21 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="适用科室" prop="userName">
              <el-select
                v-model="indexform.useofstateks"
                multiple
                placeholder="请选择(多选)"
            <el-form-item label="适用科室" prop="region">
              <el-cascader
                v-model="indexform.administrative"
                :options="deptList"
                :props="props"
                :show-all-levels="false"
                clearable
              >
                <el-option
                  v-for="index in optionks"
                  :key="index.value"
                  :label="index.label"
                  :value="index.value"
                ></el-option>
              </el-select>
                <template slot-scope="{ node, data }">
                  <span>{{ data.deptName }}</span>
                  <span v-if="!node.isLeaf">
                    ({{ data.children.length }})
                  </span>
                </template>
              </el-cascader>
            </el-form-item>
          </el-col>
        </el-row>
@@ -512,6 +516,7 @@
  addUser,
  updateUser,
} from "@/api/system/user";
import { listDept } from "@/api/system/dept";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -741,6 +746,8 @@
          },
        ],
      },
      deptList: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
    };
  },
  watch: {},
@@ -767,6 +774,9 @@
      //   const { rows } = await listUser();
      //   console.log(rows);
      //   this.list = rows;
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
src/views/system/dept/index.vue
@@ -1,6 +1,12 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
    <el-form
      :model="queryParams"
      ref="queryForm"
      size="small"
      :inline="true"
      v-show="showSearch"
    >
      <el-form-item label="部门名称" prop="deptName">
        <el-input
          v-model="queryParams.deptName"
@@ -10,7 +16,11 @@
        />
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-select v-model="queryParams.status" placeholder="部门状态" clearable>
        <el-select
          v-model="queryParams.status"
          placeholder="部门状态"
          clearable
        >
          <el-option
            v-for="dict in dict.type.sys_normal_disable"
            :key="dict.value"
@@ -20,8 +30,16 @@
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
        <el-button
          type="primary"
          icon="el-icon-search"
          size="mini"
          @click="handleQuery"
          >搜索</el-button
        >
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
          >重置</el-button
        >
      </el-form-item>
    </el-form>
@@ -34,7 +52,8 @@
          size="mini"
          @click="handleAdd"
          v-hasPermi="['system:dept:add']"
        >新增</el-button>
          >新增</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
@@ -43,9 +62,13 @@
          icon="el-icon-sort"
          size="mini"
          @click="toggleExpandAll"
        >展开/折叠</el-button>
          >展开/折叠</el-button
        >
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
      ></right-toolbar>
    </el-row>
    <el-table
@@ -54,21 +77,41 @@
      :data="deptList"
      row-key="deptId"
      :default-expand-all="isExpandAll"
      :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
      :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
    >
      <el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
      <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>
      <el-table-column
        prop="deptName"
        label="部门名称"
        width="260"
      ></el-table-column>
      <el-table-column
        prop="orderNum"
        label="排序"
        width="200"
      ></el-table-column>
      <el-table-column prop="status" label="状态" width="100">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
          <dict-tag
            :options="dict.type.sys_normal_disable"
            :value="scope.row.status"
          />
        </template>
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime" width="200">
      <el-table-column
        label="创建时间"
        align="center"
        prop="createTime"
        width="200"
      >
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
      >
        <template slot-scope="scope">
          <el-button
            size="mini"
@@ -76,14 +119,16 @@
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['system:dept:edit']"
          >修改</el-button>
            >修改</el-button
          >
          <el-button
            size="mini"
            type="text"
            icon="el-icon-plus"
            @click="handleAdd(scope.row)"
            v-hasPermi="['system:dept:add']"
          >新增</el-button>
            >新增</el-button
          >
          <el-button
            v-if="scope.row.parentId != 0"
            size="mini"
@@ -91,7 +136,8 @@
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['system:dept:remove']"
          >删除</el-button>
            >删除</el-button
          >
        </template>
      </el-table-column>
    </el-table>
@@ -102,7 +148,12 @@
        <el-row>
          <el-col :span="24" v-if="form.parentId !== 0">
            <el-form-item label="上级部门" prop="parentId">
              <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级部门" />
              <treeselect
                v-model="form.parentId"
                :options="deptOptions"
                :normalizer="normalizer"
                placeholder="选择上级部门"
              />
            </el-form-item>
          </el-col>
        </el-row>
@@ -114,26 +165,42 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="显示排序" prop="orderNum">
              <el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
              <el-input-number
                v-model="form.orderNum"
                controls-position="right"
                :min="0"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="负责人" prop="leader">
              <el-input v-model="form.leader" placeholder="请输入负责人" maxlength="20" />
              <el-input
                v-model="form.leader"
                placeholder="请输入负责人"
                maxlength="20"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="联系电话" prop="phone">
              <el-input v-model="form.phone" placeholder="请输入联系电话" maxlength="11" />
              <el-input
                v-model="form.phone"
                placeholder="请输入联系电话"
                maxlength="11"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="邮箱" prop="email">
              <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />
              <el-input
                v-model="form.email"
                placeholder="请输入邮箱"
                maxlength="50"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -143,7 +210,8 @@
                  v-for="dict in dict.type.sys_normal_disable"
                  :key="dict.value"
                  :label="dict.value"
                >{{dict.label}}</el-radio>
                  >{{ dict.label }}</el-radio
                >
              </el-radio-group>
            </el-form-item>
          </el-col>
@@ -158,13 +226,20 @@
</template>
<script>
import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/dept";
import {
  listDept,
  getDept,
  delDept,
  addDept,
  updateDept,
  listDeptExcludeChild,
} from "@/api/system/dept";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "Dept",
  dicts: ['sys_normal_disable'],
  dicts: ["sys_normal_disable"],
  components: { Treeselect },
  data() {
    return {
@@ -187,36 +262,36 @@
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        deptName: undefined,
        status: undefined
        status: undefined,
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {
        parentId: [
          { required: true, message: "上级部门不能为空", trigger: "blur" }
          { required: true, message: "上级部门不能为空", trigger: "blur" },
        ],
        deptName: [
          { required: true, message: "部门名称不能为空", trigger: "blur" }
          { required: true, message: "部门名称不能为空", trigger: "blur" },
        ],
        orderNum: [
          { required: true, message: "显示排序不能为空", trigger: "blur" }
          { required: true, message: "显示排序不能为空", trigger: "blur" },
        ],
        email: [
          {
            type: "email",
            message: "请输入正确的邮箱地址",
            trigger: ["blur", "change"]
          }
            trigger: ["blur", "change"],
          },
        ],
        phone: [
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur"
          }
        ]
      }
            trigger: "blur",
          },
        ],
      },
    };
  },
  created() {
@@ -226,8 +301,9 @@
    /** æŸ¥è¯¢éƒ¨é—¨åˆ—表 */
    getList() {
      this.loading = true;
      listDept(this.queryParams).then(response => {
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
        console.log(this.deptList);
        this.loading = false;
      });
    },
@@ -239,7 +315,7 @@
      return {
        id: node.deptId,
        label: node.deptName,
        children: node.children
        children: node.children,
      };
    },
    // å–消按钮
@@ -257,7 +333,7 @@
        leader: undefined,
        phone: undefined,
        email: undefined,
        status: "0"
        status: "0",
      };
      this.resetForm("form");
    },
@@ -278,7 +354,7 @@
      }
      this.open = true;
      this.title = "添加部门";
      listDept().then(response => {
      listDept().then((response) => {
        this.deptOptions = this.handleTree(response.data, "deptId");
      });
    },
@@ -293,31 +369,35 @@
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      getDept(row.deptId).then(response => {
      getDept(row.deptId).then((response) => {
        this.form = response.data;
        this.open = true;
        this.title = "修改部门";
        listDeptExcludeChild(row.deptId).then(response => {
        listDeptExcludeChild(row.deptId).then((response) => {
          this.deptOptions = this.handleTree(response.data, "deptId");
          if (this.deptOptions.length == 0) {
            const noResultsOptions = { deptId: this.form.parentId, deptName: this.form.parentName, children: [] };
            const noResultsOptions = {
              deptId: this.form.parentId,
              deptName: this.form.parentName,
              children: [],
            };
            this.deptOptions.push(noResultsOptions);
          }
        });
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm: function() {
      this.$refs["form"].validate(valid => {
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.deptId != undefined) {
            updateDept(this.form).then(response => {
            updateDept(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addDept(this.form).then(response => {
            addDept(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
@@ -328,13 +408,17 @@
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      this.$modal.confirm('是否确认删除名称为"' + row.deptName + '"的数据项?').then(function() {
        return delDept(row.deptId);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    }
  }
      this.$modal
        .confirm('是否确认删除名称为"' + row.deptName + '"的数据项?')
        .then(function () {
          return delDept(row.deptId);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    },
  },
};
</script>