| | |
| | | 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.svyLibTemplateCategoryList" |
| | | :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> |
| | |
| | | <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-table-column |
| | | label="序号" |
| | | align="center" |
| | | key="guid" |
| | | prop="guid" |
| | | key="sort" |
| | | prop="sort" |
| | | /> |
| | | <el-table-column |
| | | label="题目标题" |
| | |
| | | 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" |
| | |
| | | <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="选中提示"> |
| | |
| | | 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: [ |
| | |
| | | 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" }, |
| | | ], |
| | | ], |
| | | }; |
| | | }, |
| | | |
| | |
| | | this.required = store.getters.required; |
| | | this.valuetype = store.getters.valuetype; |
| | | this.courtyardlist = store.getters.courtyardlist; |
| | | this.test(); |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | // 获取数据 |
| | | 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"); |
| | |
| | | }); |
| | | }, |
| | | submitForm(formName) { |
| | | this.$modal.loading("正在上传数据,请稍候..."); |
| | | |
| | | 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); |
| | | }); |
| | | } |
| | |
| | | this.ruleForm.svyLibScripts = this.ruleForm.svyLibScripts.concat( |
| | | this.delScriptVOList |
| | | ); |
| | | console.log(this.ruleForm.svyLibScripts, "this.ruleForm.svyLibScripts"); |
| | | 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( |
| | |
| | | }); |
| | | } |
| | | }); |
| | | console.log(this.ruleForm.tempDetpRelevances); |
| | | // 数组对象查id数组 |
| | | this.ruleForm.tempDetpRelevances.forEach((item) => { |
| | | const condition = result.some((obj) => obj === item.deptId); |
| | |
| | | this.ruleForm.tempDetpRelevances[index].delFlag = 1; |
| | | } |
| | | }); |
| | | console.log(this.ruleForm.tempDetpRelevances); |
| | | setTimeout(() => { |
| | | this.submitForm(); |
| | | }, 1000); |
| | |
| | | // 获取题目列表 |
| | | getaddtopiclist() { |
| | | this.drawer = true; |
| | | this.queryParams.scoretype = this.ruleForm.scoreType; |
| | | getissuelist(this.queryParams).then((res) => { |
| | | this.loading = false; |
| | | this.userList = res.rows; |
| | |
| | | // 新增题目 |
| | | addtopic(row) { |
| | | row.isoperation = 1; |
| | | row.svyLibTemplateTargetoptions.forEach((item) => { |
| | | 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.svyLibScripts.indexOf(row); |
| | |
| | | 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, |
| | | }; |
| | | } |
| | | ); |
| | | this.ruleForm.svyLibScripts.forEach((item, index) => { |
| | | item.sort = index + 1; |
| | | }); |
| | | console.log(this.ruleForm.svyLibScripts); |
| | | }, |
| | | |
| | | // 修改题目信息 |
| | | Submittopicobj() { |
| | | |
| | | }, |
| | | Submittopicobj() {}, |
| | | // 新增变量 |
| | | addvariable() { |
| | | this.variablelist.push({ |
| | |
| | | this.inputValueillness = ""; |
| | | }, |
| | | // 保存 |
| | | confirmillness() { |
| | | confirmillness(guid) { |
| | | this.illnesslist.forEach((item, index) => { |
| | | if (guid) { |
| | | item.outid = guid; |
| | | } |
| | | if (!item.id) { |
| | | addtargetillness(item).then((res) => {}); |
| | | } |
| | |
| | | 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> |