king
2020-11-16 3ca91a731665962918a026f521c556f4745ebf35
src/components/header/index.jsx
@@ -12,7 +12,6 @@
  modifyMainMenu,
  modifyTabview,
  resetState,
  resetDebug,
  resetEditState,
  resetEditLevel,
  initPermission,
@@ -169,10 +168,6 @@
    if (!result) return
    if (result.status) {
      if (result.debug === 'true') { // 是否为debug模式,即可复制菜单参数
        this.props.resetDebug()
      }
      let MainMenuId = sessionStorage.getItem('MainMenu') // 是否为打开新页面
      if (MainMenuId) {
        // 通过url中menuid筛选出选中的主菜单
@@ -200,10 +195,6 @@
        }),
        systems: result.Systems.filter(sys => sys.LinkUrl1 && sys.AppKey !== window.GLOB.appkey)
      })
      if (result.dataM) {
        this.props.modifyDataManager(true)
      }
    } else {
      notification.error({
        top: 92,
@@ -216,20 +207,66 @@
  async getRolesMenu () {
    // 获取角色权限
    let promiseRole = new Promise(resolve => {
      Api.getSystemConfig({func: 'sPC_Get_RolesMenu'}).then(result => {
        let _permAction = {}
        let _permRoles = []
        if (result && result.status) {
          if (result.UserRoles) {
            result.UserRoles.forEach(role => {
              _permRoles.push(role.RoleID)
      Api.getSystemConfig({func: 's_Get_TrdMenu_Role', edition_type: 'Y'}).then(result => {
        let _permAction = {} // 按钮权限
        let _permMenus = {}  // 菜单权限,字段透视等
        let menulist = []    // 三级菜单列表
              role.RoleMenu.forEach(menu => {
        if (result && result.status) {
          if (result.UserRoles_Menu) {
            result.UserRoles_Menu.forEach(menu => {
                if (!menu.MenuID) return
                _permAction[menu.MenuID] = true
              })
          }
          if (result.UserRoles) {
            let iframes = ['Main/Index', 'bda/rdt', 'Home/rdt']
            let menukeys = []
            result.UserRoles.forEach(menu => {
              if (!menu.MenuID) return
              if (menukeys.includes(menu.MenuID)) {
                console.warn('s_Get_TrdMenu_Role重复的菜单ID:' + menu.MenuID)
                return
              }
              _permMenus[menu.MenuID] = true
              let _type = ''
              if (menu.LinkUrl === 'CommonTable') {
                _type = 'CommonTable'
              } else if (menu.LinkUrl && iframes.includes(menu.LinkUrl.split('?')[0])) {
                _type = 'iframe'
              }
              if (_type !== 'iframe') {
                let pageParam = {}
                try {
                  pageParam = JSON.parse(menu.PageParam)
                } catch (e) {
                  pageParam = {}
                }
                _type = pageParam.Template || _type
              }
              menukeys.push(menu.MenuID)
              menulist.push({
                MenuID: menu.MenuID,
                MenuName: menu.MenuName,
                MenuNo: menu.MenuNo || '',
                EasyCode: menu.EasyCode || '',
                LinkUrl: menu.LinkUrl,
                type: _type
              })
            })
          }
          this.setState({
            thdMenuList: menulist
          })
          this.props.initMenuPermission(_permMenus)
        } else if (result) {
          notification.error({
            top: 92,
@@ -238,7 +275,7 @@
          })
        }
        resolve({permAction: _permAction, permRoles: _permRoles})
        resolve({permAction: _permAction})
      })
    })
    
@@ -252,10 +289,6 @@
      Api.getSystemConfig(_param).then(result => {
        let mainMenu = null
        if (result && result.status) {
          if (result.debug === 'true') { // 是否为debug模式,即可复制菜单参数
            this.props.resetDebug()
          }
          let MainMenuId = sessionStorage.getItem('MainMenu') // 是否为打开新页面
          if (MainMenuId) {
            // 通过url中menuid筛选出选中的主菜单
@@ -283,10 +316,6 @@
            }),
            systems: result.Systems.filter(sys => sys.LinkUrl1 && sys.AppKey !== window.GLOB.appkey)
          })
          if (result.dataM) {
            this.props.modifyDataManager(true)
          }
        } else if (result) {
          notification.error({
            top: 92,
@@ -306,7 +335,7 @@
    let _role = await promiseRole
    this.props.initActionPermission(_role.permRoles, _role.permAction)
    this.props.initActionPermission(_role.permAction)
  }
  reload = () => {
@@ -337,6 +366,9 @@
      let _userName = sessionStorage.getItem('User_Name')
      let _avatar = avatar
      if (sessionStorage.getItem('cloudDataM') === 'true') {
        this.props.modifyDataManager(true)
      }
      if (!state && sessionStorage.getItem('avatar')) {
        _avatar = Utils.getrealurl(sessionStorage.getItem('avatar')) // 头像
      } else if (state && sessionStorage.getItem('CloudAvatar')) {
@@ -427,10 +459,15 @@
          sessionStorage.setItem('CloudFullName', res.FullName)
          sessionStorage.setItem('CloudAvatar', res.icon)
          sessionStorage.setItem('isEditState', 'true')
          sessionStorage.setItem('cloudDataM', res.dataM ? 'true' : '')
          let _avatar = avatar
          if (res.icon) {
            _avatar = Utils.getrealurl(res.icon) // 头像
          }
          if (res.dataM) {
            this.props.modifyDataManager(true)
          }
          if (window.GLOB.systemType === 'production') {
@@ -564,76 +601,13 @@
      _avatar = Utils.getrealurl(_avatar) // 头像
      this.setState({avatar: _avatar})
    }
    this.getRolesMenu()
  }
  componentDidMount () {
    // 获取角色菜单权限
    Api.getSystemConfig({func: 's_Get_TrdMenu_Role'}).then(result => {
      if (!result) return
      if (result.status) {
        let _permMenus = {}
        let menulist = []
        if (result.UserRoles) {
          let iframes = ['Main/Index', 'bda/rdt', 'Home/rdt']
          let menukeys = []
          result.UserRoles.forEach(role => {
            role.RoleMenu.forEach(menu => {
              if (!menu.MenuID) return
              if (menukeys.includes(menu.MenuID)) {
                console.warn('s_Get_TrdMenu_Role重复的菜单ID:' + menu.MenuID)
                return
              }
              _permMenus[menu.MenuID] = true
              let _type = ''
              if (menu.LinkUrl === 'CommonTable') {
                _type = 'CommonTable'
              } else if (menu.LinkUrl && iframes.includes(menu.LinkUrl.split('?')[0])) {
                _type = 'iframe'
              }
              if (_type !== 'iframe') {
                let pageParam = {}
                try {
                  pageParam = JSON.parse(menu.PageParam)
                } catch (e) {
                  pageParam = {}
                }
                _type = pageParam.Template || _type
              }
              menukeys.push(menu.MenuID)
              menulist.push({
                MenuID: menu.MenuID,
                MenuName: menu.MenuName,
                MenuNo: menu.MenuNo || '',
                EasyCode: menu.EasyCode || '',
                LinkUrl: menu.LinkUrl,
                type: _type
              })
            })
          })
        }
        this.setState({
          thdMenuList: menulist
        })
        this.props.initMenuPermission(_permMenus)
      } else {
        notification.error({
          top: 92,
          message: result.message,
          duration: 10
        })
      }
    })
    // 获取系统的版本信息
    // 获取系统的版本信息,延时查询
    setTimeout(() => {
    new Promise((resolve, reject) => {
      Api.getAppVersion(resolve, reject)
    }).then(res => {
@@ -642,6 +616,7 @@
        newVersion: res.newVersion
      })
    })
    }, 1000)
  }
  shouldComponentUpdate (nextProps, nextState) {
@@ -845,12 +820,11 @@
    modifyMainMenu: (selectmenu) => dispatch(modifyMainMenu(selectmenu)),
    resetEditState: (state) => dispatch(resetEditState(state)),
    resetEditLevel: (level) => dispatch(resetEditLevel(level)),
    initActionPermission: (permRoles, permAction) => dispatch(initActionPermission(permRoles, permAction)),
    initActionPermission: (permAction) => dispatch(initActionPermission(permAction)),
    initPermission: (sysRoles, permFuncField) => dispatch(initPermission(sysRoles, permFuncField)),
    initMenuPermission: (permMenus) => dispatch(initMenuPermission(permMenus)),
    modifyDataManager: (dataManager) => dispatch(modifyDataManager(dataManager)),
    resetState: () => dispatch(resetState()),
    resetDebug: () => dispatch(resetDebug()),
    logout: () => dispatch(logout())
  }
}