WXL
2024-01-04 f93cb40b76468c6f1063081a3be16027d69b4832
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -17,9 +17,7 @@
    <div class="leftvlue">
      <!-- 基本信息 -->
      <div v-if="Editprogress == 1">
        <div class="leftvlue-jbxx">
          基本信息
        </div>
        <div class="leftvlue-jbxx">基本信息</div>
        <el-divider></el-divider>
        <el-form
          :model="ruleForm"
@@ -30,7 +28,7 @@
        >
          <el-form-item label="问卷分类" prop="region">
            <el-select
              v-model="ruleForm.classify"
              v-model="ruleForm.categoryid"
              size="medium"
              multiple
              filterable
@@ -38,7 +36,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in optionsclass"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -48,16 +46,32 @@
          </el-form-item>
          <el-form-item label="问卷标题" prop="name">
            <div style="width: 30%">
              <el-input v-model="ruleForm.name"></el-input>
              <el-input v-model="ruleForm.svyname"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="问卷描述">
            <el-input
              style="width: 40vw"
              type="textarea"
              autosize
              placeholder="请输入内容"
              v-model="ruleForm.description"
            >
            </el-input
          ></el-form-item>
          <el-form-item label="通知变量" prop="name">
            <el-row v-for="item in variablelist">
              <el-col :span="4">
                <el-input v-model="item.variable"></el-input>
                <el-input
                  v-model="item.name"
                  placeholder="请输入变量名"
                ></el-input>
              </el-col>
              <el-col :span="8" :offset="1">
                <el-input v-model="item.value"></el-input>
                <el-input
                  v-model="item.value"
                  placeholder="请输入变量内容"
                ></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
@@ -67,6 +81,7 @@
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                  v-if="item"
                  type="danger"
                  icon="el-icon-delete"
                  circle
@@ -91,30 +106,34 @@
              </el-upload>
            </div>
          </el-form-item>
          <el-row>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag"
                  :key="tag.tagname"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClose(tag)"
                  @close="handleClosetag(tag)"
              >
                {{ tag }}
                  {{ tag.tagname }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                  allow-create
                  remote
                  reserve-keyword
                  default-first-option
                  :remote-method="remoteMethodtag"
                  :loading="loading"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in optionstag"
                  :key="item.tagname"
                    :key="item.tagid"
                    :label="item.tagname"
                    :value="item.tagname"
                >
@@ -129,15 +148,59 @@
              >
            </div>
          </el-form-item>
          </el-row>
          <el-row>
            <el-form-item label="适用疾病" prop="region">
              <div class="xinz-inf">
                <el-tag
                  :key="item.icd10name"
                  type="warning"
                  v-for="item in illnesslist"
                  closable
                  :disable-transitions="false"
                  @close="handleCloseillness(item)"
                >
                  {{ item.icd10name }}
                </el-tag>
                <el-select
                  v-model="inputValueillness"
                  v-if="inputVisibleillness"
                  @change="illnessConfirm"
                  :remote-method="remoteMethod"
                  filterable
                  remote
                  allow-create
                  default-first-option
                  placeholder="请选择/查询"
                  :loading="loading"
                >
                  <el-option
                    v-for="item in optionsillness"
                    :key="item.icdid"
                    :label="item.icdname"
                    :value="item.icdid"
                  >
                  </el-option>
                </el-select>
                <el-button
                  v-else
                  class="button-new-tag"
                  size="small"
                  @click="inputVisibleillness = true"
                  >+ 新增疾病</el-button
                >
              </div>
            </el-form-item>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="版本号" prop="name">
                <el-input v-model="currentVersion"></el-input> </el-form-item
                <el-input v-model="ruleForm.version"></el-input> </el-form-item
            ></el-col>
            <el-col :span="9">
              <el-form-item label="可用状态" prop="region">
                <el-select
                  v-model="ruleForm.classify"
                  v-model="ruleForm.isenable"
                  size="medium"
                  multiple
                  filterable
@@ -145,7 +208,7 @@
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in options"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -154,7 +217,7 @@
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="问卷方式" prop="region">
          <el-form-item label="问卷方式(缺)" prop="region">
            <el-select
              v-model="ruleForm.way"
              size="medium"
@@ -172,24 +235,7 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用疾病" prop="region">
            <el-select
              v-model="ruleForm.illness"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.courtyard"
@@ -199,7 +245,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in courtyardlist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -217,7 +263,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in courtyardlist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -345,51 +391,70 @@
                  ></el-col>
                </el-row>
                <div class="headline">选项设置</div>
                <div class="topicxq" v-for="item in 2">
                <div class="topicxq" v-for="item in optionlist">
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="选项">
                    <el-col :span="11"
                      ><el-form-item label="题号">
                        <el-input
                          type="text"
                          placeholder="请输入选项"
                          v-model="text"
                          placeholder="请输入"
                          v-model="item.optionid"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="12"
                    <el-col :span="11"
                      ><el-form-item label="分值">
                        <el-input
                          type="text"
                          placeholder="请输入分值"
                          v-model="text"
                          placeholder="请输入"
                          v-model="item.score"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="选中提示">
                    <el-col :span="11"
                      ><el-form-item label="选项">
                        <el-input
                          type="text"
                          placeholder="请输入内容"
                          v-model="text"
                          maxlength="10"
                          placeholder="请输入选项"
                          v-model="item.optioncontent"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="12"
                    <el-col :span="11"
                      ><el-form-item label="下题跳转">
                        <el-input
                          type="text"
                          placeholder="请输入题号"
                          v-model="text"
                          v-model="item.jump"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                    <el-col :span="2">
                      <el-button
                        type="danger"
                        icon="el-icon-delete"
                        circle
                        @click="deletexuanx(item)"
                      ></el-button>
                    </el-col>
                  </el-row>
                  <el-row :gutter="10">
                    <el-form-item label="选中提示">
                      <el-input
                        style="width: 20vw"
                        type="textarea"
                        autosize
                        placeholder="请输入内容"
                        v-model="item.prompt"
                      >
                      </el-input
                    ></el-form-item>
                  </el-row>
                </div>
              </el-form>
@@ -483,22 +548,13 @@
            />
          </el-form-item>
          <el-form-item label="主题" prop="sickness">
            <el-select
              v-model="ruleForm.classify"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
            <el-input
              v-model="queryParams.userName"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item>
            <el-button
@@ -554,6 +610,22 @@
<script>
import { listtag } from "@/api/system/label";
import store from "@/store";
import {
  getQtemplateclassify,
  delQtemplateclassify,
  addQtemplateclassify,
  getQtemplatelist,
  Qtemplateinfo,
  compileissue,
  delQtemplateinfo,
  Followupinfo,
  deltargetillness,
  addtargetillness,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
export default {
  data() {
@@ -566,27 +638,20 @@
      radio: "false", //单选题选中
      radios: [], //多选题选中
      radioas: "", //填空题答案
      dynamicTags: ["标签一", "标签二", "标签三"],
      dynamicTags: [],
      inputVisible: false,
      inputValue: "",
      topicobj: {},
      // 总条数
      total: 1,
      ruleForm: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        templatevalue: "",
        data2: "",
      },
      ruleForm: {},
      rules: {},
      rulesa: {},
      optionstag:[],
      optionsclass: [], //分类列表
      optionlist: [
        { value: "topic", table: "topic" },
        { value: "topic", table: "topic" },
      ],
      xjxsoptions: [
        {
          value: "选项1",
@@ -620,14 +685,6 @@
          value: "选项2",
          label: "入院问卷",
        },
        {
          value: "选项3",
          label: "手术问卷",
        },
        {
          value: "选项4",
          label: "护理问卷",
        },
      ],
      variablelist: [
        {
@@ -654,15 +711,24 @@
          userid: "2",
          userName: "二号问卷",
        },
        {
          userid: "3",
          userName: "三号问卷",
        },
        {
          userid: "4",
          userName: "四号问卷",
        },
      ],
      themelist: [],
      languagelist: [],
      courtyardlist: [],
      precedencetype: [],
      inputValueillness: "",
      inputVisible: false,
      inputVisibleillness: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      optionstag: [],
      xjxsoptions: [],
      usable: [],
      mode: [], //方式
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -678,22 +744,35 @@
  created() {
    this.gettabList();
    this.getissueinfo();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.xjxsoptions = store.getters.xjxsoptions;
    this.courtyardlist = store.getters.courtyardlist;
  },
  methods: {
    submitForm(formName) {
      this.rules = this.rulesa;
      //   提交
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("submit!");
        } else {
          console.log("error submit!!");
          return false;
        }
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    // 获取数据
    getissueinfo() {
      this.id = this.$route.query.id;
      Qtemplateinfo(this.id).then((res) => {
        this.ruleForm = res.data;
      });
      getillnesslist({
        pageNum: 1,
        pageSize: 100,
      }).then((response) => {
        this.optionsillness = response.rows;
      });
      getillness({ outid: this.id, type: 5 }).then((res) => {
        this.illnesslist = res.rows;
      });
    },
    submitForm(formName) {},
    // 下一步
    nextstep() {
      if (this.Editprogress <= 2) {
@@ -706,16 +785,18 @@
    },
    // 关闭
    closeFm() {
      this.$confirm('退出不会保留页面内容更改, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$router.go(-1)
        }).catch(() => {
      this.$confirm("退出不会保留页面内容更改, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.$router.go(-1);
        })
        .catch(() => {
          this.$message({
            type: 'info',
            message: '已取消'
            type: "info",
            message: "已取消",
          });          
        });
    },
@@ -758,7 +839,6 @@
      this.fileList = fileList.slice(-3);
    },
    // 标签-----------------
     /** 查询标签列表 */
     gettabList() {
      const tagqueryParams = {
        pageNum: 1,
@@ -770,23 +850,108 @@
        this.optionstag = response.rows;
      });
    },
    handleClose(tag) {
    handleClosetag(tag) {
      console.log(tag);
      console.log(this.dynamicTags.indexOf(tag));
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.ruleForm.ivrLibaTemplateTargetList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      let tagvalue = {};
      let tagname = this.inputValue;
      if (tagname) {
        listtag({
          pageNum: 1,
          pageSize: 1000,
          tagcategoryid: "0",
          tagname: tagname,
        }).then((res) => {
          if (res.rows[0]) {
            tagvalue = res.rows[0];
            tagvalue.isoperation = 1;
          } else {
            tagvalue = {
              tagname: tagname,
              isoperation: 1,
            };
          }
          // this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
        });
      }
      this.inputVisible = false;
      this.inputValue = "";
    },
    remoteMethodtag(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          listtag({ tagname: query, tagcategoryid: "0" }).then((res) => {
            this.optionstag = res.rows;
          });
        }, 200);
      } else {
        this.optionstag = [];
      }
    },
    showInput() {
      this.inputVisible = true;
      // 自动获取焦点
      // this.$nextTick((_) => {
      //   this.$refs.saveTagInput.$refs.input.focus();
      // });
    },
    // 疾病-----------------------
    handleCloseillness(tag) {
      this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
      if (tag.id) {
        this.illnesslistapi.push(tag.id);
      }
    },
    remoteMethod(value) {
      console.log(value);
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
        icdname: value,
      };
      this.loading = true;
      setTimeout(() => {
        this.loading = false;
        getillnesslist(illnessqueryParams).then((response) => {
          this.optionsillness = response.rows;
        });
      }, 200);
    },
    illnessConfirm(item) {
      let opeavalue = {};
      let tagname = this.inputValueillness;
      illnesslistget(item).then((res) => {
        opeavalue = res.data;
        opeavalue.outid = this.id;
        opeavalue.type = 5;
        opeavalue.icd10id = opeavalue.icdid;
        opeavalue.icd10name = opeavalue.icdname;
        opeavalue.icd10code = opeavalue.icdcode;
        if (tagname) {
          this.illnesslist.push(opeavalue);
        }
      });
      console.log(this.illnesslist);
      this.inputVisibleillness = false;
      this.inputValueillness = "";
    },
    // 保存
    confirmillness() {
      this.illnesslist.forEach((item, index) => {
        if (!item.id) {
          addtargetillness(item).then((res) => {});
        }
      });
      if (this.illnesslistapi.length) {
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑成功");
    },
    // --------------------------
    // 查询题库