WXL
2024-06-17 43988e7dae93378116a8c5f1fc76f5568d8fd4b2
测试完成
已添加1个文件
已修改13个文件
1147 ■■■■ 文件已修改
src/api/AiCentre/Qtemplate.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/questionnaire.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/smartor/svytitle.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/smartor/svytopic.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/smartor/svytopicoption.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/AskRegular/index.vue 394 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/particulars/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/general/particulars/index.vue 432 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/particulars/index.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Qtemplate.js
@@ -3,7 +3,7 @@
// æŸ¥è¯¢é—®å·æ¨¡ç‰ˆåˆ—表
export function getQtemplatelist(data) {
  return request({
    url: "/smartor/svytitle/selectSvyLibTitlelist",
    url: "/smartor/svyTemplate/selectSvyLibTemplatelist",
    method: "post",
    data: data,
  });
@@ -11,21 +11,21 @@
// é—®å·æ¨¡ç‰ˆè¯¦æƒ…
export function Qtemplateinfo(Id) {
  return request({
    url: "/smartor/svytitle/" + Id,
    url: "/smartor/svyTemplate/" + Id,
    method: "get",
  });
}
// åˆ é™¤é—®å·æ¨¡ç‰ˆ
export function delQtemplateinfo(Id) {
    return request({
      url: "/smartor/svytitle/remove/" + Id,
      url: "/smartor/svyTemplate/remove/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæˆ–修改问卷模版详情
export function compileQtemplate(data) {
    return request({
      url: "/smartor/svytitle/saveOrUpdateTitle",
      url: "/smartor/svyTemplate/saveOrUpdateTitle",
      method: "post",
      data: data,
    });
@@ -35,7 +35,7 @@
  // æ–°å¢žé—®å·æ¨¡ç‰ˆåˆ†ç±»
  export function addQtemplateclassify(data) {
    return request({
      url: "/smartor/svyLibTitleCategory/addtree",
      url: "/smartor/svyLibTemplateCategory/addtree",
      method: "post",
      data: data,
    });
@@ -43,7 +43,7 @@
    // æ–°å¢žé—®å·æ¨¡ç‰ˆåˆ†ç±»
    export function editQtemplateclassify(data) {
      return request({
        url: "/smartor/svyLibTitleCategory/edit",
        url: "/smartor/svyLibTemplateCategory/edit",
        method: "post",
        data: data,
      });
@@ -51,15 +51,15 @@
  // åˆ é™¤é—®å·æ¨¡ç‰ˆåˆ†ç±»
export function delQtemplateclassify(Id) {
  return request({
    url: "/smartor/svyLibTitleCategory/remove/" + Id,
    url: "/smartor/svyLibTemplateCategory/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢é—®å·æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function getQtemplateclassify(data) {
    return request({
      url: "/smartor/svyLibTitleCategory/list",
      url: "/smartor/svyLibTemplateCategory/list",
      method: "post",
      data: data,
    });
  }
  }
src/api/AiCentre/questionnaire.js
@@ -3,7 +3,7 @@
// æŸ¥è¯¢é—®å·é—®é¢˜åˆ—表
export function getissuelist(data) {
  return request({
    url: "/smartor/svytopic/list",
    url: "/smartor/svyscript/list",
    method: "post",
    data: data,
  });
@@ -11,21 +11,21 @@
// é—®å·é—®é¢˜è¯¦æƒ…
export function issueinfo(Id) {
  return request({
    url: "/smartor/svytopic/getInfo/" + Id,
    url: "/smartor/svyscript/getInfo/" + Id,
    method: "get",
  });
}
// åˆ é™¤é—®å·é—®é¢˜
export function delissueinfo(Id) {
    return request({
      url: "/smartor/svytopic/remove/" + Id,
      url: "/smartor/svyscript/remove/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæˆ–修改问卷问题详情
export function compileissue(data) {
    return request({
      url: "/smartor/svytopic/saveOrUpdateTopic",
      url: "/smartor/svyscript/saveOrUpdateTopic",
      method: "post",
      data: data,
    });
@@ -35,7 +35,7 @@
  // æ–°å¢žé—®å·é—®é¢˜åˆ†ç±»
  export function addissueclassify(data) {
    return request({
      url: "/smartor/svyLibTopicCategory/addtree",
      url: "/smartor/svyLibScriptCategory/addtree",
      method: "post",
      data: data,
    });
@@ -43,7 +43,7 @@
  // æ–°å¢žé—®å·é—®é¢˜åˆ†ç±»
  export function editissueclassify(data) {
    return request({
      url: "/smartor/svyLibTopicCategory/edit",
      url: "/smartor/svyLibScriptCategory/edit",
      method: "post",
      data: data,
    });
@@ -51,15 +51,15 @@
  // åˆ é™¤é—®å·é—®é¢˜åˆ†ç±»
export function delissueclassify(Id) {
  return request({
    url: "/smartor/svyLibTopicCategory/remove/" + Id,
    url: "/smartor/svyLibScriptCategory/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢é—®å·é—®é¢˜åˆ†ç±»æ ‘
  export function getissueclassify(data) {
    return request({
      url: "/smartor/svyLibTopicCategory/list",
      url: "/smartor/svyLibScriptCategory/list",
      method: "post",
      data: data,
    });
  }
  }
src/api/smartor/svytitle.js
@@ -1,44 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢é—®å·åˆ—表
export function listSvytitle(query) {
export function listsvyTemplate(query) {
  return request({
    url: '/smartor/svytitle/list',
    url: '/smartor/svyTemplate/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢é—®å·è¯¦ç»†
export function getSvytitle(svyid) {
export function getsvyTemplate(svyid) {
  return request({
    url: '/smartor/svytitle/' + svyid,
    url: '/smartor/svyTemplate/' + svyid,
    method: 'get'
  })
}
// æ–°å¢žé—®å·
export function addSvytitle(data) {
export function addsvyTemplate(data) {
  return request({
    url: '/smartor/svytitle',
    url: '/smartor/svyTemplate',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹é—®å·
export function updateSvytitle(data) {
export function updatesvyTemplate(data) {
  return request({
    url: '/smartor/svytitle/edit',
    url: '/smartor/svyTemplate/edit',
    method: 'post',
    data: data
  })
}
// åˆ é™¤é—®å·
export function delSvytitle(svyid) {
export function delsvyTemplate(svyid) {
  return request({
    url: '/smartor/svytitle/remove/' + svyid,
    url: '/smartor/svyTemplate/remove/' + svyid,
    method: 'get'
  })
}
src/api/smartor/svytopic.js
@@ -1,44 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢é—®å·é¢˜ç›®åˆ—表
export function listSvytopic(query) {
export function listsvyscript(query) {
  return request({
    url: '/smartor/svytopic/list',
    url: '/smartor/svyscript/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢é—®å·é¢˜ç›®è¯¦ç»†
export function getSvytopic(topicid) {
export function getsvyscript(topicid) {
  return request({
    url: '/smartor/svytopic/' + topicid,
    url: '/smartor/svyscript/' + topicid,
    method: 'get'
  })
}
// æ–°å¢žé—®å·é¢˜ç›®
export function addSvytopic(data) {
export function addsvyscript(data) {
  return request({
    url: '/smartor/svytopic',
    url: '/smartor/svyscript',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹é—®å·é¢˜ç›®
export function updateSvytopic(data) {
export function updatesvyscript(data) {
  return request({
    url: '/smartor/svytopic/edit',
    url: '/smartor/svyscript/edit',
    method: 'post',
    data: data
  })
}
// åˆ é™¤é—®å·é¢˜ç›®
export function delSvytopic(topicid) {
export function delsvyscript(topicid) {
  return request({
    url: '/smartor/svytopic/remove/' + topicid,
    url: '/smartor/svyscript/remove/' + topicid,
    method: 'get'
  })
}
src/api/smartor/svytopicoption.js
@@ -1,44 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢é—®å·é—®é¢˜é€‰é¡¹åˆ—表
export function listSvytopicoption(query) {
export function listsvyscriptoption(query) {
  return request({
    url: '/smartor/svytopicoption/list',
    url: '/smartor/svyscriptoption/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢é—®å·é—®é¢˜é€‰é¡¹è¯¦ç»†
export function getSvytopicoption(optionid) {
export function getsvyscriptoption(optionid) {
  return request({
    url: '/smartor/svytopicoption/' + optionid,
    url: '/smartor/svyscriptoption/' + optionid,
    method: 'get'
  })
}
// æ–°å¢žé—®å·é—®é¢˜é€‰é¡¹
export function addSvytopicoption(data) {
export function addsvyscriptoption(data) {
  return request({
    url: '/smartor/svytopicoption',
    url: '/smartor/svyscriptoption',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹é—®å·é—®é¢˜é€‰é¡¹
export function updateSvytopicoption(data) {
export function updatesvyscriptoption(data) {
  return request({
    url: '/smartor/svytopicoption/edit',
    url: '/smartor/svyscriptoption/edit',
    method: 'post',
    data: data
  })
}
// åˆ é™¤é—®å·é—®é¢˜é€‰é¡¹
export function delSvytopicoption(optionid) {
export function delsvyscriptoption(optionid) {
  return request({
    url: '/smartor/svytopicoption/remove/' + optionid,
    url: '/smartor/svyscriptoption/remove/' + optionid,
    method: 'get'
  })
}
src/components/AskRegular/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,394 @@
<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="预警值">
            <el-radio-group v-model="radio">
              <el-radio :label="3">是</el-radio>
              <el-radio :label="6">否</el-radio>
            </el-radio-group>
          </el-form-item></el-col
        >
        <el-col :span="12" v-if="intent"
          ><el-form-item label="选项节点">
            <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" v-if="!intent">
        <el-col :span="20"
          ><el-form-item label="选项说明">
            <el-input
              type="text"
              placeholder="请输入"
              v-model="item.targetvalue2"
              show-word-limit
            >
            </el-input> </el-form-item
        ></el-col>
      </el-row>
      <el-row :gutter="10" v-if="intent">
        <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.nextQuestion"
              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 item.dynamiccruxs"
            closable
            effect="dark"
            :disable-transitions="false"
            @close="handleClosecrux(crux, item, 1)"
          >
            {{ crux }}
          </el-tag>
          <el-select
            v-model="inputValue"
            v-if="item.inputVisible"
            @change="handleInputConfirm(item)"
            filterable
            remote
            allow-create
            reserve-keyword
            default-first-option
            :loading="loading"
            placeholder="请选择"
          >
            <el-option
              v-for="items in regular"
              :key="items.label"
              :label="items.label"
              :value="items.label"
            >
            </el-option>
          </el-select>
          <el-button
            v-else
            class="button-new-tag"
            size="small"
            @click="showInput(item)"
            >+ æ–°å¢ž</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 item.nodynamiccruxs"
            closable
            effect="dark"
            :disable-transitions="false"
            @close="handleClosecrux(crux, item, 2)"
          >
            {{ crux }}
          </el-tag>
          <el-select
            v-model="inputValue"
            v-if="item.noinputVisible"
            @change="handleInputConfirm(item)"
            filterable
            remote
            allow-create
            reserve-keyword
            default-first-option
            :loading="loading"
            placeholder="请选择"
          >
            <el-option
              v-for="items in noregular"
              :key="items.value"
              :label="items.label"
              :value="items.label"
            >
            </el-option>
          </el-select>
          <el-button
            v-else
            class="button-new-tag"
            size="small"
            @click="showInputno(item)"
            >+ æ–°å¢ž</el-button
          >
        </div>
      </el-form-item>
      <el-row :gutter="10">
        <el-col :span="16" v-if="intent">
          <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="intent ? 8 : 22">
          <div style="text-align: right; padding-right: 10px">
            <el-button
              v-if="controlsc"
              @click="$emit('addoption', item)"
              type="success"
              icon="el-icon-circle-plus-outline"
              circle
            ></el-button>
            <el-button
              type="danger"
              icon="el-icon-delete"
              circle
              @click="$emit('deloption', item)"
            ></el-button>
            <el-button
              v-if="controlsc"
              @click="$emit('syioption', item)"
              type="primary"
              icon="el-icon-top"
              circle
            ></el-button>
            <el-button
              v-if="controlsc"
              @click="$emit('xiayioption', item)"
              type="primary"
              icon="el-icon-bottom"
              circle
            ></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: () => [],
    },
    controlsc: {
      type: Boolean,
      default: true,
    },
    intent: {
      type: Boolean,
      default: true,
    },
  },
  created() {
    this.regular = store.getters.regular;
    this.noregular = store.getters.noregular;
  },
  methods: {
    // ç”Ÿæˆæ­£åˆ™
    generateRegex(row) {
      let index = this.TargetoptionList.indexOf(row);
      console.log(index);
      let regex = "";
      let regexno = "";
      let hostregex = "";
      let hostregexno = "";
      for (
        let i = 0;
        i < this.TargetoptionList[index].dynamiccruxs.length;
        i++
      ) {
        regex += `${this.TargetoptionList[index].dynamiccruxs[i]}|`;
      }
      for (
        let i = 0;
        i < this.TargetoptionList[index].nodynamiccruxs.length;
        i++
      ) {
        regexno += `${this.TargetoptionList[index].nodynamiccruxs[i]}|`;
      }
      regex = regex.slice(0, -1);
      regexno = regexno.slice(0, -1);
      if (regexno) {
        hostregexno = "^(?!.*(?:" + `${regexno}` + ")).*$";
      } else {
        hostregexno = "";
      }
      hostregex = "(?=.*(?:" + `${regex}` + ")).*$";
      this.TargetoptionList[index].targetregex = hostregex;
      this.TargetoptionList[index].targetregex2 = hostregexno;
      console.log(hostregex, "确定字匹配");
      console.log(hostregexno, "否定字匹配");
      this.handleSelectionChange();
    },
    // æŽ§åˆ¶æ–‡ä»¶
    handleChange(file, fileList) {
      this.fileList = fileList.slice(-3);
    },
    // æ–‡ä»¶è¶…出个数限制时的钩子
    handleExceed(files, fileList) {
      this.$message.warning(
        `当前限制选择 1 ä¸ªæ–‡ä»¶ï¼Œæœ¬æ¬¡é€‰æ‹©äº† ${files.length} ä¸ªæ–‡ä»¶ï¼Œå…±é€‰æ‹©äº† ${
          files.length + fileList.length
        } ä¸ªæ–‡ä»¶`
      );
    },
    handleClosecrux(crux, item, whether) {
      if (whether == 1) {
        item.dynamiccruxs.splice(item.dynamiccruxs.indexOf(crux), 1);
        console.log(1);
        console.log(item.dynamiccruxs);
        console.log(item.nodynamiccruxs);
      } else {
        console.log(2);
        item.nodynamiccruxs.splice(item.nodynamiccruxs.indexOf(crux), 1);
      }
      this.generateRegex(item);
    },
    handleInputConfirm(row) {
      console.log(this.TargetoptionList, "TargetoptionList");
      let index = this.TargetoptionList.indexOf(row);
      console.log(1112);
      if (this.whether == 1 && this.inputValue) {
        if (
          this.TargetoptionList[index].dynamiccruxs.indexOf(this.inputValue) ==
          -1
        ) {
          this.TargetoptionList[index].dynamiccruxs.push(this.inputValue);
        } else {
          this.$message.error("关键字已存在");
        }
        // this.inputVisible = false;
        this.TargetoptionList[index].inputVisible = false;
      } else if (this.whether == 2 && this.inputValue) {
        console.log(this.inputValue);
        console.log(
          this.TargetoptionList[index].nodynamiccruxs.indexOf(this.inputValue)
        );
        if (
          this.TargetoptionList[index].nodynamiccruxs.indexOf(
            this.inputValue
          ) == -1
        ) {
          this.TargetoptionList[index].nodynamiccruxs.push(this.inputValue);
        } else {
          this.$message.error("关键字已存在");
        }
        // this.noinputVisible = false;
        this.TargetoptionList[index].noinputVisible = false;
      }
      this.generateRegex(row);
      this.inputValue = "";
    },
    showInput(row) {
      let index = this.TargetoptionList.indexOf(row);
      // this.TargetoptionList[index].inputVisible = true;
      this.$set(this.TargetoptionList[index], "inputVisible", true);
      this.whether = 1;
    },
    showInputno(row) {
      let index = this.TargetoptionList.indexOf(row);
      // this.TargetoptionList[index].noinputVisible = true;
      this.$set(this.TargetoptionList[index], "noinputVisible", true);
      this.whether = 2;
    },
    handleSelectionChange(selection) {
      console.log(this.TargetoptionList);
      this.$emit("handleSelectionChange", selection);
    },
  },
};
</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/components/Regular/index.vue
@@ -152,7 +152,7 @@
      </el-form-item>
      <el-row :gutter="10">
        <el-col :span="16">
        <el-col :span="16" v-if="intent">
          <el-form-item label="语音文件">
            <el-upload
              class="upload-demo"
@@ -167,7 +167,7 @@
            </el-upload>
          </el-form-item></el-col
        >
        <el-col :span="8">
        <el-col :span="intent ? 8 : 22">
          <div style="text-align: right; padding-right: 10px">
            <el-button
              v-if="controlsc"
src/store/getters.js
@@ -53,6 +53,49 @@
      },
    },
  ],
  // é€‚用方式
  Askmode: (state) => [
    {
      value: "1",
      label: "纸质",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "2",
      label: "短信",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "3",
      label: "微信",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "4",
      label: "钉钉",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "5",
      label: "人工电话",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
  // ä»»åŠ¡çŠ¶æ€
  taskstate: (state) => [
    {
@@ -136,6 +179,33 @@
      },
    },
  ],
   // å€¼ç±»åž‹ï¼ˆé—®å·ï¼‰
   askvaluetype: (state) => [
    {
      value: 1,
      label: "单选",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: 2,
      label: "多选",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: 3,
      label: "文本收集",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
    // å€¼ç±»åž‹(列表展示)
    valuetypelb: (state) => [
      {
src/views/knowledge/questionbank/particulars/index.vue
@@ -532,7 +532,7 @@
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.valuetype = store.getters.valuetype;
    this.valuetype = store.getters.askvaluetype;
    this.required = store.getters.required;
  },
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -470,7 +470,9 @@
        >
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
        <el-button @click="Departmenttreatment('ruleForm')">保存题目数据</el-button>
        <el-button @click="Departmenttreatment('ruleForm')"
          >保存题目数据</el-button
        >
      </div>
      <!-- é—®å·é¢„览 -->
      <div v-if="Editprogress == 3">
@@ -605,7 +607,7 @@
import { listDept } from "@/api/system/dept";
import store from "@/store";
import {
  getQtemplateclassify,
  getQtemplateclassify,
  delQtemplateclassify,
  addQtemplateclassify,
  getQtemplatelist,
@@ -709,7 +711,7 @@
  created() {
    this.gettabList();
    this.getissueinfo();
    this.mode = store.getters.mode;
    this.mode = store.getters.Askmode;
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.required = store.getters.required;
@@ -871,7 +873,7 @@
    handleDelete(row) {
      let index = this.ruleForm.svyLibTopics.indexOf(row);
      this.ruleForm.svyLibTopics.splice(index, 1);
      row.isoperation=3;
      row.isoperation = 3;
      this.delScriptVOList.push(row);
      this.sortFn();
    },
src/views/patient/propaganda/particty.vue
@@ -681,7 +681,7 @@
                v-for="(items, index) in item.ivrLibaScriptTargetoptionList"
                :key="items.id"
                :label="items.id"
                >{{ items.targetvalue }}</el-radio
                >{{ items.targetvalue }} </el-radio
              >
            </el-radio-group>
          </div>
src/views/repositoryai/general/particulars/index.vue
@@ -51,233 +51,237 @@
          ></el-col>
        </el-row>
      </el-form>
      <div class="elcardiv">
        <div class="leftvlue-jbxx">话术列表</div>
        <el-divider></el-divider>
      <div style="display: flex">
        <div class="elcardiv">
          <div class="leftvlue-jbxx">话术列表</div>
          <el-divider></el-divider>
        <el-table :data="targetList" :row-class-name="tableRowClassName">
          <el-table-column label="序号" align="center" key="id" prop="id" />
          <el-table :data="targetList" :row-class-name="tableRowClassName">
            <el-table-column label="序号" align="center" key="id" prop="id" />
          <el-table-column
            label="问题文本"
            align="center"
            key="switchText"
            width="250"
            prop="switchText"
            :show-overflow-tooltip="true"
            <el-table-column
              label="问题文本"
              align="center"
              key="switchText"
              width="250"
              prop="switchText"
              :show-overflow-tooltip="true"
            >
            </el-table-column>
            <el-table-column
              label="是否可用"
              align="center"
              key="isEnable"
              prop="isEnable"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.isEnable == 1 ? "停用" : "启用" }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="最近修改"
              align="center"
              key="updateTime"
              width="250"
              prop="updateTime"
              :show-overflow-tooltip="true"
            >
            </el-table-column>
            <el-table-column
              label="操作"
              align="center"
              width="200"
              class-name="small-padding fixed-width"
            >
              <template slot-scope="scope">
                <el-button
                  size="medium"
                  type="text"
                  @click="handleUpdate(scope.row, scope.$index)"
                  ><span class="button-textxg"
                    ><i class="el-icon-edit"></i>修改</span
                  ></el-button
                >
                <el-button
                  size="medium"
                  type="text"
                  @click="handleDelete(scope.row)"
                  ><span class="button-textsc"
                    ><i class="el-icon-delete"></i>删除</span
                  ></el-button
                >
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div class="elcardiv">
          <el-form
            :model="ruleForm"
            :rules="rules"
            ref="ruleForm"
            label-width="100px"
            class="demo-ruleForm"
          >
          </el-table-column>
          <div class="leftvlue-jbxx">话术编辑</div>
          <el-divider></el-divider>
            <div style="margin: 15px; margin-top: 50px">
          <el-table-column
            label="是否可用"
            align="center"
            key="isEnable"
            prop="isEnable"
          >
            <template slot-scope="scope">
              <span>{{ scope.row.isEnable == 1 ? "停用" : "启用" }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="最近修改"
            align="center"
            key="updateTime"
            width="250"
            prop="updateTime"
            :show-overflow-tooltip="true"
          >
          </el-table-column>
              <el-form-item label="话术文本" prop="name">
                <el-input
                  v-model="ruleForm.switchText"
                  placeholder="请输入"
                ></el-input>
              </el-form-item>
              <el-row :gutter="20">
                <el-col :span="12">
                  <el-form-item label="是否启用" prop="resource">
                    <el-select v-model="ruleForm.isEnable" 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-col :span="12">
                  <el-form-item label="是否为结束语" prop="resource">
                    <el-select v-model="ruleForm.isEnd" placeholder="请选择">
                      <el-option
                        v-for="item in usablend"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      >
                      </el-option>
                    </el-select> </el-form-item
                ></el-col>
              </el-row>
              <el-form-item label="问题语音" prop="verbaltrickyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
                <!-- <el-input v-model="indexform.userName" maxlength="30" /> -->
              </el-form-item>
          <el-table-column
            label="操作"
            align="center"
            width="200"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="handleUpdate(scope.row, scope.$index)"
                ><span class="button-textxg"
                  ><i class="el-icon-edit"></i>修改</span
                ></el-button
              >
              <el-button
                size="medium"
                type="text"
                @click="handleDelete(scope.row)"
                ><span class="button-textsc"
                  ><i class="el-icon-delete"></i>删除</span
                ></el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <el-form
          :model="ruleForm"
          :rules="rules"
          ref="ruleForm"
          label-width="100px"
          class="demo-ruleForm"
        >
          <div style="margin: 15px; margin-top: 50px">
            <div class="leftvlue-jbxx">话术编辑</div>
            <el-divider></el-divider>
            <el-form-item label="话术文本" prop="name">
              <el-input
                v-model="ruleForm.switchText"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="是否启用" prop="resource">
                  <el-select v-model="ruleForm.isEnable" placeholder="请选择">
              <el-form-item label="关键字(含)" prop="desc">
                <div class="xinz-inf">
                  <el-tag
                    :key="crux"
                    type="success"
                    v-for="crux in ruleForm.dynamiccruxs"
                    closable
                    effect="dark"
                    :disable-transitions="false"
                    @close="handleClosecrux(crux, ruleForm, 1)"
                  >
                    {{ crux }}
                  </el-tag>
                  <el-select
                    v-model="inputValue"
                    v-if="inputVisible"
                    @change="handleInputConfirm(ruleForm)"
                    filterable
                    remote
                    allow-create
                    reserve-keyword
                    default-first-option
                    :loading="loading"
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="item in usable"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                      v-for="ruleForms in regular"
                      :key="ruleForms.label"
                      :label="ruleForms.label"
                      :value="ruleForms.label"
                    >
                    </el-option>
                  </el-select> </el-form-item
              ></el-col>
              <el-col :span="12">
                <el-form-item label="是否为结束语" prop="resource">
                  <el-select v-model="ruleForm.isEnd" placeholder="请选择">
                  </el-select>
                  <el-button
                    v-else
                    class="button-new-tag"
                    size="small"
                    @click="showInput(ruleForm)"
                    >+ æ–°å¢ž</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 ruleForm.nodynamiccruxs"
                    closable
                    effect="dark"
                    :disable-transitions="false"
                    @close="handleClosecrux(crux, ruleForm, 2)"
                  >
                    {{ crux }}
                  </el-tag>
                  <el-select
                    v-model="inputValue"
                    v-if="noinputVisible"
                    @change="handleInputConfirm(ruleForm)"
                    filterable
                    remote
                    allow-create
                    reserve-keyword
                    default-first-option
                    :loading="loading"
                    placeholder="请选择"
                  >
                    <el-option
                      v-for="item in usablend"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                      v-for="ruleForms in noregular"
                      :key="ruleForms.value"
                      :label="ruleForms.label"
                      :value="ruleForms.label"
                    >
                    </el-option>
                  </el-select> </el-form-item
              ></el-col>
            </el-row>
            <el-form-item label="问题语音" prop="verbaltrickyy">
              <el-upload
                class="upload-demo"
                action="https://jsonplaceholder.typicode.com/posts/"
                :on-change="handleChange"
                :file-list="fileList"
                :limit="1"
                :on-exceed="handleExceed"
              >
                <el-button size="small" type="primary">点击上传</el-button>
              </el-upload>
              <!-- <el-input v-model="indexform.userName" maxlength="30" /> -->
            </el-form-item>
            <el-form-item label="关键字(含)" prop="desc">
              <div class="xinz-inf">
                <el-tag
                  :key="crux"
                  </el-select>
                  <el-button
                    v-else
                    class="button-new-tag"
                    size="small"
                    @click="showInputno(ruleForm)"
                    >+ æ–°å¢ž</el-button
                  >
                </div>
              </el-form-item>
              <el-form-item>
                <el-button type="primary" @click="submitForm('ruleForm')"
                  >保存模版</el-button
                >
                <el-button
                  v-if="ruleForm.id"
                  type="primary"
                  plain
                  @click="modification('edit')"
                  >保存话术</el-button
                >
                <el-button
                  v-else
                  type="success"
                  v-for="crux in ruleForm.dynamiccruxs"
                  closable
                  effect="dark"
                  :disable-transitions="false"
                  @close="handleClosecrux(crux, ruleForm, 1)"
                  plain
                  @click="modification('add')"
                  >新增话术</el-button
                >
                  {{ crux }}
                </el-tag>
                <el-select
                  v-model="inputValue"
                  v-if="inputVisible"
                  @change="handleInputConfirm(ruleForm)"
                  filterable
                  remote
                  allow-create
                  reserve-keyword
                  default-first-option
                  :loading="loading"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="ruleForms in regular"
                    :key="ruleForms.label"
                    :label="ruleForms.label"
                    :value="ruleForms.label"
                  >
                  </el-option>
                </el-select>
                <el-button
                  v-else
                  class="button-new-tag"
                  size="small"
                  @click="showInput(ruleForm)"
                  >+ æ–°å¢ž</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 ruleForm.nodynamiccruxs"
                  closable
                  effect="dark"
                  :disable-transitions="false"
                  @close="handleClosecrux(crux, ruleForm, 2)"
                >
                  {{ crux }}
                </el-tag>
                <el-select
                  v-model="inputValue"
                  v-if="noinputVisible"
                  @change="handleInputConfirm(ruleForm)"
                  filterable
                  remote
                  allow-create
                  reserve-keyword
                  default-first-option
                  :loading="loading"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="ruleForms in noregular"
                    :key="ruleForms.value"
                    :label="ruleForms.label"
                    :value="ruleForms.label"
                  >
                  </el-option>
                </el-select>
                <el-button
                  v-else
                  class="button-new-tag"
                  size="small"
                  @click="showInputno(ruleForm)"
                  >+ æ–°å¢ž</el-button
                >
              </div>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="submitForm('ruleForm')"
                >保存模版</el-button
              >
              <el-button
                v-if="ruleForm.id"
                type="primary"
                plain
                @click="modification('edit')"
                >保存话术</el-button
              >
              <el-button
                v-else
                type="success"
                plain
                @click="modification('add')"
                >新增话术</el-button
              >
              <el-button @click="resetForm('ruleForm')">关闭</el-button>
            </el-form-item>
          </div>
        </el-form>
                <el-button @click="resetForm('ruleForm')">关闭</el-button>
              </el-form-item>
            </div>
          </el-form>
        </div>
      </div>
    </el-card>
  </div>
src/views/repositoryai/templateku/configurat/index.vue
@@ -715,7 +715,7 @@
            </div>
          </div>
          <!-- å¤šé€‰ -->
          <div
          <!-- <div
            class="topic-dev"
            v-for="(item, index) in valssu"
            :key="item.aaa"
@@ -734,7 +734,7 @@
                </el-checkbox>
              </el-checkbox-group>
            </div>
          </div>
          </div> -->
          <!-- å¡«ç©º
          <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
            <div class="dev-text">
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -154,40 +154,46 @@
              >
            </div>
          </el-form-item>
          <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-drawer
            title="变量编辑"
            :visible.sync="variabledeawer"
            direction="ttb"
            size="35%"
          >
            <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-drawer>
          <el-row>
            <el-col :span="6">
              <el-form-item label="仅限院区" prop="region">
@@ -250,24 +256,27 @@
          </el-row>
          <el-row>
            <el-col :span="24">
              <div
                style="display: flex; margin-left: 100px; margin-bottom: 10px"
              >
                <div
                  v-for="item in variablelist"
                  class="tsgname"
                  @click="tsgnameto(item)"
                >
                  {{ item.variatename }}
              <el-form-item label="问题变量" prop="questionText">
                <div style="display: flex; margin-bottom: 10px">
                  <div
                    v-for="item in variablelist"
                    class="tsgname"
                    @click="tsgnameto(item)"
                  >
                    {{ item.variatename }}
                  </div>
                  <div class="tsgnamebj" @click="variabledeawer = true">
                    å˜é‡ç¼–辑
                  </div>
                </div>
              </div>
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="问题文本" prop="questionText">
                <el-input
                :rows="2"
                  :rows="2"
                  type="textarea"
                  id="questionText"
                  show-word-limit
@@ -404,12 +413,21 @@
          label-width="100px"
        >
          <el-row>
            <el-col :span="12">
            <el-col :span="8">
              <el-form-item label="指标名称" prop="deptId">
                <el-input
                  v-model="indexform.targetname"
                  placeholder="请输入指标名称"
                  maxlength="40"
                  maxlength="20"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="指标描述" prop="deptId">
                <el-input
                  v-model="indexform.targetname"
                  placeholder="请输入指标描述"
                  maxlength="60"
                />
              </el-form-item>
            </el-col>
@@ -418,7 +436,7 @@
          <el-row>
            <el-col :span="24">
              <el-form-item label="值类型">
                <el-radio-group v-model="indexform.valueType">
                <el-radio-group disabled v-model="indexform.valueType">
                  <el-radio :label="1">选项</el-radio>
                  <el-radio :label="2">文本</el-radio>
                  <el-radio :label="3">数值</el-radio>
@@ -434,6 +452,7 @@
                @deloption="deloption"
                @syioption="syioption"
                @xiayioption="xiayioption"
                :intent="false"
              />
            </el-card>
            <el-row :gutter="20">
@@ -558,6 +577,7 @@
        deptId: undefined,
        IDnumber: undefined,
      },
      variabledeawer: false,
    };
  },
@@ -680,7 +700,7 @@
            this.indexform.isAvailable = "0";
            this.indexform.language = "普通话";
            this.indexform.isenable = res.rows[0].isenable;
            this.$forceUpdate()
            this.$forceUpdate();
            res.rows[0].targetoptionList.forEach((item) => {
              item.isoperation = 1;
              this.indexform.ivrLibaScriptTargetoptionList.push(item);
@@ -1028,6 +1048,21 @@
.tsgname:hover {
  background: #3366f5;
}
.tsgnamebj {
  width: 90px;
  margin-left: 15px;
  text-align: center;
  cursor: pointer;
  height: 40px;
  line-height: 40px;
  background: #49dbb7;
  color: #ffff;
  font-size: 18px;
  border-radius: 5px;
}
.tsgnamebj:hover {
  background: #27c449;
}
::v-deep .addtopic-input {
  input {