From 564db4b65dd01c834879f4b9cab7be238f6ab01e Mon Sep 17 00:00:00 2001 From: ctw <1051735452@qq.com> Date: Thu, 5 Feb 2026 15:39:15 +0800 Subject: [PATCH] =?UTF-8?q?K=E6=97=B6=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/views/childRoom/index.vue | 60 +++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/ruoyi-ui/src/views/childRoom/index.vue b/ruoyi-ui/src/views/childRoom/index.vue index 93cf637..42fa47e 100644 --- a/ruoyi-ui/src/views/childRoom/index.vue +++ b/ruoyi-ui/src/views/childRoom/index.vue @@ -331,6 +331,7 @@ import { listRoutes, getRoutes, addRoutes, updateRoutes, delRoutes } from "@/api import { updateWaypoints } from "@/api/system/waypoints"; import { listLib,addLib,delLib} from "@/api/system/lib"; import { getRooms, updateRooms } from "@/api/system/rooms"; +import { getMenuConfig, saveMenuConfig } from "@/api/system/userMenuConfig"; import PlatformImportDialog from "@/views/dialogs/PlatformImportDialog.vue"; export default { name: 'MissionPlanningView', @@ -544,8 +545,9 @@ export default { this.isMenuHidden = true; // 初始化时右侧面板隐藏 this.isRightPanelHidden = true; - // 初始化菜单项为默认配置 + // 初始化菜单项为默认配置,再尝试加载当前用户已保存的配置 this.menuItems = [...this.defaultMenuItems]; + this.loadUserMenuConfig(); // 更新时间 this.updateTime(); @@ -1110,6 +1112,9 @@ export default { return `${y}-${m}-${day} ${h}:${min}:${s}`; }, openKTimeSetDialog() { + console.log("当前登录 ID (myId):", this.$store.getters.id); + console.log("当前房间 ownerId:", this.roomDetail ? this.roomDetail.ownerId : '无房间信息'); + console.log("当前角色 roles:", this.$store.getters.roles); if (!this.canSetKTime) { this.$message.info('仅房主或管理员可设定或修改 K 时'); return; @@ -1224,8 +1229,14 @@ export default { this.isIconEditMode = false }, - handleResetMenuItems() { + async handleResetMenuItems() { this.menuItems = [...this.defaultMenuItems] + try { + await saveMenuConfig({ + menuItems: JSON.stringify(this.menuItems), + position: this.menuPosition || 'left' + }) + } catch (e) { /* 未登录时仅本地恢复默认 */ } }, updateMenuItems(newItems) { @@ -1303,8 +1314,43 @@ export default { } }, - handleSaveMenuItems(savedItems) { + async handleSaveMenuItems(savedItems) { this.menuItems = [...savedItems] + // 持久化到当前账号 + try { + await saveMenuConfig({ + menuItems: JSON.stringify(this.menuItems), + position: this.menuPosition || 'left' + }) + } catch (e) { + // 未登录或接口失败时仅本地生效,仍提示保存成功(LeftMenu 已提示) + if (e && e.response && e.response.status === 401) { + this.$message.info('当前未登录,配置仅在本页有效;登录后保存可同步到账号') + } + } + }, + + /** 加载当前用户的左侧菜单配置(登录且有过保存时生效) */ + async loadUserMenuConfig() { + try { + const res = await getMenuConfig() + const data = res && res.data + if (!data) return + if (data.menuItems) { + let arr = [] + try { + arr = typeof data.menuItems === 'string' ? JSON.parse(data.menuItems) : data.menuItems + } catch (e) { /* 解析失败保留默认 */ } + if (Array.isArray(arr) && arr.length > 0) { + this.menuItems = arr + } + } + if (data.position && ['left', 'top', 'bottom'].includes(data.position)) { + this.menuPosition = data.position + } + } catch (e) { + // 未登录或接口失败则使用默认菜单,不提示 + } }, attributeEdit() { @@ -1413,9 +1459,15 @@ export default { this.$message.success('外部参数保存成功'); }, - savePageLayout(position) { + async savePageLayout(position) { this.menuPosition = position; this.$message.success(`菜单位置已设置为:${this.getPositionLabel(position)}`); + try { + await saveMenuConfig({ + menuItems: JSON.stringify(this.menuItems), + position: this.menuPosition || 'left' + }) + } catch (e) { /* 未登录时仅本地生效 */ } }, getPositionLabel(position) {