From 145aca4ce40cbdb14f940975da44db63eb5c497f Mon Sep 17 00:00:00 2001 From: fujunling <2984387807@qq.com> Date: 星期三, 26 七月 2023 17:38:38 +0800 Subject: [PATCH] fjl --- Source/UBCS-WEB/src/views/system/menu.vue | 315 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 298 insertions(+), 17 deletions(-) diff --git a/Source/UBCS-WEB/src/views/system/menu.vue b/Source/UBCS-WEB/src/views/system/menu.vue index d31fcc6..710ca16 100644 --- a/Source/UBCS-WEB/src/views/system/menu.vue +++ b/Source/UBCS-WEB/src/views/system/menu.vue @@ -22,11 +22,17 @@ @tree-load="treeLoad"> <template slot="menuLeft"> <el-button type="danger" - size="small" - icon="el-icon-delete" - v-if="permission.menu_delete" - plain - @click="handleDelete">鍒� 闄� + size="small" + icon="el-icon-delete" + v-if="permission.menu_delete" + plain + @click="handleDelete">鍒� 闄� + </el-button> + <el-button type="success" + size="small" + icon="el-icon-connection" + plain + @click="cloneMenuButton">浠庡叾浠栬彍鍗曞厠闅嗘寜閽� </el-button> </template> <template slot-scope="scope" slot="menu"> @@ -46,11 +52,40 @@ </div> </template> </avue-crud> + <!-- 浠庡叾浠栬彍鍗曞厠闅嗘寜閽� --> + <el-dialog title="浠庡叾浠栬彍鍗曞厠闅嗘寜閽�" + append-to-body + :visible.sync="cloneOtherMenuButtons.cloneButtonSettingBox" + width="1100px" + @close="cleanCloneSelections" + style="height: 110vh; margin-top: -10vh;"> + <avue-crud :option="cloneOtherMenuButtons.cloneOption" + :table-loading="cloneOtherMenuButtons.cloneLoading" + :data="cloneOtherMenuButtons.cloneData" + ref="cloneCrud" + @search-change="searchCloneChange" + @search-reset="searchCloneReset" + @selection-change="selectionCloneChange" + @row-click="clickRowCloneChange" + @refresh-change="refreshCloneChange" + @on-load="cloneOnLoad" + @tree-load="treeLoad"> + <template slot-scope="{row}" slot="source"> + <div style="text-align:center"> + <i :class="row.source"/> + </div> + </template> + </avue-crud> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="cloneButtonsToMenu">淇� 瀛�</el-button> + <el-button @click="cloneOtherMenuButtons.cloneButtonSettingBox = false">鍙� 娑�</el-button> + </div> + </el-dialog> </basic-container> </template> <script> - import {getLazyList, remove, update, add, getMenu} from "@/api/system/menu"; + import {getLazyList, remove, update, add, getMenu ,cloneMenuButton} from "@/api/system/menu"; import {mapGetters} from "vuex"; import iconList from "@/config/iconList"; import func from "@/util/func"; @@ -226,6 +261,22 @@ ] }, { + label: "璺敱缂撳瓨", + prop: "keepAlive", + type: "switch", + dicData: [ + { + label: "鍚�", + value: "false" + }, + { + label: "鏄�", + value: "true" + } + ], + hide: true + }, + { label: "鑿滃崟澶囨敞", prop: "remark", type: "textarea", @@ -235,7 +286,135 @@ } ] }, - data: [] + data: [], + // 浠庡叾浠栬彍鍗曞厠闅嗘寜閽� + cloneOtherMenuButtons: { + cloneButtonSettingBox: false, + selectCloneButtons: [], + cloneOption: { + height: "auto", + menu: false, + addBtn: false, + lazy: true, + tip: false, + simplePage: true, + searchShow: true, + searchMenuSpan: 6, + dialogWidth: "60%", + tree: true, + border: true, + index: true, + selection: true, + columnBtn: false, + searchShowBtn: false, + menuWidth: 300, + dialogClickModal: false, + highlightCurrentRow: true, //琛岄�変腑鏃堕珮浜� + column: [ + { + label: "鑿滃崟鍚嶇О", + prop: "name", + search: true, + }, + { + label: "璺敱鍦板潃", + prop: "path", + }, + { + label: "涓婄骇鑿滃崟", + prop: "parentId", + type: "tree", + hide: true, + addDisabled: false, + props: { + label: "title" + }, + }, + { + label: "鑿滃崟鍥炬爣", + prop: "source", + type: "icon", + slot: true, + iconList: iconList, + }, + { + label: "鑿滃崟缂栧彿", + prop: "code", + search: true, + }, + { + label: "鑿滃崟绫诲瀷", + prop: "category", + type: "radio", + dicData: [ + { + label: "鑿滃崟", + value: 1 + }, + { + label: "鎸夐挳", + value: 2 + } + ], + }, + { + label: "鑿滃崟鍒悕", + prop: "alias", + search: true, + }, + { + label: "鏂扮獥鍙�", + prop: "isOpen", + type: "radio", + dicData: [ + { + label: "鍚�", + value: 1 + }, + { + label: "鏄�", + value: 2 + } + ], + }, + { + label: "鑿滃崟鎺掑簭", + prop: "sort", + type: "number", + }, + { + label: "璺敱缂撳瓨", + prop: "keepAlive", + type: "switch", + dicData: [ + { + label: "鍚�", + value: "false" + }, + { + label: "鏄�", + value: "true" + } + ], + }, + { + label: "鑿滃崟澶囨敞", + prop: "remark", + type: "textarea", + span: 24, + minRows: 2, + } + ] + }, + cloneLoading: false, + cloneData: [], + cloneQuery: {}, + clonePage: { + pageSize: 10, + currentPage: 1, + total: 0, + }, + } }; }, watch: { @@ -270,6 +449,108 @@ } }, methods: { + + /** 浠庡叾浠栬彍鍗曞厠闅嗘寜閽� */ + cloneMenuButton(){ + if(this.selectionList.length != 1 || this.selectionList[0].category === 2){ + this.$message({ + type: "warning", + message: "璇烽�夋嫨涓�鏉¢潪鎸夐挳绫诲瀷鐨勬暟鎹�!" + }); + return; + } + this.cloneOtherMenuButtons.cloneButtonSettingBox = true; + }, + /** 鍏嬮殕鎸夐挳鍒伴�変腑鐨勮彍鍗曚笅 */ + cloneButtonsToMenu(){ + if(this.selectionList.length != 1){ + this.$message({ + type: "warning", + message: "瑕佸厠闅嗘寜閽殑鑿滃崟淇℃伅宸蹭涪澶憋紝璇烽噸鏂伴�夋嫨!" + }); + return; + } + if(this.cloneOtherMenuButtons.selectCloneButtons.length <= 0){ + this.$message({ + type: "warning", + message: "璇烽�夋嫨瑕佸厠闅嗘寜閽暟鎹�!" + }); + return; + } + this.$confirm("纭畾灏嗛�変腑鐨勬寜閽厠闅嗗埌銆�"+this.selectionList[0].name+"銆戣彍鍗曚腑?", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "info" + }) + .then(() => { + let buttonIds = []; + let flag = true; + this.cloneOtherMenuButtons.selectCloneButtons.forEach(function(item) { + if(item.category != 2){ + flag = false; + }else { + buttonIds.push(item.id); + } + }); + // 閫夋嫨浜嗛潪鎸夐挳绫诲瀷鐨勬暟鎹� + if(!flag){ + this.$message({ + type: "warning", + message: "鍙兘閫夋嫨鎸夐挳绫诲瀷鐨勮〃鏍艰!" + }); + return; + } + // console.log(buttonIds); + return cloneMenuButton({"menuId":this.selectionList[0].id,"buttonIds": buttonIds}); + }) + .then(res => { + this.$message({ + type: res.data.success ? "success":"error", + message: res.data.msg, + }); + this.cloneOtherMenuButtons.cloneButtonSettingBox = false; + // 鏁版嵁鍥炶皟杩涜鍒锋柊 + this.onLoad(this.page); + }); + }, + /** 閫変腑琚厠闅嗙殑鎸夐挳鏃惰Е鍙� */ + selectionCloneChange(list) { + this.cloneOtherMenuButtons.selectCloneButtons = list; + this.$refs.cloneCrud.setCurrentRow(this.cloneOtherMenuButtons.selectCloneButtons[list.length-1]); + }, + clickRowCloneChange(row){ + this.cloneOtherMenuButtons.selectCloneButtons.push(row); + this.$refs.cloneCrud.setCurrentRow(row); + this.$refs.cloneCrud.toggleRowSelection(row); //閫変腑褰撳墠琛� + }, + /** 鍏抽棴瀵硅瘽妗嗘椂娓呯┖閫変腑鐨勫垪琛� */ + cleanCloneSelections(){ + this.cloneOtherMenuButtons.selectCloneButtons = []; + this.$refs.cloneCrud.toggleSelection(); + }, + cloneOnLoad(page, params = {}) { + this.cloneOtherMenuButtons.cloneLoading = true; + getLazyList(this.parentId, Object.assign(params, this.cloneOtherMenuButtons.cloneQuery)).then(res => { + this.cloneOtherMenuButtons.cloneData = res.data.data; + this.cloneOtherMenuButtons.cloneLoading = false; + }); + }, + searchCloneChange(params, done){ + this.cloneOtherMenuButtons.cloneQuery = params; + this.parentId = ''; + this.cloneOtherMenuButtons.clonePage.currentPage = 1; + this.cloneOnLoad(this.cloneOtherMenuButtons.clonePage, params); + done(); + }, + searchCloneReset(){ + this.cloneOtherMenuButtons.cloneQuery = {}; + this.parentId = 0; + this.cloneOnLoad(this.cloneOtherMenuButtons.clonePage); + }, + refreshCloneChange(){ + this.onLoad(this.cloneOtherMenuButtons.clonePage, this.cloneOtherMenuButtons.cloneQuery); + }, + initData() { getMenuTree().then(res => { const column = this.findObject(this.option.column, "parentId"); @@ -318,17 +599,17 @@ cancelButtonText: "鍙栨秷", type: "warning" }) - .then(() => { - return remove(row.id); - }) - .then(() => { - this.$message({ - type: "success", - message: "鎿嶄綔鎴愬姛!" - }); - // 鏁版嵁鍥炶皟杩涜鍒锋柊 - done(row); + .then(() => { + return remove(row.id); + }) + .then(() => { + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" }); + // 鏁版嵁鍥炶皟杩涜鍒锋柊 + done(row); + }); }, handleDelete() { if (this.selectionList.length === 0) { -- Gitblit v1.9.3