king
2025-05-13 feb1479b80e84e11d1008e87765593e6f5468622
src/tabviews/rolemanage/index.jsx
@@ -6,7 +6,6 @@
import md5 from 'md5'
import Api from '@/api'
import options from '@/store/options.js'
import Utils from '@/utils/utils.js'
import MKEmitter from '@/utils/events.js'
import './index.scss'
@@ -20,7 +19,6 @@
export default class RoleManage extends Component {
  static propTpyes = {
    MenuNo: PropTypes.string, // 菜单参数
    MenuID: PropTypes.string  // 菜单Id
  }
@@ -75,8 +73,6 @@
  }
  getAppList = () => {
    if (options.sysType !== 'local') return
    let param = {
      func: 's_get_kei'
    }
@@ -110,7 +106,8 @@
   */
  getMainMenuList = async () => {
    let param = {
      func: 's_rolemenu_get_FstMenu'
      func: 's_rolemenu_get_FstMenu',
      version: 1
    }
    let result = await Api.getSystemConfig(param)
@@ -120,7 +117,7 @@
        loading: false,
        mainMenus: result.data.map(item => {
          return {
            title: item.MenuName,
            title: item.langname ? item.MenuName + '(' + item.langname + ')' : item.MenuName,
            key: item.MenuID,
            children: [],
            selected: true
@@ -150,7 +147,8 @@
    let param = {
      func: 's_rolemenu_get_FunMenu',
      RoleID: selectRoleId,
      SelectedType: ''
      SelectedType: '',
      version: 1
    }
    let result = await Api.getSystemConfig(param)
@@ -164,9 +162,19 @@
      //     item.ParentID = item.TypeCharOne
      //   }
      // })
      // let map = new Map() // 去重
      // result.data = result.data.filter(item => {
      //   if (map.has(item.ParentID + item.MenuID)) return false
      //   map.set(item.ParentID + item.MenuID, true)
      //   return true
      // })
      let _tree = this.getTree(fromJS(mainMenus).toJS(), result.data)
      if (_tree[0]) {
        if (_tree[0].key === 'PC' && _tree[0].children) {
        if (_tree[0].key.indexOf('PC') > -1 && _tree[0].children) {
          // _openKeys = _tree[0].children.map(cell => cell.key)
          this.getOpenNode(_tree[0].children[0], _openKeys)
        } else {
@@ -200,7 +208,8 @@
    let param = {
      func: 's_rolemenu_get_Menulist',
      RoleID: selectRoleId
      RoleID: selectRoleId,
      version: 1
    }
    this.setState({
@@ -219,7 +228,7 @@
      this.getCheckedKeys(fromJS(menuTrees).toJS(), _initKeys)
      if (menuTrees[0]) {
        if (menuTrees[0].key === 'PC' && menuTrees[0].children) {
        if (menuTrees[0].key.indexOf('PC') > -1 && menuTrees[0].children) {
          this.getOpenNode(menuTrees[0].children[0], _openKeys)
        } else {
          this.getOpenNode(menuTrees[0], _openKeys)
@@ -231,7 +240,7 @@
      let _tree = this.getSelectTree(fromJS(menuTrees).toJS(), Keys)
      if (_tree[0]) {
        if (_tree[0].key === 'PC' && _tree[0].children) {
        if (_tree[0].key.indexOf('PC') > -1 && _tree[0].children) {
          this.getOpenNode(_tree[0].children[0], _openkeys)
        } else {
          this.getOpenNode(_tree[0], _openkeys)
@@ -271,7 +280,8 @@
      RoleID: selectRoleId,
      TypeCharOne: selectApp.kei_no,
      typename: selectSubApp.typename,
      lang: selectSubApp.lang
      lang: selectSubApp.lang,
      version: 1
    }
    this.setState({
@@ -360,7 +370,7 @@
  /**
   * @description 获取权限分配树
   */
  getTree = (parents, options) => {
  getTree = (parents, options, addSelf) => {
    parents.forEach(parent => {
      parent.children = []
@@ -371,7 +381,7 @@
            title: option.MenuName,
            key: option.MenuID,
            addSelf: option.OnlySelf === 'true',
            tabs: option.Tabs
            // tabs: option.Tabs
          })
        }
      })
@@ -379,13 +389,13 @@
      if (parent.children.length === 0) {
        parent.children = null
        // 针对标签,生成新的id,并保存关联关系(标签不唯一)
        if (parent.tabs) {
          let _uuid = Utils.getuuid()
          linkMap.set(_uuid, parent.key)
        // if (parent.tabs) {
        //   let _uuid = Utils.getuuid()
        //   linkMap.set(_uuid, parent.key)
          parent.originKey = parent.key
          parent.key = _uuid
        }
        //   parent.originKey = parent.key
        //   parent.key = _uuid
        // }
      } else {
        // 三级菜单创建子项
        if (parent.addSelf) {
@@ -396,20 +406,29 @@
          parent.children.unshift({
            title: parent.title + '(仅页面)',
            key: _uuid,
            isSubView: true
            // isSubView: true
          })
        } else if (addSelf) {
          let _uuid = Utils.getuuid()
          linkMap.set(_uuid, parent.key)
          parent.subKey = _uuid
          parent.children.unshift({
            title: parent.title + '(表格)',
            key: _uuid,
          })
        }
        // 针对标签,生成新的id,并保存关联关系(标签不唯一)
        if (parent.tabs) {
          let _uuid = Utils.getuuid()
          linkMap.set(_uuid, parent.key)
        // if (parent.tabs) {
        //   let _uuid = Utils.getuuid()
        //   linkMap.set(_uuid, parent.key)
          
          parent.originKey = parent.key
          parent.key = _uuid
        }
        //   parent.originKey = parent.key
        //   parent.key = _uuid
        // }
        parent.children = this.getTree(parent.children, options)
        parent.children = this.getTree(parent.children, options, parent.addSelf)
      }
    })
    return parents
@@ -446,8 +465,8 @@
          }
        }
        return true
      } else if (parent.isSubView) {
        return true
      // } else if (parent.isSubView) {
      //   return true
      }
      return false
    })
@@ -556,6 +575,7 @@
          submitloading: false
        }, () => {
          this.getSelectMenuList()
          this.clearBackSqlCache()
        })
        if (window.GLOB.mainSystemApi) {
          Api.genericInterface(localParam).then(res => {
@@ -575,6 +595,20 @@
        notification.warning({
          top: 92,
          message: result.message,
          duration: 5
        })
      }
    })
  }
  clearBackSqlCache = () => {
    if (!window.backend) return
    Api.cacheInterface({}).then(res => {
      if (!res.status) {
        notification.warning({
          top: 92,
          message: res.message || '缓存清空失败!',
          duration: 5
        })
      }
@@ -844,10 +878,8 @@
  render() {
    const { activeKey, filterRoleList, applist, selectApp, selectSubApp, loading, loadingTree, loadingAppTree, primarykey, menuTrees, appTrees, checkedKeys, appCheckedKeys, menuOpenKeys, selectMenuTrees, selectAppTrees, selectRoleId, selectMenuOpenKeys, selectAppOpenKeys, submitloading, appOpenKeys } = this.state
    let ismanage = options.sysType !== 'local'
    return (
      <div className={'rolemanage' + (ismanage ? ' manager' : '')}>
      <div className={'rolemanage' + (applist.length === 0 ? ' manager' : '')}>
        {loading && <Spin size="large" />}
        <Tabs activeKey={activeKey} type="card" onChange={this.changeType}>
          <TabPane tab="管理系统" key="manage">