From 76c30727c77065c808b1c0fb3146080e423e5fe6 Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期四, 27 六月 2024 09:45:30 +0800
Subject: [PATCH] 测试完成

---
 src/views/knowledge/questionnaire/compilequer/index.vue |  447 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 337 insertions(+), 110 deletions(-)

diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue
index 56940e3..bcfe6f8 100644
--- a/src/views/knowledge/questionnaire/compilequer/index.vue
+++ b/src/views/knowledge/questionnaire/compilequer/index.vue
@@ -39,28 +39,48 @@
           label-width="100px"
           class="demo-ruleForm"
         >
-          <el-form-item label="闂嵎鍒嗙被" prop="region">
-            <el-select
-              v-model="ruleForm.categoryid"
-              size="medium"
-              filterable
-              placeholder="璇烽�夋嫨鍒嗙被"
-            >
-              <el-option-group
-                v-for="group in optionsclass"
-                :key="group.id"
-                :label="group.name"
-              >
-                <el-option
-                  v-for="item in group.svyLibTitleCategoryList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
+          <el-row :gutter="10">
+            <el-col :span="10">
+              <el-form-item label="闂嵎鍒嗙被" prop="region">
+                <el-select
+                  v-model="ruleForm.categoryid"
+                  size="medium"
+                  filterable
+                  placeholder="璇烽�夋嫨鍒嗙被"
                 >
-                </el-option>
-              </el-option-group>
-            </el-select>
-          </el-form-item>
+                  <el-option-group
+                    v-for="group in optionsclass"
+                    :key="group.id"
+                    :label="group.name"
+                  >
+                    <el-option
+                      v-for="item in group.svyLibTemplateCategoryList"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    >
+                    </el-option>
+                  </el-option-group>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="璇勪环绫诲瀷">
+                <el-select
+                  v-model="ruleForm.scoreType"
+                  placeholder="璇烽�夋嫨鍒嗙被"
+                >
+                  <el-option
+                    v-for="group in appraiselist"
+                    :key="group.value"
+                    :label="group.label"
+                    :value="group.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
           <el-form-item label="闂嵎鏍囬" prop="name">
             <div style="width: 30%">
               <el-input v-model="ruleForm.svyname"></el-input>
@@ -267,37 +287,54 @@
       <div v-if="Editprogress == 2">
         <div class="leftvlue-jbxx">闂嵎棰樼洰璁剧疆</div>
         <el-divider></el-divider>
-        <div class="addtopic">
-          <el-button
-            type="primary"
-            icon="el-icon-plus"
-            round
-            @click="getaddtopiclist"
-            >娣诲姞棰樼洰</el-button
-          >
+        <div style="display: flex; justify-content: space-between">
+          <div>
+            <el-button
+              type="primary"
+              icon="el-icon-plus"
+              round
+              @click="getaddtopiclist"
+              >娣诲姞棰樼洰</el-button
+            >
+          </div>
+          <div style="display: flex">
+            <span
+              style="
+                width: 180px;
+                font-size: 20px;
+                font-weight: normal;
+                color: red;
+              "
+              >闂嵎鎬诲垎锛�</span
+            >
+            <el-input
+              v-model="ruleForm.scriptScore"
+              placeholder="璇疯緭鍏ュ垎鏁�"
+            ></el-input>
+          </div>
         </div>
         <div class="presentation">
           <div class="presentation-left">
             <el-card class="box-card" style="min-height: 688px">
-              <el-table v-loading="loading" :data="ruleForm.svyLibTopics">
+              <el-table v-loading="loading" :data="ruleForm.svyLibScripts">
                 <el-table-column
                   label="搴忓彿"
                   align="center"
-                  key="guid"
-                  prop="guid"
+                  key="sort"
+                  prop="sort"
                 />
                 <el-table-column
-                  label="棰樼洰"
+                  label="棰樼洰鏍囬"
                   align="center"
                   key="topic"
                   prop="topic"
                   :show-overflow-tooltip="true"
                 />
                 <el-table-column
-                  label="涓昏鍐呭"
+                  label="棰樼洰鍐呭"
                   align="center"
-                  key="topicContent"
-                  prop="topicContent"
+                  key="script"
+                  prop="script"
                   :show-overflow-tooltip="true"
                 />
 
@@ -393,29 +430,40 @@
                 <div class="headline">閫夐」璁剧疆</div>
                 <div
                   class="topicxq"
-                  v-for="item in topicobj.svyLibTopicoptions"
+                  v-for="item in topicobj.svyLibTemplateTargetoptions"
                 >
                   <el-row :gutter="10">
-                    <el-col :span="11"
-                      ><el-form-item label="棰樺彿">
+                    <el-col :span="11">
+                      <el-form-item v-if="topicobj.scoretype == 1" label="鍒嗗��">
                         <el-input
                           type="text"
-                          placeholder="璇疯緭鍏�"
-                          v-model="item.topicid"
-                          show-word-limit
-                        >
-                        </el-input> </el-form-item
-                    ></el-col>
-                    <el-col :span="11"
-                      ><el-form-item label="鍒嗗��">
-                        <el-input
-                          type="text"
-                          placeholder="璇疯緭鍏�"
+                          placeholder="璇疯緭鍏ラ�夐」鍒嗗��"
                           v-model="item.score"
                           show-word-limit
                         >
-                        </el-input> </el-form-item
-                    ></el-col>
+                        </el-input>
+                      </el-form-item>
+                      <el-form-item
+                        v-else-if="topicobj.scoretype == 2"
+                        label="ABC绛夌骇"
+                      >
+                        <el-radio-group v-model="item.score">
+                          <el-radio label="A">A</el-radio>
+                          <el-radio label="B">B</el-radio>
+                          <el-radio label="C">C</el-radio>
+                        </el-radio-group>
+                      </el-form-item>
+                      <el-form-item
+                        v-else-if="topicobj.scoretype == 3"
+                        label="浼樿壇绛夌骇"
+                      >
+                        <el-radio-group v-model="item.score">
+                          <el-radio label="浼�">浼�</el-radio>
+                          <el-radio label="鑹�">鑹�</el-radio>
+                          <el-radio label="宸�">宸�</el-radio>
+                        </el-radio-group>
+                      </el-form-item>
+                    </el-col>
                   </el-row>
                   <el-row :gutter="10">
                     <el-col :span="11"
@@ -433,19 +481,19 @@
                         <el-input
                           type="text"
                           placeholder="璇疯緭鍏ラ鍙�"
-                          v-model="item.jump"
+                          v-model="item.nextQuestion"
                           show-word-limit
                         >
                         </el-input> </el-form-item
                     ></el-col>
-                    <el-col :span="2">
+                    <!-- <el-col :span="2">
                       <el-button
                         type="danger"
                         icon="el-icon-delete"
                         circle
                         @click="deletexuanx(item)"
                       ></el-button>
-                    </el-col>
+                    </el-col> -->
                   </el-row>
                   <el-row :gutter="10">
                     <el-form-item label="閫変腑鎻愮ず">
@@ -470,7 +518,9 @@
         >
         <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button>
         <el-button type="info" @click="closeFm('ruleForm')">鍏抽棴</el-button>
-        <el-button @click="submitForm('ruleForm')">淇濆瓨棰樼洰鏁版嵁</el-button>
+        <el-button @click="Departmenttreatment('ruleForm')"
+          >淇濆瓨棰樼洰鏁版嵁</el-button
+        >
       </div>
       <!-- 闂嵎棰勮 -->
       <div v-if="Editprogress == 3">
@@ -531,7 +581,7 @@
       title="娣诲姞棰樼洰"
       :visible.sync="drawer"
       custom-class="demo-drawer"
-      width="50%"
+      size="50%"
     >
       <div class="preview-left">
         <el-form
@@ -541,9 +591,9 @@
           :inline="true"
           label-width="98px"
         >
-          <el-form-item label="鏍囬" prop="userName">
+          <el-form-item label="闂鏍囬" prop="topic">
             <el-input
-              v-model="queryParams.userName"
+              v-model="queryParams.topic"
               placeholder="璇疯緭鍏�"
               clearable
               style="width: 200px"
@@ -575,8 +625,8 @@
           <el-table-column
             label="闂鍐呭"
             align="center"
-            key="topicContent"
-            prop="topicContent"
+            key="script"
+            prop="script"
             width="200"
             :show-overflow-tooltip="true"
           />
@@ -595,6 +645,13 @@
             </template>
           </el-table-column>
         </el-table>
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getaddtopiclist"
+        />
       </div>
     </el-drawer>
   </div>
@@ -640,13 +697,18 @@
       topicobj: {},
       // 鎬绘潯鏁�
       total: 1,
-      ruleForm: {},
+      ruleForm: { svyLibScripts: [], tempDetpRelevances: [] },
       rules: {},
       rulesa: {},
       optionsclass: [], //鍒嗙被鍒楄〃
       optionlist: [
         { value: "topic", table: "topic" },
         { value: "topic", table: "topic" },
+      ],
+      appraiselist: [
+        { label: "鍒嗘暟", value: "1" },
+        { label: "ABC绛夌骇", value: "2" },
+        { label: "浼樿壇绛夌骇", value: "3" },
       ],
 
       fileList: [
@@ -689,31 +751,57 @@
       illnessVisible: false, //鎸囨爣鐤剧梾寮规
       deptOptions: [],
       optionsillness: [],
+      delScriptVOList: [],
       illnesslistapi: [],
       illnesslist: [],
       tempDetpRelevanceslist: [],
       optionstag: [],
-      xjxsoptions: [],
-      usable: [],
-      required: [],
+      valuetype: [],
+      usable: [
+        { value: "0", label: "鍙敤" },
+        { value: "1", label: "鍋滅敤" },
+      ],
+      required: [
+        { value: "1", label: "蹇呭~" },
+        { value: "2", label: "涓嶅繀濉�" },
+      ],
       mode: [], //鏂瑰紡
       // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
         pageSize: 10,
       },
+      arr: [
+        [
+          { id: 1, grade: "5" },
+          { id: 2, grade: "5" },
+          { id: 3, grade: "5" },
+          { id: 4, grade: "5" },
+        ],
+        [
+          { id: 1, grade: "5" },
+          { id: 3, grade: "5" },
+          { id: 4, grade: "5" },
+        ],
+        [
+          { id: 1, grade: "5" },
+          { id: 2, grade: "5" },
+          { id: 4, grade: "5" },
+        ],
+      ],
     };
   },
 
   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;
-    this.xjxsoptions = store.getters.xjxsoptions;
+    this.valuetype = store.getters.valuetype;
     this.courtyardlist = store.getters.courtyardlist;
+    this.test();
   },
 
   methods: {
@@ -726,11 +814,11 @@
       let result = [];
       arr.forEach((item) => {
         result.push(item);
-        if (item.svyLibTitleCategoryList) {
+        if (item.svyLibTemplateCategoryList) {
           result = result.concat(
-            this.flattenArray(item.svyLibTitleCategoryList)
+            this.flattenArray(item.svyLibTemplateCategoryList)
           );
-          delete item.svyLibTitleCategoryList;
+          delete item.svyLibTemplateCategoryList;
         }
       });
       return result;
@@ -739,21 +827,23 @@
     // 鑾峰彇鏁版嵁
     getissueinfo() {
       this.id = this.$route.query.id;
-      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);
-      });
+      if (this.id) {
+        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);
+        });
+        getillness({ outid: this.id, type: 5 }).then((res) => {
+          this.illnesslist = res.rows;
+        });
+      }
       getillnesslist({
         pageNum: 1,
         pageSize: 100,
       }).then((response) => {
         this.optionsillness = response.rows;
-      });
-      getillness({ outid: this.id, type: 5 }).then((res) => {
-        this.illnesslist = res.rows;
       });
       listDept(this.queryParams).then((response) => {
         this.deptList = this.handleTree(response.data, "deptId");
@@ -765,19 +855,28 @@
       });
     },
     submitForm(formName) {
+      this.$modal.loading("姝e湪涓婁紶鏁版嵁锛岃绋嶅��...");
+
       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) => {
+        compileQtemplate(this.ruleForm).then((res) => {
           this.$modal.msgSuccess("淇敼鎴愬姛");
+          this.confirmillness();
+          this.$modal.closeLoading();
+
           this.$router.go(-1);
         });
       } else {
         this.ruleForm.isoperation = 1;
-        compileQtemplate(this.ruleForm).then((response) => {
+        compileQtemplate(this.ruleForm).then((res) => {
           this.$modal.msgSuccess("鏂板鎴愬姛");
+          this.confirmillness(res.data);
+
+          this.$modal.closeLoading();
+
           this.$router.go(-1);
         });
       }
@@ -786,10 +885,13 @@
     Departmenttreatment() {
       this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist);
       console.log(this.tempDetpRelevanceslist);
+      this.ruleForm.svyLibScripts = this.ruleForm.svyLibScripts.concat(
+        this.delScriptVOList
+      );
+      console.log(this.tempDetpRelevanceslist, "this.tempDetpRelevanceslist");
       const result = this.tempDetpRelevanceslist.map(
         (subArr) => subArr[subArr.length - 1]
       );
-      console.log(result, "result");
       // id鏁扮粍鏌ユ暟缁勫璞�
       result.forEach((item) => {
         const condition = this.ruleForm.tempDetpRelevances.some(
@@ -803,7 +905,6 @@
           });
         }
       });
-      console.log(this.ruleForm.tempDetpRelevances);
       // 鏁扮粍瀵硅薄鏌d鏁扮粍
       this.ruleForm.tempDetpRelevances.forEach((item) => {
         const condition = result.some((obj) => obj === item.deptId);
@@ -813,11 +914,9 @@
           this.ruleForm.tempDetpRelevances[index].delFlag = 1;
         }
       });
-      console.log(this.ruleForm.tempDetpRelevances);
       setTimeout(() => {
         this.submitForm();
       }, 1000);
-      // this.submitForm();
     },
     // 涓嬩竴姝�
     nextstep() {
@@ -849,6 +948,7 @@
     // 鑾峰彇棰樼洰鍒楄〃
     getaddtopiclist() {
       this.drawer = true;
+      this.queryParams.scoretype = this.ruleForm.scoreType;
       getissuelist(this.queryParams).then((res) => {
         this.loading = false;
         this.userList = res.rows;
@@ -859,42 +959,43 @@
     // 鏂板棰樼洰
     addtopic(row) {
       row.isoperation = 1;
-      this.ruleForm.svyLibTopics.push(row);
+      row.svyLibScriptOptions.forEach((item) => {
+        item.isoperation = 1;
+      });
+      row.svyLibTemplateTargetoptions = row.svyLibScriptOptions;
+      this.ruleForm.svyLibScripts.push(row);
+      this.$modal.msgSuccess("鏂板鎴愬姛");
     },
     handleDelete(row) {
-      let index = this.ruleForm.svyLibTopics.indexOf(row);
-      this.ruleForm.svyLibTopics[index].isoperation = 3;
+      let index = this.ruleForm.svyLibScripts.indexOf(row);
+      this.ruleForm.svyLibScripts.splice(index, 1);
+      row.isoperation = 3;
+      this.delScriptVOList.push(row);
       this.sortFn();
     },
     handleUpdate(row) {
-      getissuelist({ svyid: row.svyid }).then((res) => {
-        this.topicobj = res.rows[0];
-      });
+      console.log(row);
+      this.topicobj = row;
+      // getissuelist({ svyid: row.svyid }).then((res) => {
+      // });
     },
     syioption(row) {
-      const index = this.getIndexInArray(this.ruleForm.svyLibTopics, row);
-      const item = this.ruleForm.svyLibTopics.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓�
-      this.ruleForm.svyLibTopics.splice(index - 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣�
+      const index = this.getIndexInArray(this.ruleForm.svyLibScripts, row);
+      const item = this.ruleForm.svyLibScripts.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓�
+      this.ruleForm.svyLibScripts.splice(index - 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣�
       this.sortFn();
     },
     xiayioption(row) {
-      const index = this.getIndexInArray(this.ruleForm.svyLibTopics, row);
-      const item = this.ruleForm.svyLibTopics.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓�
-      this.ruleForm.svyLibTopics.splice(index + 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣�
+      const index = this.getIndexInArray(this.ruleForm.svyLibScripts, row);
+      const item = this.ruleForm.svyLibScripts.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓�
+      this.ruleForm.svyLibScripts.splice(index + 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣�
       this.sortFn();
     },
     sortFn() {
-      this.ruleForm.svyLibTopics = this.ruleForm.svyLibTopics.map(
-        (item, index) => {
-          return {
-            guid: index + 1,
-            svyid: item.svyid,
-            topic: item.topic,
-            topicContent: item.topicContent,
-          };
-        }
-      );
-      console.log(this.ruleForm.svyLibTopics);
+      this.ruleForm.svyLibScripts.forEach((item, index) => {
+        item.sort = index + 1;
+      });
+      console.log(this.ruleForm.svyLibScripts);
     },
 
     // 淇敼棰樼洰淇℃伅
@@ -1022,8 +1123,11 @@
       this.inputValueillness = "";
     },
     // 淇濆瓨
-    confirmillness() {
+    confirmillness(guid) {
       this.illnesslist.forEach((item, index) => {
+        if (guid) {
+          item.outid = guid;
+        }
         if (!item.id) {
           addtargetillness(item).then((res) => {});
         }
@@ -1042,6 +1146,129 @@
     resetForm(formName) {
       this.$refs[formName].resetFields();
     },
+    // 闂嵎鍒嗘暟闄愬埗绠楁硶
+    // 娣峰悎璺嚎
+    generateCombinations(arrays, currentIndex = 0, currentCombination = []) {
+      if (currentIndex === arrays.length) {
+        return [currentCombination];
+      }
+
+      const currentArray = arrays[currentIndex];
+      const newCombinations = [];
+
+      for (const item of currentArray) {
+        const newCombination = [...currentCombination, item];
+        const combinations = this.generateCombinations(
+          arrays,
+          currentIndex + 1,
+          newCombination
+        );
+        newCombinations.push(...combinations);
+      }
+      return newCombinations;
+    },
+    // 鎵ц
+    test() {
+      const arrays = [
+        ["2", "3", "4", "5"],
+        ["1", "2", "5", "6"],
+        ["3", "4", "5", "3"],
+        ["3", "2", "5", "7"],
+      ];
+      const arraysa = [
+        {
+          id: 1,
+          grade: "5",
+          arr: [
+            { name: "涓嶉敊", skip: 2 },
+            { name: "涓�鑸�", skip: 2 },
+            { name: "杩樹笉閿�", skip: 2 },
+            { name: "寰堟", skip: 3 },
+          ],
+        },
+
+        {
+          id: 2,
+          grade: "5",
+          arr: [
+            { name: "浼樼", skip: 3 },
+            { name: "鑹ソ", skip: 3 },
+            { name: "涓�鑸�", skip: 3 },
+            { name: "杈冨樊", skip: 4 },
+          ],
+        },
+        {
+          id: 3,
+          grade: "5",
+          arr: [
+            { name: "鏄殑", skip: 4 },
+            { name: "涓嶆竻妤�", skip: 4 },
+            { name: "杩樺彲", skip: 4 },
+            { name: "涓�鑸�", skip: 4 },
+          ],
+        },
+        {
+          id: 4,
+          grade: "5",
+          arr: [
+            { name: "鐪熶笉閿�", skip: null },
+            { name: "杩樺彲浠�", skip: null },
+            { name: "涓�鑸埇", skip: null },
+            { name: "涓嶆竻妤�", skip: null },
+          ],
+        },
+      ];
+
+      // const newMixArray = this.generateCombinations(arrays);
+      const newMixArray = this.getExecutionOrders(arraysa);
+
+      console.log(newMixArray, "鍏ㄩ儴璺嚎");
+      this.screen(newMixArray);
+    },
+    getExecutionOrders(data) {
+      let orders = [];
+
+      const explore = (currentOrder, id) => {
+        console.log(currentOrder, "currentOrder", id);
+        const currentQuestion = data[currentOrder[currentOrder.length - 1]];
+        if (
+          currentQuestion.arr.some(
+            (option) =>
+              option.skip !== null && !currentOrder.includes(option.skip)
+          )
+        ) {
+          currentQuestion.arr.forEach((option) => {
+            if (option.skip !== null && !currentOrder.includes(option.skip)) {
+              explore([...currentOrder, option.skip]);
+            }
+          });
+        } else {
+          orders.push(
+            currentOrder.map((id) => ({
+              id: data[id].id,
+              grade: data[id].grade,
+            }))
+          );
+        }
+      };
+      console.log(data, "data");
+      data.forEach((entry) => {
+        explore([entry.id], entry.id);
+      });
+
+      return orders;
+    },
+
+    // 鏁扮粍姹傚拰
+    sumArray(arr) {
+      return arr.reduce((acc, curr) => acc + parseInt(curr), 0);
+    },
+    // 绛涢�夐敊璇矾绾�
+    screen(data) {
+      const arraysGreaterThan10 = data.filter((arr) => this.sumArray(arr) > 21);
+
+      console.log(arraysGreaterThan10, "绛涢�夐敊璇矾绾垮ぇ浜�13鍒�");
+    },
   },
 };
 </script>

--
Gitblit v1.9.3