WXL
2024-01-11 3b774a197bd7087ee42999937ccc1e7e048eb1aa
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();
    },