From eec619b6e3339e9999a7a1c2c5454cef5d763b24 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 29 四月 2022 18:38:55 +0800
Subject: [PATCH] 2022-04-29

---
 src/views/mobdesign/index.jsx |  178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 176 insertions(+), 2 deletions(-)

diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx
index 98854e4..7734346 100644
--- a/src/views/mobdesign/index.jsx
+++ b/src/views/mobdesign/index.jsx
@@ -30,6 +30,7 @@
 const CreateView = asyncComponent(() => import('@/pc/createview'))
 const Transfer = asyncComponent(() => import('@/pc/transfer'))
 const Versions = asyncComponent(() => import('@/menu/versions'))
+const ViewNodes = asyncComponent(() => import('@/menu/viewnodes'))
 const SourceWrap = asyncComponent(() => import('@/mob/modulesource'))
 const BgController = asyncComponent(() => import('@/pc/bgcontroller'))
 const ReplaceField = asyncComponent(() => import('@/menu/replaceField'))
@@ -124,6 +125,7 @@
           viewType: /^userbind/.test(param.MenuID) ? 'userbind' : 'menu'
         }, () => {
           this.getMenuParam(param)
+          this.getRelationMenus()
         })
       }
     } catch (e) {
@@ -570,6 +572,29 @@
     this.getAppMenus()
   }
 
+  getRelationMenus = () => {
+    const { MenuId } = this.state
+    
+    let param = {
+      func: 's_get_menu_used_list',
+      TypeCharOne: sessionStorage.getItem('kei_no'),
+      typename: sessionStorage.getItem('typename'),
+      par_menuid: MenuId,
+      // used_menuid: MenuId
+    }
+
+    Api.getSystemConfig(param).then(result => {
+      if (!result.status) {
+        notification.warning({
+          top: 92,
+          message: result.message,
+          duration: 5
+        })
+        return
+      }
+    })
+  }
+
   setUserBindMenu = (config, result) => {
     const { MenuId } = this.state
     let isCreate = !config
@@ -691,6 +716,7 @@
         return item
       })
       sessionStorage.setItem('appMenus', JSON.stringify(menus))
+      sessionStorage.setItem('allMenus', JSON.stringify(res.menus || []))
     })
   }
 
@@ -996,6 +1022,148 @@
     return trees
   }
 
+  getSubMenus = () => {
+    const { config } = this.state
+    let menus = []
+    let menuObj = {}
+    let allMenus = JSON.parse(sessionStorage.getItem('allMenus'))
+
+    allMenus.forEach(item => {
+      menuObj[item.MenuID] = item
+    })
+
+    let traversal = (components) => {
+      components.forEach(item => {
+        if (item.type === 'topbar') {
+          if (item.wrap.linkmenu && menuObj[item.wrap.linkmenu]) {
+            menus.push(menuObj[item.wrap.linkmenu])
+          }
+          if (item.wrap.menus) {
+            item.wrap.menus.forEach(m => {
+              if (!menuObj[m.menu]) return
+
+              menus.push(menuObj[m.menu])
+            })
+          }
+        } else if (item.type === 'login') {
+          if (item.wrap.linkmenu && menuObj[item.wrap.linkmenu]) {
+            menus.push(menuObj[item.wrap.linkmenu])
+          }
+        } else if (item.type === 'menubar' && item.subtype !== 'commonbar') {
+          item.subMenus.forEach(m => {
+            if (m.setting.type === 'menu') {
+              if (menuObj[m.uuid]) {
+                menus.push(menuObj[m.uuid])
+              } else {
+                menus.push({
+                  MenuID: m.uuid,
+                  MenuName: m.setting.name,
+                  MenuNo: m.setting.MenuNo
+                })
+              }
+            } else if (m.setting.type === 'linkmenu' && menuObj[m.setting.linkMenuId]) {
+              menus.push(menuObj[m.setting.linkMenuId])
+            }
+          })
+        } else if (item.type === 'tabs') {
+          item.subtabs.forEach(tab => {
+            traversal(tab.components)
+          })
+        } else if (item.type === 'group') {
+          traversal(item.components)
+        } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) {
+          item.action && item.action.forEach(btn => {
+            if (btn.linkmenu && menuObj[btn.linkmenu]) {
+              menus.push(menuObj[btn.linkmenu])
+            } else if (btn.openmenu && menuObj[btn.openmenu]) {
+              menus.push(menuObj[btn.openmenu])
+            }
+          })
+          item.subcards.forEach(card => {
+            if (card.setting.click === 'menu' && menuObj[card.setting.menu]) {
+              menus.push(menuObj[card.setting.menu])
+            } else if (card.setting.click === 'menus' && card.menus) {
+              card.menus.forEach(m => {
+                if (menuObj[m.menu]) {
+                  menus.push(menuObj[m.menu])
+                }
+              })
+            }
+            card.elements && card.elements.forEach(cell => {
+              if (cell.eleType !== 'button') return
+
+              if (cell.linkmenu && menuObj[cell.linkmenu]) {
+                menus.push(menuObj[cell.linkmenu])
+              } else if (cell.openmenu && menuObj[cell.openmenu]) {
+                menus.push(menuObj[cell.openmenu])
+              }
+            })
+          })
+        } else if (item.type === 'carousel' || item.type === 'timeline') {
+          item.subcards.forEach(card => {
+            if (card.setting.click === 'menu' && menuObj[card.setting.menu]) {
+              menus.push(menuObj[card.setting.menu])
+            }
+            card.elements && card.elements.forEach(cell => {
+              if (cell.eleType !== 'button') return
+
+              if (cell.linkmenu && menuObj[cell.linkmenu]) {
+                menus.push(menuObj[cell.linkmenu])
+              } else if (cell.openmenu && menuObj[cell.openmenu]) {
+                menus.push(menuObj[cell.openmenu])
+              }
+            })
+          })
+        } else if (item.type === 'balcony') {
+          item.elements && item.elements.forEach(cell => {
+            if (cell.eleType !== 'button') return
+
+            if (cell.linkmenu && menuObj[cell.linkmenu]) {
+                menus.push(menuObj[cell.linkmenu])
+              } else if (cell.openmenu && menuObj[cell.openmenu]) {
+                menus.push(menuObj[cell.openmenu])
+              }
+          })
+        } else if (item.type === 'form') {
+          item.subcards.forEach(m => {
+            if (m.subButton && m.subButton.linkmenu && menuObj[m.subButton.linkmenu]) {
+              menus.push(menuObj[m.subButton.linkmenu])
+            }
+          })
+        } else if (item.type === 'table' && item.subtype === 'normaltable') {
+          item.action && item.action.forEach(btn => {
+            if (btn.linkmenu && menuObj[btn.linkmenu]) {
+              menus.push(menuObj[btn.linkmenu])
+            } else if (btn.openmenu && menuObj[btn.openmenu]) {
+              menus.push(menuObj[btn.openmenu])
+            }
+          })
+          item.cols && item.cols.forEach(col => {
+            if (col.type !== 'action') return
+            col.elements.forEach(btn => {
+              if (btn.linkmenu && menuObj[btn.linkmenu]) {
+                menus.push(menuObj[btn.linkmenu])
+              } else if (btn.openmenu && menuObj[btn.openmenu]) {
+                menus.push(menuObj[btn.openmenu])
+              }
+            })
+          })
+        }
+      })
+    }
+
+    traversal(config.components)
+
+    let map = new Map()
+    menus = menus.filter(m => {
+      if (map.has(m.MenuID)) return false
+      map.set(m.MenuID, true)
+      return true
+    })
+
+    return menus
+  }
+
   checkBtn = (btn) => {
     if (['prompt', 'exec', 'pop'].includes(btn.OpenType) && btn.Ot === 'required' && btn.verify && btn.verify.scripts && btn.verify.scripts.length > 0) {
       let hascheck = false
@@ -1147,6 +1315,10 @@
         config = this.getMiniStyle(config)
       }
 
+      let subMenus = this.getSubMenus()
+      let menus_used_list = subMenus.map(m => `'${config.uuid}','${config.MenuName || ''}','${config.MenuNo || ''}','${m.MenuID}','${m.MenuName}'`).join(';')
+      menus_used_list = window.btoa(window.encodeURIComponent(menus_used_list || 'del'))
+
       let param = {
         func: 'sPC_TrdMenu_AddUpt',
         FstID: 'mk_app',
@@ -1163,7 +1335,8 @@
         open_edition: config.open_edition,
         menus_rolelist: window.btoa(window.encodeURIComponent(JSON.stringify(roleParam))),
         LText: '',
-        LTexttb: ''
+        LTexttb: '',
+        menus_used_list
       }
 
       param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -1768,7 +1941,7 @@
                 <ArrowLeftOutlined title="鍚庨��" className="back-view" onClick={this.backView}/>
                 <CreateView resetmenu={this.getAppMenus} />
                 <PasteController insert={this.insert} />
-                <StyleCombControlButton menu={config} />
+                <ViewNodes config={config} MenuId={MenuId}/>
                 <SysInterface config={config} updateConfig={this.updateConfig}/>
                 <PictureController/>
                 <Quotecomponent config={config} updateConfig={this.updateConfig}/>
@@ -1777,6 +1950,7 @@
                 <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/>
                 <Transfer MenuID={MenuId} />
                 <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''}/>
+                <StyleCombControlButton menu={config} />
                 <Button className="mk-border-danger" onClick={this.refreshView}><RedoOutlined /> 寮哄埗鍒锋柊</Button>
                 <Button type="default" onClick={this.closeView}>鍏抽棴</Button>
               </div>

--
Gitblit v1.8.0