WXL
2024-09-12 2c4c416bf7950c72ffa2543a218e4fd993ee2af2
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -41,7 +41,7 @@
        >
          <el-row :gutter="10">
            <el-col :span="10">
              <el-form-item label="问卷分类" prop="region">
              <el-form-item label="问卷分类" prop="categoryid">
                <el-select
                  v-model="ruleForm.categoryid"
                  size="medium"
@@ -65,7 +65,7 @@
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item label="评价类型">
              <el-form-item label="评价类型" prop="scoreType">
                <el-select
                  v-model="ruleForm.scoreType"
                  placeholder="请选择分类"
@@ -81,15 +81,37 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="问卷标题" prop="name">
            <div style="width: 30%">
          <el-row :gutter="20">
            <el-col :span="10">
              <el-form-item label="可用状态" prop="isAvailable">
                <el-radio-group v-model="ruleForm.isAvailable">
                  <el-radio
                    v-for="(item, index) in usable"
                    :label="item.value"
                    >{{ item.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="版本号" prop="name">
                <el-input
                  v-model="ruleForm.version"
                  placeholder="默认1.0"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="问卷标题" prop="svyname">
            <div style="width: 55vw">
              <el-input v-model="ruleForm.svyname"></el-input>
            </div>
          </el-form-item>
          <el-form-item label="问卷描述">
          <el-form-item label="问卷描述" prop="description">
            <el-input
              style="width: 40vw"
              style="width: 55vw"
              type="textarea"
              :rows="5"
              autosize
              placeholder="请输入内容"
              v-model="ruleForm.description"
@@ -98,7 +120,19 @@
          ></el-form-item>
          <el-row>
            <el-form-item label="标签" prop="desc">
            <el-form-item prop="dynamicTags">
              <template #label>
                标签
                <el-tooltip
                  class="item"
                  effect="light"
                  content="准确、扼要、多重的标签,可以让您在系统使用中方便的查找到该模版。"
                  placement="top-start"
                >
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip>
                <!-- 在标签后插入红色星号 -->
              </template>
              <div class="xinz-inf">
                <el-tag
                  :key="tag.tagname"
@@ -142,7 +176,25 @@
            </el-form-item>
          </el-row>
          <div class="xinz-infs">
            <el-form-item label="适用疾病" prop="region">
            <el-form-item>
              <template #label>
                适用疾病
                <el-tooltip
                  class="item"
                  effect="light"
                  content="选择好适用疾病后,可以方便您通过疾病诊断查找到对应的病人!"
                  placement="top-start"
                >
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip>
              </template>
              <div style="margin-bottom: 10px">
                <el-button
                  type="warning"
                  @click="$refs.child.handleAddpatient()"
                  >添加疾病诊断</el-button
                >
              </div>
              <el-tag
                v-for="tag in displayedTags"
                :key="tag.icdid"
@@ -154,34 +206,11 @@
              <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag>
            </el-form-item>
          </div>
          <div style="margin-left: 120px; margin-bottom: 10px">
            <el-button type="warning" @click="$refs.child.handleAddpatient()"
              >疾病详情</el-button
            >
          </div>
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="版本号" prop="name">
                <el-input
                  v-model="ruleForm.version"
                  placeholder="默认1.0"
                ></el-input> </el-form-item
            ></el-col>
            <el-col :span="9">
              <el-form-item label="可用状态" prop="region">
                <el-radio-group v-model="ruleForm.isAvailable">
                  <el-radio
                    v-for="(item, index) in usable"
                    :label="item.value"
                    >{{ item.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item></el-col
            >
          </el-row>
          <el-form-item label="问卷方式" prop="region">
          <el-form-item label="问卷方式" prop="suitway">
            <el-select
              v-model="ruleForm.suitway"
              style="width: 55vw"
              size="medium"
              multiple
              filterable
@@ -198,37 +227,39 @@
            </el-select>
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.campus"
              size="medium"
              filterable
              placeholder="请选择分类"
          <el-row>
            <el-col :span="20"
              ><el-form-item label="适用科室" prop="region">
                <el-cascader
                  style="width: 55vw"
                  v-model="tempDetpRelevanceslist"
                  :options="deptList"
                  :props="props"
                  :show-all-levels="false"
                  clearable
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.deptName }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item></el-col
            >
              <el-option
                class="ruleFormaa"
                v-for="item in courtyardlist"
                :key="item.label"
                :label="item.label"
                :value="item.label"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用科室" prop="region">
            <el-cascader
              v-model="tempDetpRelevanceslist"
              :options="deptList"
              :props="props"
              :show-all-levels="false"
              clearable
          </el-row>
          <el-form-item label="问卷结束语" prop="conclusion">
            <el-input
              style="width: 55vw; line-height: 80px"
              type="textarea"
              :rows="5"
              autosize
              placeholder="请输入内容"
              v-model="ruleForm.conclusion"
            >
              <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-input
          ></el-form-item>
          <el-form-item>
            <el-button type="success" @click="nextstep('ruleForm')"
              >下一步</el-button
@@ -272,7 +303,7 @@
              >{{ !Operateit ? "编辑题目" : "完整信息展示" }}</el-button
            >
          </div>
          <div style="display: flex">
          <div style="display: flex" v-if="ruleForm.scoreType==1">
            <span
              style="
                width: 180px;
@@ -497,6 +528,16 @@
                    <el-radio :label="0">否</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="选中提示" v-if="topicobj.scriptType != 1">
                  <el-input
                    style="width: 24vw"
                    type="textarea"
                    autosize
                    placeholder="请输入内容"
                    v-model="topicobj.prompt"
                  >
                  </el-input
                ></el-form-item>
                <div
                  v-if="topicobj.scriptType == 1 || topicobj.scriptType == 2"
                >
@@ -565,10 +606,10 @@
                          </el-input> </el-form-item
                      ></el-col>
                    </el-row>
                    <el-row :gutter="10">
                    <el-row :gutter="10" v-if="topicobj.scriptType == 1">
                      <el-form-item label="选中提示">
                        <el-input
                          style="width: 20vw"
                          style="width: 24vw"
                          type="textarea"
                          autosize
                          placeholder="请输入内容"
@@ -1069,7 +1110,7 @@
                        </el-radio-group>
                      </el-form-item>
                    </el-row>
                    <el-row :gutter="10">
                    <el-row :gutter="10" v-if="item.scriptType == 1">
                      <el-form-item label="选中提示">
                        <el-input
                          style="width: 400px"
@@ -1179,11 +1220,42 @@
        svyTemplateLibScripts: [],
        tempDetpRelevances: [],
        svyLibTemplateTagList: [],
        scoreType: "4",
        isAvailable: "0",
      },
      indexform: {
        svyLibTemplateTargetoptions: [],
      },
      rules: {},
      // 表单校验
      rules: {
        categoryid: [
          { required: true, message: "问卷分类不能为空", trigger: "blur" },
        ],
        scoreType: [
          { required: true, message: "评价类型不能为空", trigger: "blur" },
        ],
        svyname: [
          { required: true, message: "问卷标题不能为空", trigger: "blur" },
        ],
        isAvailable: [
          { required: true, message: "可用状态不能为空", trigger: "blur" },
        ],
        scriptTopic: [
          { required: true, message: "题目标题不能为空", trigger: "blur" },
        ],
        ismandatory: [
          { required: true, message: "是否必填不能为空", trigger: "blur" },
        ],
        scriptType: [
          { required: true, message: "题目类型不能为空", trigger: "blur" },
        ],
        suitway: [
          { required: true, message: "问卷方式不能为空", trigger: "blur" },
        ],
        conclusion: [
          { required: true, message: "问卷结束语不能为空", trigger: "blur" },
        ],
      },
      rulesa: {},
      optionsclass: [], //分类列表
      optionlist: [
@@ -1277,9 +1349,23 @@
    };
  },
  activated() {
    console.log(this.id);
    if (this.id != this.$route.query.id) {
      this.getissueinfo();
      this.gettabList();
    } else {
      this.ruleForm.svyTemplateLibScripts =
        this.ruleForm.svyTemplateLibScripts.filter(
          (item) => item.isoperation != 3
        );
      this.ruleForm.svyLibTemplateTagList =
        this.ruleForm.svyLibTemplateTagList.filter(
          (item) => item.isoperation != 3
        );
      this.delScriptVOList = [];
      this.$forceUpdate();
      console.log(this.ruleForm.svyTemplateLibScripts);
    }
  },
  created() {
@@ -1337,11 +1423,14 @@
    // 获取数据
    getissueinfo() {
      this.id = this.$route.query.id;
      this.ruleForm = {
      (this.ruleForm = {
        svyTemplateLibScripts: [],
        tempDetpRelevances: [],
        svyLibTemplateTagList: [],
      };
        scoreType: "4",
        isAvailable: "0",
      }),
        (this.topicobj = {});
      if (this.id) {
        getQtemplateobj({ svyid: this.id }).then((res) => {
@@ -1372,7 +1461,9 @@
    },
    submitForm(formName) {
      this.$modal.loading("正在修正保存数据,请稍候...");
      this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      if (Array.isArray(this.ruleForm.suitway)) {
        this.ruleForm.suitway = this.ruleForm.suitway.join(",");
      }
      if (!this.ruleForm.categoryid) {
        this.ruleForm.categoryid = -1;
      }
@@ -1471,7 +1562,6 @@
    // 新增题目
    addtopic(row) {
      row.isoperation = 1;
      console.log(row, "row");
      row.svyLibScriptOptions.forEach((item) => {
        item.isoperation = 1;
      });
@@ -1490,7 +1580,6 @@
    handleUpdate(row) {
      this.topicobj = row;
      this.radioas = "";
      console.log(this.topicobj, "看数据");
      // getissuelist({ svyid: row.svyid }).then((res) => {
      // });
    },
@@ -1545,7 +1634,7 @@
          this.drawer = false;
          this.sortFn();
          this.$modal.msgSuccess("题目新增成功,保存模版失效");
          this.$modal.msgSuccess("题目新增成功,保存模板失效");
        });
    },
    // 新增变量
@@ -1799,7 +1888,7 @@
    sumArray(arr) {
      // const arrsum = arr;
      // arrsum.forEach((item) => {
      //   // 判断题目和模版层级
      //   // 判断题目和模板层级
      //   console.log(item, "一条链路");
      //   const totalScore = item.reduce((accumulator, current) => {
@@ -1826,7 +1915,7 @@
      if (allGreaterThanTen) {
        this.$modal.msgSuccess("分值校验成功");
      } else {
        this.$modal.msgError("题目分值累加和模版分值不符");
        this.$modal.msgError("题目分值累加和模板分值不符");
      }
    },