WXL
2024-08-09 fe7f65e63714807890ab103fbc84cf5f634ae8d8
src/views/knowledge/questionbank/particulars/index.vue
@@ -132,6 +132,7 @@
                ><el-form-item label="题目类型">
                  <el-select
                    v-model="topicobj.scriptType"
                    @change="changefn"
                    size="medium"
                    filterable
                    placeholder="请选择分类"
@@ -173,6 +174,44 @@
                placeholder="请输入题目内容"
              ></el-input>
            </el-form-item>
            <el-form-item
              label=""
              prop="scriptContent"
              v-if="topicobj.scriptType == 3"
            >
              <div style="display: flex; margin-bottom: 10px">
                <div class="tsgnames" @click="tsgnametos">插入填空</div>
              </div>
            </el-form-item>
            <el-row>
              <el-col :span="20">
                <el-form-item label="收集信息" v-if="topicobj.scriptType == 3">
                  <el-card class="box-card" style="width: 200%">
                    <div
                      v-for="item in topicobj.svyLibScriptOptions"
                      style="margin-bottom: 10px"
                    >
                      <el-input
                        type="text"
                        placeholder="填入内容信息"
                        v-model="item.aaa"
                      >
                        <el-button
                          slot="append"
                          @click="deletexuanx(item)"
                          type="danger"
                          icon="el-icon-delete"
                          circle
                        ></el-button>
                        <span slot="prepend">{{
                          "(" + item.orderno + ")"
                        }}</span>
                      </el-input>
                    </div>
                  </el-card>
                </el-form-item>
              </el-col>
            </el-row>
            <el-form-item label="题目说明">
              <el-input
                style="width: 40vw"
@@ -252,7 +291,7 @@
                </div>
              </el-form-item>
            </el-row>
            <el-row>
            <!-- <el-row>
              <el-form-item label="适用疾病" prop="region">
                <div class="xinz-inf">
                  <el-tag
@@ -294,23 +333,26 @@
                  >
                </div>
              </el-form-item>
            </el-row>
          </div>
          <div v-if="topicobj.scriptType != 3 && topicobj.scriptType != 4">
            <div class="headline">
              选项设置<span style="margin-left: 30px"
                ><el-button type="primary" round @click="addoption"
                  >+新增</el-button
                ></span
              >
            </el-row> -->
            <el-form-item label="选中指标:">
              <span style="margin-left: 30px"
                >选中指标:<el-tag type="success" effect="dark">{{
                ><el-tag type="success" effect="dark">{{
                  topicobj.targetname ? topicobj.targetname : "未选择"
                }}</el-tag></span
              >
              <span style="margin-left: 30px"
                ><el-button type="success" round @click="gettargetInfo"
                  >+选择指标</el-button
                ></span
              >
            </el-form-item>
          </div>
          <div v-if="topicobj.scriptType != 3 && topicobj.scriptType != 4">
            <div class="headline">
              选项设置<span style="margin-left: 30px"
                ><el-button type="primary" round @click="addoption"
                  >+新增</el-button
                ></span
              >
            </div>
@@ -361,7 +403,8 @@
                    </el-radio-group>
                  </el-form-item>
                </el-col>
                <el-col :span="2">
                <el-col :span="2" :offsset="topicobj.scoretype == 4 ? 11 : 0">
                  <el-button
                    type="danger"
                    icon="el-icon-delete"
@@ -370,7 +413,14 @@
                  ></el-button>
                </el-col>
              </el-row>
              <el-row :gutter="10">
                <el-form-item label="预警提醒">
                  <el-radio-group v-model="item.isabnormal">
                    <el-radio :label="1">是</el-radio>
                    <el-radio :label="0">否</el-radio>
                  </el-radio-group>
                </el-form-item>
              </el-row>
              <el-row :gutter="10">
                <el-form-item label="选中提示">
                  <el-input
@@ -423,7 +473,7 @@
          :inline="true"
          label-width="98px"
        >
          <el-form-item label="标题" prop="userName">
          <el-form-item label="指标名称" prop="userName">
            <el-input
              v-model="queryParams.targetname"
              placeholder="请输入"
@@ -441,14 +491,16 @@
              @keyup.enter.native="gettargetInfo"
            />
          </el-form-item>
          <el-form-item label="指标标签" prop="userName">
            <el-input
              v-model="queryParams.tagName"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="gettargetInfo"
            />
          <el-form-item label="指标类型" prop="scriptType">
            <el-select v-model="queryParams.scriptType" placeholder="请选择">
              <el-option
                v-for="(item, index) in qyoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
@@ -466,14 +518,14 @@
        </el-form>
        <el-table v-loading="loading" :data="targetList">
          <el-table-column
            label="标题"
            label="指标名称"
            align="center"
            key="targetname"
            prop="targetname"
            width="100"
          />
          <el-table-column
            label="问题内容"
            label="指标说明"
            align="center"
            key="targetdesc"
            prop="targetdesc"
@@ -483,16 +535,36 @@
          <el-table-column
            label="语言"
            align="center"
            key="targetdesc"
            prop="targetdesc"
            key="language"
            prop="language"
            width="200"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="问题内容"
            label="是否可用"
            align="center"
            key="targetdesc"
            prop="targetdesc"
            key="isAvailable"
            prop="isAvailable"
          >
            <template slot-scope="scope">
              <dict-tag :options="usable" :value="scope.row.isAvailable" />
            </template>
          </el-table-column>
          <el-table-column
            label="问题类型"
            align="center"
            key="scriptType"
            prop="scriptType"
          >
            <template slot-scope="scope">
              <dict-tag :options="valuetype" :value="scope.row.scriptType" />
            </template>
          </el-table-column>
          <el-table-column
            label="选项说明"
            align="center"
            key="optionDesc"
            prop="optionDesc"
            width="200"
            :show-overflow-tooltip="true"
          />
@@ -560,6 +632,7 @@
      inputVisible: false,
      inputValue: "",
      currentInputId: "",
      scriptTypels: "",
      total: 0,
      drawer: false,
      loading: false,
@@ -583,6 +656,7 @@
        pageNum: 1,
        pageSize: 10,
        isavailable: "",
        scriptType: "",
      },
      optionlist: [
        { value: "scriptTopic", table: "scriptTopic" },
@@ -599,6 +673,7 @@
      inputVisibleillness: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      qyoptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
@@ -607,6 +682,7 @@
        { label: "分数", value: "1" },
        { label: "ABC等级", value: "2" },
        { label: "优良等级", value: "3" },
        { label: "无", value: "4" },
      ],
      optionstag: [],
      valuetype: [],
@@ -624,6 +700,7 @@
    this.usable = store.getters.usable;
    this.valuetype = store.getters.askvaluetype;
    this.required = store.getters.required;
    this.qyoptions = store.getters.askvaluetype;
  },
  methods: {
@@ -666,6 +743,7 @@
        this.dynamicTags = this.topicobj.svyLibScriptTagList.map(
          this.processElement
        );
        this.scriptTypels = this.topicobj.scriptType;
        this.variablelist = JSON.parse(this.topicobj.otherdata)
          ? JSON.parse(this.topicobj.otherdata)
          : this.variablelist;
@@ -688,7 +766,10 @@
        });
        return;
      }
      this.queryParams.scriptType = this.topicobj.scriptType;
      if (this.topicobj.scriptType) {
        this.queryParams.scriptType = this.topicobj.scriptType;
      }
      this.queryParams.suitWay = 1;
      gettargetInfo(this.queryParams).then((res) => {
        this.targetList = res.rows;
        this.total = res.total;
@@ -764,8 +845,7 @@
          ) {
            console.log(score, "错误分值");
            this.$message({
              message:
                "选项分值必须在0到" + this.topicobj.score + "分之间",
              message: "选项分值必须在0到" + this.topicobj.score + "分之间",
              type: "warning",
            });
            return false;
@@ -794,6 +874,24 @@
        this.compileissue();
      }
    },
    // 判断指标
    changefn(item) {
      console.log(item);
      if (
        this.topicobj.targetname ||
        this.topicobj.svyLibScriptOptions[0].optioncontent
      ) {
        this.$modal
          .confirm("更改类型后选项将清空是否继续?")
          .then(() => {
            this.scriptTypels = this.topicobj.scriptType;
          })
          .catch(() => {
            this.topicobj.scriptType = this.scriptTypels;
          });
      }
    },
    // 删除选项
    deletexuanx(row) {
@@ -819,7 +917,9 @@
    selectlabel(row) {
      this.$modal
        .confirm(
          '是否选择标题为"' + row.targetname + '"的指标并替换填充问题信息?'
          '是否选择标题为"' +
            row.targetname +
            '"的指标并替换填充问题及选项信息?'
        )
        .then(() => {
          console.log(row);
@@ -966,21 +1066,16 @@
      };
      this.gettargetInfo();
    },
    // 便捷标签
    tsgnameto(row) {
    // 便捷标签插入填空
    tsgnametos(row) {
      let inputValueArr = "";
      let value = this.testuserList.length + 1;
      let el = document.querySelector("#" + this.currentInputId);
      //el.selectionStart; 这就是当前光标所在的位置(字符串中字符的index)
      if (this.currentInputId == "scriptContent") {
        inputValueArr = this.topicobj.scriptContent.split("");
      } else if (this.currentInputId == "nomatchtext") {
        inputValueArr = this.topicobj.nomatchtext.split("");
      } else if (this.currentInputId == "sliencetext") {
        inputValueArr = this.topicobj.sliencetext.split("");
      } else if (this.currentInputId == "noclearlytext") {
        inputValueArr = this.topicobj.noclearlytext.split("");
      } else if (this.currentInputId == "submoduletext") {
        inputValueArr = this.topicobj.submoduletext.split("");
      if (this.currentInputId == "targetdesc") {
        inputValueArr = this.indexform.targetdesc.split("");
      } else {
        return;
      }
@@ -989,20 +1084,22 @@
      // 拿到选中文字的长度(后续可以用来替换选中的文字)
      let selectLength = el.selectionEnd - el.selectionStart;
      // 将要插入/替换的文字插入/替换(value.name是要插入/替换的字符串)
      inputValueArr.splice(el.selectionStart, selectLength, `${row.variate}`);
      inputValueArr.splice(
        el.selectionStart,
        selectLength,
        "__" + value + "__"
      );
      this.testuserList.push({
        orderno: value,
        optiondesc: "",
        isoperation: 1,
      });
      // 把数组重新转换为字符串并赋值
      inputValueArr = inputValueArr.join("");
      console.log(inputValueArr);
      if (this.currentInputId == "scriptContent") {
        this.topicobj.scriptContent = inputValueArr;
      } else if (this.currentInputId == "nomatchtext") {
        this.topicobj.nomatchtext = inputValueArr;
      } else if (this.currentInputId == "sliencetext") {
        this.topicobj.sliencetext = inputValueArr;
      } else if (this.currentInputId == "noclearlytext") {
        this.topicobj.noclearlytext = inputValueArr;
      } else if (this.currentInputId == "submoduletext") {
        this.topicobj.submoduletext = inputValueArr;
      if (this.currentInputId == "targetdesc") {
        this.indexform.targetdesc = inputValueArr;
      } else {
        return;
      }
@@ -1113,12 +1210,12 @@
    margin: 15px 0;
  }
  .topicxq {
    width: 68%;
    width: 72%;
    background-color: #e2f5fc;
    border-radius: 4px;
    margin-top: 15px;
    margin-left: 10%;
    padding-left: 10px;
    padding-left: 20px;
    padding-top: 15px;
    border: 1px solid #dcdfe6;
    -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
@@ -1164,6 +1261,21 @@
.tsgname:hover {
  background: #3366f5;
}
.tsgnames {
  width: 90px;
  margin-right: 10px;
  text-align: center;
  cursor: pointer;
  height: 40px;
  line-height: 40px;
  background: #66c18c;
  color: #ffff;
  font-size: 18px;
  border-radius: 5px;
}
.tsgnames:hover {
  background: #20894d;
}
.preview-left {
  margin: 20px;
  //   margin: 20px;