king
2023-08-11 fbe91f6f07f6296bbf6c30029c7f36014fe66e79
src/tabviews/basetable/index.jsx
@@ -4,8 +4,6 @@
import { notification, Spin, Row, Col } from 'antd'
import Api from '@/api'
import zhCN from '@/locales/zh-CN/main.js'
import enUS from '@/locales/en-US/main.js'
import Utils from '@/utils/utils.js'
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
@@ -30,16 +28,13 @@
  }
  state = {
    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
    ContainerId: Utils.getuuid(), // 菜单外层html Id
    BID: '',              // 页面跳转时携带ID
    loadingview: true,    // 页面加载中
    viewlost: false,      // 页面丢失:1、未获取到配置-页面丢失;2、页面未启用
    lostmsg: '',          // 页面丢失时的提示信息
    config: null,         // 页面配置信息,包括组件等
    mainSearch: null,     // 主搜索
    userConfig: null,     // 用户自定义设置
    data: null,           // 列表数据集
    loading: false,       // 列表数据加载中
    visible: false,       // 标签页控制
    shortcuts: null,      // 快捷键
@@ -55,10 +50,6 @@
    let _param = {
      func: 'sPC_Get_LongParam',
      MenuID: MenuID
    }
    if (window.GLOB.mkHS) {
      _param.appkey = '20191106103859640976D6E924E464D029CF0'
    }
    
    let result = await Api.getCacheConfig(_param)
@@ -92,7 +83,7 @@
        this.setState({
          viewlost: true,
          loadingview: false,
          lostmsg: this.state.dict['main.view.unenabled']
          lostmsg: '抱歉,您访问的页面未启用,请联系管理员。'
        })
        return
      }
@@ -136,11 +127,6 @@
      let userName = sessionStorage.getItem('User_Name') || ''
      let fullName = sessionStorage.getItem('Full_Name') || ''
      if (sessionStorage.getItem('isEditState') === 'true') {
        userName = sessionStorage.getItem('CloudUserName') || ''
        fullName = sessionStorage.getItem('CloudFullName') || ''
      }
      let regs = [
        { reg: /@userName@/ig, value: `'${userName}'` },
        { reg: /@fullName@/ig, value: `'${fullName}'` }
@@ -179,20 +165,30 @@
      }
      
      // 获取主搜索条件
      let mainSearch = []
      config.components.forEach(component => {
        if (component.type === 'tabs') return
        component.search = component.search.map(item => {
          item.oriInitval = item.initval
          if (['text', 'select', 'link'].includes(item.type) && param.$searchkey === item.field) {
            item.initval = param.$searchval
        if (param.$searchkey) {
          component.search = component.search.map(item => {
            if (['text', 'select', 'link'].includes(item.type) && param.$searchkey === item.field) {
              item.initval = param.$searchval
            }
            return item
          })
          component.$searches = Utils.initMainSearch(component.search)
        }
        if (component.$searches.length) {
          component.$main = true
          window.GLOB.SearchBox.set(MenuID, component.$searches)
          if (component.$s_req) {
            window.GLOB.SearchBox.set(MenuID + 'required', true)
          }
          return item
        })
        mainSearch = Utils.initMainSearch(component.search)
        }
      })
      let BID = param.$BID || ''
@@ -203,8 +199,7 @@
        BID: BID,
        shortcuts: shortcuts.length > 0 ? shortcuts : null,
        config,
        autoMatic,
        mainSearch
        autoMatic
      }, () => {
        setTimeout(() => { // 延时加载状态
          this.setState({
@@ -272,6 +267,7 @@
  filterComponent = (components, roleId, permAction, skip, urlparam, pageId, MenuName) => {
    return components.filter(item => {
      item.$pageId = pageId
      item.$searchId = pageId
      item.$menuname = (MenuName || '') + '-' + (item.name || '主表')
@@ -302,9 +298,9 @@
      }
      // 搜索条件初始化
      if (item.search && item.search.length > 0) {
        item.search = Utils.initSearchVal(item.search)
      }
      Utils.initSearchVal(item)
      item.$searches = Utils.initMainSearch(item.search)
      if (item.setting.supModule) {
        let pid = item.setting.supModule.pop()
@@ -432,6 +428,7 @@
          if (cell.hidden === 'true') return false
          cell.logLabel = item.$menuname + '-' + cell.label
          cell.Ot = cell.Ot || 'requiredSgl'
          cell.ContainerId = this.state.ContainerId
          cell.syncComponentId = cell.syncComponent ? (cell.syncComponent.pop() || '') : ''
          cell.$menuId = item.uuid
@@ -516,6 +513,13 @@
      }
      component.setting.useMSearch = component.setting.useMSearch === 'true'
      if (component.setting.useMSearch) {
        if (!window.GLOB.SearchBox.has(component.$searchId)) {
          component.setting.useMSearch = false
        } else if (window.GLOB.SearchBox.has(component.$searchId + 'required')) {
          component.$s_req = true
        }
      }
      if (component.setting.interType !== 'system') { // 不使用系统函数时
        component.setting.sync = 'false'
@@ -544,10 +548,8 @@
      }
  
      if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
        component.setting.dataresource = component.setting.dataresource.replace(/\$@/ig, '/*').replace(/@datam@/ig, '\'Y\'')
        component.setting.dataresource = component.setting.dataresource.replace(/@\$/ig, '*/')
        _customScript = _customScript.replace(/\$@/ig, '/*').replace(/@datam@/ig, '\'Y\'')
        _customScript = _customScript.replace(/@\$/ig, '*/')
        component.setting.dataresource = component.setting.dataresource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
        _customScript = _customScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
      } else {
        component.setting.dataresource = component.setting.dataresource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
        _customScript = _customScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
@@ -559,6 +561,10 @@
      })
      component.setting.customScript = _customScript // 整理后自定义脚本
      if (component.setting.laypage) {
        component.setting.custompage = /@pageSize@/i.test(component.setting.dataresource + component.setting.customScript)
      }
      component.setting.delay = delay
      delay += 20
@@ -628,6 +634,9 @@
      } else {
        window.GLOB.CacheData.delete(item.uuid)
      }
      if (item.type !== 'tabs' && item.$main) {
        window.GLOB.SearchBox.delete(item.$searchId)
      }
    })
  }
@@ -644,20 +653,13 @@
      config: null,         // 页面配置信息,包括组件等
      loading: false,       // 列表数据加载中
      shortcuts: null,
      data: ''
    }, () => {
      this.loadconfig()
    })
  }
  resetSearch = (search) => {
    this.setState({mainSearch: null}, () => {
      this.setState({mainSearch: search})
    })
  }
  getComponents = () => {
    const { config, data, mainSearch } = this.state
    const { config } = this.state
    if (!config || !config.components) return
@@ -665,13 +667,13 @@
      if (item.type === 'tabs') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvTabs config={item} mainSearch={mainSearch} />
            <AntvTabs config={item}/>
          </Col>
        )
      } else {
        return (
          <Col span={item.width} key={item.uuid}>
            <MkBaseTable config={item} data={data}/>
            <MkBaseTable config={item}/>
          </Col>
        )
      }
@@ -686,9 +688,9 @@
        {(loadingview || loading) ? <Spin className="view-spin" size="large" /> : null}
        <Row className="component-wrap">{this.getComponents()}</Row>
        {config && window.GLOB.breakpoint ? <DebugTable /> : null}
        {!window.GLOB.mkHS && config && autoMatic ? <AutoMatic autoMatic={autoMatic} config={config.components[0]} /> : null}
        {!window.GLOB.mkHS && config && autoMatic ? <AutoMatic autoMatic={autoMatic} tabId={config.MenuID} config={config.components[0]} /> : null}
        {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <TableNodes config={config} /> : null}
        {!window.GLOB.mkHS && config ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts || []}/> : null}
        {!window.GLOB.mkHS && config ? <SettingComponent config={config} shortcuts={shortcuts || []}/> : null}
        {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
      </div>
    )