From 10566ae6b8a9c01e8b63cecab9d8b8520a446f8f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 14 一月 2025 20:43:03 +0800
Subject: [PATCH] 2025-01-14

---
 src/views/syscheck/index.jsx |  183 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 171 insertions(+), 12 deletions(-)

diff --git a/src/views/syscheck/index.jsx b/src/views/syscheck/index.jsx
index 4c2100d..6095b3a 100644
--- a/src/views/syscheck/index.jsx
+++ b/src/views/syscheck/index.jsx
@@ -21,6 +21,7 @@
     activeMenu: null,
     remain: 0,
     lackmenus: [],
+    lacklinks: [],
     outmenus: [],
     backmenus: [],
     appbackmenus: [],
@@ -31,6 +32,8 @@
 
   sqlmap = null
   btnmap = null
+  allMenus = []
+  appMenus = {}
 
   // delete _val.controlField 鍒犻櫎鎸夐挳鎺у埗瀛楁
 
@@ -61,6 +64,7 @@
       remain: 0,
       menulist: [],
       lackmenus: [],
+      lacklinks: [],
       outmenus: [],
       backmenus: [],
       appbackmenus: [],
@@ -69,6 +73,8 @@
       unablemenus: [],
       loading: true
     })
+
+    this.allMenus = []
     Api.getCloudConfig({func: 's_get_pc_menus', systemType: window.GLOB.sysType, debug: 'Y'}).then(result => {
       if (result.status) {
         let menulist = []
@@ -77,6 +83,8 @@
             fst.snd_menu.forEach(snd => {
               if (snd.trd_menu) {
                 snd.trd_menu.forEach(trd => {
+                  this.allMenus.push(trd.MenuID)
+
                   if (trd.PageParam) {
                     let pass = false
                     try {
@@ -171,6 +179,7 @@
       remain: 0,
       menulist: [],
       lackmenus: [],
+      lacklinks: [],
       outmenus: [],
       backmenus: [],
       appbackmenus: [],
@@ -180,6 +189,8 @@
       loading: true
     })
 
+    this.allMenus = []
+    this.appMenus = {}
     Api.getCloudConfig(param).then(result => {
       if (result.status) {
         let applist = []
@@ -226,7 +237,11 @@
                     app.status = true
                     app.menus = []
 
+                    this.appMenus[app.ID] = []
+
                     result.menus.forEach(m => {
+                      this.appMenus[app.ID].push(m.MenuID)
+
                       if (m.menus_rolelist) {
                         try {
                           let pageParam = JSON.parse(window.decodeURIComponent(window.atob(m.menus_rolelist)))
@@ -239,6 +254,7 @@
                         if (m.type === 'navbar') return
                       }
                       delete m.menus_rolelist
+                      m.$pid = app.ID
                       
                       app.menus.push(m)
                     })
@@ -338,7 +354,7 @@
   }
 
   getMenuParam = (menus) => {
-    const { lackmenus, outmenus, unablemenus, backmenus, appbackmenus, btnmenus, appbtnmenus, stop } = this.state
+    const { lackmenus, lacklinks, outmenus, unablemenus, backmenus, appbackmenus, btnmenus, appbtnmenus, stop } = this.state
 
     let menu = menus.shift()
 
@@ -347,15 +363,18 @@
       MenuID: menu.MenuID
     }
 
-    let appType = 'pc'
+    let appType = 'admin'
     if (menu.kei_no) {
       param.TypeCharOne = menu.kei_no
       param.typename = menu.typename
       param.lang = menu.lang
 
+      appType = 'pc'
       if (['pad', 'mob'].includes(menu.typename)) {
         appType = 'mob'
       }
+
+      this.allMenus = this.appMenus[menu.$pid] || []
     }
 
     this.setState({
@@ -386,8 +405,16 @@
         } else {
           let sqls = []
           let btns = []
+          let links = []
 
-          this.getAllSqls(config, appType, sqls, btns)
+          this.getAllSqls(config, appType, sqls, btns, links)
+
+          if (links.length) {
+            links.forEach(item => {
+              window.mkInfo(menu.pName + '锛�' + item)
+            })
+            this.setState({lacklinks: [...lacklinks, menu]})
+          }
 
           if (sqls.length) {
             let keys = sqls.map(item => item.uuid)
@@ -461,7 +488,7 @@
     })
   }
 
-  getAllSqls = (config, appType, sqls, btns) => {
+  getAllSqls = (config, appType, sqls, btns, links) => {
     let filterComponent = (components, label = '') => {
       components.forEach(item => {
         item.$menuname = (config.MenuName || '') + label + '-' + (item.name || '')
@@ -520,7 +547,10 @@
                   getCols(col.subcols || [])
                 } else if (col.type === 'custom') {
                   col.elements.forEach(cell => {
-                    if (cell.eleType !== 'button') return
+                    if (cell.eleType !== 'button') {
+                      resetElement(item, cell)
+                      return
+                    }
 
                     cell.logLabel = item.$menuname + '-' + cell.label
             
@@ -553,10 +583,46 @@
   
               sqls.push({uuid: 'submit_' + item.uuid, type: 'editable', LText: item.submit.logLabel})
             }
-          } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') {
+          } else if (['card', 'carousel', 'timeline'].includes(item.type)) {
             item.subcards && item.subcards.forEach(card => {
+              if (card.setting.click === 'menu' && card.setting.menu) {
+                if (appType === 'admin') {
+                  if (!Array.isArray(card.setting.menu)) {
+                    links.push(item.$menuname)
+                  } else {
+                    let menuId = card.setting.menu.slice(-1)[0]
+                    if (!this.allMenus.includes(menuId)) {
+                      links.push(item.$menuname)
+                    }
+                  }
+                } else {
+                  if (typeof(card.setting.menu) !== 'string') {
+                    links.push(item.$menuname)
+                  } else if (!this.allMenus.includes(card.setting.menu)) {
+                    links.push(item.$menuname)
+                  }
+                }
+              } else if (card.setting.click === 'menus' && card.menus && card.menus.length > 0) {
+                if (appType === 'admin') {
+                  card.menus.forEach(m => {
+                    if (!m.MenuID || !this.allMenus.includes(m.MenuID)) {
+                      links.push(item.$menuname)
+                    }
+                  })
+                } else {
+                  card.menus.forEach(m => {
+                    if (typeof(m.menu) !== 'string' || !this.allMenus.includes(m.menu)) {
+                      links.push(item.$menuname)
+                    }
+                  })
+                }
+              }
+
               card.elements && card.elements.forEach(cell => {
-                if (cell.eleType !== 'button') return
+                if (cell.eleType !== 'button') {
+                  resetElement(item, cell)
+                  return
+                }
 
                 cell.logLabel = item.$menuname + '-' + cell.label
             
@@ -570,7 +636,10 @@
               if (!card.backElements || card.backElements.length === 0) return
     
               card.backElements.forEach(cell => {
-                if (cell.eleType !== 'button') return
+                if (cell.eleType !== 'button') {
+                  resetElement(item, cell)
+                  return
+                }
 
                 cell.logLabel = item.$menuname + '-' + cell.label
             
@@ -583,7 +652,10 @@
             })
           } else if (item.type === 'balcony') {
             item.elements.forEach(cell => {
-              if (cell.eleType !== 'button') return
+              if (cell.eleType !== 'button') {
+                resetElement(item, cell)
+                return
+              }
 
               cell.logLabel = item.$menuname + '-' + cell.label
             
@@ -621,9 +693,52 @@
             sqls.push({uuid: item.uuid + item.billOutBtn.type, type: 'button', LText: item.$menuname + '-' + item.billOutBtn.label})
   
             sqls.push({uuid: item.uuid + 'billback', type: 'btnCallBack', LText: item.$menuname + '-'  + item.billOutBtn.label + '(鍥炶皟)'})
+          } else if (item.type === 'menubar') {
+            item.subMenus.forEach(cell => {
+              if (cell.setting.type === 'menu') {
+                if (!this.allMenus.includes(cell.uuid)) {
+                  links.push(item.$menuname + '-' + cell.setting.name)
+                }
+              } else if (cell.setting.type === 'linkmenu') {
+                if (!this.allMenus.includes(cell.setting.linkMenuId)) {
+                  links.push(item.$menuname + '-' + cell.setting.name)
+                }
+              }
+            })
+          } else if (item.type === 'login') {
+            if (!item.wrap.linkmenu || !this.allMenus.includes(item.wrap.linkmenu)) {
+              links.push(item.$menuname)
+            }
+          } else if (item.type === 'topbar') {
+            if (item.wrap.menus) {
+              item.wrap.menus.forEach(m => {
+                if (!this.allMenus.includes(m.menu)) {
+                  links.push(item.$menuname)
+                }
+              })
+            }
           }
         }
       })
+    }
+
+    let resetElement = (item, cell) => {
+      if (cell.linkmenu && cell.linkmenu.length) {
+        if (appType === 'admin') {
+          if (!Array.isArray(cell.linkmenu)) {
+            links.push(item.$menuname)
+          } else {
+            let menuId = cell.linkmenu.slice(-1)[0]
+            if (!this.allMenus.includes(menuId)) {
+              links.push(item.$menuname)
+            }
+          }
+        } else {
+          if (cell.linkmenu !== 'goback' && (typeof(cell.linkmenu) !== 'string' || !this.allMenus.includes(cell.linkmenu))) {
+            links.push(item.$menuname)
+          }
+        }
+      }
     }
   
     let resetButton = (item, cell) => {
@@ -659,7 +774,6 @@
             sqls.push({uuid: cell.uuid, type: 'excelOut', LText: cell.logLabel || ''})
           }
         }
-        
       } else if (cell.OpenType === 'funcbutton') {
         if (cell.funcType === 'print') {
           if (cell.intertype === 'system' && cell.verify && cell.verify.dataType === 'custom') {
@@ -687,6 +801,42 @@
           let label = (item.name ? '-' + item.name : '') + '-' + cell.label
   
           filterComponent(cell.config.components, label, true)
+        }
+      }
+
+      if (appType === 'admin') {
+        if (cell.refreshTab && cell.refreshTab.length) {
+          let tabId = cell.refreshTab[cell.refreshTab.length - 1]
+          if (!this.allMenus.includes(tabId)) {
+            links.push(cell.logLabel)
+          }
+        }
+        if (cell.openmenu && cell.openmenu.length) {
+          if (!Array.isArray(cell.openmenu)) {
+            links.push(cell.logLabel)
+          } else {
+            let menuId = cell.openmenu.slice(-1)[0]
+            if (!this.allMenus.includes(menuId)) {
+              links.push(cell.logLabel)
+            }
+          }
+        }
+        if (cell.linkmenu && cell.linkmenu.length) {
+          if (!Array.isArray(cell.linkmenu)) {
+            links.push(cell.logLabel)
+          } else {
+            let menuId = cell.linkmenu.slice(-1)[0]
+            if (!this.allMenus.includes(menuId)) {
+              links.push(cell.logLabel)
+            }
+          }
+        }
+      } else {
+        if (cell.openmenu && cell.openmenu.length && cell.openmenu !== 'goback' && (typeof(cell.openmenu) !== 'string' || !this.allMenus.includes(cell.openmenu))) {
+          links.push(cell.logLabel)
+        }
+        if (cell.linkmenu && cell.linkmenu.length && cell.linkmenu !== 'goback' && (typeof(cell.linkmenu) !== 'string' || !this.allMenus.includes(cell.linkmenu))) {
+          links.push(cell.logLabel)
         }
       }
     }
@@ -726,11 +876,14 @@
   }
 
   record = (type) => {
-    const { lackmenus, outmenus, unablemenus, backmenus, appbackmenus, btnmenus, appbtnmenus } = this.state
+    const { lackmenus, lacklinks, outmenus, unablemenus, backmenus, appbackmenus, btnmenus, appbtnmenus } = this.state
 
     let menus = []
 
     lackmenus.forEach(item => {
+      menus.push(item.MenuID)
+    })
+    lacklinks.forEach(item => {
       menus.push(item.MenuID)
     })
     outmenus.forEach(item => {
@@ -772,7 +925,7 @@
   }
 
   render () {
-    const { loading, activeMenu, menulist, remain, lackmenus, outmenus, unablemenus, backmenus, appbackmenus, btnmenus, appbtnmenus } = this.state
+    const { loading, activeMenu, menulist, remain, lackmenus, lacklinks, outmenus, unablemenus, backmenus, appbackmenus, btnmenus, appbtnmenus } = this.state
 
     if (!sessionStorage.getItem('UserID')) return null
 
@@ -805,6 +958,12 @@
               return <div key={i}>{item.MenuName} <span></span> {item.pName}</div>
             })}
           </div> : null}
+          {lacklinks.length ? <div className="item-wrap">
+            <div className="title">鍏宠仈鑿滃崟涓嶅瓨鍦�</div>
+            {lacklinks.map((item, i) => {
+              return <div key={i}>{item.MenuName} <span></span> {item.pName}</div>
+            })}
+          </div> : null}
           {backmenus.length ? <div className="item-wrap">
             <div className="title">鑿滃崟鍚庣鑴氭湰ID閲嶅</div>
             {backmenus.map((item, i) => {

--
Gitblit v1.8.0