king
2022-04-29 eec619b6e3339e9999a7a1c2c5454cef5d763b24
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>