From 1a07db181c732729abc1d6ec71ae206ecffca86d Mon Sep 17 00:00:00 2001 From: lihang <lihang@vci-tech.com> Date: 星期三, 24 五月 2023 18:33:45 +0800 Subject: [PATCH] 迁移链接类型后台接口,修正属性字段,增加元数据查找应用范围功能 --- Source/UBCS-WEB/src/components/Tree/classifyTrees.vue | 462 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 416 insertions(+), 46 deletions(-) diff --git a/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue b/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue index d522692..4039188 100644 --- a/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue +++ b/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue @@ -1,3 +1,4 @@ +<!--suppress ALL --> <template> <el-container> <!-- 宸︿晶鑿滃崟--> @@ -6,15 +7,12 @@ <div> <div style="display: flex;justify-content: space-around"> <el-button plain size="small" type="primary" @click="TreeAdd">娣诲姞</el-button> - <el-button plain size="small" type="primary" @click="TreeEdit">淇敼</el-button> - <el-button plain size="small" type="primary" @click="TreeDel">鍒犻櫎</el-button> - <el-button plain size="small" type="primary" @click="Enable">鍚敤</el-button> - </div> - <div style="display: flex;justify-content: space-around;margin-top: 5px;margin-bottom: 5px"> - <el-button plain size="small" type="primary" @click="Deactivate">鍋滅敤</el-button> <el-button plain size="small" type="primary" @click="ExportExcel">瀵煎嚭</el-button> <el-button plain size="small" type="primary" @click="ImportExcel">瀵煎叆</el-button> <el-button plain size="small" type="primary" @click="flushed">鍒锋柊</el-button> + </div> + <div style="display: flex;justify-content: space-around;margin-top: 5px;margin-bottom: 5px"> + </div> </div> <!-- 鏍戣妭鐐规坊鍔犲璇濇--> @@ -61,7 +59,6 @@ @check-change="checkChange" > </avue-tree> - </basic-container> </el-aside> <el-main> @@ -69,24 +66,109 @@ <!-- 鍙充晶琛ㄦ牸--> <avue-tabs :option="tabOption" @change="handleChange"></avue-tabs> <span v-if="type.prop==='tab1'"> - <basic-container> - <avue-crud v-model="crudForm" :data="this.Formlist" :option="this.crudTreeOption" v-loading="FormLoing" + <classifyTreeform ref="childForm" :TreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform> + </span> + <span v-else-if="type.prop==='tab2'"> + <basic-container> + <avue-crud v-model="crudForm" v-loading="FormLoing" :data="this.Formlist" :option="this.crudTreeOption" + @row-save="CrudRowSave" + @row-del="CrudRowDel" + @row-update="CrudRowUpdata" > <template slot="menuLeft"> - <el-button plain size="small" type="primary">鏌ヨ</el-button> + <el-button plain size="small" type="primary" @click="FindFormVisible = true;">鏌ヨ</el-button> <el-button plain size="small" type="primary" @click="TemRefresh">鍒锋柊</el-button> - <el-button plain size="small" type="primary">浠庡叾瀹冩ā鏉垮厠闅�</el-button> + <el-button plain size="small" type="primary" @click="TreeEdit">淇敼</el-button> + <el-button plain size="small" type="primary" @click="TreeDel">鍒犻櫎</el-button> + <el-button plain size="small" type="primary" @click="Enable">鍚敤</el-button> + <el-button plain size="small" type="primary" @click="Deactivate">鍋滅敤</el-button> + <el-button plain size="small" type="primary" @click="CloneBtn">浠庡叾瀹冩ā鏉垮厠闅�</el-button> <div style="display: inline-block"> <el-input v-model="FindText" placeholder="璇疯緭鍏ュ叧閿瓧鎸夊洖杞︽煡璇�" size="small" @keyup.enter.native="EnterFind"></el-input></div> - + <!-- 鏌ヨ瀵硅瘽妗�--> + <el-dialog :visible.sync="FindFormVisible" append-to-body title="楂樼骇鏌ヨ"> + <div> + <el-button size="small" type="primary" @click="AdvQueries">鏌ヨ</el-button> + <el-button size="small" type="primary">閲嶇疆</el-button> + </div> + <div style="padding-left: 80px;margin-top: 15px;"> + <template v-for="(value, key) in FindSelect"> + <div style="display: flex;justify-content: space-around;width: 85%;margin-bottom: 15px"> + <el-select v-model="FindSelect[key]" placeholder="璇烽�夋嫨" style="width: 28%" + @change="handleSelectChange(key)"> + <el-option label="妯℃澘缂栧彿" value="0"></el-option> + <el-option label="妯℃澘鍚嶇О" value="1"></el-option> + <el-option label="妯℃澘鎻忚堪" value="2"></el-option> + <el-option label="鐗堟湰鍙�" value="3"></el-option> + <el-option label="鐘舵��" value="4"></el-option> + </el-select> + <el-select v-model="condition[0]" placeholder="璇烽�夋嫨" style="width: 15%"> + <el-option label="鍖呭惈" value="0"></el-option> + <el-option label="绛変簬" value="1"></el-option> + </el-select> + <el-input v-model="QueryArray[key]" style="width: 49%"></el-input> + <span> <i class="el-icon-delete" style="font-size: 22px;margin-top:8px;margin-left: 10px"/></span> + </div> + </template> + </div> + </el-dialog> + <!-- 妯℃澘鍏嬮殕 --> + <el-dialog :visible.sync="CloneVisible" append-to-body title="鍏嬮殕妯℃澘"> + <el-container> + <el-aside width="300px"> + <div style="margin-bottom: 5px"><el-tag>涓婚搴撳垎绫�</el-tag></div> + <avue-tree ref="tree" v-model="TreeAvueform" v-loading="loading" :data="Treedata" + :defaultExpandAll="false" + :option="Treeoption" + style="height: 50.5vh;margin-right: 10px" + @node-click=" nodeClick" + @check-change="checkChange" + > + </avue-tree> + </el-aside> + <el-container> + <el-main> + <div style="padding-left: 10px;height: 50.5vh"> + <div style="margin: 8px 0;display: flex"> + <el-select v-model="Clonevalue" size="small" style="width: 130px;"> + <el-option + v-for="item in this.CloneSelectOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-input v-model="CloneFind" size="small" style="width: 40%;margin-left: 15px" placeholder="杈撳叆鍊煎悗鎸夊洖杞﹁繘琛屾ā绯婃煡璇�"></el-input> + <el-button size="small" type="primary" plain style="margin-left: 10px" @click="CloneEnterFind" @keyup.enter.native="CloneEnterFind">鏌ヨ</el-button> + </div> + <avue-crud v-model="ClonecrudForm" v-loading="FormLoing" :data="this.CloneFormlist" + :option="this.ClonecrudTreeOption" + @selection-change="selectionChange" + ></avue-crud> + </div> + </el-main> + </el-container> + </el-container > + <div style="display: flex; justify-content: flex-end; align-items: center;margin-top: 10px" > + <el-button size="small " type="primary" @click="Clonehandler">纭畾</el-button> + <el-button size="small" @click="CloneVisible=false" >鍙栨秷</el-button> + </div> + <el-dialog + width="30%" + title="鍏嬮殕妯℃澘" + :visible.sync="CloneinnerVisible" + append-to-body> + <div> + <avue-form :option="CloneOption" @submit="Clonesubmit" v-model="CloneModel"></avue-form> + </div> + </el-dialog> + </el-dialog> </template> </avue-crud> + </basic-container> - <templatePro :ProData="this.ProData"></templatePro> - </span> - <span v-else-if="type.prop==='tab2'"> - <classifyTreeform ref="childForm" :TreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform> + <templatePro :ProData="this.ProData"></templatePro> </span> </basic-container> </el-main> @@ -108,8 +190,14 @@ importClassify, gridCodeClassifyTemplate, getObjectByOid, - gridCodeClassifyTemplateAttr + gridCodeClassifyTemplateAttr, + gridCodeClassifyFindTemplate, + addSave, + deleteData, + editSave, + copy } from "@/api/template/templateAttr"; +import done from "@/views/work/done"; export default { name: "classifyTrees.vue", @@ -119,9 +207,36 @@ inject: ['crudTreeOption', "crudTreeData"], data() { return { + //妯℃澘灞炴�у睍绀哄唴瀹� ProData: [], + //鍥炶溅閿悳绱㈢粦瀹氬�� FindText: "", - fileList: [], + //楂樼骇鏌ヨ瀵硅瘽妗� + FindFormVisible: false, + //鍏嬮殕妯℃澘瀵硅瘽妗� + CloneVisible: false, + CloneinnerVisible:false, + //楂樼骇鏌ヨ涓嬫媺妗� + FindSelect: { + id: "0", + name: "1", + description: "2", + revisionValue: "3", + lcStatus: "4" + }, + //楂樼骇鏌ヨ鏉′欢 + condition: ["0", "0", "0", "0", "0"], + //楂樼骇鏌ヨ 绛変簬/涓嶇瓑浜� + Equalto: "0", + //楂樼骇鏌ヨ 杈撳叆妗嗘暟鎹� + QueryArray: { + id: "", + name: "", + description: "", + revisionValue: "", + lcStatus: "" + }, + //鍋滅敤鍚敤鎺ユ敹鏁扮粍 FlagObj: {}, //淇敼瀵硅瘽妗� TreeEditFormVisible: false, @@ -133,7 +248,7 @@ TreeFlag: false, //鏍戝姞杞� loading: false, - FormLoing:false, + FormLoing: false, TreeAddform: { id: "", name: "", @@ -159,19 +274,101 @@ // //杩欎釜鏄閫� // multiple: true, }, + //妯℃澘绠$悊form crudForm: "", - //鍔ㄦ�佸垏鎹㈠鐞嗚繃鐨勮〃鏍兼暟鎹� + //鍏嬮殕妯℃澘form + ClonecrudForm: "", + //鍔ㄦ�佸垏鎹㈠鐞嗚繃鐨勬ā鏉胯〃鏍兼暟鎹� Formlist: [], + //鍏嬮殕妯℃澘鏁版嵁 + CloneFormlist: [], + //鍏嬮殕妯℃澘涓嬫媺妗唙alue + Clonevalue: "0", + //鍏嬮殕妯℃澘鎼滅储杈撳叆妗� + CloneFind:"", + //鍏嬮殕妯℃澘涓嬫媺妗嗘暟鎹� + CloneSelectOptions: [{ + value: '0', + label: '妯℃澘缂栧彿' + }, + { + value: '1', + label: '妯℃澘鍚嶇О' + }, + ], + //鍏嬮殕妯℃澘纭琛ㄥ崟鏁版嵁 + CloneOption:{ + column:[ + { + label:'妯℃澘缂栧彿', + prop:'id', + rules: [{ + required: true, + message: "璇疯緭鍏ユā鏉跨紪鍙�", + trigger: "blur" + }] + }, { + label:'妯℃澘鍚嶇О', + prop:'name', + rules: [{ + required: true, + message: "璇疯緭鍏ユā鏉垮悕绉�", + trigger: "blur" + }] + }, + { + label:'鎻忚堪', + prop:'desc', + type:'textarea', + span:24 + } + ] + }, + //鍏嬮殕妯℃澘鍙屽悜缁戝畾鏁版嵁 + CloneModel:[], + CloneSelect:[], + //鍏嬮殕妯℃澘option + ClonecrudTreeOption: { + index: true, + border: true, + menu: false, + addBtn: false, + selection: true, + header: false, + height: 430, + column: [ + { + label: "妯℃澘缂栧彿", + prop: "id" + }, + { + label: "妯℃澘鍚嶇О", + prop: "name" + }, + { + label: "妯℃澘鎻忚堪", + prop: "description" + }, + { + label: "鐗堟湰鍙�", + prop: "revisionSeq", + display: false + }, + { + label: "鐘舵��", + prop: "lcStatusText", + display: false + } + ] + }, //tab鐘舵�� type: {}, //Tab閰嶇疆椤� tabOption: { column: [{ - icon: 'el-icon-info', label: '鍩烘湰淇℃伅', prop: 'tab1', }, { - icon: 'el-icon-warning', label: '妯℃澘绠$悊', prop: 'tab2', }] @@ -191,7 +388,7 @@ ], //浼犻�掔粰瀛愮粍浠跺姩鎬佹覆鏌撶殑鏁版嵁 TreeList: {}, - //瀹氫箟涓�涓ā鏉垮睘鎬d锛屾暟鎹槸妯℃澘绠$悊琛ㄦ牸閲岄潰鐨刼id + codeClassifyOid: "" } }, //tab鏍忛粯璁ゆ槸琛ㄦ牸 @@ -215,7 +412,7 @@ this.$message.error(res) }) }, - //瀹氫箟涓�涓慨鏀瑰璞″睘鎬у悕鐨勬柟娉� + //瀹氫箟涓�涓慨鏀瑰璞″睘鎬у悕鐨勬柟娉� 杩欓噷鍒敼锛侊紒锛佸ソ鍍忔槸鍚庡彴鎺ュ彛鏁版嵁瀛楁涓嶄竴鑷达紝娣诲姞鐨勬柟娉曘�傚叿浣撲粈涔堝師鍥犳垜涔熷繕璁颁簡 ModifyProperties(obj, oldName, newName) { for (let key in obj) { if (key === oldName) { @@ -388,6 +585,7 @@ }); } }, + //鏍戠偣鍑讳簨浠� async nodeClick(data) { //瀹氫箟涓�涓ā鏉垮睘鎬d锛屾暟鎹槸妯℃澘绠$悊琛ㄦ牸閲岄潰鐨刼id this.nodeClickList = data @@ -399,13 +597,22 @@ this.$message.error(res) }) //妯℃澘绠$悊琛ㄦ牸鏁版嵁 - await gridCodeClassifyTemplate(data.oid).then(res => { - this.Formlist = res.data.data.filter(item => { - if(item.codeclassifyoid != ""){ - return item.codeclassifyoid == this.nodeClickList.oid + await gridCodeClassifyTemplate({'conditionMap[codeclassifyoid]': data.oid}).then(res => { + if (this.CloneVisible != true) { + this.Formlist = res.data.data.filter(item => { + if (item.codeclassifyoid != "") { + this.codeClassifyOid = item.codeclassifyoid + return item.codeclassifyoid == this.nodeClickList.oid + } + }) + } else { + this.CloneFormlist = res.data.data.filter(item => { + if (item.codeclassifyoid != "") { + this.codeClassifyOid = item.codeclassifyoid + return item.codeclassifyoid == this.nodeClickList.oid + } + }) } - }) - console.log("formlist", this.Formlist) gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[0].oid}).then(res => { this.ProData = res.data.data console.log(this.ProData) @@ -413,7 +620,7 @@ this.$message.error(res) }) }).catch(res => { - console.log(res) + console.log(res) }) // 鍩烘湰淇℃伅琛ㄥ崟鏁版嵁 await getObjectByOid(this.nodeClickList.oid).then(res => { @@ -430,6 +637,117 @@ handleChange(column) { this.type = column }, + // //楂樼骇鏌ヨ鎸夐挳 + // handleSelectChange(key) { + // const selectedValue = this.FindSelect[key]; + // console.log(selectedValue) + // console.log(this.QueryArray[0]) + // switch (this.FindSelect[key]) { + // case '0': + // this.QueryArray[key] = ''; + // this.$set(this.QueryArray, key, ''); + // // 濡傛灉閫変腑鐨勬槸妯℃澘缂栧彿锛岀浉搴旂殑杈撳叆妗嗗弻鍚戠粦瀹氬叧绯讳负 QueryArray.id + // this.$set(this.QueryArray, 'id', this.QueryArray[key]); + // break; + // case '1': + // this.QueryArray[key] = ''; + // this.$set(this.QueryArray, key, ''); + // // 濡傛灉閫変腑鐨勬槸妯℃澘鍚嶇О锛岀浉搴旂殑杈撳叆妗嗗弻鍚戠粦瀹氬叧绯讳负 QueryArray.name + // this.$set(this.QueryArray, 'name', this.QueryArray[key]); + // break; + // case '2': + // this.QueryArray[key] = ''; + // this.$set(this.QueryArray, key, ''); + // // 濡傛灉閫変腑鐨勬槸妯℃澘鎻忚堪锛岀浉搴旂殑杈撳叆妗嗗弻鍚戠粦瀹氬叧绯讳负 QueryArray.description + // this.$set(this.QueryArray, 'description', this.QueryArray[key]); + // break; + // case '3': + // this.QueryArray[key] = ''; + // this.$set(this.QueryArray, key, ''); + // // 濡傛灉閫変腑鐨勬槸鐗堟湰鍙凤紝鐩稿簲鐨勮緭鍏ユ鍙屽悜缁戝畾鍏崇郴涓� QueryArray.revisionValue + // this.$set(this.QueryArray, 'revisionValue', this.QueryArray[key]); + // break; + // case '4': + // this.QueryArray[key] = ''; + // this.$set(this.QueryArray, key, ''); + // // 濡傛灉閫変腑鐨勬槸鐘舵�侊紝鐩稿簲鐨勮緭鍏ユ鍙屽悜缁戝畾鍏崇郴涓� QueryArray.lcStatus + // this.$set(this.QueryArray, 'lcStatus', this.QueryArray[key]); + // break; + // } + // }, + AdvQueries() { + this.FindFormVisible = false + //濡傛灉鍏ㄩ儴涓虹┖ allEmpty涓簍rue + const allEmpty = Object.values(this.QueryArray).every(value => !value); + //濡傛灉鍏ㄩ儴涓虹┖锛岀偣鍑绘煡璇㈠嚭鐜版墍鏈夋暟鎹� + if (allEmpty) { + gridCodeClassifyTemplate().then(res => { + this.Formlist = res.data.data + }) + } else { + //榛樿鏄瓑浜� + gridCodeClassifyFindTemplate({'conditionMap[id]': this.QueryArray.id}, + {'conditionMap[name]': this.QueryArray.name}, + {'conditionMap[description]': this.QueryArray.description}, + {'conditionMap[revisionValue]': this.QueryArray.revisionValue}, + {'conditionMap[lcStatus]': this.QueryArray.lcStatus} + ).then(res => { + this.Formlist = res.data.data + }) + } + }, + //妯℃澘绠$悊娓叉煋 + CrudRend() { + gridCodeClassifyTemplate({'conditionMap[codeclassifyoid]': this.nodeClickList.oid}).then(res => { + this.Formlist = res.data.data + }) + }, + //妯℃澘绠$悊琛ㄦ牸娣诲姞 + CrudRowSave(row,done) { + debugger + console.log(nodeClickList.length) + if (this.nodeClickList.length <= 0) { + this.$message({ + type: 'warning', + message: '璇峰厛浠庢爲涓婇�夋嫨涓�鏉℃暟鎹�!' + }); + } else { + console.log(this.nodeClickList) + let codeClassifyOid = this.codeClassifyOid + this.$set(row, "codeclassifyoid", codeClassifyOid) + addSave(row).then(res => { + this.CrudRend() + done() + }).catch(res => { + this.$message({ + type: 'info', + message: res + }); + }) + } + }, + //妯℃澘绠$悊淇敼 + CrudRowUpdata(row) { + editSave(row).then(() => { + this.CrudRend() + }).catch(res => { + this.$message({ + type: 'info', + message: res + }); + }) + }, + //妯℃澘绠$悊鍒犻櫎 + CrudRowDel(row) { + deleteData(row).then(res => { + this.CrudRend() + }).catch(res => { + this.$message({ + type: 'info', + message: res + }); + }) + }, //妯℃澘绠$悊琛ㄦ牸鏌ヨ EnterFind() { console.log(this.Formlist) @@ -439,27 +757,79 @@ }) } else { gridCodeClassifyTemplate().then(res => { - this.Formlist = res.data.data.filter(item => { - return item.name.includes(this.FindText) - } - ) - } - ) - } - }, - TemRefresh(){ - this.FormLoing=true - if(this.nodeClickList.oid != ""){ - gridCodeClassifyTemplate(this.nodeClickList.oid).then(res=>{ this.Formlist = res.data.data.filter(item => { - return item.codeclassifyoid == this.nodeClickList.oid + return item.name.includes(this.FindText) }) }) + } + }, + //鍏嬮殕妯℃澘鏌ヨ + CloneEnterFind(){ + gridCodeClassifyTemplate().then(res => { + this.CloneFormlist = res.data.data.filter(item => { + if(this.Clonevalue == 0){ + return item.id.includes(this.CloneFind) + }else if(this.Clonevalue == 1){ + return item.name.includes(this.CloneFind) + } + }) + }) + }, + //鍏嬮殕妯℃澘閫夋嫨纭畾 + Clonehandler(){ + if(this.CloneFormlist.length <= 0){ + this.$message({ + type: 'warning', + message: '璇烽�夋嫨瑕佸厠闅嗙殑妯℃澘!' + }); + }else if(this.CloneSelect.length >1){ + this.$message({ + type: 'warning', + message: '鍙兘閫夋嫨涓�鏉℃暟鎹�!' + }); + } else { + this.CloneinnerVisible=true + } + }, + //鐐瑰嚮浠庡叾瀹冩ā鏉垮厠闅� + CloneBtn(){ + if(this.nodeClickList.length <= 0){ + this.$message({ + type: 'warning', + message: '璇峰厛浠嶽涓婚搴撳垎绫汇�戞爲涓婇�夋嫨涓�鏉℃暟鎹�!' + }); }else { - this.FormLoing=true + this.CloneVisible=true; + } + }, + //鍏嬮殕妯℃澘鍗曢�夋鏀瑰彉 + selectionChange(row){ + console.log(row) + this.CloneSelect=row + this.CloneModel.id=row[0].id; + this.CloneModel.name=row[0].name; + }, + //鍏嬮殕琛ㄥ崟鎻愪氦 + Clonesubmit(done){ + copy(this.CloneSelect[0]).then(res=>{ + console.log(res) + done() + }) + }, + //鍒锋柊 + TemRefresh() { + this.FormLoing = true + if (this.nodeClickList.oid != "") { + gridCodeClassifyTemplate({'conditionMap[codeclassifyoid]': this.nodeClickList.oid}).then(res => { + this.Formlist = res.data.data.filter(item => { + return item.codeclassifyoid == this.nodeClickList.oid + }) + }) + } else { + this.FormLoing = true } setTimeout(() => { - this.FormLoing=false + this.FormLoing = false }, 600); }, // 宸︽爲澶氶�� -- Gitblit v1.9.3