|  |  | 
 |  |  |                       :label="group.name" | 
 |  |  |                     > | 
 |  |  |                       <el-option | 
 |  |  |                         v-for="item in group.svyLibTopicCategoryList" | 
 |  |  |                         v-for="item in group.svyLibScriptCategoryList" | 
 |  |  |                         :key="item.id" | 
 |  |  |                         :label="item.name" | 
 |  |  |                         :value="item.id" | 
 |  |  | 
 |  |  |               <el-col :span="10"> | 
 |  |  |                 <el-form-item label="评价类型"> | 
 |  |  |                   <el-select | 
 |  |  |                     v-model="topicobj.evaluateid" | 
 |  |  |                     v-model="topicobj.scoretype" | 
 |  |  |                     placeholder="请选择分类" | 
 |  |  |                   > | 
 |  |  |                     <el-option | 
 |  |  | 
 |  |  |             </el-row> | 
 |  |  |  | 
 |  |  |             <el-row :gutter="10"> | 
 |  |  |               <el-col :span="6" | 
 |  |  |               <el-col :span="8" | 
 |  |  |                 ><el-form-item label="题目标题"> | 
 |  |  |                   <el-input | 
 |  |  |                     v-model="topicobj.topic" | 
 |  |  |                     v-model="topicobj.script" | 
 |  |  |                     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" | 
 |  |  | 
 |  |  |               ></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" | 
 |  |  | 
 |  |  |                     </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.valueType" | 
 |  |  |                     v-model="topicobj.scripttype" | 
 |  |  |                     size="medium" | 
 |  |  |                     filterable | 
 |  |  |                     placeholder="请选择分类" | 
 |  |  | 
 |  |  |               <el-col :span="8" | 
 |  |  |                 ><el-form-item label="适用方式"> | 
 |  |  |                   <el-select | 
 |  |  |                     v-model="topicobj.suitway" | 
 |  |  |                     v-model="suitwaylist" | 
 |  |  |                     size="medium" | 
 |  |  |                     filterable | 
 |  |  |                     multiple | 
 |  |  |                     placeholder="请选择分类" | 
 |  |  |                   > | 
 |  |  |                     <el-option | 
 |  |  | 
 |  |  |               <el-input | 
 |  |  |                 style="width: 40vw" | 
 |  |  |                 type="textarea" | 
 |  |  |                 id="topicContent" | 
 |  |  |                 v-model="topicobj.topicContent" | 
 |  |  |                 @focus="handleInput('topicContent')" | 
 |  |  |                 id="scriptContent" | 
 |  |  |                 v-model="topicobj.scriptContent" | 
 |  |  |                 @focus="handleInput('scriptContent')" | 
 |  |  |                 placeholder="请输入标题" | 
 |  |  |               ></el-input> | 
 |  |  |             </el-form-item> | 
 |  |  | 
 |  |  |             </div> | 
 |  |  |             <div | 
 |  |  |               class="topicxq" | 
 |  |  |               v-for="item in topicobj.svyLibTopicoptions" | 
 |  |  |               v-for="item in topicobj.svyLibScriptOptions" | 
 |  |  |               v-if="item.isoperation != 3" | 
 |  |  |             > | 
 |  |  |               <el-row :gutter="10"> | 
 |  |  | 
 |  |  |                     > | 
 |  |  |                     </el-input> </el-form-item | 
 |  |  |                 ></el-col> | 
 |  |  |                 <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="请输入" | 
 |  |  |                       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-col :span="2"> | 
 |  |  |                   <el-button | 
 |  |  |                     type="danger" | 
 |  |  | 
 |  |  |       title="添加选项" | 
 |  |  |       :visible.sync="drawer" | 
 |  |  |       custom-class="demo-drawer" | 
 |  |  |       width="66%" | 
 |  |  |       size="50%" | 
 |  |  |     > | 
 |  |  |       <div class="preview-left"> | 
 |  |  |         <el-form | 
 |  |  | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       topicobj: { | 
 |  |  |         svyLibTopicoptions: [], | 
 |  |  |         svyLibScriptOptions: [], | 
 |  |  |       }, | 
 |  |  |       inputVisible: false, | 
 |  |  |       inputValue: "", | 
 |  |  | 
 |  |  |       drawer: false, | 
 |  |  |       loading: false, | 
 |  |  |       id: [], | 
 |  |  |       suitwaylist: [], | 
 |  |  |       targetList: [], | 
 |  |  |       dynamicTags: [], | 
 |  |  |       optionsclass: [], | 
 |  |  | 
 |  |  |       illnesslist: [], | 
 |  |  |       classifylist: [], | 
 |  |  |       appraiselist: [ | 
 |  |  |         { label: "分数", value: 1 }, | 
 |  |  |         { label: "ABC等级", value: 2 }, | 
 |  |  |         { label: "优良等级", value: 3 }, | 
 |  |  |         { label: "分数", value: "1" }, | 
 |  |  |         { label: "ABC等级", value: "2" }, | 
 |  |  |         { label: "优良等级", value: "3" }, | 
 |  |  |       ], | 
 |  |  |       optionstag: [], | 
 |  |  |       valuetype: [], | 
 |  |  | 
 |  |  |   created() { | 
 |  |  |     this.gettabList(); | 
 |  |  |     this.getissueinfo(); | 
 |  |  |     this.test(); | 
 |  |  |     this.gettargetInfo(); | 
 |  |  |     this.mode = store.getters.mode; | 
 |  |  |     this.languagelist = store.getters.languagelist; | 
 |  |  | 
 |  |  |       // 分类 | 
 |  |  |       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; | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     // 新增或修改详情 | 
 |  |  |     compileissue() { | 
 |  |  |       this.topicobj.svyLibTopicoptions = this.topicobj.svyLibTopicoptions.map( | 
 |  |  |       console.log(11223); | 
 |  |  |       this.topicobj.svyLibScriptOptions = this.topicobj.svyLibScriptOptions.map( | 
 |  |  |         (item) => { | 
 |  |  |           if (item.isoperation != 1 && item.isoperation != 3) { | 
 |  |  |             item.isoperation = 2; | 
 |  |  | 
 |  |  |       ); | 
 |  |  |       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) => { | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     // 删除选项 | 
 |  |  |     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, | 
 |  |  |       }); | 
 |  |  | 
 |  |  |           console.log(this.topicobj); | 
 |  |  |           this.topicobj.topic = row.targetname; | 
 |  |  |           this.topicobj.valueType = row.valueType; | 
 |  |  |           this.topicobj.topicContent = row.targetdesc; | 
 |  |  |           this.topicobj.scriptContent = row.targetdesc; | 
 |  |  |           this.topicobj.isavailable = "0"; | 
 |  |  |           this.topicobj.language = "普通话"; | 
 |  |  |           this.topicobj.svyLibTopicoptions = []; | 
 |  |  |           this.topicobj.svyLibScriptOptions = []; | 
 |  |  |           const labellist = row.targetoptionList; | 
 |  |  |           labellist.forEach((item) => { | 
 |  |  |             this.topicobj.svyLibTopicoptions.push({ | 
 |  |  |             this.topicobj.svyLibScriptOptions.push({ | 
 |  |  |               optioncontent: item.targetvalue, | 
 |  |  |               isoperation: 1, | 
 |  |  |             }); | 
 |  |  | 
 |  |  |       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 == "scriptContent") { | 
 |  |  |         inputValueArr = this.topicobj.scriptContent.split(""); | 
 |  |  |         console.log(123); | 
 |  |  |       } else if (this.currentInputId == "nomatchtext") { | 
 |  |  |         inputValueArr = this.topicobj.nomatchtext.split(""); | 
 |  |  | 
 |  |  |       // 把数组重新转换为字符串并赋值 | 
 |  |  |       inputValueArr = inputValueArr.join(""); | 
 |  |  |       console.log(inputValueArr); | 
 |  |  |       if (this.currentInputId == "topicContent") { | 
 |  |  |         this.topicobj.topicContent = inputValueArr; | 
 |  |  |       if (this.currentInputId == "scriptContent") { | 
 |  |  |         this.topicobj.scriptContent = inputValueArr; | 
 |  |  |       } else if (this.currentInputId == "nomatchtext") { | 
 |  |  |         this.topicobj.nomatchtext = inputValueArr; | 
 |  |  |       } else if (this.currentInputId == "sliencetext") { | 
 |  |  | 
 |  |  |       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"], | 
 |  |  |         ["1", "2"], | 
 |  |  |         ["3", "4", "5"], | 
 |  |  |         ["3", "2", "5"], | 
 |  |  |       ]; | 
 |  |  |  | 
 |  |  |       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) > 13); | 
 |  |  |  | 
 |  |  |       console.log(arraysGreaterThan10,'筛选错误路线大于13分'); | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  | }; | 
 |  |  | </script> |