king
2020-12-04 d441fa1e1cc80f4ea462a750a42a2b25c1f2b202
src/tabviews/custom/index.jsx
@@ -48,6 +48,7 @@
    loading: false,       // 列表数据加载中
    visible: false,       // 标签页控制
    treevisible: false,   // 菜单结构树弹框显示隐藏控制
    debug: sessionStorage.getItem('debug') === 'true'
  }
  /**
@@ -111,8 +112,9 @@
      }
      // 权限过滤
      let roleId = sessionStorage.getItem('role_id') || '' // 角色ID
      if (this.props.menuType !== 'HS') {
        config.components = this.filterComponent(config.components)
        config.components = this.filterComponent(config.components, roleId)
      }
      // 获取主搜索条件
@@ -130,16 +132,6 @@
            } else if (param.data && param.data[item.field]) {
              item.initval = param.data[item.field]
            }
          }
          if (!item.blacklist || item.blacklist.length === 0) return item
          let _black = item.blacklist.filter(v => {
            return this.props.permRoles.indexOf(v) !== -1
          })
          if (_black.length > 0) {
            item.Hide = 'true'
          }
          return item
@@ -189,19 +181,18 @@
    }
  }
  filterComponent = (components) => {
  filterComponent = (components, roleId) => {
    return components.filter(item => {
      if (item.type === 'tabs') {
        if (item.setting.blacklist && item.setting.blacklist.length > 0) {
          let _black = item.setting.blacklist.filter(v => {
            return this.props.permRoles.indexOf(v) !== -1
          })
          if (_black.length > 0) return false
        if (
          item.setting.blacklist && item.setting.blacklist.length > 0 &&
          item.setting.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0
        ) {
          return false
        }
        item.subtabs = item.subtabs.map(tab => {
          tab.components = this.filterComponent(tab.components)
          tab.components = this.filterComponent(tab.components, roleId)
          return tab
        })
@@ -217,21 +208,31 @@
        })
        item.parentIds = supIds
      } else if (item.type === 'pie' || item.type === 'bar' || item.type === 'line') {
        if (item.plot.blacklist && item.plot.blacklist.length > 0) {
          let _black = item.plot.blacklist.filter(v => {
            return this.props.permRoles.indexOf(v) !== -1
          })
          if (_black.length > 0) return false
        if (
          item.plot.blacklist && item.plot.blacklist.length > 0 &&
          item.plot.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0
        ) {
          return false
        }
      } else {
        if (item.wrap.blacklist && item.wrap.blacklist.length > 0) {
          let _black = item.wrap.blacklist.filter(v => {
            return this.props.permRoles.indexOf(v) !== -1
          })
          if (_black.length > 0) return false
        if (
          item.wrap.blacklist && item.wrap.blacklist.length > 0 &&
          item.wrap.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0
        ) {
          return false
        }
      }
      if (item.search && item.search.length > 0) {
        item.search = item.search.map(cell => {
          cell.oriInitval = cell.initval
          if (!cell.blacklist || cell.blacklist.length === 0) return cell
          if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) {
            cell.Hide = 'true'
          }
          return item
        })
      }
      return true
    })
@@ -282,7 +283,7 @@
        component.setting.dataresource = '(' + component.setting.dataresource + ') tb'
      }
  
      if (this.props.dataManager) { // 数据权限
      if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
        component.setting.dataresource = component.setting.dataresource.replace(/\$@/ig, '/*')
        component.setting.dataresource = component.setting.dataresource.replace(/@\$/ig, '*/')
        _customScript = _customScript.replace(/\$@/ig, '/*')
@@ -528,7 +529,7 @@
  }
  getComponents = () => {
    const { menuType, dataManager } = this.props
    const { menuType } = this.props
    const { config, BID, data, mainSearch } = this.state
    if (!config || !config.components) return
@@ -537,19 +538,19 @@
      if (item.type === 'bar' || item.type === 'line') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvBarAndLine config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
            <AntvBarAndLine config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
          </Col>
        )
      } else if (item.type === 'pie') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvPie config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
            <AntvPie config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
          </Col>
        )
      } else if (item.type === 'search') {
        return (
          <Col span={item.width} key={item.uuid}>
            <MainSearch config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} refreshdata={this.resetSearch} />
            <MainSearch config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} refreshdata={this.resetSearch} />
          </Col>
        )
      } else if (item.type === 'tabs') {
@@ -561,25 +562,25 @@
      } else if (item.type === 'card' && item.subtype === 'datacard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <DataCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
            <DataCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
          </Col>
        )
      } else if (item.type === 'card' && item.subtype === 'propcard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <PropCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
            <PropCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'tablecard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TableCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
            <TableCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'normaltable') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalTable config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
            <NormalTable config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
          </Col>
        )
      } else {
@@ -590,13 +591,13 @@
  render() {
    const { menuType, MenuNo } = this.props
    const { loadingview, viewlost, config, loading } = this.state
    const { debug, loadingview, viewlost, config, loading } = this.state
    return (
      <div className="custom-page-wrap" id={this.state.ContainerId} style={config ? config.style : null}>
        {(loadingview || loading) ? <Spin size="large" /> : null}
        <Row>{this.getComponents()}</Row>
        {MenuNo && options.sysType !== 'cloud' && menuType !== 'HS' ? <Button
        {debug && MenuNo && options.sysType !== 'cloud' && menuType !== 'HS' ? <Button
          icon="copy"
          shape="circle"
          className="common-table-copy"
@@ -612,9 +613,7 @@
  return {
    menuType: state.editLevel,
    refreshTab: state.refreshTab,
    permAction: state.permAction,
    permRoles: state.permRoles,
    dataManager: state.dataManager
    permAction: state.permAction
  }
}