From 13e07d48a90efdaee8b89e96a1d97a42f19777d7 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 25 十月 2023 22:43:53 +0800 Subject: [PATCH] 1、修改从其他规则克隆规则时排序号未重排的bug。 2、为密码策略管理、用户管理、部门管理界面增加按钮权限控制 --- Source/UBCS-WEB/src/views/integration/systemInfo.vue | 290 ++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 193 insertions(+), 97 deletions(-) diff --git a/Source/UBCS-WEB/src/views/integration/systemInfo.vue b/Source/UBCS-WEB/src/views/integration/systemInfo.vue index d816c87..f4978de 100644 --- a/Source/UBCS-WEB/src/views/integration/systemInfo.vue +++ b/Source/UBCS-WEB/src/views/integration/systemInfo.vue @@ -7,7 +7,7 @@ <template slot="menuLeft"> <!-- <el-button icon="el-icon-search" size="small" type="primary" @click="handleStatus">鏌� 璇� </el-button> --> - <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds">鍒� 闄� + <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds" v-if="this.permission.systemInfo.systemInfo_remove">鍒� 闄� </el-button> </template> <template slot="search" slot-scope="{row,size}"> @@ -19,10 +19,11 @@ :size="size" clearable style="width:300px;margin-left: 10px;" @clear="handleClear" @keyup.enter.native="handleEnter"></el-input> </template> - <template #menu="{row,index,size}"> + <template #menu="{row,index,size}" v-if="this.permission.systemInfo.systemInfo_empower"> <el-button icon="el-icon-menu" size="small" type="text" @click="classifyHandler(row)">鍒嗙被鎺堟潈</el-button> - </template> + + </avue-crud> <el-dialog :visible.sync="dialogVisible" append-to-body class="avue-dialog avue-dialog--top" title="鍒嗙被鎺堟潈" top="-50px"> @@ -37,9 +38,10 @@ </avue-tree> </el-col> </el-row> + <div slot="footer" class="dialog-footer" style="height: 50px;line-height: 50px"> <el-button icon="el-icon-plus" size="small" type="primary" @click="empower">鎺� 鏉�</el-button> - <el-button icon="el-icon-close" size="small" type="danger">閲� 缃�</el-button> + <el-button icon="el-icon-close" size="small" type="danger" @click="resetting">閲� 缃�</el-button> </div> </el-dialog> </basic-container> @@ -53,12 +55,13 @@ sysInfoTree, batchAddSave } from '@/api/integration/sysInfo.js' - +import {mapGetters} from "vuex"; export default { data() { return { checkAll: {}, ParentList: [], + ParentRemoveList: [], //閬垮厤缂撳瓨 reload: Math.random(), TreeLoading: false, @@ -88,115 +91,209 @@ search: {}, delIds: [], data: [], - option: { - height: "auto", - tip: false, - border: true, - align: 'center', - menuAlign: 'center', - index: true, - searchMenuSpan: 8, - searchBtn: false, - emptyBtn: false, - columnBtn: false, - defaultSort: { - prop: 'id,name', - order: 'descending' - }, - selection: true, - column: [ - { - label: '绯荤粺缂栧彿', - prop: 'id', - sortable: true, - rules: [{ - required: true, - message: '绯荤粺缂栧彿涓嶈兘涓虹┖', - trigger: 'blur' - }], - // maxlength: 30, //瀛楁暟闄愬埗 - }, { - label: '绯荤粺鍚嶇О', - prop: 'name', - sortable: true, - rules: [{ - required: true, - message: '绯荤粺鍚嶇О涓嶈兘涓虹┖', - trigger: 'blur' - }], - // maxlength: 30, //瀛楁暟闄愬埗 - }, - { - label: '绯荤粺鎻忚堪', - prop: 'description', - type: 'textarea' - } - ] - }, + } }, - + created() { + }, + computed: { + ...mapGetters(["permission"]), + option(){ + return{ + height: "auto", + tip: false, + border: true, + align: 'center', + menuAlign: 'center', + index: true, + searchMenuSpan: 8, + addBtn:this.permission.systemInfo.systemInfo_add, + editBtn:this.permission.systemInfo.systemInfo_edit, + delBtn:this.permission.systemInfo.systemInfo_remove, + searchBtn: false, + emptyBtn: false, + columnBtn: false, + defaultSort: { + prop: 'id,name', + order: 'descending' + }, + selection: true, + column: [ + { + label: '绯荤粺缂栧彿', + prop: 'id', + sortable: true, + rules: [{ + required: true, + message: '绯荤粺缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + // maxlength: 30, //瀛楁暟闄愬埗 + }, { + label: '绯荤粺鍚嶇О', + prop: 'name', + sortable: true, + rules: [{ + required: true, + message: '绯荤粺鍚嶇О涓嶈兘涓虹┖', + trigger: 'blur' + }], + // maxlength: 30, //瀛楁暟闄愬埗 + }, + { + label: '绯荤粺鎻忚堪', + prop: 'description', + type: 'textarea' + } + ] + } + } + }, methods: { + //閲嶇疆 + resetting(){ + this.$refs.tree.setCheckedKeys([]) + // console.log(this.ParentList) + }, empower() { batchAddSave(this.checkAll.oid, this.checkAll.id, this.ParentList).then(res => { - console.log(res) + // console.log(res.data) + if(res.data.code === 200){ + this.$message.success(res.data.msg) + this.dialogVisible=false; + } }) }, //鍒嗙被鎺堟潈澶氶�夊洖璋� checkChange(row, checked) { if (checked) { - if (!row.parentId && row.children) { - const parentRecord = { - oid: row.oid, - classifyId: row.attributes.classifyId, - classifyOid: row.attributes.classifyOid, - classParentOid: row.parentId, - }; - this.ParentList.push(parentRecord); - // 濡傛灉row鐨刢hildren涓嶄负绌猴紝缁х画寰幆children涓殑姣忎釜瀵硅薄 - if (row.children && row.children.length > 0) { - for (let child of row.children) { - const childRecord = { - oid: child.oid, - classifyId: child.attributes.classifyId, - classifyOid: child.attributes.classifyOid, - classParentOid: child.parentId, - }; - this.ParentList.push(childRecord); - // 濡傛灉瀛愬璞$殑children涓嶄负绌猴紝缁х画寰幆鑾峰彇鏁版嵁 - if (child.children && child.children.length > 0) { - for (let subChild of child.children) { - const subRecord = { - oid: subChild.oid, - classifyId: subChild.attributes.classifyId, - classifyOid: subChild.attributes.classifyOid, - classParentOid: subChild.parentId, - }; - this.ParentList.push(subRecord); - } - } - } - } - console.log(this.ParentList); - } - }else { - this.ParentList = this.ParentList.filter(res => res.classifyId !== row.classifyId); - console.log(this.ParentList); + this.addAllChildren(row.children); + this.addToParentList(row); + // 鍕鹃�夎鏃跺皢鎵�鏈夎妭鐐规坊鍔犲埌ParentList涓� + } else { + this.removeAllChildren(row.children); + this.removeFromParentList(row); + // 鍙栨秷鍕鹃�夊皢鎵�鏈夎妭鐐规坊鍔犱粠ParentList涓Щ闄� } + // console.table(this.ParentList); + }, + //瀛愯妭鐐规坊鍔� + addAllChildren(children) { + for (let child of children) { + this.addToParentList(child); + // 灏嗗瓙鑺傜偣娣诲姞鍒� ParentList 涓� + if (child.children && child.children.length > 0) { + this.addAllChildren(child.children); + } + } + }, + //瀛愯妭鐐圭Щ闄� + removeAllChildren(children) { + for (let child of children) { + this.removeFromParentList(child); + // 灏嗗瓙鑺傜偣浠� ParentList 涓Щ闄� + if (child.children && child.children.length > 0) { + this.removeAllChildren(child.children); + } + } + }, + //褰撳墠鐖惰妭鐐规坊鍔� + addToParentList(item) { + const classifyOid = item.attributes.classifyOid; + if (!this.isClassifyOidExists(classifyOid)) { + const record = { + oid: item.oid, + classifyId: item.attributes.classifyId, + classifyOid: classifyOid, + }; + this.ParentList.push(record); + } + }, + //褰撳墠鐖惰妭鐐圭Щ闄� + removeFromParentList(item) { + const classifyOid = item.attributes.classifyOid; + if (this.isClassifyOidExists(classifyOid)) { + const index = this.findIndexByClassifyOid(classifyOid); + if (index !== -1) { + this.ParentList.splice(index, 1); + } + } + }, + //鍒ら噸-ParentList + isClassifyOidExists(classifyOid) { + return this.ParentList.some(item => item.classifyOid === classifyOid); + }, + //鏌ユ壘index浣嶇疆 + findIndexByClassifyOid(classifyOid) { + return this.ParentList.findIndex(item => item.classifyOid === classifyOid); }, //鍒嗙被鎺堟潈 classifyHandler(row) { this.loading = true; this.checkAll = row sysInfoTree({systemOid: row.oid, systemId: row.id}).then(res => { - this.TreeData = res.data; - this.ModifyProperties(this.TreeData, 'text', 'label'); - // 鏍规嵁 this.TreeData 鐨勯暱搴﹁绠楀欢杩熸椂闂� + let List = []; + let value = 0; + let NumberList= []; + function traverse(obj, parent) { + //閲嶆柊鏋勫缓涓�娆¢�変腑褰撳墠row鐨勬暟鎹� + const record = { + label: obj.text, + oid: obj.oid, + attributes:{ + classifyId: obj.attributes.classifyId, + classifyOid: obj.attributes.classifyOid, + selected:obj.attributes.selected + }, + classParentOid: obj.parentId, + value: value, + children: [] + }; + //褰撳墠宸查�夋嫨鏁版嵁鍥炲~ + if (record.attributes.selected == 'true') { + NumberList.push(record.value); + } + if (parent) { + const stingChild = parent.children.find(child => child.label === record.label); + if (stingChild) { + record.value = stingChild.value; // 浣跨敤宸插瓨鍦ㄧ殑瀛愯妭鐐圭殑value鍊� + } else { + parent.children.push(record); + value++; + } + } else { + const stingRecord = List.find(item => item.label === record.label); + if (stingRecord) { + record.value = stingRecord.value; // 浣跨敤宸插瓨鍦ㄧ殑椤跺眰鑺傜偣鐨剉alue鍊� + } else { + List.push(record); + value++; + } + } + if (obj.children && obj.children.length > 0) { + for (let child of obj.children) { + traverse(child, record); + } + } + } + for (let item of res.data) { + traverse(item, null); + } + // console.log('list', List); + this.TreeData = List; + // this.ModifyProperties(this.TreeData, 'text', 'label'); + // 鏍规嵁this.TreeData鐨勯暱搴﹁绠楀欢杩熸椂闂� const delayTime = this.TreeData.length * 1; setTimeout(() => { this.loading = false; - this.reload = Math.random() + this.reload = Math.random(); this.dialogVisible = true; + + this.$nextTick(() => { + if (this.$refs.tree) { + this.$refs.tree.setCheckedKeys(NumberList); + } + }); }, delayTime); }); }, @@ -214,7 +311,6 @@ }, async getDataList() { this.loading = true; - console.log(this.search); const {pageSize, currentPage} = this.page; const conditions = {}; if (Object.keys(this.search).length > 0) { @@ -226,7 +322,7 @@ } const response = await getSysInfoList(pageSize, currentPage, conditions); if (response.status === 200) { - console.log(response); + // console.log(response); this.loading = false; const data = response.data.data; this.data = data.records; @@ -295,12 +391,12 @@ }).then(async () => { const response = await sysInfoDel(param) if (response.status === 200) { - console.log(response) + // console.log(response) this.$message({ type: 'success', message: '鍒犻櫎鎴愬姛!' }); - this.getDataList() + await this.getDataList() } }) }, -- Gitblit v1.9.3