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/questionbank/particulars/index.vue |  442 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 309 insertions(+), 133 deletions(-)

diff --git a/src/views/knowledge/questionbank/particulars/index.vue b/src/views/knowledge/questionbank/particulars/index.vue
index f7495b4..3a09165 100644
--- a/src/views/knowledge/questionbank/particulars/index.vue
+++ b/src/views/knowledge/questionbank/particulars/index.vue
@@ -6,43 +6,76 @@
           <div class="headline">
             棰樼洰璁剧疆璇︽儏
             <span style="margin-left: 30px"
-              ><el-button type="primary" @click="compileissue"
-                >淇濆瓨</el-button
+              ><el-button type="primary" @click="Saveproblem"
+                >淇� 瀛�</el-button
+              > </span
+            ><span style="margin-left: 30px"
+              ><el-button type="success" round @click="drawer = true"
+                >+閫夋嫨鎸囨爣</el-button
               ></span
             >
           </div>
           <div style="margin-left: 8%">
-            <el-form-item label="闂鍒嗙被">
-              <el-select
-                v-model="topicobj.categoryid"
-                size="medium"
-                filterable
-                placeholder="璇烽�夋嫨鍒嗙被"
-              >
-                <el-option-group
-                  v-for="group in classifylist"
-                  :key="group.id"
-                  :label="group.name"
-                >
-                  <el-option
-                    v-for="item in group.svyLibTopicCategoryList"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id"
-                  >
-                  </el-option>
-                </el-option-group>
-              </el-select>
-            </el-form-item>
             <el-row :gutter="10">
-              <el-col :span="6"
+              <el-col :span="8">
+                <el-form-item label="闂鍒嗙被">
+                  <el-select
+                    v-model="topicobj.categoryid"
+                    size="medium"
+                    filterable
+                    placeholder="璇烽�夋嫨鍒嗙被"
+                  >
+                    <el-option-group
+                      v-for="group in classifylist"
+                      :key="group.id"
+                      :label="group.name"
+                    >
+                      <el-option
+                        v-for="item in group.svyLibScriptCategoryList"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id"
+                      >
+                      </el-option>
+                    </el-option-group>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="璇勪环绫诲瀷">
+                  <el-select
+                    v-model="topicobj.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-col :span="8" v-if="topicobj.scoretype == 1">
+                <el-form-item label="棰樼洰寰楀垎">
+                  <el-input
+                    v-model="topicobj.score"
+                    placeholder="璇疯緭鍏ュ垎鏁�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+
+            <el-row :gutter="10">
+              <el-col :span="8"
                 ><el-form-item label="棰樼洰鏍囬">
                   <el-input
                     v-model="topicobj.topic"
                     placeholder="璇疯緭鍏ユ爣棰�"
                   ></el-input> </el-form-item
               ></el-col>
-              <el-col :span="6"
+              <el-col :span="8"
                 ><el-form-item label="鏄惁鍙敤">
                   <el-select
                     v-model="topicobj.isavailable"
@@ -80,7 +113,7 @@
               ></el-col>
             </el-row>
             <el-row :gutter="10">
-              <el-col :span="6"
+              <el-col :span="8"
                 ><el-form-item label="鏄惁蹇呭~">
                   <el-select
                     v-model="topicobj.ismandatory"
@@ -98,17 +131,17 @@
                     </el-option>
                   </el-select> </el-form-item
               ></el-col>
-              <el-col :span="6"
+              <el-col :span="8"
                 ><el-form-item label="棰樼洰绫诲瀷">
                   <el-select
-                    v-model="topicobj.topictype"
+                    v-model="topicobj.scripttype"
                     size="medium"
                     filterable
                     placeholder="璇烽�夋嫨鍒嗙被"
                   >
                     <el-option
                       class="topicobjaa"
-                      v-for="item in xjxsoptions"
+                      v-for="item in valuetype"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value"
@@ -119,9 +152,10 @@
               <el-col :span="8"
                 ><el-form-item label="閫傜敤鏂瑰紡">
                   <el-select
-                    v-model="topicobj.suitway"
+                    v-model="suitwaylist"
                     size="medium"
                     filterable
+                    multiple
                     placeholder="璇烽�夋嫨鍒嗙被"
                   >
                     <el-option
@@ -138,10 +172,18 @@
               <el-input
                 style="width: 40vw"
                 type="textarea"
-                id="topicContent"
-                v-model="topicobj.topicContent"
-                @focus="handleInput('topicContent')"
-                placeholder="璇疯緭鍏ユ爣棰�"
+                id="script"
+                v-model="topicobj.script"
+                @focus="handleInput('script')"
+                placeholder="璇疯緭鍏ラ鐩唴瀹�"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="棰樼洰璇存槑">
+              <el-input
+                style="width: 40vw"
+                type="textarea"
+                v-model="topicobj.scriptContent"
+                placeholder="璇疯緭鍏ヨ鏄�"
               ></el-input>
             </el-form-item>
 
@@ -231,7 +273,7 @@
                 </div>
               </el-form-item>
             </el-row>
-            <el-form-item label="閫氱煡鍙橀噺" prop="name">
+            <!-- <el-form-item label="閫氱煡鍙橀噺" prop="name">
               <div style="margin-bottom: 5px" v-for="item in variablelist">
                 <el-row>
                   <el-col :span="5">
@@ -278,68 +320,86 @@
                   </div>
                 </div>
               </el-col></el-row
-            >
+            > -->
           </div>
-
-          <div class="headline">
-            閫夐」璁剧疆<span style="margin-left: 30px"
-              ><el-button type="primary" round @click="addoption"
-                >+鏂板</el-button
-              ></span
-            ><span style="margin-left: 30px"
-              ><el-button type="success" round @click="drawer = true"
-                >+閫夋嫨鎸囨爣</el-button
-              ></span
+          <div v-if="topicobj.valueType == 1">
+            <div class="headline">
+              閫夐」璁剧疆<span style="margin-left: 30px"
+                ><el-button type="primary" round @click="addoption"
+                  >+鏂板</el-button
+                ></span
+              >
+            </div>
+            <div
+              class="topicxq"
+              v-for="item in topicobj.svyLibScriptOptions"
+              v-if="item.isoperation != 3"
             >
-          </div>
-          <div
-            class="topicxq"
-            v-for="item in topicobj.svyLibTopicoptions"
-            v-if="item.isoperation != 3"
-          >
-            <el-row :gutter="10">
-              <el-col :span="11"
-                ><el-form-item label="閫夐」">
-                  <el-input
-                    type="text"
-                    placeholder="璇疯緭鍏ラ�夐」"
-                    v-model="item.optioncontent"
-                    show-word-limit
+              <el-row :gutter="10">
+                <el-col :span="11"
+                  ><el-form-item label="閫夐」">
+                    <el-input
+                      type="text"
+                      placeholder="璇疯緭鍏ラ�夐」"
+                      v-model="item.optioncontent"
+                      show-word-limit
+                    >
+                    </el-input> </el-form-item
+                ></el-col>
+                <el-col :span="11">
+                  <el-form-item v-if="topicobj.scoretype == 1" label="鍒嗗��">
+                    <el-input
+                      type="text"
+                      placeholder="璇疯緭鍏ラ�夐」鍒嗗��"
+                      v-model="item.score"
+                      show-word-limit
+                    >
+                    </el-input>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="topicobj.scoretype == 2"
+                    label="ABC绛夌骇"
                   >
-                  </el-input> </el-form-item
-              ></el-col>
-              <el-col :span="11"
-                ><el-form-item label="鍒嗗��">
-                  <el-input
-                    type="text"
-                    placeholder="璇疯緭鍏�"
-                    v-model="item.score"
-                    show-word-limit
+                    <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-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-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-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: 40vw"
-                  type="textarea"
-                  autosize
-                  placeholder="璇疯緭鍏ュ唴瀹�"
-                  v-model="item.prompt"
-                >
-                </el-input
-              ></el-form-item>
-            </el-row>
+              <el-row :gutter="10">
+                <el-form-item label="閫変腑鎻愮ず">
+                  <el-input
+                    style="width: 40vw"
+                    type="textarea"
+                    autosize
+                    placeholder="璇疯緭鍏ュ唴瀹�"
+                    v-model="item.prompt"
+                  >
+                  </el-input
+                ></el-form-item>
+              </el-row>
+            </div>
           </div>
         </el-form>
       </el-card>
@@ -348,7 +408,7 @@
       title="娣诲姞閫夐」"
       :visible.sync="drawer"
       custom-class="demo-drawer"
-      width="66%"
+      size="50%"
     >
       <div class="preview-left">
         <el-form
@@ -409,7 +469,7 @@
                 type="text"
                 @click="selectlabel(scope.row)"
                 ><span class="button-textxg"
-                  ><i class="el-icon-circle-plus-outline"></i>娣诲姞</span
+                  ><i class="el-icon-circle-plus-outline"></i>閫夋嫨</span
                 ></el-button
               >
             </template>
@@ -449,7 +509,7 @@
   data() {
     return {
       topicobj: {
-        svyLibTopicoptions: [],
+        svyLibScriptOptions: [],
       },
       inputVisible: false,
       inputValue: "",
@@ -458,6 +518,7 @@
       drawer: false,
       loading: false,
       id: [],
+      suitwaylist: [],
       targetList: [],
       dynamicTags: [],
       optionsclass: [],
@@ -491,8 +552,13 @@
       illnesslistapi: [],
       illnesslist: [],
       classifylist: [],
+      appraiselist: [
+        { label: "鍒嗘暟", value: "1" },
+        { label: "ABC绛夌骇", value: "2" },
+        { label: "浼樿壇绛夌骇", value: "3" },
+      ],
       optionstag: [],
-      xjxsoptions: [],
+      valuetype: [],
       usable: [],
       mode: [], //鏂瑰紡
     };
@@ -505,7 +571,7 @@
     this.mode = store.getters.mode;
     this.languagelist = store.getters.languagelist;
     this.usable = store.getters.usable;
-    this.xjxsoptions = store.getters.xjxsoptions;
+    this.valuetype = store.getters.askvaluetype;
     this.required = store.getters.required;
   },
 
@@ -533,12 +599,18 @@
     // 鑾峰彇鏁版嵁
     getissueinfo() {
       this.id = this.$route.query.id;
+      // 鍒嗙被
+      getissueclassify({}).then((res) => {
+        this.classifylist = res.rows;
+        console.log(this.classifylist, "鍒嗙被");
+      });
       if (!this.id) {
         return;
       }
-      getissuelist({ topicid: this.id }).then((res) => {
+      getissuelist({ id: this.id }).then((res) => {
         this.topicobj = res.rows[0];
         this.dynamicTags = this.topicobj.tag.split(",");
+        this.suitwaylist = this.topicobj.suitway.split(",");
         this.variablelist = JSON.parse(this.topicobj.otherdata)
           ? JSON.parse(this.topicobj.otherdata)
           : this.variablelist;
@@ -552,10 +624,6 @@
       getillness({ outid: this.id, type: 4 }).then((res) => {
         this.illnesslist = res.rows;
       });
-      // 鍒嗙被
-      getissueclassify({}).then((res) => {
-        this.classifylist = res.rows;
-      });
     },
     gettargetInfo() {
       gettargetInfo(this.queryParams).then((res) => {
@@ -565,7 +633,7 @@
     },
     // 鏂板鎴栦慨鏀硅鎯�
     compileissue() {
-      this.topicobj.svyLibTopicoptions = this.topicobj.svyLibTopicoptions.map(
+      this.topicobj.svyLibScriptOptions = this.topicobj.svyLibScriptOptions.map(
         (item) => {
           if (item.isoperation != 1 && item.isoperation != 3) {
             item.isoperation = 2;
@@ -575,6 +643,7 @@
       );
       this.topicobj.otherdata = JSON.stringify(this.variablelist);
       this.topicobj.tag = this.dynamicTags.join(",");
+      this.topicobj.suitway = this.suitwaylist.join(",");
       if (this.id) {
         this.topicobj.isoperation = 2;
         compileissue(this.topicobj).then((res) => {
@@ -617,31 +686,95 @@
         deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
       }
     },
+    // 鍒ゆ柇鍒嗗��
+    Scorejudgment() {
+      let scorearr = this.topicobj.svyLibScriptOptions;
+      let isValid = scorearr.every((score) => {
+        if (score.score) {
+          console.log(Number(score.score), this.topicobj.score, "鍒嗗��");
+          if (
+            Number(score.score) <= 0 ||
+            Number(score.score) > Number(this.topicobj.score)
+          ) {
+            console.log(22);
+            this.$message({
+              message: "閫夐」鍒嗗�煎繀椤诲ぇ浜�0灏忎簬绛変簬" + this.topicobj.score + "鍒�",
+              type: "warning",
+            });
+            return false;
+          }
+          return true;
+        } else {
+          this.$message({
+            message: "閫夐」鍒嗗�兼湭璁剧疆",
+            type: "warning",
+          });
+          return false;
+        }
+      });
+
+      if (isValid) {
+        this.compileissue();
+        // console.log("鍒颁繚瀛樹簡");
+      }
+    },
+    Saveproblem() {
+      if (this.topicobj.scoretype == 1) {
+        console.log(321);
+        this.Scorejudgment();
+      } else {
+        this.compileissue();
+      }
+    },
+    // 鍒犻櫎鏍囩
+    handleClose(tag) {
+      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+    },
     // 鍒犻櫎閫夐」
     deletexuanx(row) {
-      const index = this.getIndexInArray(this.topicobj.svyLibTopicoptions, row);
-      if (this.topicobj.svyLibTopicoptions[index].topicid) {
-        this.topicobj.svyLibTopicoptions[index].isoperation = 3;
+      const index = this.getIndexInArray(
+        this.topicobj.svyLibScriptOptions,
+        row
+      );
+      if (this.topicobj.svyLibScriptOptions[index].id) {
+        this.topicobj.svyLibScriptOptions[index].isoperation = 3;
       } else {
-        this.topicobj.svyLibTopicoptions.splice(index, 1);
+        this.topicobj.svyLibScriptOptions.splice(index, 1);
       }
     },
     // 鏂板閫夐」
     addoption() {
-      this.topicobj.svyLibTopicoptions.push({
+      console.log(this.topicobj, "obj");
+      this.topicobj.svyLibScriptOptions.push({
         score: "",
         isoperation: 1,
       });
     },
     // 閫夋嫨鎸囨爣
     selectlabel(row) {
-      const labellist = row.targetoptionList;
-      labellist.forEach((item) => {
-        this.topicobj.svyLibTopicoptions.push({
-          optioncontent: item.targetvalue,
-          isoperation: 1,
-        });
-      });
+      this.$modal
+        .confirm(
+          '鏄惁閫夋嫨鏍囬涓�"' + row.targetname + '"鐨勬寚鏍囧苟鏇挎崲濉厖闂淇℃伅锛�'
+        )
+        .then(() => {
+          console.log(row);
+          console.log(this.topicobj);
+          this.topicobj.topic = row.targetname;
+          this.topicobj.valueType = row.valueType;
+          this.topicobj.scriptContent = row.targetdesc;
+          this.topicobj.isavailable = "0";
+          this.topicobj.language = "鏅�氳瘽";
+          this.topicobj.svyLibScriptOptions = [];
+          const labellist = row.targetoptionList;
+          labellist.forEach((item) => {
+            this.topicobj.svyLibScriptOptions.push({
+              optioncontent: item.targetvalue,
+              isoperation: 1,
+            });
+          });
+          this.drawer = false;
+        })
+        .catch(() => {});
     },
 
     // 鏍囩-----------------
@@ -744,27 +877,27 @@
       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("缂栬緫鎴愬姛");
-    },
+    // // 淇濆瓨
+    // 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("缂栬緫鎴愬姛");
+    // },
     resetQuery() {},
     // 渚挎嵎鏍囩
     tsgnameto(row) {
       let inputValueArr = "";
       let el = document.querySelector("#" + this.currentInputId);
       //el.selectionStart; 杩欏氨鏄綋鍓嶅厜鏍囨墍鍦ㄧ殑浣嶇疆锛堝瓧绗︿覆涓瓧绗︾殑index锛�
-      if (this.currentInputId == "topicContent") {
-        inputValueArr = this.topicobj.topicContent.split("");
+      if (this.currentInputId == "script") {
+        inputValueArr = this.topicobj.script.split("");
         console.log(123);
       } else if (this.currentInputId == "nomatchtext") {
         inputValueArr = this.topicobj.nomatchtext.split("");
@@ -786,8 +919,8 @@
       // 鎶婃暟缁勯噸鏂拌浆鎹负瀛楃涓插苟璧嬪��
       inputValueArr = inputValueArr.join("");
       console.log(inputValueArr);
-      if (this.currentInputId == "topicContent") {
-        this.topicobj.topicContent = inputValueArr;
+      if (this.currentInputId == "script") {
+        this.topicobj.script = inputValueArr;
       } else if (this.currentInputId == "nomatchtext") {
         this.topicobj.nomatchtext = inputValueArr;
       } else if (this.currentInputId == "sliencetext") {
@@ -823,6 +956,49 @@
       console.log("杈撳叆妗嗙殑鍊煎凡鏇存柊:", this.currentInputId);
       // 鍦ㄨ繖閲屾墽琛屾洿鏂版暟鎹殑閫昏緫
     },
+    // 娣峰悎璺嚎
+    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 newMixArray = this.generateCombinations(arrays);
+      console.log(newMixArray, "鍏ㄩ儴璺嚎");
+      this.screen(newMixArray);
+    },
+    // 鏁扮粍姹傚拰
+    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