From 43bb1026f5e6b04e790662361711c40f3499c2a9 Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期三, 10 七月 2024 16:02:35 +0800 Subject: [PATCH] 测试完成 --- src/views/knowledge/questionnaire/compilequer/index.vue | 486 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 353 insertions(+), 133 deletions(-) diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue index 040fb82..acc174a 100644 --- a/src/views/knowledge/questionnaire/compilequer/index.vue +++ b/src/views/knowledge/questionnaire/compilequer/index.vue @@ -287,37 +287,57 @@ <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.svyLibScripts"> + <el-table + v-loading="loading" + :data="ruleForm.svyTemplateLibScripts" + > <el-table-column label="搴忓彿" align="center" - key="guid" - prop="guid" + key="sort" + prop="sort" /> <el-table-column label="棰樼洰鏍囬" align="center" - key="topic" - prop="topic" + key="scriptTopic" + prop="scriptTopic" :show-overflow-tooltip="true" /> <el-table-column label="棰樼洰鍐呭" align="center" - key="script" - prop="script" + key="scriptContent" + prop="scriptContent" :show-overflow-tooltip="true" /> @@ -374,7 +394,7 @@ </div> <el-form-item label="棰樼洰鏍囬"> <el-input - v-model="topicobj.topic" + v-model="topicobj.scriptTopic" placeholder="璇疯緭鍏ユ爣棰�" ></el-input> </el-form-item> @@ -410,75 +430,107 @@ </el-select> </el-form-item ></el-col> </el-row> - <div class="headline">閫夐」璁剧疆</div> - <div - class="topicxq" - v-for="item in topicobj.svyLibScriptOptions" - > - <el-row :gutter="10"> - <el-col :span="11" - ><el-form-item label="棰樺彿"> - <el-input - type="text" - placeholder="璇疯緭鍏�" - v-model="item.topicid" - show-word-limit + <div v-if="topicobj.scriptType != 3"> + <div class="headline">閫夐」璁剧疆</div> + <div + class="topicxq" + v-for="item in topicobj.svyLibTemplateTargetoptions" + > + <el-row :gutter="10"> + <el-col :span="11"> + <el-form-item + v-if="topicobj.scoretype == 1" + label="鍒嗗��" > - </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-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-row> - <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-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="11" - ><el-form-item 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" + ><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 label="涓嬮璺宠浆"> + <el-input + type="text" + placeholder="璇疯緭鍏ラ鍙�" + v-model="item.nextQuestion" + show-word-limit + > + </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-row :gutter="10"> + <el-form-item label="閫変腑鎻愮ず"> <el-input - type="text" - placeholder="璇疯緭鍏ラ鍙�" - v-model="item.jump" - show-word-limit + style="width: 20vw" + type="textarea" + autosize + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="item.prompt" > - </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-row :gutter="10"> - <el-form-item label="閫変腑鎻愮ず"> - <el-input - style="width: 20vw" - type="textarea" - autosize - placeholder="璇疯緭鍏ュ唴瀹�" - v-model="item.prompt" - > - </el-input - ></el-form-item> - </el-row> + </el-input + ></el-form-item> + </el-row> + </div> + </div> + <div v-else> + <div class="topicxq"> + <el-row :gutter="10"> + <el-form-item label="閫変腑鎻愮ず"> + <el-input + style="width: 20vw" + type="textarea" + autosize + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="item.prompt" + > + </el-input + ></el-form-item> + </el-row> + </div> </div> </el-form> </el-card> @@ -500,7 +552,7 @@ <el-divider></el-divider> <div class="preview-left"> <!-- 鍗曢�� --> - <div class="topic-dev" v-for="item in valssu" :key="item.aaa"> + <div class="scriptTopic-dev" v-for="item in valssu" :key="item.aaa"> <div class="dev-text"> {{ item.idd }}銆乕鍗曢�塢<span>{{ item.wssd }}</span> </div> @@ -516,7 +568,7 @@ </div> </div> <!-- 澶氶�� --> - <div class="topic-dev" v-for="item in valssu" :key="item.aaa"> + <div class="scriptTopic-dev" v-for="item in valssu" :key="item.aaa"> <div class="dev-text"> {{ item.idd }}銆乕澶氶�塢<span>{{ item.wssd }}</span> </div> @@ -533,7 +585,7 @@ </div> </div> <!-- 濉┖ --> - <div class="topic-dev" v-for="item in valssu" :key="item.aaa"> + <div class="scriptTopic-dev" v-for="item in valssu" :key="item.aaa"> <div class="dev-text"> {{ item.idd }}銆乕濉┖]<span>{{ item.wssd }}</span> </div> @@ -563,9 +615,9 @@ :inline="true" label-width="98px" > - <el-form-item label="闂鏍囬" prop="topic"> + <el-form-item label="闂鏍囬" prop="scriptTopic"> <el-input - v-model="queryParams.topic" + v-model="queryParams.scriptTopic" placeholder="璇疯緭鍏�" clearable style="width: 200px" @@ -590,15 +642,15 @@ <el-table-column label="鏍囬" align="center" - key="topic" - prop="topic" + key="scriptTopic" + prop="scriptTopic" width="100" /> <el-table-column label="闂鍐呭" align="center" - key="script" - prop="script" + key="scriptContent" + prop="scriptContent" width="200" :show-overflow-tooltip="true" /> @@ -669,14 +721,15 @@ topicobj: {}, // 鎬绘潯鏁� total: 1, - ruleForm: {}, + ruleForm: { svyTemplateLibScripts: [], tempDetpRelevances: [] }, rules: {}, rulesa: {}, optionsclass: [], //鍒嗙被鍒楄〃 optionlist: [ - { value: "topic", table: "topic" }, - { value: "topic", table: "topic" }, + { value: "scriptTopic", table: "scriptTopic" }, + { value: "scriptTopic", table: "scriptTopic" }, ], + appraiselist: [ { label: "鍒嗘暟", value: "1" }, { label: "ABC绛夌骇", value: "2" }, @@ -729,14 +782,38 @@ tempDetpRelevanceslist: [], optionstag: [], valuetype: [], - usable: [], - required: [], + 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" }, + ], + ], }; }, @@ -749,6 +826,7 @@ this.required = store.getters.required; this.valuetype = store.getters.valuetype; this.courtyardlist = store.getters.courtyardlist; + // this.test(); }, methods: { @@ -774,21 +852,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"); @@ -800,19 +880,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); }); } @@ -821,9 +910,9 @@ Departmenttreatment() { this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist); console.log(this.tempDetpRelevanceslist); - this.ruleForm.svyLibScripts = this.ruleForm.svyLibScripts.concat( - this.delScriptVOList - ); + this.ruleForm.svyTemplateLibScripts = + this.ruleForm.svyTemplateLibScripts.concat(this.delScriptVOList); + console.log(this.tempDetpRelevanceslist, "this.tempDetpRelevanceslist"); const result = this.tempDetpRelevanceslist.map( (subArr) => subArr[subArr.length - 1] ); @@ -883,6 +972,7 @@ // 鑾峰彇棰樼洰鍒楄〃 getaddtopiclist() { this.drawer = true; + this.queryParams.scoretype = this.ruleForm.scoreType; getissuelist(this.queryParams).then((res) => { this.loading = false; this.userList = res.rows; @@ -896,46 +986,50 @@ row.svyLibScriptOptions.forEach((item) => { item.isoperation = 1; }); - this.ruleForm.svyLibScripts.push(row); + row.svyLibTemplateTargetoptions = row.svyLibScriptOptions; + this.ruleForm.svyTemplateLibScripts.push(row); + this.sortFn(); this.$modal.msgSuccess("鏂板鎴愬姛"); }, handleDelete(row) { - let index = this.ruleForm.svyLibScripts.indexOf(row); - this.ruleForm.svyLibScripts.splice(index, 1); + let index = this.ruleForm.svyTemplateLibScripts.indexOf(row); + this.ruleForm.svyTemplateLibScripts.splice(index, 1); row.isoperation = 3; this.delScriptVOList.push(row); this.sortFn(); }, handleUpdate(row) { - console.log(row); this.topicobj = row; + console.log(this.topicobj, "鐪嬫暟鎹�"); // getissuelist({ svyid: row.svyid }).then((res) => { // }); }, syioption(row) { - 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鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� + const index = this.getIndexInArray( + this.ruleForm.svyTemplateLibScripts, + row + ); + const item = this.ruleForm.svyTemplateLibScripts.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� + this.ruleForm.svyTemplateLibScripts.splice(index - 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� this.sortFn(); }, xiayioption(row) { - 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鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� + const index = this.getIndexInArray( + this.ruleForm.svyTemplateLibScripts, + row + ); + const item = this.ruleForm.svyTemplateLibScripts.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� + this.ruleForm.svyTemplateLibScripts.splice(index + 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� this.sortFn(); }, sortFn() { - this.ruleForm.svyLibScripts = this.ruleForm.svyLibScripts.map( - (item, index) => { - return { - guid: index + 1, - svyid: item.svyid, - script: item.script, - script: item.script, - }; - } - ); - console.log(this.ruleForm.svyLibScripts); + this.ruleForm.svyTemplateLibScripts.forEach((item, index) => { + item.sort = index + 1; + item.svyLibTemplateTargetoptions.forEach((items) => { + items.nextQuestion = Number(item.sort) + 1; + }); + }); + console.log(this.ruleForm.svyTemplateLibScripts); }, // 淇敼棰樼洰淇℃伅 @@ -1063,8 +1157,11 @@ this.inputValueillness = ""; }, // 淇濆瓨 - confirmillness() { + confirmillness(guid) { this.illnesslist.forEach((item, index) => { + if (guid) { + item.outid = guid; + } if (!item.id) { addtargetillness(item).then((res) => {}); } @@ -1082,6 +1179,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鍒�"); }, }, }; @@ -1138,7 +1358,7 @@ border: 1px solid #dcdfe6; -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); - .topic-dev { + .scriptTopic-dev { margin-bottom: 25px; font-size: 20px !important; .dev-text { @@ -1233,7 +1453,7 @@ width: 22px; height: 22px; } -// ::v-deep.topic-dev.el-radio__label { +// ::v-deep.scriptTopic-dev.el-radio__label { // font-size: 24px; // } ::v-deep.el-radio-group { -- Gitblit v1.9.3