From 066633d80ef6fa9f21d2e61ea73d6370d292b3ee Mon Sep 17 00:00:00 2001 From: Paidax Date: Fri, 1 Aug 2025 14:31:46 +0800 Subject: [PATCH] commit --- .../views/platform/sys/menu/basicForm.js | 22 ++++ .../views/platform/sys/menu/index.html | 100 +++++++++++++++++- 2 files changed, 120 insertions(+), 2 deletions(-) diff --git a/src/main/resources/views/platform/sys/menu/basicForm.js b/src/main/resources/views/platform/sys/menu/basicForm.js index ef0b05b6..437c861a 100644 --- a/src/main/resources/views/platform/sys/menu/basicForm.js +++ b/src/main/resources/views/platform/sys/menu/basicForm.js @@ -150,6 +150,28 @@ const SYS_MENU_BASIC_FORM_COMPONENT = { this.detail(id) } }, + addChildMenu(data, platform) { + this.visibleDialog = true + this.platform = platform + this.formData = { + moduleId: data.moduleId, + buttons: [] + } + + this.$axios.post("/platform/sys/menu/editMenu/" + data.id).then((res) => { + if (res.code === 0) { + if (res.data.parentIds && res.data.parentIds.length > 0) { + this.parentMenu = res.data.parentIds + } else { + this.parentMenu = [] + } + this.parentMenu.push(data.id) + } + }) + + this.listFullTree() + this.listModule() + }, listFullTree() { this.$axios.post(loc() + "/fullTree", { platform: this.platform }).then((res) => { this.menuOptions = res.data diff --git a/src/main/resources/views/platform/sys/menu/index.html b/src/main/resources/views/platform/sys/menu/index.html index 26ed8298..de8977f8 100644 --- a/src/main/resources/views/platform/sys/menu/index.html +++ b/src/main/resources/views/platform/sys/menu/index.html @@ -1,6 +1,27 @@ +
@@ -32,6 +53,7 @@ layout("/layouts/platform.html"){ :highlight-current-row="true" :key="tableKey" :load="loadChild" + @row-contextmenu="openMenu" :expand-row-keys="expandedRowKeysRenew" @expand-change="handleExpandChange" ref="tableData" @@ -98,8 +120,18 @@ layout("/layouts/platform.html"){ + + +
    +
  • 新建菜单
  • +
  • 添加子菜单
  • +
  • 编辑
  • +
  • 删除
  • +
+
- + + @@ -128,10 +160,67 @@ layout("/layouts/platform.html"){ moduleOptions: [], // 保存展开状态的数组 expandedRowKeysRenew: [], - tableTreeRefreshTool: [] + tableTreeRefreshTool: [], + + // 右键打开菜单相关 + currentRow: null, + menuVisible: false, + menuLeft: 0, + menuTop: 0, + showAddMenu: false, } }, methods: { + /* 右键行 */ + openMenu(row, column, event) { + this.showAddMenu = row.type === 'menu'; + // 阻止浏览器默认菜单 + event.preventDefault(); + this.currentRow = row; + + this.menuVisible = true; + this.$nextTick(() => { + const menu = this.$el.querySelector('.context-menu'); + const h = menu.offsetHeight || 100; + const sh = document.documentElement.clientHeight; + let top = event.clientY; + if (top + h > sh) top -= h; + this.menuLeft = event.clientX; + this.menuTop = top; + }); + }, + // 新建菜单 + handleAddMenu(row) { + console.log(row) + this.$refs.basicFormRef.onOpen(null, this.pageForm.platform) + }, + handleAddChildMenu(row) { + this.$refs.basicFormRef.addChildMenu(row, this.pageForm.platform) + }, + handleEdit(row) { + // 判断子菜单的type是权限还是菜单 + if (row.type === 'menu') { + this.$refs.basicFormRef.onOpen(row.id, this.pageForm.platform) + } else { + this.$refs.permissionFormRef.onOpen(row.id) + } + }, + handleDelete(row) { + // 删除逻辑 + console.log(row) + this.$confirm("此操作将删除 " + row.name, "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + this.$axios.post("/platform/sys/menu/delete/" + row.id).then((res) => { + if (res.code === 0) { + this.$message.success(res.msg) + this.loadChildByExpandedKeys() + } + }) + }) + }, doSearch() { this.initTreeTable() }, @@ -235,6 +324,13 @@ layout("/layouts/platform.html"){ }) } }, + mounted() { + // 点击任意处关闭菜单 + document.addEventListener('click', () => (this.menuVisible = false)); + }, + beforeDestroy() { + document.removeEventListener('click', () => (this.menuVisible = false)); + }, created() { setTimeout(() => { if (this.dict.type.SYS_MENU_PLATFORM) {