From ad70f145e8bea957b41043b4a1e37ce37cc5ed1e Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期二, 16 一月 2024 18:39:24 +0800 Subject: [PATCH] 指标完成 --- src/views/knowledge/education/compilequer/index.vue | 642 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 405 insertions(+), 237 deletions(-) diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue index c78fba9..40afd79 100644 --- a/src/views/knowledge/education/compilequer/index.vue +++ b/src/views/knowledge/education/compilequer/index.vue @@ -13,9 +13,7 @@ <div class="leftvlue"> <!-- 鍩烘湰淇℃伅 --> <div v-if="Editprogress == 1"> - <div class="leftvlue-jbxx"> - 鍩烘湰淇℃伅<span>褰撳墠鐗堟湰:{{ currentVersion }}</span> - </div> + <div class="leftvlue-jbxx">鍩烘湰淇℃伅</div> <el-form :model="ruleForm" :rules="rules" @@ -25,50 +23,68 @@ > <el-form-item label="瀹f暀鍒嗙被" prop="region"> <el-select - v-model="ruleForm.classify" + v-model="ruleForm.assortid" size="medium" - multiple filterable placeholder="璇烽�夋嫨鍒嗙被" > - <el-option - class="ruleFormaa" - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" + <el-option-group + v-for="group in sortlist" + :key="group.id" + :label="group.assortname" > - </el-option> + <el-option + v-for="item in group.heLibraryAssortList" + :key="item.id" + :label="item.assortname" + :value="item.id" + > + </el-option> + </el-option-group> </el-select> </el-form-item> - <el-form-item label="瀹f暀鏍囬" prop="name"> + <el-form-item label="瀹f暀鏍囬" prop="preachname"> <div style="width: 30%"> - <el-input v-model="ruleForm.name"></el-input> + <el-input v-model="ruleForm.preachname"></el-input> + </div> + </el-form-item> + <el-form-item label="瀹f暀鎻忚堪" prop="preachcontent"> + <div style="width: 30%"> + <el-input v-model="ruleForm.preachcontent"></el-input> </div> </el-form-item> <el-form-item label="閫氱煡鍙橀噺" prop="name"> - <el-row v-for="item in variablelist"> - <el-col :span="4"> - <el-input v-model="item.variable"></el-input> - </el-col> - <el-col :span="8" :offset="1"> - <el-input v-model="item.value"></el-input> - </el-col> - <el-col :span="4" :offset="1"> - <el-button - type="success" - icon="el-icon-plus" - circle - @click="addvariable(item)" - ></el-button> - <el-button - type="danger" - icon="el-icon-delete" - circle - @click="delvariable(item)" - ></el-button> - </el-col> - </el-row> + <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-form-item label="鏂囦欢" prop="sickness"> @@ -89,27 +105,32 @@ <el-form-item label="鏍囩" prop="desc"> <div class="xinz-inf"> <el-tag - :key="tag" + :key="tag.tagname" type="success" v-for="tag in dynamicTags" closable :disable-transitions="false" - @close="handleClose(tag)" + @close="handleClosetag(tag)" > - {{ tag }} + {{ tag.tagname }} </el-tag> <el-select v-model="inputValue" v-if="inputVisible" @change="handleInputConfirm" filterable + remote + reserve-keyword + default-first-option + :remote-method="remoteMethodtag" + :loading="loading" placeholder="璇烽�夋嫨" > <el-option - v-for="item in options" - :key="item.label" - :label="item.label" - :value="item.label" + v-for="item in optionstag" + :key="item.tagid" + :label="item.tagname" + :value="item.tagname" > </el-option> </el-select> @@ -125,20 +146,19 @@ <el-row :gutter="20"> <el-col :span="6"> <el-form-item label="鐗堟湰鍙�" prop="name"> - <el-input v-model="currentVersion"></el-input> </el-form-item + <el-input v-model="ruleForm.version"></el-input> </el-form-item ></el-col> <el-col :span="9"> <el-form-item label="鍙敤鐘舵��" prop="region"> <el-select - v-model="ruleForm.classify" + v-model="ruleForm.isavailable" size="medium" - multiple filterable placeholder="璇烽�夋嫨鍒嗙被" > <el-option class="ruleFormaa" - v-for="item in options" + v-for="item in usable" :key="item.value" :label="item.label" :value="item.value" @@ -149,7 +169,7 @@ </el-row> <el-form-item label="瀹f暀鏂瑰紡" prop="region"> <el-select - v-model="ruleForm.way" + v-model="ruleForm.suitway" size="medium" multiple filterable @@ -157,42 +177,65 @@ > <el-option class="ruleFormaa" - v-for="item in xjxsoptions" - :key="item.value" + v-for="item in mode" + :key="item.label" :label="item.label" - :value="item.value" + :value="item.label" > </el-option> </el-select> </el-form-item> <el-form-item label="閫傜敤鐤剧梾" prop="region"> - <el-select - v-model="ruleForm.illness" - size="medium" - multiple - filterable - placeholder="璇烽�夋嫨鍒嗙被" - > - <el-option - class="ruleFormaa" - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" + <div class="xinz-infs"> + <el-tag + :key="item.icd10name" + type="warning" + v-for="item in illnesslist" + closable + :disable-transitions="false" + @close="handleCloseillness(item)" > - </el-option> - </el-select> + {{ item.icd10name }} + </el-tag> + <el-select + v-model="inputValue" + v-if="illnessVisible" + @change="illnessConfirm" + :remote-method="remoteMethod" + filterable + remote + allow-create + default-first-option + placeholder="璇烽�夋嫨/鏌ヨ" + :loading="loading" + > + <el-option + v-for="item in optionsillness" + :key="item.icdid" + :label="item.icdname" + :value="item.icdid" + > + </el-option> + </el-select> + <el-button + v-else + class="button-new-tag" + size="small" + @click="illnessshowInput" + >+ 鏂板鐤剧梾</el-button + > + </div> </el-form-item> - <el-form-item label="浣跨敤闄㈠尯" prop="region"> + <el-form-item label="閫傜敤闄㈠尯" prop="region"> <el-select - v-model="ruleForm.courtyard" + v-model="ruleForm.campus" size="medium" filterable placeholder="璇烽�夋嫨鍒嗙被" > <el-option class="ruleFormaa" - v-for="item in options" + v-for="item in courtyardlist" :key="item.value" :label="item.label" :value="item.value" @@ -201,31 +244,27 @@ </el-select> </el-form-item> <el-form-item label="閫傜敤绉戝" prop="region"> - <el-select - v-model="ruleForm.administrative" - size="medium" - multiple - filterable - placeholder="璇烽�夋嫨鍒嗙被" + <el-cascader + v-model="tempDetpRelevanceslist" + :options="deptList" + :props="props" + :show-all-levels="false" + clearable > - <el-option - class="ruleFormaa" - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> + <template slot-scope="{ node, data }"> + <span>{{ data.deptName }}</span> + <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> + </template> + </el-cascader> </el-form-item> <el-form-item> <el-button type="success" @click="nextstep('ruleForm')" >涓嬩竴姝�</el-button > - <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button> - <el-button type="info" @click="closeFm('ruleForm')" - >鍏抽棴</el-button - > + <el-button type="success" @click="Departmenttreatment('ruleForm')" + >淇濆瓨</el-button + > + <el-button type="info" @click="closeFm('ruleForm')">鍏抽棴</el-button> </el-form-item> </el-form> </div> @@ -236,10 +275,10 @@ <el-col :span="12"> <div> <el-button @click="laststep('ruleForm')">涓婁竴姝�</el-button> - <el-button type="success" @click="submitForm('ruleForm')" + <el-button type="success" @click="Departmenttreatment('ruleForm')" >淇濆瓨</el-button > - <el-button type="warning" @click="submitForm('ruleForm')" + <el-button type="warning" @click="Departmenttreatment('ruleForm')" >鍙﹀瓨鏂扮増鏈�</el-button > <el-button type="info" @click="closeFm('ruleForm')" @@ -248,6 +287,19 @@ </div></el-col > </el-row> + <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> <el-form @@ -301,8 +353,24 @@ <script> import { quillEditor } from "vue-quill-editor"; +import { + getheLibraryAssort, + delheLibraryAssort, + addheLibraryAssort, + addtargetillness, + getlibrarylist, + dellibraryinfo, + compilelibrary, + getlibraryinfo, + getillnesslist, + illnesslistget, + getillness, +} from "@/api/AiCentre/index"; +import { listDept } from "@/api/system/dept"; // import * as Quill from "quill"; import Quill from "quill"; +import { listtag } from "@/api/system/label"; +import store from "@/store"; // 杩欓噷寮曞叆淇敼杩囩殑video妯″潡骞舵敞鍐� import Video from "./video"; @@ -350,8 +418,9 @@ }, ], content: "", //鏈�缁堜繚瀛樼殑鍐呭 - dynamicTags: ["鏍囩涓�", "鏍囩浜�", "鏍囩涓�"], + dynamicTags: [], inputVisible: false, + illnessVisible: false, inputValue: "", // 瀵屾枃鏈� editorOption: { @@ -401,87 +470,34 @@ radioas: "", //濉┖棰樼瓟妗� // 鎬绘潯鏁� total: 1, - ruleForm: { - name: "", - shape: "", - classify: "", - region: "", - date1: "", - date2: "", - delivery: false, - type: [], - resource: "", - desc: "", - templatevalue: "", - data2: "", - }, + ruleForm: {}, rules: {}, - rulesa: { - name: [ - { required: true, message: "璇疯緭鍏ユ椿鍔ㄥ悕绉�", trigger: "blur" }, - { min: 3, max: 5, message: "闀垮害鍦� 3 鍒� 5 涓瓧绗�", trigger: "blur" }, - ], - region: [ - { required: true, message: "璇烽�夋嫨娲诲姩鍖哄煙", trigger: "change" }, - ], - date1: [ - { - type: "date", - required: true, - message: "璇烽�夋嫨鏃ユ湡", - trigger: "change", - }, - ], - date2: [ - { - type: "date", - required: true, - message: "璇烽�夋嫨鏃堕棿", - trigger: "change", - }, - ], - type: [ - { - type: "array", - required: true, - message: "璇疯嚦灏戦�夋嫨涓�涓椿鍔ㄦ�ц川", - trigger: "change", - }, - ], - resource: [ - { required: true, message: "璇烽�夋嫨娲诲姩璧勬簮", trigger: "change" }, - ], - desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }], - }, - options: [ - { - value: "閫夐」1", - label: "鐤剧梾瀹f暀", - }, - { - value: "閫夐」2", - label: "鍏ラ櫌瀹f暀", - }, - { - value: "閫夐」3", - label: "鎵嬫湳瀹f暀", - }, - { - value: "閫夐」4", - label: "鎶ょ悊瀹f暀", - }, - ], + rulesa: {}, + mode: [], + editableTabs: [], + sortlist: [], + usable: [], + courtyardlist: [], + precedencetype: [], + optionsillness: [], + illnesslistapi: [], + illnesslist: [], + options: [], + optionstag: [], + deptList: [], + tempDetpRelevanceslist: [], + props: { multiple: true, value: "deptId", label: "deptName" }, xjxsoptions: [ { - value: "閫夐」1", + value: "1", label: "鍥炬枃", }, { - value: "閫夐」2", + value: "2", label: "瑙嗛", }, { - value: "閫夐」3", + value: "3", label: "闊抽", }, ], @@ -493,45 +509,30 @@ }, ], addvalue: "娣诲姞棰樼洰", - // 棰樼洰琛ㄦ牸鏁版嵁 - userList: [ - { - userid: "1", - userName: "涓�鍙峰鏁�", - }, - { - userid: "2", - userName: "浜屽彿瀹f暀", - }, - { - userid: "3", - userName: "涓夊彿瀹f暀", - }, - { - userid: "4", - userName: "鍥涘彿瀹f暀", - }, - ], + variablelist: [ - { - variable: "paitent", - value: "琛ㄧず鎮h�呯殑鏍囪瘑", - }, + { variatename: "濮撳悕", variate: "${name}", default: 1 }, + { variatename: "鐢佃瘽", variate: "${phone}", default: 1 }, + { variatename: "鐥呮儏", variate: "${illness}", default: 1 }, ], // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, pageSize: 10, - userName: undefined, - phonenumber: undefined, - status: undefined, - deptId: undefined, - IDnumber: undefined, }, }; }, - created() {}, + created() { + this.gettabList(); + this.getList(); + this.illnessUpdate(); + this.mode = store.getters.mode; + this.editableTabs = store.getters.editableTabs; + this.usable = store.getters.usable; + this.precedencetype = store.getters.precedencetype; + this.courtyardlist = store.getters.courtyardlist; + }, watch: { content(newVal, oldVal) { //this.$emit('input', newVal); @@ -541,18 +542,58 @@ }, methods: { - // 瀹屾垚 - submitForm(formName) { - this.rules = this.rulesa; - // 鎻愪氦 - this.$refs[formName].validate((valid) => { - if (valid) { - alert("submit!"); - } else { - console.log("error submit!!"); - return false; + getList() { + this.loading = true; + this.id = this.$route.query.id; + getlibraryinfo({ id: this.id }).then((res) => { + this.ruleForm = res.data[0]; + + if (this.ruleForm.deptNames) { + this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames); } + if (this.ruleForm.suitway) { + this.ruleForm.suitway = this.ruleForm.suitway.split(","); + } + this.variablelist = this.ruleForm.otherdata + ? JSON.parse(this.ruleForm.otherdata) + : this.variablelist; }); + getheLibraryAssort({}).then((res) => { + this.sortlist = res.rows; + }); + listDept(this.queryParams).then((response) => { + this.deptList = this.handleTree(response.data, "deptId"); + }); + this.loading = false; + }, + + submitForm(formName) { + let tgs = []; + this.dynamicTags.forEach((item) => { + tgs.push(item.tagname); + }); + console.log(tgs.length, "tgs"); + + this.ruleForm.labelInfo = tgs.length != 0 ? tgs.join(", ") : ""; + this.ruleForm.otherdata = JSON.stringify(this.variablelist); + console.log(22); + this.ruleForm.suitway = + this.ruleForm.suitway.length != 0 + ? this.ruleForm.suitway.join(",") + : ""; + if (this.id) { + this.ruleForm.isoperation = 2; + compilelibrary(this.ruleForm).then((response) => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.$router.go(-1); + }); + } else { + this.ruleForm.isoperation = 1; + compilelibrary(this.ruleForm).then((response) => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.$router.go(-1); + }); + } }, // 涓嬩竴姝� nextstep() { @@ -565,41 +606,62 @@ this.Editprogress = this.Editprogress - 1; }, // 鍏抽棴 - closeFm(){ - this.$confirm('閫�鍑轰笉浼氫繚鐣欓〉闈㈠唴瀹规洿鏀�, 鏄惁缁х画?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - this.$router.go(-1) - }).catch(() => { + closeFm() { + this.$confirm("閫�鍑轰笉浼氫繚鐣欓〉闈㈠唴瀹规洿鏀�, 鏄惁缁х画?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + this.$router.go(-1); + }) + .catch(() => { this.$message({ - type: 'info', - message: '宸插彇娑�' - }); + type: "info", + message: "宸插彇娑�", + }); }); }, - // 淇濆瓨棰樼洰淇℃伅 - Saveproblem(){}, - /** 鏌ヨ棰樼洰鍒楄〃 */ - getList() { - // this.loading = true; - listUser().then((response) => { - console.log(response); - // this.userList = response.data; - // this.total = response.total; - // this.loading = false; - console.log(this.userList); + // 绉戝澶勭悊 + Departmenttreatment() { + this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist); + const result = this.tempDetpRelevanceslist.map( + (subArr) => subArr[subArr.length - 1] + ); + // id鏁扮粍鏌ユ暟缁勫璞� + result.forEach((item) => { + const condition = this.ruleForm.tempDetpRelevances.some( + (obj) => obj.deptId === item + ); + if (!condition) { + listDept({ deptId: item }).then((res) => { + res.data[0].type = 2; + this.ruleForm.tempDetpRelevances.push(res.data[0]); + }); + } }); - // const { rows } = await listUser(); - // console.log(rows); - // this.list = rows; + // 鏁扮粍瀵硅薄鏌d鏁扮粍 + this.ruleForm.tempDetpRelevances.forEach((item) => { + const condition = result.some((obj) => obj === item.deptId); + if (!condition) { + const index = this.ruleForm.tempDetpRelevances.indexOf(item); + this.ruleForm.tempDetpRelevances[index].delFlag = 1; + } + }); + setTimeout(() => { + this.submitForm(); + }, 1000); + // this.submitForm(); }, + // 淇濆瓨棰樼洰淇℃伅 + Saveproblem() {}, + /** 鏌ヨ棰樼洰鍒楄〃 */ + // 鏂板鍙橀噺 addvariable() { this.variablelist.push({ - variable: "", - value: "", + variatename: "", + variate: "", }); }, // 鍒犻櫎鍙橀噺 @@ -616,23 +678,129 @@ this.fileList = fileList.slice(-3); }, // 鏍囩----------------- - handleClose(tag) { + gettabList() { + const tagqueryParams = { + pageNum: 1, + pageSize: 1000, + tagcategoryid: "0", + }; + listtag(tagqueryParams).then((response) => { + this.optionstag = response.rows; + }); + }, + handleClosetag(tag) { + const lindex = this.dynamicTags.indexOf(tag); this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); + this.ruleForm.heLibraryTagList[lindex].isoperation = 3; }, handleInputConfirm() { - let inputValue = this.inputValue; - if (inputValue) { - this.dynamicTags.push(inputValue); + let tagvalue = {}; + let tagname = this.inputValue; + if (tagname) { + listtag({ + pageNum: 1, + pageSize: 1000, + tagcategoryid: "0", + tagname: tagname, + }).then((res) => { + if (res.rows[0]) { + tagvalue = res.rows[0]; + tagvalue.isoperation = 1; + } else { + tagvalue = { + tagname: tagname, + isoperation: 1, + }; + } + this.ruleForm.heLibraryTagList.push(tagvalue); + this.dynamicTags.push(tagvalue); + }); } this.inputVisible = false; this.inputValue = ""; }, + remoteMethodtag(query) { + if (query !== "") { + this.loading = true; + setTimeout(() => { + this.loading = false; + listtag({ tagname: query, tagcategoryid: "0" }).then((res) => { + this.optionstag = res.rows; + }); + }, 200); + } else { + this.optionstag = []; + } + }, showInput() { this.inputVisible = true; - // 鑷姩鑾峰彇鐒︾偣 - // this.$nextTick((_) => { - // this.$refs.saveTagInput.$refs.input.focus(); - // }); + }, + // 鐤剧梾----------------------- + illnessUpdate() { + this.illnesslistapi = []; + const illnessqueryParams = { + pageNum: 1, + pageSize: 100, + }; + getillnesslist(illnessqueryParams).then((response) => { + this.optionsillness = response.rows; + }); + getillness({ outid: this.$route.query.id, type: 6 }).then((res) => { + this.illnesslist = res.rows; + }); + }, + handleCloseillness(tag) { + this.illnesslist.splice(this.illnesslist.indexOf(tag), 1); + if (tag.id) { + this.illnesslistapi.push(tag.id); + } + }, + remoteMethod(value) { + const illnessqueryParams = { + pageNum: 1, + pageSize: 100, + icdname: value, + }; + this.loading = true; + setTimeout(() => { + this.loading = false; + getillnesslist(illnessqueryParams).then((response) => { + this.optionsillness = response.rows; + }); + }, 200); + }, + illnessConfirm(item) { + let opeavalue = {}; + let tagname = this.inputValue; + illnesslistget(item).then((res) => { + opeavalue = res.data; + opeavalue.outid = this.indexid; + opeavalue.type = 6; + opeavalue.icd10id = opeavalue.icdid; + opeavalue.icd10name = opeavalue.icdname; + opeavalue.icd10code = opeavalue.icdcode; + if (tagname) { + this.illnesslist.push(opeavalue); + } + }); + console.log(this.illnesslist); + this.inputVisible = false; + this.inputValue = ""; + }, + 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("缂栬緫鎴愬姛"); + }, + illnessshowInput() { + this.illnessVisible = true; }, // -------------------------- -- Gitblit v1.9.3