From 2e7dbd705fc82e8db74b073e55af938d67d8c19f Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 17 三月 2026 09:05:49 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/index.html |  113 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 72 insertions(+), 41 deletions(-)

diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index 12d725e..2fdcc81 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -862,7 +862,7 @@
 <script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
 <script type="text/javascript" src="../static/vue/element/element.js"></script>
 <script>
-  var DASHBOARD_VIEW_VERSION = "20260316-hero-two-rows-flat-compact";
+  var DASHBOARD_VIEW_VERSION = "20260317-dashboard-network-balanced-columns";
   var HOME_TAB_CONFIG = {
     title: "绯荤粺浠〃鐩�",
     url: baseUrl + "/views/dashboard/dashboard.html?layoutVersion=" + encodeURIComponent(DASHBOARD_VIEW_VERSION),
@@ -1177,7 +1177,7 @@
         return this.tl(title);
       },
       findMenuMeta: function (tab) {
-        var normalizedUrl;
+        var menuEntry;
         var i;
         var j;
         var group;
@@ -1185,20 +1185,69 @@
         if (!tab) {
           return null;
         }
-        normalizedUrl = this.resolveViewSrc(tab.url);
+        if (tab.menuKey) {
+          for (i = 0; i < this.menus.length; i++) {
+            group = this.menus[i];
+            for (j = 0; j < group.subMenu.length; j++) {
+              item = group.subMenu[j];
+              if (item.tabKey === tab.menuKey) {
+                return {
+                  group: group,
+                  item: item
+                };
+              }
+            }
+          }
+        }
+        menuEntry = this.findMenuEntryByUrl(tab.url);
+        if (menuEntry) {
+          return menuEntry;
+        }
+        return null;
+      },
+      normalizeMenuMatchUrl: function (url, stripQuery) {
+        var normalized = this.resolveViewSrc(url || "");
+        var hashIndex = normalized.indexOf("#");
+        var queryIndex;
+        if (hashIndex > -1) {
+          normalized = normalized.substring(0, hashIndex);
+        }
+        if (stripQuery) {
+          queryIndex = normalized.indexOf("?");
+          if (queryIndex > -1) {
+            normalized = normalized.substring(0, queryIndex);
+          }
+        }
+        return normalized;
+      },
+      findMenuEntryByUrl: function (url) {
+        var normalized = this.normalizeMenuMatchUrl(url, false);
+        var normalizedBase = this.normalizeMenuMatchUrl(url, true);
+        var fallback = null;
+        var i;
+        var j;
+        var group;
+        var item;
+
         for (i = 0; i < this.menus.length; i++) {
           group = this.menus[i];
           for (j = 0; j < group.subMenu.length; j++) {
             item = group.subMenu[j];
-            if ((tab.menuKey && item.tabKey === tab.menuKey) || item.url === normalizedUrl) {
+            if (item.url === normalized) {
               return {
+                group: group,
+                item: item
+              };
+            }
+            if (!fallback && this.normalizeMenuMatchUrl(item.url, true) === normalizedBase) {
+              fallback = {
                 group: group,
                 item: item
               };
             }
           }
         }
-        return null;
+        return fallback;
       },
       syncTabMeta: function (tab, homeConfig, profileConfig) {
         var menuMeta;
@@ -1602,38 +1651,16 @@
         });
       },
       findMenuKeyByUrl: function (url) {
-        var normalized = this.resolveViewSrc(url);
-        var i;
-        var j;
-        var group;
-        var item;
-
-        for (i = 0; i < this.menus.length; i++) {
-          group = this.menus[i];
-          for (j = 0; j < group.subMenu.length; j++) {
-            item = group.subMenu[j];
-            if (item.url === normalized) {
-              return item.tabKey;
-            }
-          }
+        var entry = this.findMenuEntryByUrl(url);
+        if (entry && entry.item) {
+          return entry.item.tabKey || "";
         }
         return "";
       },
       findMenuGroupIndexByUrl: function (url) {
-        var normalized = this.resolveViewSrc(url);
-        var i;
-        var j;
-        var group;
-        var item;
-
-        for (i = 0; i < this.menus.length; i++) {
-          group = this.menus[i];
-          for (j = 0; j < group.subMenu.length; j++) {
-            item = group.subMenu[j];
-            if (item.url === normalized) {
-              return "group-" + group.menuId;
-            }
-          }
+        var entry = this.findMenuEntryByUrl(url);
+        if (entry && entry.group) {
+          return "group-" + entry.group.menuId;
         }
         return "";
       },
@@ -2027,31 +2054,35 @@
         window.index = window.index || {};
         window.index.loadView = function (param) {
           var url;
+          var menuEntry;
           if (!param || !param.menuPath) {
             return;
           }
           url = that.resolveViewSrc(param.menuPath);
+          menuEntry = that.findMenuEntryByUrl(url);
           that.addOrActivateTab({
-            title: that.stripTags(param.menuName) || that.t("common.workPage"),
-            url: url,
+            title: that.stripTags(param.menuName) || (menuEntry && menuEntry.item ? menuEntry.item.name : that.t("common.workPage")),
+            url: menuEntry && menuEntry.item ? menuEntry.item.url : url,
             home: false,
-            group: that.t("common.businessPage"),
-            menuKey: that.findMenuKeyByUrl(url)
+            group: menuEntry && menuEntry.group ? menuEntry.group.menu : that.t("common.businessPage"),
+            menuKey: menuEntry && menuEntry.item ? menuEntry.item.tabKey : that.findMenuKeyByUrl(url)
           });
         };
         window.index.loadHome = function (param) {
           var url;
+          var menuEntry;
           if (!param || !param.menuPath) {
             that.openHomeTab();
             return;
           }
           url = that.resolveViewSrc(param.menuPath);
+          menuEntry = that.findMenuEntryByUrl(url);
           that.addOrActivateTab({
-            title: that.stripTags(param.menuName) || that.resolveHomeConfig().title,
-            url: url,
+            title: that.stripTags(param.menuName) || (menuEntry && menuEntry.item ? menuEntry.item.name : that.resolveHomeConfig().title),
+            url: menuEntry && menuEntry.item ? menuEntry.item.url : url,
             home: true,
-            group: that.resolveHomeConfig().group,
-            menuKey: that.findMenuKeyByUrl(url)
+            group: menuEntry && menuEntry.group ? menuEntry.group.menu : that.resolveHomeConfig().group,
+            menuKey: menuEntry && menuEntry.item ? menuEntry.item.tabKey : that.findMenuKeyByUrl(url)
           });
         };
 

--
Gitblit v1.9.1