From 3b774a197bd7087ee42999937ccc1e7e048eb1aa Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期四, 11 一月 2024 18:03:17 +0800 Subject: [PATCH] 指标完成 --- src/views/knowledge/questionbank/particulars/index.vue | 354 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 255 insertions(+), 99 deletions(-) diff --git a/src/views/knowledge/questionbank/particulars/index.vue b/src/views/knowledge/questionbank/particulars/index.vue index e05bd41..ef1020e 100644 --- a/src/views/knowledge/questionbank/particulars/index.vue +++ b/src/views/knowledge/questionbank/particulars/index.vue @@ -6,7 +6,7 @@ <div class="headline"> 棰樼洰璁剧疆璇︽儏 <span style="margin-left: 30px" - ><el-button type="primary" @click="Submittopicobj" + ><el-button type="primary" @click="compileissue" >淇濆瓨</el-button ></span > @@ -23,7 +23,7 @@ <el-col :span="6" ><el-form-item label="鏄惁鍙敤"> <el-select - v-model="topicobj.ishide" + v-model="topicobj.isavailable" size="medium" filterable placeholder="璇烽�夋嫨鍒嗙被" @@ -41,7 +41,7 @@ <el-col :span="8" ><el-form-item label="璇█(缂�)"> <el-select - v-model="topicobj.languageh" + v-model="topicobj.language" size="medium" filterable placeholder="璇烽�夋嫨鍒嗙被" @@ -59,13 +59,23 @@ </el-row> <el-row :gutter="10"> <el-col :span="6" - ><el-form-item label="鏄惁蹇呯瓟"> - <el-radio-group v-model="topicobj.ismandatory"> - <el-radio label="1">鏄�</el-radio> - <el-radio label="2">鍚�</el-radio> - </el-radio-group> - </el-form-item></el-col - > + ><el-form-item label="鏄惁蹇呭~"> + <el-select + v-model="topicobj.ismandatory" + size="medium" + filterable + placeholder="璇烽�夋嫨鍒嗙被" + > + <el-option + class="topicobjaa" + v-for="item in required" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> </el-form-item + ></el-col> <el-col :span="6" ><el-form-item label="棰樼洰绫诲瀷"> <el-select @@ -85,9 +95,9 @@ </el-select> </el-form-item ></el-col> <el-col :span="8" - ><el-form-item label="閫傜敤鏂瑰紡(缂�)"> + ><el-form-item label="閫傜敤鏂瑰紡"> <el-select - v-model="topicobj.languageh" + v-model="topicobj.suitway" size="medium" filterable placeholder="璇烽�夋嫨鍒嗙被" @@ -102,11 +112,13 @@ </el-option> </el-select></el-form-item ></el-col> </el-row> - <el-form-item label="棰樼洰鍐呭(缂�)"> + <el-form-item label="棰樼洰鍐呭"> <el-input style="width: 40vw" type="textarea" - v-model="topicobj.topic" + id="questiontext" + v-model="topicobj.topicContent" + @focus="handleInput('questiontext')" placeholder="璇疯緭鍏ユ爣棰�" ></el-input> </el-form-item> @@ -115,14 +127,14 @@ <el-form-item label="鏍囩" prop="desc"> <div class="xinz-inf"> <el-tag - :key="tag.tagname" + :key="tag" type="success" v-for="tag in dynamicTags" closable :disable-transitions="false" @close="handleClosetag(tag)" > - {{ tag.tagname }} + {{ tag }} </el-tag> <el-select v-model="inputValue" @@ -197,6 +209,54 @@ </div> </el-form-item> </el-row> + <el-form-item label="閫氱煡鍙橀噺" prop="name"> + <div style="margin-bottom: 5px" v-for="item in variablelist"> + <el-row> + <el-col :span="5"> + <el-input + v-model="item.variatename" + placeholder="璇疯緭鍏ュ彉閲忓悕" + ></el-input> + </el-col> + <el-col :span="8" :offset="1"> + <el-input + v-model="item.variate" + placeholder="璇疯緭鍏ュ彉閲忓唴瀹�" + ></el-input> + </el-col> + <el-col :span="8" :offset="1"> + <el-button + type="success" + icon="el-icon-plus" + circle + @click="addvariable(item)" + ></el-button> + <el-button + v-if="!item.default" + type="danger" + icon="el-icon-delete" + circle + @click="delvariable(item)" + ></el-button> + </el-col> + </el-row> + </div> + </el-form-item> + <el-row> + <el-col :span="24"> + <div + style="display: flex; margin-left: 66px; margin-bottom: 10px" + > + <div + v-for="item in variablelist" + class="tsgname" + @click="tsgnameto(item)" + > + {{ item.variatename }} + </div> + </div> + </el-col></el-row + > </div> <div class="headline"> @@ -210,14 +270,18 @@ ></span > </div> - <div class="topicxq" v-for="item in optionlist"> + <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-form-item label="閫夐」"> <el-input type="text" - placeholder="璇疯緭鍏�" - v-model="item.optionid" + placeholder="璇疯緭鍏ラ�夐」" + v-model="item.optioncontent" show-word-limit > </el-input> </el-form-item @@ -232,28 +296,6 @@ > </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-input> </el-form-item - ></el-col> - <el-col :span="11" - ><el-form-item label="涓嬮璺宠浆"> - <el-input - type="text" - placeholder="璇疯緭鍏ラ鍙�" - v-model="item.jump" - show-word-limit - > - </el-input> </el-form-item - ></el-col> <el-col :span="2"> <el-button type="danger" @@ -263,6 +305,7 @@ ></el-button> </el-col> </el-row> + <el-row :gutter="10"> <el-form-item label="閫変腑鎻愮ず"> <el-input @@ -295,37 +338,20 @@ > <el-form-item label="鏍囬" prop="userName"> <el-input - v-model="queryParams.userName" + v-model="queryParams.targetname" placeholder="璇疯緭鍏�" clearable style="width: 200px" - @keyup.enter.native="handleQuery" + @keyup.enter.native="gettargetInfo" /> </el-form-item> - <el-form-item label="涓婚" prop="sickness"> - <el-select - v-model="queryParams.classify" - size="medium" - multiple - filterable - placeholder="璇烽�夋嫨鍒嗙被" - > - <el-option - class="ruleFormaa" - v-for="item in optionsclass" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </el-form-item> + <el-form-item> <el-button type="primary" icon="el-icon-search" size="medium" - @click="handleQuery" + @click="gettargetInfo" >鎼滅储</el-button > <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" @@ -333,19 +359,19 @@ > </el-form-item> </el-form> - <el-table v-loading="loading" :data="userList"> + <el-table v-loading="loading" :data="targetList"> <el-table-column label="鏍囬" align="center" - key="userid" - prop="userid" + key="targetname" + prop="targetname" width="100" /> <el-table-column label="闂鍐呭" align="center" - key="userName" - prop="userName" + key="targetdesc" + prop="targetdesc" width="200" :show-overflow-tooltip="true" /> @@ -367,6 +393,13 @@ </template> </el-table-column> </el-table> + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="gettargetInfo" + /> </div> </el-drawer> </div> @@ -376,9 +409,7 @@ import { listtag } from "@/api/system/label"; import store from "@/store"; import { - getissueclassify, - delissueclassify, - addissueclassify, + gettargetInfo, getissuelist, issueinfo, compileissue, @@ -394,27 +425,29 @@ export default { data() { return { - topicobj: {}, + topicobj: { + svyLibTopicoptions: [], + }, inputVisible: false, inputValue: "", + currentInputId: "", + total: 0, drawer: false, loading: false, id: [], - userList: [ - { - userid: "1", - userName: "鎸囨爣", - }, - { - userid: "2", - userName: "浜屽彿闂嵎", - }, - ], + targetList: [], dynamicTags: [], + optionsclass: [], + variablelist: [ + { variatename: "濮撳悕", variate: "${name}", default: 1 }, + { variatename: "鐢佃瘽", variate: "${phone}", default: 1 }, + { variatename: "鐥呮儏", variate: "${illness}", default: 1 }, + ], // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, pageSize: 10, + isavailable: "", }, optionlist: [ { value: "topic", table: "topic" }, @@ -422,6 +455,7 @@ { value: "topic", table: "topic" }, ], inputValueillness: "", + required: [], themelist: [], languagelist: [], courtyardlist: [], @@ -444,14 +478,15 @@ created() { this.gettabList(); this.getissueinfo(); + this.gettargetInfo(); this.mode = store.getters.mode; this.languagelist = store.getters.languagelist; this.usable = store.getters.usable; this.xjxsoptions = store.getters.xjxsoptions; + this.required = store.getters.required; }, methods: { - Submittopicobj() {}, getIndexInArray(arr, obj) { return arr.indexOf(obj); }, @@ -459,8 +494,15 @@ // 鑾峰彇鏁版嵁 getissueinfo() { this.id = this.$route.query.id; - issueinfo(this.id).then((res) => { - this.topicobj = res.data; + if (!this.id) { + return; + } + getissuelist({ topicid: this.id }).then((res) => { + this.topicobj = res.rows[0]; + this.dynamicTags = this.topicobj.tag.split(","); + this.variablelist = JSON.parse(this.topicobj.otherdata) + ? JSON.parse(this.topicobj.otherdata) + : this.variablelist; }); getillnesslist({ pageNum: 1, @@ -472,12 +514,28 @@ this.illnesslist = res.rows; }); }, + gettargetInfo() { + gettargetInfo(this.queryParams).then((res) => { + this.targetList = res.rows; + this.total = res.total; + }); + }, // 鏂板鎴栦慨鏀硅鎯� compileissue() { + this.topicobj.svyLibTopicoptions = this.topicobj.svyLibTopicoptions.map( + (item) => { + if (item.isoperation != 1 && item.isoperation != 3) { + item.isoperation = 2; + } + return item; + } + ); + this.topicobj.otherdata = JSON.stringify(this.variablelist); + this.topicobj.tag = this.dynamicTags.join(","); if (this.id) { - this.topicobj.isoperation = 1; + this.topicobj.isoperation = 2; compileissue(this.topicobj).then((res) => { - if (res.code == 1) { + if (res.code == 200) { this.$message({ message: "淇敼鎴愬姛", type: "success", @@ -491,9 +549,9 @@ } }); } else { - this.topicobj.isoperation = 2; + this.topicobj.isoperation = 1; compileissue(this.topicobj).then((res) => { - if (res.code == 1) { + if (res.code == 200) { this.$message({ message: "鏂板鎴愬姛", type: "success", @@ -507,18 +565,41 @@ } }); } + this.illnesslist.forEach((item, index) => { + if (!item.id) { + addtargetillness(item).then((res) => {}); + } + }); + if (this.illnesslistapi.length) { + deltargetillness(this.illnesslistapi.join(",")).then((res) => {}); + } }, // 鍒犻櫎閫夐」 deletexuanx(row) { - const index = this.getIndexInArray(this.optionlist, row); - this.optionlist.splice(index, 1); + const index = this.getIndexInArray(this.topicobj.svyLibTopicoptions, row); + if (this.topicobj.svyLibTopicoptions[index].topicid) { + this.topicobj.svyLibTopicoptions[index].isoperation = 3; + } else { + this.topicobj.svyLibTopicoptions.splice(index, 1); + } }, // 鏂板閫夐」 addoption() { - this.optionlist.push({ value: "topic", table: "topic" }); + this.topicobj.svyLibTopicoptions.push({ + score: "", + isoperation: 1, + }); }, // 閫夋嫨鎸囨爣 - selectlabel(row) {}, + selectlabel(row) { + const labellist = row.targetoptionList; + labellist.forEach((item) => { + this.topicobj.svyLibTopicoptions.push({ + optioncontent: item.targetvalue, + isoperation: 1, + }); + }); + }, // 鏍囩----------------- gettabList() { @@ -535,9 +616,7 @@ handleClosetag(tag) { console.log(tag); console.log(this.dynamicTags.indexOf(tag)); - const lindex = this.dynamicTags.indexOf(tag); this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); - this.ruleForm.ivrLibaTemplateTargetList[lindex].isoperation = 3; }, handleInputConfirm() { let tagvalue = {}; @@ -558,8 +637,8 @@ isoperation: 1, }; } - // this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue); - this.dynamicTags.push(tagvalue); + // this.dynamicTags.push(tagvalue); + this.dynamicTags.push(tagvalue.tagname); }); } this.inputVisible = false; @@ -635,9 +714,71 @@ this.illnessVisible = false; this.$modal.msgSuccess("缂栬緫鎴愬姛"); }, - // 鏌ヨ棰樺簱 - handleQuery() {}, resetQuery() {}, + // 渚挎嵎鏍囩 + tsgnameto(row) { + let inputValueArr = ""; + let el = document.querySelector("#" + this.currentInputId); + //el.selectionStart; 杩欏氨鏄綋鍓嶅厜鏍囨墍鍦ㄧ殑浣嶇疆锛堝瓧绗︿覆涓瓧绗︾殑index锛� + if (this.currentInputId == "questiontext") { + inputValueArr = this.indexform.questiontext.split(""); + } else if (this.currentInputId == "nomatchtext") { + inputValueArr = this.indexform.nomatchtext.split(""); + } else if (this.currentInputId == "sliencetext") { + inputValueArr = this.indexform.sliencetext.split(""); + } else if (this.currentInputId == "noclearlytext") { + inputValueArr = this.indexform.noclearlytext.split(""); + } else if (this.currentInputId == "submoduletext") { + inputValueArr = this.indexform.submoduletext.split(""); + } else { + return; + } + //灏嗚緭鍏ユ鍐呭鍒囨垚鏁扮粍锛屾柟渚垮悗缁搷浣� + // inputValueArr = this.inputValue.split(""); + // 鎷垮埌閫変腑鏂囧瓧鐨勯暱搴︼紙鍚庣画鍙互鐢ㄦ潵鏇挎崲閫変腑鐨勬枃瀛楋級 + let selectLength = el.selectionEnd - el.selectionStart; + // 灏嗚鎻掑叆/鏇挎崲鐨勬枃瀛楁彃鍏�/鏇挎崲锛坴alue.name鏄鎻掑叆/鏇挎崲鐨勫瓧绗︿覆锛� + inputValueArr.splice(el.selectionStart, selectLength, `${row.variate}`); + // 鎶婃暟缁勯噸鏂拌浆鎹负瀛楃涓插苟璧嬪�� + inputValueArr = inputValueArr.join(""); + console.log(inputValueArr); + if (this.currentInputId == "questiontext") { + this.indexform.questiontext = inputValueArr; + } else if (this.currentInputId == "nomatchtext") { + this.indexform.nomatchtext = inputValueArr; + } else if (this.currentInputId == "sliencetext") { + this.indexform.sliencetext = inputValueArr; + } else if (this.currentInputId == "noclearlytext") { + this.indexform.noclearlytext = inputValueArr; + } else if (this.currentInputId == "submoduletext") { + this.indexform.submoduletext = inputValueArr; + } else { + return; + } + }, + + // 鏂板鍙橀噺 + addvariable() { + this.variablelist.push({ + variatename: "", + variate: "", + }); + }, + // 鍒犻櫎鍙橀噺 + delvariable(item) { + const index = this.variablelist.indexOf(item); + if (index !== -1) { + this.variablelist.splice(index, 1); // 浠庣储寮曚綅缃垹闄や竴涓厓绱� + } else { + console.log("鏈壘鍒拌瀵硅薄"); + } + }, + // 杈撳叆鑾峰彇id + handleInput(id) { + this.currentInputId = id; + console.log("杈撳叆妗嗙殑鍊煎凡鏇存柊:", this.currentInputId); + // 鍦ㄨ繖閲屾墽琛屾洿鏂版暟鎹殑閫昏緫 + }, }, }; </script> @@ -691,6 +832,21 @@ } } } +.tsgname { + width: 90px; + margin-right: 10px; + text-align: center; + cursor: pointer; + height: 40px; + line-height: 40px; + background: #7799fa; + color: #ffff; + font-size: 18px; + border-radius: 5px; +} +.tsgname:hover { + background: #3366f5; +} .preview-left { margin: 20px; // margin: 20px; -- Gitblit v1.9.3