king
2022-07-22 0c439ced2c97905cb2b02f5f689a37b19369fb8a
2022-07-22
21 文件已重命名
63个文件已修改
1 文件已复制
1个文件已删除
945 ■■■■■ 已修改文件
src/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/action-type.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/action.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/reducer.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/calendar/index.jsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/index.jsx 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/balcony/index.jsx 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/data-card/index.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/prop-card/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/table-card/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/carousel/data-card/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/carousel/prop-card/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-bar-line/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-dashboard/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-pie/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-scatter/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/custom-chart/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/code/sand-box/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/editor/braft-editor/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/simple-form/index.jsx 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/step-form/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/tab-form/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/group/normal-group/index.jsx 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/share/normalTable/index.jsx 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/share/normalheader/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/share/tabtransfer/index.jsx 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/edit-table/index.jsx 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/normal-table/index.jsx 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/tabs/antv-tabs/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/timeline/normal-timeline/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/tree/antd-tree/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/index.jsx 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/actionList/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/index.jsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/scriptmanage/actionList/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/scriptmanage/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/index.jsx 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtabtable/index.jsx 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/treepage/index.jsx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/verupmanage/actionList/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/verupmanage/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/verupmanage/subtabtable/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/excelInbutton/index.jsx 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/exceloutbutton/index.jsx 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/normalbutton/index.jsx 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/printbutton/index.jsx 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/mutilform/index.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/normalTable/index.jsx 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/topSearch/index.jsx 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/comtableconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/menuconfig/menuform/index.scss 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/subtableconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/treepageconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils-datamanage.js 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/billprint/index.jsx 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/dragelement/card.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/dragelement/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/dragelement/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/dragelement/itemtypes.js 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/menuform/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/editfirstmenu/menuform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/index.jsx 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editsecmenu/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editsecmenu/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editthdmenu/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editthdmenu/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editthdmenu/menuform/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editthdmenu/menuform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editthdmenu/preview/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/editthdmenu/preview/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/index.jsx 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/menuelement/card.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/menuelement/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/menuelement/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/menuelement/itemtypes.js 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/menuform/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/sidemenu/menuform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.jsx 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mobdesign/index.jsx 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/pcdesign/index.jsx 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sso/index.jsx 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/index.js
@@ -2,6 +2,7 @@
import ReactDOM from 'react-dom'
import Route from './router'
import { Provider } from 'react-redux'
import md5 from 'md5'
import store from '@/store'
import * as serviceWorker from './serviceWorker'
import options, { styles } from '@/store/options.js'
@@ -74,6 +75,7 @@
    GLOB.WXAppID = config.WXAppID || ''
    GLOB.WXminiAppID = config.WXminiAppID || ''
    GLOB.accessToken = {}
    GLOB.mkHS = false
    if (config.externalDatabase !== false && config.externalDatabase !== 'false' && config.externalDatabase !== undefined) {
      GLOB.externalDatabase = config.externalDatabase ? `[${config.externalDatabase}]..` : ''
@@ -224,6 +226,20 @@
      sessionStorage.setItem('lang', config.defaultLang !== 'en-US' ? 'zh-CN' : 'en-US')
    }
    let _level = 10
    let _Mlevel = sessionStorage.getItem('Member_Level')
    if (_Mlevel) {
      if (_Mlevel === md5('mksoft' + GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + 10)) {
        _level = 10
      } else if (_Mlevel === md5('mksoft' + GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + 20)) {
        _level = 20
      } else if (_Mlevel === md5('mksoft' + GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + 30)) {
        _level = 30
      }
    }
    GLOB.memberLevel = _level
    Object.defineProperty(GLOB, 'appId', {
      writable: false,
      value: GLOB.appId
src/store/action-type.js
@@ -19,8 +19,5 @@
// 初始化菜单权限
export const INIT_MENUPERMISSION = 'INIT_MENUPERMISSION'
// 修改会员等级
export const MODIFY_MEMBERLEVEL = 'MODIFY_MEMBERLEVEL'
// 退出
export const LOGOUT = 'LOGOUT'
src/store/action.js
@@ -48,14 +48,6 @@
  }
}
// 初始化菜单权限
export const modifyMemberLevel = (memberLevel) => {
  return {
    type: user.MODIFY_MEMBERLEVEL,
    memberLevel: memberLevel
  }
}
// 退出重置
export const logout = () => {
  return {
src/store/reducer.js
@@ -1,22 +1,9 @@
import md5 from 'md5'
import moment from 'moment'
import * as Type from './action-type'
let _mainMenu = null
let _url = window.location.href.split('#')[0]
let _collapse = localStorage.getItem('collapse') === 'true'
let _level = 10
let _Mlevel = sessionStorage.getItem('Member_Level')
if (_Mlevel) {
  if (_Mlevel === md5('mksoft' + moment().format('YYYYMM') + 10)) {
    _level = 10
  } else if (_Mlevel === md5('mksoft' + moment().format('YYYYMM') + 20)) {
    _level = 20
  } else if (_Mlevel === md5('mksoft' + moment().format('YYYYMM') + 30)) {
    _level = 30
  }
}
if (localStorage.getItem(_url + '-sideHidden') === 'true') {
  _mainMenu = ''
}
@@ -28,7 +15,6 @@
  editLevel: null,      // 编辑菜单级别,值为level1、level2、level3、HS
  permAction: {},       // 用户按钮权限
  permMenus: [],        // 用户三级菜单列表
  memberLevel: _level,  // 会员等级
}
// 用户消息
@@ -69,12 +55,6 @@
      return {
        ...state,
        permMenus: action.permMenus
      }
    case Type.MODIFY_MEMBERLEVEL:
      // 修改会员等级
      return {
        ...state,
        memberLevel: action.memberLevel
      }
    case Type.LOGOUT:
      return {
src/tabviews/calendar/index.jsx
@@ -76,7 +76,7 @@
      }
      
      // HS不使用自定义设置
      if (result.LongParamUser && this.props.menuType !== 'HS') {
      if (result.LongParamUser && !window.GLOB.mkHS) {
        try { // 配置信息解析
          userConfig = JSON.parse(window.decodeURIComponent(window.atob(result.LongParamUser)))
          _curUserConfig = userConfig[this.props.MenuID]
@@ -106,7 +106,7 @@
      }
      // 权限过滤
      if (this.props.menuType !== 'HS') {
      if (!window.GLOB.mkHS) {
        if (config.tab && !permAction[config.tab.linkTab]) {
          config.tab = null
        }
@@ -298,7 +298,7 @@
    if (setting.interType === 'inner') {
      param.func = setting.innerFunc
    } else {
      if (this.props.menuType === 'HS') {
      if (window.GLOB.mkHS) {
        if (setting.sysInterface === 'true' && options.cloudServiceApi) {
          param.rduri = options.cloudServiceApi
        } else if (setting.sysInterface !== 'true') {
@@ -435,7 +435,7 @@
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
    param.DateCount = ''
    if (this.props.menuType === 'HS') { // 云端数据验证
    if (window.GLOB.mkHS) { // 云端数据验证
      param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
    }
@@ -538,17 +538,16 @@
  }
  render() {
    const { menuType } = this.props
    const { BID, setting, searchlist, loadingview, viewlost, config, loading, data, triggerTime } = this.state
    return (
      <div className="calendar-page" id={this.state.ContainerId}>
        {loadingview && <Spin size="large" />}
        {searchlist && searchlist.length > 0 ?
          <MainSearch BID={BID} searchlist={searchlist} setting={setting} menuType={menuType} refreshdata={this.refreshbysearch}/> : null
          <MainSearch BID={BID} searchlist={searchlist} setting={setting} refreshdata={this.refreshbysearch}/> : null
        }
        {config && config.calendar ? <CalendarComponent calendar={config.calendar} loading={loading} data={data} triggerDate={this.triggerDate} changeDate={this.changeDate}/> : null}
        {menuType !== 'HS' && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        <Modal
          title={config.tab ? config.tab.label : ''}
          width={'80vw'}
@@ -575,7 +574,6 @@
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    permAction: state.permAction
  }
}
src/tabviews/commontable/index.jsx
@@ -100,7 +100,7 @@
      }
      
      // HS不使用自定义设置
      if (result.LongParamUser && this.props.menuType !== 'HS') {
      if (result.LongParamUser && !window.GLOB.mkHS) {
        try { // 配置信息解析
          let userConfig = JSON.parse(window.decodeURIComponent(window.atob(result.LongParamUser)))
          if (userConfig && !userConfig.version) {
@@ -158,7 +158,7 @@
      config = updateCommonTable(config)
      // 权限过滤
      if (this.props.menuType !== 'HS') {
      if (!window.GLOB.mkHS) {
        config.action = config.action.filter(item => item.hidden !== 'true' && permAction[item.uuid])
        config.tabgroups.forEach(group => {
          group.sublist = group.sublist.filter(tab => {
@@ -538,7 +538,7 @@
  loadOutResource = () => {
    const { setting, search, BID } = this.state
    let param = UtilsDM.getPrevQueryParams(setting, search, BID, this.props.menuType)
    let param = UtilsDM.getPrevQueryParams(setting, search, BID)
    if (setting.execType === 'sync') {
      this.setState({
@@ -658,7 +658,7 @@
        param.BID = BID
      }
      if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
      if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
    } else {
@@ -713,7 +713,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, search, _orderBy, pageIndex, pageSize, BID, this.props.menuType)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, search, _orderBy, pageIndex, pageSize, BID)
    let result = await Api.genericInterface(param)
@@ -797,7 +797,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, search, _orderBy, pageIndex, pageSize, BID, this.props.menuType, id)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, search, _orderBy, pageIndex, pageSize, BID, id)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -865,7 +865,7 @@
    if (statFields.length === 0 || !(setting.interType === 'system' || (setting.interType === 'custom' && setting.requestMode === 'system')) || !setting.dataresource) return
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getStatQueryDataParams(setting, statFields, search, _orderBy, BID, this.props.menuType)
    let param = UtilsDM.getStatQueryDataParams(setting, statFields, search, _orderBy, BID)
    Api.genericInterface(param).then(res => {
      if (res.status) {
@@ -1124,14 +1124,14 @@
  }
  render() {
    const { menuType, MenuID } = this.props
    const { MenuID } = this.props
    const { BID, setting, searchlist, pageSize, actions, columns, loadingview, viewlost, pickup, config, chartId, search, selectedData, shortcuts, autoMatic } = this.state
    return (
      <div className="commontable" id={this.state.ContainerId}>
        {loadingview ? <Spin size="large" /> : null}
        {searchlist && searchlist.length ?
          <MainSearch BID={BID} searchlist={searchlist} setting={setting} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
          <MainSearch BID={BID} searchlist={searchlist} setting={setting} refreshdata={this.refreshbysearch}/> : null
        }
        {setting && config.charts ? <Row className="chart-view" gutter={16}>
          {/* 视图组 */}
@@ -1272,9 +1272,9 @@
            })}
          </Tabs>))
        }
        {menuType !== 'HS' && autoMatic ? <AutoMatic autoMatic={autoMatic} config={config} /> : null}
        {menuType !== 'HS' && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {menuType !== 'HS' && shortcuts ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts} permAction={this.props.permAction}/> : null}
        {!window.GLOB.mkHS && autoMatic ? <AutoMatic autoMatic={autoMatic} config={config} /> : null}
        {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {!window.GLOB.mkHS && shortcuts ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts} permAction={this.props.permAction}/> : null}
        {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
      </div>
    )
@@ -1283,7 +1283,6 @@
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    permAction: state.permAction,
    permMenus: state.permMenus
  }
src/tabviews/custom/components/card/balcony/index.jsx
@@ -18,7 +18,6 @@
    BID: PropTypes.any,
    data: PropTypes.array,
    config: PropTypes.object,
    menuType: PropTypes.any,
  }
  state = {
@@ -297,7 +296,6 @@
  }
  async loadData (hastimer) {
    const { menuType } = this.props
    const { config, arr_field, BID, BData } = this.state
    if (config.wrap.datatype === 'static') {
@@ -321,7 +319,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/card/data-card/index.jsx
@@ -22,7 +22,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -453,7 +452,7 @@
  }
  async loadData (id) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, pageIndex, search, BID, BData, selected } = this.state
    if (config.setting.supModule && !BID && config.wrap.supKey !== 'false') { // BID 不存在时,不做查询
@@ -503,7 +502,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -564,7 +563,7 @@
   * @description 获取单行数据
   */ 
  async loadLinedata (id) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, pageIndex, search, BID, BData } = this.state
    let searches = fromJS(search).toJS()
@@ -582,7 +581,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID, menuType, id)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID, id)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -739,7 +738,7 @@
            <Spin />
          </div> : null
        }
        <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
        <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} />
        {config.action && config.action.length > 0 ?
          <MainAction
            BID={BID}
src/tabviews/custom/components/card/prop-card/index.jsx
@@ -20,7 +20,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -312,7 +311,7 @@
  }
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID, BData, selected } = this.state
    if (config.wrap.datatype === 'static') {
@@ -341,7 +340,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/card/table-card/index.jsx
@@ -20,7 +20,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -227,7 +226,7 @@
  }
  async loadData () {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, pageIndex, search, BID, BData } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -258,7 +257,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -419,7 +418,7 @@
            <Spin />
          </div> : null
        }
        <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
        <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} />
        {data && data.length > 0 ? <Row className="card-row-list" style={{height: config.wrap.contentHeight}}>
          {data.map(item => this.getLines(item))}
        </Row> : null}
src/tabviews/custom/components/carousel/data-card/index.jsx
@@ -17,7 +17,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -193,7 +192,7 @@
  }
  async loadData () {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID, BData } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -215,7 +214,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/carousel/prop-card/index.jsx
@@ -17,7 +17,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -202,7 +201,7 @@
  }
  async loadData () {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID, BData } = this.state
    if (config.wrap.datatype === 'static') {
@@ -229,7 +228,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -26,7 +26,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -508,7 +507,7 @@
   * @description 数据加载
   */
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID, search } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -542,7 +541,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -1868,7 +1867,7 @@
            <Spin />
          </div> : null
        }
        <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
        <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} />
        <div className="canvas-wrap" ref={ref => this.wrap = ref}>
          {config.plot.download === 'enable' && this.state.chart && !empty ? <DownloadOutlined onClick={this.downloadImage} className="system-color download"/> : null}
          <div className={'chart-action' + (config.plot.download === 'enable' ? ' downable' : '')}>
src/tabviews/custom/components/chart/antv-dashboard/index.jsx
@@ -56,7 +56,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -251,7 +250,7 @@
  }
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -277,7 +276,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/chart/antv-pie/index.jsx
@@ -22,7 +22,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -214,7 +213,7 @@
  }
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, search, BID } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -248,7 +247,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -1061,7 +1060,7 @@
            <Spin />
          </div> : null
        }
        <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
        <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} />
        <div className="canvas-wrap" ref={ref => this.wrap = ref}>
          {config.plot.download === 'enable' && this.state.chart && !empty ? <DownloadOutlined onClick={this.downloadImage} className="system-color download"/> : null}
          <div className={'canvas' + (empty ? ' empty' : '')} id={this.state.chartId}></div>
src/tabviews/custom/components/chart/antv-scatter/index.jsx
@@ -23,7 +23,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -245,7 +244,7 @@
   * @description 数据加载
   */
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID, search } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -280,7 +279,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -444,7 +443,7 @@
            <Spin />
          </div> : null
        }
        <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
        <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} />
        <div className="canvas-wrap" ref={ref => this.wrap = ref}>
          {config.plot.download === 'enable' && this.state.chart && !empty ? <DownloadOutlined onClick={this.downloadImage} className="system-color download"/> : null}
          <div className={'chart-action' + (config.plot.download === 'enable' ? ' downable' : '')}>
src/tabviews/custom/components/chart/custom-chart/index.jsx
@@ -20,7 +20,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -240,7 +239,7 @@
   * @description 数据加载
   */
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID, search } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -274,7 +273,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -377,7 +376,7 @@
            <Spin />
          </div> : null
        }
        <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
        <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} />
        <div className={'canvas' + (empty ? ' empty' : '')} ref={ref => this.wrap = ref}></div>
        {empty ? <Empty description={false}/> : null}
      </div>
src/tabviews/custom/components/code/sand-box/index.jsx
@@ -14,7 +14,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -124,7 +123,7 @@
  }
  async loadData () {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID } = this.state
    if (config.wrap.datatype === 'static') {
@@ -153,7 +152,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/editor/braft-editor/index.jsx
@@ -18,7 +18,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -122,7 +121,7 @@
  }
  async loadData () {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID } = this.state
    if (config.wrap.datatype === 'static') {
@@ -151,7 +150,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/form/simple-form/index.jsx
@@ -23,7 +23,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -132,7 +131,7 @@
    if (config.uuid !== menuId) return
    this.loadData('refresh')
    this.loadData()
  }
  /**
@@ -203,8 +202,8 @@
    }
  }
  async loadData (type) {
    const { mainSearch, menuType } = this.props
  async loadData () {
    const { mainSearch } = this.props
    const { config, arr_field, BID } = this.state
    if (config.wrap.datatype === 'static' || (config.setting.supModule && !BID)) {
@@ -228,7 +227,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/form/step-form/index.jsx
@@ -22,7 +22,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -253,7 +252,7 @@
  }
  async loadData (type) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID } = this.state
    if (config.wrap.datatype === 'static' || (config.setting.supModule && !BID)) {
@@ -277,7 +276,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/form/tab-form/index.jsx
@@ -22,7 +22,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -214,7 +213,7 @@
  }
  async loadData () {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID } = this.state
    if (config.wrap.datatype === 'static' || (config.setting.supModule && !BID)) {
@@ -238,7 +237,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/group/normal-group/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { Col, Empty, notification, Button, Row } from 'antd'
@@ -39,7 +38,6 @@
    bids: PropTypes.any,             // 父级Id集
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 全局搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -130,7 +128,7 @@
  }
  getComponents = () => {
    const { menuType, BID, bids, config } = this.props
    const { BID, bids, config } = this.props
    const { mainSearch, data } = this.state
    if (!config || !config.components || config.components.length === 0) return (<Empty description={false} />)
@@ -146,109 +144,109 @@
      if (item.type === 'bar' || item.type === 'line') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvBarAndLine data={data} config={item} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <AntvBarAndLine data={data} config={item} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'pie') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvPie data={data} config={item} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <AntvPie data={data} config={item} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'dashboard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvDashboard config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <AntvDashboard config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'stepform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalForm config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <NormalForm config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'tabform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TabForm config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <TabForm config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'scatter') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvScatter config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <AntvScatter config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'carousel' && item.subtype === 'datacard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CarouselDataCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <CarouselDataCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'carousel' && item.subtype === 'propcard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CarouselPropCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <CarouselPropCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'card' && item.subtype === 'datacard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <DataCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <DataCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'card' && item.subtype === 'propcard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <PropCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <PropCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'tablecard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TableCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <TableCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'normaltable') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalTable config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <NormalTable config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'editable') {
        return (
          <Col span={item.width} key={item.uuid}>
            <EditTable config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <EditTable config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'tree') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalTree config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <NormalTree config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'editor') {
        return (
          <Col span={item.width} key={item.uuid}>
            <BraftEditor config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <BraftEditor config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'code') {
        return (
          <Col span={item.width} key={item.uuid}>
            <SandBox config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <SandBox config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'balcony') {
        return (
          <Col span={item.width} key={item.uuid}>
            <Balcony config={item} data={data} BID={_bid} menuType={menuType} />
            <Balcony config={item} data={data} BID={_bid}/>
          </Col>
        )
      } else if (item.type === 'chart') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CustomChart config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <CustomChart config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else {
@@ -342,14 +340,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(TabTransfer)
export default TabTransfer
src/tabviews/custom/components/share/normalTable/index.jsx
@@ -1,7 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import md5 from 'md5'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { Table, Typography, Col, Switch, message } from 'antd'
@@ -415,18 +414,18 @@
  }
  UNSAFE_componentWillMount () {
    const { menuType, memberLevel, setting, fields, columns } = this.props
    const { setting, fields, columns } = this.props
    let radio = 5          // 虚化比例
    let _format = false    // 是否虚化处理
    let rowspans = []
    let orderfields = {}
    if (window.GLOB.dataFormat && menuType !== 'HS' && memberLevel) {
    if (window.GLOB.dataFormat && !window.GLOB.mkHS) {
      _format = true
      if (memberLevel >= 30) {
      if (window.GLOB.memberLevel >= 30) {
        radio = 20
      } else if (memberLevel >= 20) {
      } else if (window.GLOB.memberLevel >= 20) {
        radio = 10
      }
    }
@@ -936,15 +935,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(NormalTable)
export default NormalTable
src/tabviews/custom/components/share/normalheader/index.jsx
@@ -9,7 +9,6 @@
class NormalHeader extends Component {
  static propTpyes = {
    BID: PropTypes.any,        // 上级主键值
    menuType: PropTypes.any,   // 菜单类型
    config: PropTypes.object,  // 配置信息
    refresh: PropTypes.func    // 条件刷新
  }
@@ -40,7 +39,7 @@
  }
  render() {
    const { config, menuType, BID } = this.props
    const { config, BID } = this.props
    const { title, show } = this.state
    if (!title && !show) return null
@@ -48,7 +47,7 @@
    return (
      <div className={'normal-header' + (show ? ' header-search' : '')} style={config.headerStyle}>
        <span className="title">{title}</span>
        {show ? <SearchComponent config={config} BID={BID} menuType={menuType} refreshdata={this.props.refresh}/> : null}
        {show ? <SearchComponent config={config} BID={BID} refreshdata={this.props.refresh}/> : null}
      </div>
    )
  }
src/tabviews/custom/components/share/tabtransfer/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { Row, Col, Empty, notification } from 'antd'
@@ -42,7 +41,6 @@
    bids: PropTypes.any,             // 父级Id集
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 全局搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -156,7 +154,7 @@
  }
  getComponents = () => {
    const { menuType, bids, config } = this.props
    const { bids, config } = this.props
    const { mainSearch, data } = this.state
    if (!config || !config.components || config.components.length === 0) return (<Empty description={false} />)
@@ -172,133 +170,133 @@
      if (item.type === 'bar' || item.type === 'line') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvBarAndLine data={data} config={item} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <AntvBarAndLine data={data} config={item} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'pie') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvPie data={data} config={item} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <AntvPie data={data} config={item} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'dashboard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvDashboard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <AntvDashboard config={item} data={data} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'scatter') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvScatter config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <AntvScatter config={item} data={data} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'search') {
        return (
          <Col span={item.width} key={item.uuid}>
            <MainSearch config={item} BID={BID} menuType={menuType} refreshdata={this.resetSearch} />
            <MainSearch config={item} BID={BID} refreshdata={this.resetSearch} />
          </Col>
        )
      } else if (item.type === 'tabs') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvTabs config={item} BID={BID} bids={bids} mainSearch={mainSearch} menuType={menuType} />
            <AntvTabs config={item} BID={BID} bids={bids} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'card' && item.subtype === 'datacard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <DataCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <DataCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'card' && item.subtype === 'propcard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <PropCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <PropCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'carousel' && item.subtype === 'datacard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CarouselDataCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <CarouselDataCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'carousel' && item.subtype === 'propcard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CarouselPropCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <CarouselPropCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'tablecard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TableCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <TableCard config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'normaltable') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalTable config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <NormalTable config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'editable') {
        return (
          <Col span={item.width} key={item.uuid}>
            <EditTable config={item} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <EditTable config={item} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'group' && item.subtype === 'normalgroup') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalGroup config={item} BID={BID} bids={bids} mainSearch={mainSearch} menuType={menuType} />
            <NormalGroup config={item} BID={BID} bids={bids} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'simpleform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <SimpleForm config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <SimpleForm config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'stepform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <StepForm config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <StepForm config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'tabform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TabForm config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
            <TabForm config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'tree') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalTree config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <NormalTree config={item} data={data} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'editor') {
        return (
          <Col span={item.width} key={item.uuid}>
            <BraftEditor config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <BraftEditor config={item} data={data} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'code') {
        return (
          <Col span={item.width} key={item.uuid}>
            <SandBox config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <SandBox config={item} data={data} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'balcony') {
        return (
          <Col span={item.width} key={item.uuid}>
            <Balcony config={item} data={data} BID={BID} menuType={menuType} />
            <Balcony config={item} data={data} BID={BID}/>
          </Col>
        )
      } else if (item.type === 'chart') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CustomChart config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} />
            <CustomChart config={item} data={data} BID={BID} mainSearch={mainSearch}/>
          </Col>
        )
      } else {
@@ -314,14 +312,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(TabTransfer)
export default TabTransfer
src/tabviews/custom/components/table/edit-table/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { notification } from 'antd'
@@ -22,7 +21,6 @@
    BID: PropTypes.any,              // 父级Id
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -202,7 +200,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -265,7 +263,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType, id)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, id)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -356,7 +354,7 @@
    }
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getStatQueryDataParams(setting, config.statFields, searches, _orderBy, BID, this.props.menuType)
    let param = UtilsDM.getStatQueryDataParams(setting, config.statFields, searches, _orderBy, BID)
    Api.genericInterface(param).then(res => {
      if (res.status) {
@@ -580,7 +578,7 @@
      <div className="custom-edit-table" id={'anchor' + config.uuid} style={config.style}>
        <NormalHeader config={config}/>
        {config.search && config.search.length ?
          <MainSearch BID={BID} config={config} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
          <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
        }
        <MainAction
          BID={BID}
@@ -611,14 +609,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(EditableTable)
export default EditableTable
src/tabviews/custom/components/table/normal-table/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { notification, Collapse } from 'antd'
@@ -25,7 +24,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -210,7 +208,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -290,7 +288,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType, id)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, id)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -373,7 +371,7 @@
    }
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getStatQueryDataParams(setting, config.statFields, searches, _orderBy, BID, this.props.menuType)
    let param = UtilsDM.getStatQueryDataParams(setting, config.statFields, searches, _orderBy, BID)
    Api.genericInterface(param).then(res => {
      if (res.status) {
@@ -635,7 +633,7 @@
        {config.wrap.collapse === 'true' ? <Collapse bordered={false} defaultActiveKey="1" expandIconPosition="right">
          <Panel forceRender={true} header={<NormalHeader config={config}/>} key="1">
            {config.search && config.search.length ?
              <MainSearch BID={BID} config={config} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
              <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
            }
            <MainAction
              BID={BID}
@@ -664,7 +662,7 @@
        </Collapse> : <>
          <NormalHeader config={config}/>
          {config.search && config.search.length ?
            <MainSearch BID={BID} config={config} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
            <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
          }
          <MainAction
            BID={BID}
@@ -695,14 +693,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(NormalTable)
export default NormalTable
src/tabviews/custom/components/tabs/antv-tabs/index.jsx
@@ -17,7 +17,6 @@
    bids: PropTypes.any,             // 父级Id集
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
src/tabviews/custom/components/timeline/normal-timeline/index.jsx
@@ -19,7 +19,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -216,7 +215,7 @@
  }
  async loadData () {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID, BData } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -246,7 +245,7 @@
    })
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, config.setting.pageSize, BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, config.setting.pageSize, BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/components/tree/antd-tree/index.jsx
@@ -20,7 +20,6 @@
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
  }
  state = {
@@ -188,7 +187,7 @@
   * @description 数据加载
   */
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { mainSearch } = this.props
    const { config, arr_field, BID } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
@@ -214,7 +213,7 @@
    }
    let _orderBy = config.setting.order || ''
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID, menuType)
    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
src/tabviews/custom/index.jsx
@@ -93,7 +93,7 @@
      }
      // HS不使用自定义设置
      if (result.LongParamUser && this.props.menuType !== 'HS') {
      if (result.LongParamUser && !window.GLOB.mkHS) {
        try { // 配置信息解析
          let userConfig = JSON.parse(window.decodeURIComponent(window.atob(result.LongParamUser)))
          if (userConfig) {
@@ -137,7 +137,7 @@
      // 权限过滤
      let roleId = sessionStorage.getItem('role_id') || '' // 角色ID
      let balMap = new Map()
      let skip = config.permission === 'false' || this.props.menuType === 'HS'
      let skip = config.permission === 'false' || window.GLOB.mkHS
      config.components = this.filterComponent(config.components, roleId, permAction, balMap, skip)
      
      // 获取主搜索条件
@@ -303,7 +303,7 @@
  loadOutResource = (inters) => {
    let setting = inters.shift()
    let param = UtilsDM.getPrevQueryParams(setting, [], this.state.BID, this.props.menuType)
    let param = UtilsDM.getPrevQueryParams(setting, [], this.state.BID)
    Api.genericInterface(param).then(res => {
      if (res.status) {
@@ -410,7 +410,7 @@
        param.BID = this.state.BID
      }
      if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
      if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
    } else {
@@ -1158,7 +1158,6 @@
  }
  getComponents = () => {
    const { menuType } = this.props
    const { config, BID, data, mainSearch } = this.state
    if (!config || !config.components) return
@@ -1172,49 +1171,49 @@
      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} />
            <AntvBarAndLine config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </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} />
            <AntvPie config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'scatter') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvScatter config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <AntvScatter config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'dashboard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvDashboard config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <AntvDashboard config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'simpleform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <SimpleForm config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <SimpleForm config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'stepform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <StepForm config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <StepForm config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'form' && item.subtype === 'tabform') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TabForm config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <TabForm config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'search') {
        return (
          <Col span={item.width} key={item.uuid}>
            <MainSearch config={item} BID={BID} menuType={menuType} refreshdata={this.resetSearch} />
            <MainSearch config={item} BID={BID} refreshdata={this.resetSearch} />
          </Col>
        )
      } else if (item.type === 'tabs') {
@@ -1226,85 +1225,85 @@
      } 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} />
            <DataCard config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </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} />
            <PropCard config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'balcony') {
        return (
          <Col span={item.width} key={item.uuid}>
            <Balcony config={item} data={data} BID={_bid} menuType={menuType} />
            <Balcony config={item} data={data} BID={_bid}/>
          </Col>
        )
      } else if (item.type === 'timeline') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TimeLine config={item} data={data} BID={_bid} menuType={menuType} />
            <TimeLine config={item} data={data} BID={_bid}/>
          </Col>
        )
      } else if (item.type === 'carousel' && item.subtype === 'datacard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CarouselDataCard config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <CarouselDataCard config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'carousel' && item.subtype === 'propcard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CarouselPropCard config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <CarouselPropCard config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </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} />
            <TableCard config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </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} />
            <NormalTable config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'editable') {
        return (
          <Col span={item.width} key={item.uuid}>
            <EditTable config={item} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <EditTable config={item} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'group' && item.subtype === 'normalgroup') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalGroup config={item} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <NormalGroup config={item} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'editor') {
        return (
          <Col span={item.width} key={item.uuid}>
            <BraftEditor config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <BraftEditor config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'tree') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalTree config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <NormalTree config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'code') {
        return (
          <Col span={item.width} key={item.uuid}>
            <SandBox config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <SandBox config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'chart') {
        return (
          <Col span={item.width} key={item.uuid}>
            <CustomChart config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
            <CustomChart config={item} data={data} BID={_bid} mainSearch={mainSearch}/>
          </Col>
        )
      } else if (item.type === 'module' && item.subtype === 'voucher') {
@@ -1320,15 +1319,14 @@
  }
  render() {
    const { menuType } = this.props
    const { loadingview, viewlost, config, loading, shortcuts } = this.state
    return (
      <div className={'custom-page-wrap ' + (loadingview || loading ? 'loading' : '')} id={this.state.ContainerId} style={config ? config.style : null}>
        {(loadingview || loading) ? <Spin className="view-spin" size="large" /> : null}
        <Row className="component-wrap">{this.getComponents()}</Row>
        {menuType !== 'HS' && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {menuType !== 'HS' && shortcuts ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts} permAction={this.props.permAction}/> : null}
        {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {!window.GLOB.mkHS && shortcuts ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts} permAction={this.props.permAction}/> : null}
        {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
      </div>
    )
@@ -1337,7 +1335,6 @@
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    refreshTab: state.refreshTab,
    permAction: state.permAction,
    permMenus: state.permMenus
src/tabviews/formtab/actionList/index.jsx
@@ -11,7 +11,6 @@
class MainAction extends Component {
  static propTpyes = {
    menuType: PropTypes.any,       // 菜单类型,普通菜单或HS
    MenuID: PropTypes.string,      // 菜单ID
    primaryId: PropTypes.string,   // 主键
    actions: PropTypes.array,      // 按钮组
@@ -142,7 +141,7 @@
        param.LText = Utils.formatOptions(param.LText)
      }
      if (this.props.menuType === 'HS' && param.timestamp) { // 云端验证
      if (window.GLOB.mkHS && param.timestamp) { // 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
@@ -208,7 +207,7 @@
        // 外部请求
        _outParam = JSON.parse(JSON.stringify(res))
  
        if (this.props.menuType === 'HS') {
        if (window.GLOB.mkHS) {
          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
            res.rduri = options.cloudServiceApi
          } else if (btn.sysInterface !== 'true') {
src/tabviews/formtab/index.jsx
@@ -103,7 +103,7 @@
        config.tabgroups = _tabgroups
      }
      if (this.props.menuType !== 'HS') {
      if (!window.GLOB.mkHS) {
        config.action = config.action.filter(item => permAction[item.uuid])
        config.tabgroups.forEach(group => {
          group.sublist = group.sublist.filter(tab => {
@@ -214,7 +214,7 @@
          param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          param.secretkey = Utils.encrypt(param.LText, param.timestamp)
          if (this.props.menuType === 'HS') { // 云端数据验证
          if (window.GLOB.mkHS) { // 云端数据验证
            param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
            if (item.database === 'sso' && options.cloudServiceApi) { // 存在云端地址时,使用云端系统参数
@@ -438,7 +438,7 @@
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
    param.DateCount = ''
    if (this.props.menuType !== 'HS') { // 云端数据验证
    if (!window.GLOB.mkHS) { // 云端数据验证
      param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
    }
@@ -456,7 +456,7 @@
    if (setting.interType === 'inner') {
      param.func = setting.innerFunc
    } else {
      if (this.props.menuType === 'HS') {
      if (window.GLOB.mkHS) {
        if (setting.sysInterface === 'true' && options.cloudServiceApi) {
          param.rduri = options.cloudServiceApi
        } else if (setting.sysInterface !== 'true') {
@@ -622,7 +622,6 @@
        }
        {hasform ?
          <FormAction
            menuType={this.props.menuType}
            setting={setting}
            actions={actions}
            dict={this.state.dict}
@@ -661,7 +660,7 @@
            )
          })
        }
        {this.props.menuType !== 'HS' && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
      </div>
    )
@@ -670,7 +669,6 @@
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    permAction: state.permAction
  }
}
src/tabviews/scriptmanage/actionList/index.jsx
@@ -277,7 +277,6 @@
        destroyOnClose
      >
        <MutilForm
          menuType="HS"
          dict={this.props.dict}
          action={execAction}
          inputSubmit={this.handleOk}
src/tabviews/scriptmanage/index.jsx
@@ -308,7 +308,7 @@
    return (
      <div className="script-manage-table" id={this.state.ContainerId}>
        <MainSearch searchlist={searchlist} menuType="HS" refreshdata={this.refreshbysearch}/>
        <MainSearch searchlist={searchlist} refreshdata={this.refreshbysearch}/>
        <MainAction
          BID=""
          type="main"
src/tabviews/subtable/index.jsx
@@ -133,7 +133,7 @@
      config = updateSubTable(config)
      // 权限过滤
      if (this.props.menuType !== 'HS') {
      if (!window.GLOB.mkHS) {
        config.action = config.action.filter(item => item.hidden !== 'true' && permAction[item.uuid])
      } else {
        config.action = config.action.filter(item => item.hidden !== 'true')
@@ -430,7 +430,7 @@
  loadOutResource = (searches) => {
    const { setting, BID } = this.state
    let param = UtilsDM.getPrevQueryParams(setting, searches, BID, this.props.menuType)
    let param = UtilsDM.getPrevQueryParams(setting, searches, BID)
    if (setting.execType === 'sync') {
      this.setState({
@@ -550,7 +550,7 @@
        param.BID = BID
      }
      if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
      if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
    } else {
@@ -611,7 +611,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID)
    let result = await Api.genericInterface(param)
@@ -691,7 +691,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType, id)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, id)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -760,7 +760,7 @@
    if (statFields.length === 0 || !(setting.interType === 'system' || (setting.interType === 'custom' && setting.requestMode === 'system')) || !setting.dataresource) return
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getStatQueryDataParams(setting, statFields, searches, _orderBy, BID, this.props.menuType)
    let param = UtilsDM.getStatQueryDataParams(setting, statFields, searches, _orderBy, BID)
    Api.genericInterface(param).then(res => {
      if (res.status) {
@@ -999,7 +999,7 @@
      <div className="subtable" id={'subtable' + this.props.MenuID}>
        {loadingview && <Spin />}
        {searchlist && searchlist.length ?
          <SubSearch BID={BID} setting={setting} searchlist={searchlist} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
          <SubSearch BID={BID} setting={setting} searchlist={searchlist} refreshdata={this.refreshbysearch}/> : null
        }
        {config && config.charts ? <Row className="chart-view" gutter={16}>
          {/* 视图组 */}
@@ -1130,7 +1130,6 @@
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    permAction: state.permAction,
    permMenus: state.permMenus,
  }
src/tabviews/subtabtable/index.jsx
@@ -128,7 +128,7 @@
      }
      // 权限过滤
      if (this.props.menuType !== 'HS') {
      if (!window.GLOB.mkHS) {
        config.action = config.action.filter(item => item.hidden !== 'true' && permAction[item.uuid])
      } else {
        config.action = config.action.filter(item => item.hidden !== 'true')
@@ -369,7 +369,7 @@
  loadOutResource = (searches) => {
    const { setting } = this.state
    let param = UtilsDM.getPrevQueryParams(setting, searches, this.props.BID, this.props.menuType)
    let param = UtilsDM.getPrevQueryParams(setting, searches, this.props.BID)
    if (setting.execType === 'sync') {
      this.setState({
@@ -489,7 +489,7 @@
        param.BID = this.props.BID
      }
      if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
      if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
    } else {
@@ -548,7 +548,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID)
    let result = await Api.genericInterface(param)
@@ -618,7 +618,7 @@
    if (statFields.length === 0 || !(setting.interType === 'system' || (setting.interType === 'custom' && setting.requestMode === 'system')) || !setting.dataresource) return
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getStatQueryDataParams(setting, statFields, searches, _orderBy, BID, this.props.menuType)
    let param = UtilsDM.getStatQueryDataParams(setting, statFields, searches, _orderBy, BID)
    Api.genericInterface(param).then(res => {
      if (res.status) {
@@ -667,7 +667,7 @@
    })
    let _orderBy = orderBy || setting.order
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType, id)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, id)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -855,7 +855,7 @@
      <div className="subtabtable" id={'subtabtable' + this.props.MenuID}>
        {loadingview && <Spin />}
        {searchlist && searchlist.length ?
          <SubSearch BID={this.props.BID} setting={setting} searchlist={searchlist} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
          <SubSearch BID={this.props.BID} setting={setting} searchlist={searchlist} refreshdata={this.refreshbysearch}/> : null
        }
        {config ? <div style={{minHeight: '25px'}}>
          <SubAction
@@ -892,9 +892,7 @@
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    permAction: state.permAction,
    memberLevel: state.memberLevel
    permAction: state.permAction
  }
}
src/tabviews/treepage/index.jsx
@@ -274,7 +274,7 @@
    })
    let arr_field = `${setting.valueField},${setting.labelField},${setting.parentField}`
    let param = UtilsDM.getQueryDataParams(setting, arr_field, [], setting.order, '', '', BID, this.props.menuType)
    let param = UtilsDM.getQueryDataParams(setting, arr_field, [], setting.order, '', '', BID)
    let result = await Api.genericInterface(param)
    if (result.status) {
@@ -568,7 +568,6 @@
  }
  render() {
    const { menuType } = this.props
    const { setting, loadingview, viewlost, config, tabgroups, treeNodes, treedata, expandedKeys, selectedKeys, shortcuts } = this.state
    return (
@@ -632,8 +631,8 @@
            )}
          </Col>
        </Row> : null}
        {menuType !== 'HS' && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {menuType !== 'HS' && shortcuts ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts} permAction={this.props.permAction}/> : null}
        {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
        {!window.GLOB.mkHS && shortcuts ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts} permAction={this.props.permAction}/> : null}
        {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
      </div>
    )
@@ -642,9 +641,7 @@
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    permAction: state.permAction,
    memberLevel: state.memberLevel
    permAction: state.permAction
  }
}
src/tabviews/verupmanage/actionList/index.jsx
@@ -784,7 +784,6 @@
        destroyOnClose
      >
        <MutilForm
          menuType="HS"
          dict={this.props.dict}
          action={execAction}
          inputSubmit={this.handleOk}
src/tabviews/verupmanage/index.jsx
@@ -456,7 +456,7 @@
    return (
      <div className="veruptable" id={this.state.ContainerId}>
        <MainSearch searchlist={searchlist} menuType="HS" refreshdata={this.refreshbysearch}/>
        <MainSearch searchlist={searchlist} refreshdata={this.refreshbysearch}/>
        <MainAction
          BID=""
          type="main"
src/tabviews/verupmanage/subtabtable/index.jsx
@@ -419,7 +419,7 @@
    return (
      <div className="verup-subtable" id={'subtable' + this.props.MenuID}>
        {searchlist && searchlist.length ?
          <MainSearch searchlist={searchlist} menuType="HS" refreshdata={this.refreshbysearch}/> : null
          <MainSearch searchlist={searchlist} refreshdata={this.refreshbysearch}/> : null
        }
        {actions ?
          <div className="sub-action">
src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -1,7 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import moment from 'moment'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { Button, Modal, notification, message } from 'antd'
@@ -343,7 +342,7 @@
      param.LText = Utils.formatOptions(result.sql)
      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      param.secretkey = Utils.encrypt(param.LText, param.timestamp)
      if (this.props.menuType === 'HS' && param.timestamp) { // 云端验证
      if (window.GLOB.mkHS && param.timestamp) { // 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
@@ -410,7 +409,7 @@
        // 外部请求
        _outParam = fromJS(res).toJS()
        if (this.props.menuType === 'HS') {
        if (window.GLOB.mkHS) {
          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
            param.rduri = options.cloudServiceApi
          } else if (btn.sysInterface !== 'true') {
@@ -436,7 +435,7 @@
          res.func = btn.outerFunc
        }
        
        if (this.props.menuType === 'HS' && res.func === 's_sDataDictb_excelIn') { // s_sDataDictb_excelIn 云端验证
        if (window.GLOB.mkHS && res.func === 's_sDataDictb_excelIn') { // s_sDataDictb_excelIn 云端验证
          param.LText = Utils.formatOptions(result.sql)
          param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          param.secretkey = Utils.encrypt(param.LText, param.timestamp)
@@ -521,14 +520,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(ExcelInButton)
export default ExcelInButton
src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -1,7 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import moment from 'moment'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { Button, Modal, notification, message } from 'antd'
import * as XLSX from 'xlsx'
@@ -244,7 +243,7 @@
      } else if (btn.intertype === 'outer' && !btn.innerFunc) { // 使用外部函数
        let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search)
        if (this.props.menuType === 'HS') {
        if (window.GLOB.mkHS) {
          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
            param.rduri = options.cloudServiceApi
          } else if (btn.sysInterface !== 'true') {
@@ -290,7 +289,7 @@
            delete res.message
            delete res.status
            if (this.props.menuType === 'HS') {
            if (window.GLOB.mkHS) {
              if (btn.sysInterface === 'true' && options.cloudServiceApi) {
                res.rduri = options.cloudServiceApi
              } else if (btn.sysInterface !== 'true') {
@@ -359,7 +358,7 @@
        delete res.message
        delete res.status
        if (this.props.menuType === 'HS') {
        if (window.GLOB.mkHS) {
          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
            res.rduri = options.cloudServiceApi
          } else if (btn.sysInterface !== 'true') {
@@ -431,7 +430,7 @@
    } else if (btn.intertype === 'outer' && !btn.innerFunc) { // 使用外部函数
      param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize)
      if (this.props.menuType === 'HS') {
      if (window.GLOB.mkHS) {
        if (btn.sysInterface === 'true' && options.cloudServiceApi) {
          param.rduri = options.cloudServiceApi
        } else if (btn.sysInterface !== 'true') {
@@ -671,7 +670,7 @@
    param.secretkey = Utils.encrypt('', param.timestamp)
    param.LText = Utils.formatOptions(script)
    if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
    if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
      param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
    }
@@ -881,7 +880,7 @@
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
    param.DateCount = ''
    if (this.props.menuType === 'HS') { // 云端数据验证
    if (window.GLOB.mkHS) { // 云端数据验证
      param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
    }
@@ -1022,14 +1021,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(ExcelOutButton)
export default ExcelOutButton
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1,7 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import moment from 'moment'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { Button, Modal, notification, message, Drawer, Switch, Checkbox, Progress } from 'antd'
@@ -534,7 +533,7 @@
        }
      }
      if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
      if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
        if (check_param) {
          check_param.open_key = Utils.encryptOpenKey(check_param.secretkey, check_param.timestamp)
@@ -656,7 +655,7 @@
          }
        }
        if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
        if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
          param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
        }
@@ -705,7 +704,7 @@
        })
      }
      if (this.props.menuType === 'HS' && param.func === 's_sDataDictb_TBBack' && param.LTextOut) { // 函数 s_sDataDictb_TBBack 云端验证
      if (window.GLOB.mkHS && param.func === 's_sDataDictb_TBBack' && param.LTextOut) { // 函数 s_sDataDictb_TBBack 云端验证
        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
        param.secretkey = Utils.encrypt(param.LTextOut, param.timestamp)
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
@@ -742,7 +741,7 @@
          param[setting.primaryKey] = primaryId
        }
        if (this.props.menuType === 'HS' && param.func === 's_sDataDictb_TBBack' && param.LTextOut) { // 函数 s_sDataDictb_TBBack 云端验证
        if (window.GLOB.mkHS && param.func === 's_sDataDictb_TBBack' && param.LTextOut) { // 函数 s_sDataDictb_TBBack 云端验证
          param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          param.secretkey = Utils.encrypt(param.LTextOut, param.timestamp)
          param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
@@ -1250,7 +1249,7 @@
        param.s_debug_type = 'Y'
      }
      if (this.props.menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
      if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
    } else {
@@ -1369,7 +1368,7 @@
        param.func = btn.innerFunc
        // 函数 s_sDataDictb_TBBack 云端验证
        if (this.props.menuType === 'HS' && param.func === 's_sDataDictb_TBBack' && param.LTextOut) {
        if (window.GLOB.mkHS && param.func === 's_sDataDictb_TBBack' && param.LTextOut) {
          param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          param.secretkey = Utils.encrypt(param.LTextOut, param.timestamp)
          param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
@@ -1410,7 +1409,7 @@
      if (btn.outerFunc) {
        res.func = btn.outerFunc
      }
      if (this.props.menuType === 'HS') {
      if (window.GLOB.mkHS) {
        if (btn.sysInterface === 'true' && options.cloudServiceApi) {
          res.rduri = options.cloudServiceApi
        } else if (btn.sysInterface !== 'true') {
@@ -1453,7 +1452,7 @@
        let _callbackparam = {..._outParam, ...response}
        // 函数 s_sDataDictb_TBBack 云端验证
        if (this.props.menuType === 'HS' && _callbackparam.func === 's_sDataDictb_TBBack' && _callbackparam.LTextOut) {
        if (window.GLOB.mkHS && _callbackparam.func === 's_sDataDictb_TBBack' && _callbackparam.LTextOut) {
          _callbackparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
          _callbackparam.secretkey = Utils.encrypt(_callbackparam.LTextOut, _callbackparam.timestamp)
          _callbackparam.open_key = Utils.encryptOpenKey(_callbackparam.secretkey, _callbackparam.timestamp)
@@ -2185,7 +2184,6 @@
          <MutilForm
            BID={BID}
            dict={this.state.dict}
            menuType={this.props.menuType}
            action={btnconfig}
            inputSubmit={this.handleOk}
            data={this.state.selines[0]}
@@ -2228,7 +2226,6 @@
          <MutilForm
            BID={BID}
            dict={this.state.dict}
            menuType={this.props.menuType}
            action={btnconfig}
            inputSubmit={this.handleOk}
            data={this.state.selines[0]}
@@ -2299,14 +2296,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(NormalButton)
export default NormalButton
src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -1,7 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import moment from 'moment'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { Button, Modal, notification, message } from 'antd'
@@ -816,7 +815,7 @@
      // 外部请求
      _outParam = JSON.parse(JSON.stringify(res))
      if (this.props.menuType === 'HS') {
      if (window.GLOB.mkHS) {
        if (btn.sysInterface === 'true' && options.cloudServiceApi) {
          res.rduri = options.cloudServiceApi
        } else if (btn.sysInterface !== 'true') {
@@ -1641,7 +1640,6 @@
        <MutilForm
          BID={BID}
          dict={this.state.dict}
          menuType={this.props.menuType}
          action={btnconfig}
          inputSubmit={this.handleOk}
          data={this.state.selines[0]}
@@ -1698,14 +1696,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(PrintButton)
export default PrintButton
src/tabviews/zshare/mutilform/index.jsx
@@ -31,7 +31,6 @@
class MainSearch extends Component {
  static propTpyes = {
    menuType: PropTypes.object,  // 菜单类型,是否为HS
    action: PropTypes.object,    // 按钮信息、表单列表
    data: PropTypes.any,         // 表格数据
    BID: PropTypes.any,          // 主表ID
@@ -499,7 +498,7 @@
      }
      if (deForms.length > 0) {
        if (this.props.menuType !== 'HS' && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
        if (!window.GLOB.mkHS && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
          this.improveSimpleActionForm(deForms)
        } else {
          this.improveActionForm(deForms)
@@ -512,7 +511,7 @@
   * @description 获取下拉表单选项信息
   */
  improveActionForm = (deForms) => {
    const { BID, menuType, action } = this.props
    const { BID, action } = this.props
    let deffers = []
    let mainItems = []  // 云端或单点数据
@@ -527,7 +526,7 @@
      }
    })
    
    if (menuType !== 'HS' && options.sysType !== 'local') {
    if (!window.GLOB.mkHS && options.sysType !== 'local') {
      localItems = [...localItems, ...mainItems]
      mainItems = []
    }
@@ -547,7 +546,7 @@
      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      param.secretkey = Utils.encrypt(param.LText, param.timestamp)
      if (menuType === 'HS') { // 云端数据验证
      if (window.GLOB.mkHS) { // 云端数据验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
@@ -582,7 +581,7 @@
      mainparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      mainparam.secretkey = Utils.encrypt(mainparam.LText, mainparam.timestamp)
      if (menuType === 'HS') { // 云端数据验证
      if (window.GLOB.mkHS) { // 云端数据验证
        mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp)
        if (options.cloudServiceApi) {
          mainparam.rduri = options.cloudServiceApi
src/tabviews/zshare/normalTable/index.jsx
@@ -1,7 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import md5 from 'md5'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { Table, Affix, Typography } from 'antd'
@@ -61,7 +60,7 @@
  }
  UNSAFE_componentWillMount () {
    const { menuType, memberLevel, pageSize, setting } = this.props
    const { pageSize, setting } = this.props
    let columns = fromJS(this.props.columns).toJS()
    let lineMarks = []
    let _columns = []
@@ -105,12 +104,12 @@
        _columns.push(cell)
      })
    } else {
      if (window.GLOB.dataFormat && menuType !== 'HS' && memberLevel) {
      if (window.GLOB.dataFormat && !window.GLOB.mkHS) {
        _format = true
  
        if (memberLevel >= 30) {
        if (window.GLOB.memberLevel >= 30) {
          radio = 20
        } else if (memberLevel >= 20) {
        } else if (window.GLOB.memberLevel >= 20) {
          radio = 10
        }
      }
@@ -1384,15 +1383,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    menuType: state.editLevel,
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(NormalTable)
export default NormalTable
src/tabviews/zshare/topSearch/index.jsx
@@ -22,7 +22,6 @@
class MainSearch extends Component {
  static propTpyes = {
    BID: PropTypes.any,          // 父级Id,用于查询下拉选择项
    menuType: PropTypes.any,     // 菜单权限,是否为HS
    searchlist: PropTypes.array, // 搜索条件列表
    config: PropTypes.object,    // 组件配置信息(自定义页面)
    setting: PropTypes.object,   // 组件配置信息(自定义页面)
@@ -40,7 +39,7 @@
  record = {}
  UNSAFE_componentWillMount () {
    const { config, menuType, searchlist, setting } = this.props
    const { config, searchlist, setting } = this.props
    let _searchlist = []
    let fieldMap = new Map()
@@ -175,7 +174,7 @@
          let _option = Utils.getSelectQueryOptions(item)
          // 测试系统单个请求
          if (menuType !== 'HS' && options.sysType === 'local' && !window.GLOB.systemType) {
          if (!window.GLOB.mkHS && options.sysType === 'local' && !window.GLOB.systemType) {
            deForms.push({
              ...item,
              arr_field: _option.field,
@@ -229,7 +228,7 @@
      advanceValues,
      searchlist: _list
    }, () => {
      if (menuType !== 'HS' && options.sysType === 'local' && !window.GLOB.systemType) {
      if (!window.GLOB.mkHS && options.sysType === 'local' && !window.GLOB.systemType) {
        this.improveSimpleSearch(deForms)
      } else {
        this.improveSearch(mainItems, localItems)
@@ -239,10 +238,10 @@
  // 查询下拉菜单
  improveSearch = (mainItems, localItems) => {
    const { menuType, BID } = this.props
    const { BID } = this.props
    let deffers = []
    if (menuType !== 'HS' && window.GLOB.systemType !== 'production') {
    if (!window.GLOB.mkHS && window.GLOB.systemType !== 'production') {
      localItems = [...localItems, ...mainItems]
      mainItems = []
    }
@@ -265,7 +264,7 @@
      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      param.secretkey = Utils.encrypt(param.LText, param.timestamp)
      if (menuType === 'HS') { // 云端数据验证
      if (window.GLOB.mkHS) { // 云端数据验证
        param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
      }
@@ -303,7 +302,7 @@
      mainparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      mainparam.secretkey = Utils.encrypt(mainparam.LText, mainparam.timestamp)
      if (menuType === 'HS') { // 云端数据验证
      if (window.GLOB.mkHS) { // 云端数据验证
        mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp)
        if (options.cloudServiceApi) {
          mainparam.rduri = options.cloudServiceApi
src/templates/calendarconfig/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { DndProvider } from 'react-dnd'
import HTML5Backend from 'react-dnd-html5-backend'
@@ -860,14 +859,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(SubTableConfig)
export default SubTableConfig
src/templates/comtableconfig/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { DndProvider } from 'react-dnd'
import HTML5Backend from 'react-dnd-html5-backend'
@@ -1381,14 +1380,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(ComTableConfig)
export default ComTableConfig
src/templates/menuconfig/menuform/index.scss
File was deleted
src/templates/subtableconfig/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { DndProvider } from 'react-dnd'
import HTML5Backend from 'react-dnd-html5-backend'
@@ -1214,14 +1213,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(SubTableConfig)
export default SubTableConfig
src/templates/treepageconfig/index.jsx
@@ -1,6 +1,5 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { DndProvider } from 'react-dnd'
import HTML5Backend from 'react-dnd-html5-backend'
@@ -829,14 +828,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default connect(mapStateToProps, mapDispatchToProps)(ComTableConfig)
export default ComTableConfig
src/utils/utils-datamanage.js
@@ -13,16 +13,15 @@
   * @param {Number}   pageIndex    页码
   * @param {Number}   pageSize     每页数量
   * @param {String}   BID          上级ID
   * @param {String}   menuType     菜单类型,普通菜单与HS
   * @return {Object}  param
   */
  static getQueryDataParams (setting, arrFields, search = [], orderBy = '', pageIndex = 1, pageSize = 10, BID, menuType, id) {
  static getQueryDataParams (setting, arrFields, search = [], orderBy = '', pageIndex = 1, pageSize = 10, BID, id) {
    let param = null
    if (setting.interType === 'system' || (setting.interType === 'custom' && setting.requestMode === 'system')) {
      param = this.getDefaultQueryParam(setting, arrFields, search, orderBy, pageIndex, pageSize, menuType, id, BID)
      param = this.getDefaultQueryParam(setting, arrFields, search, orderBy, pageIndex, pageSize, id, BID)
    } else {
      param = this.getCustomQueryParam(setting, search, orderBy, pageIndex, pageSize, menuType, id)
      param = this.getCustomQueryParam(setting, search, orderBy, pageIndex, pageSize, id)
    }
    if (BID) {
@@ -39,7 +38,7 @@
  /**
   * @description 获取用户自定义存储过程传参
   */
  static getCustomQueryParam (setting, search, orderBy, pageIndex, pageSize, menuType, id) {
  static getCustomQueryParam (setting, search, orderBy, pageIndex, pageSize, id) {
    let param = Utils.formatCustomMainSearch(search)
    if (orderBy) {
@@ -56,7 +55,7 @@
    if (setting.interType === 'inner' || (setting.interType === 'custom' && setting.requestMode === 'inner')) {
      param.func = setting.innerFunc
    } else {
      if (menuType === 'HS') {
      if (window.GLOB.mkHS) {
        if (setting.sysInterface === 'true' && options.cloudServiceApi) {
          param.rduri = options.cloudServiceApi
        } else if (setting.sysInterface !== 'true') {
@@ -81,7 +80,7 @@
  /**
   * @description 获取系统存储过程 sPC_Get_TableData 的参数
   */
  static getDefaultQueryParam (setting, arrFields, search, orderBy, pageIndex, pageSize, menuType, id, BID) {
  static getDefaultQueryParam (setting, arrFields, search, orderBy, pageIndex, pageSize, id, BID) {
    let param = {
      func: 'sPC_Get_TableData',
      obj_name: 'data',
@@ -263,7 +262,7 @@
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt('', param.timestamp)
    if (menuType === 'HS') { // 云端数据验证
    if (window.GLOB.mkHS) { // 云端数据验证
      param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
    }
@@ -273,7 +272,7 @@
  /**
   * @description 获取系统存储过程 sPC_Get_TableData 合计值的参数
   */
  static getStatQueryDataParams (setting, statFields, search, orderBy, BID, menuType) {
  static getStatQueryDataParams (setting, statFields, search, orderBy, BID) {
    let param = {
      func: 'sPC_Get_TableData',
      obj_name: 'data',
@@ -407,7 +406,7 @@
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt('', param.timestamp)
    if (menuType === 'HS') { // 云端数据验证
    if (window.GLOB.mkHS) { // 云端数据验证
      param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
    }
@@ -432,14 +431,13 @@
   * @param {Number}   pageIndex    页码
   * @param {Number}   pageSize     每页数量
   * @param {String}   BID          上级ID
   * @param {String}   menuType     菜单类型,普通菜单与HS
   * @return {Object}  param
   */
  static getPrevQueryParams (setting, search = [], BID, menuType) {
  static getPrevQueryParams (setting, search = [], BID) {
    let param = null
    if (setting.procMode !== 'inner') {
      param = this.getDefaultPrevQueryParam(setting, search, menuType, BID)
      param = this.getDefaultPrevQueryParam(setting, search, BID)
    } else {
      param = Utils.formatCustomMainSearch(search)
      param.func = setting.prevFunc || ''
@@ -455,7 +453,7 @@
  /**
   * @description 获取系统前置脚本
   */
  static getDefaultPrevQueryParam (setting, search, menuType, BID) {
  static getDefaultPrevQueryParam (setting, search, BID) {
    let param = {
      func: 'sPC_TableData_InUpDe',
      exec_type: 'y',
@@ -529,7 +527,7 @@
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt('', param.timestamp)
    if (menuType === 'HS') { // 函数 sPC_TableData_InUpDe 云端验证
    if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
      param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
    }
src/utils/utils.js
@@ -39,6 +39,26 @@
export default class Utils {
  /**
   * @description 获取会员等级
   * @return {String}  level
   */
  static getMemberLevel () {
    let _level = 10
    let _Mlevel = sessionStorage.getItem('Member_Level')
    if (_Mlevel) {
      if (_Mlevel === md5('mksoft' + window.GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + 10)) {
        _level = 10
      } else if (_Mlevel === md5('mksoft' + window.GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + 20)) {
        _level = 20
      } else if (_Mlevel === md5('mksoft' + window.GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + 30)) {
        _level = 30
      }
    }
    return _level
  }
  /**
   * @description 数据源名称,用于统一查询
   * @return {String}  name
   */
src/views/billprint/index.jsx
@@ -332,7 +332,7 @@
            _pars.push(param)
          } else {
            let arr_field = component.columns.map(col => col.field).join(',')
            let param = UtilsDM.getQueryDataParams(component.setting, arr_field, [], component.setting.order || '', 1, 1000, BID, '')
            let param = UtilsDM.getQueryDataParams(component.setting, arr_field, [], component.setting.order || '', 1, 1000, BID)
            
            param.componentId = component.uuid
@@ -694,67 +694,67 @@
      if (item.type === 'bar' || item.type === 'line') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvBarAndLine config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <AntvBarAndLine config={item} initdata={item.data} mainSearch={[]} />
          </Col>
        )
      } else if (item.type === 'pie') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvPie config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <AntvPie config={item} initdata={item.data} mainSearch={[]} />
          </Col>
        )
      } else if (item.type === 'scatter') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvScatter config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <AntvScatter config={item} initdata={item.data} mainSearch={[]}/>
          </Col>
        )
      } else if (item.type === 'dashboard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <AntvDashboard config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <AntvDashboard config={item} initdata={item.data} mainSearch={[]}/>
          </Col>
        )
      } else if (item.type === 'card' && item.subtype === 'datacard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <DataCard config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <DataCard config={item} initdata={item.data} mainSearch={[]} />
          </Col>
        )
      } else if (item.type === 'card' && item.subtype === 'propcard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <PropCard config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <PropCard config={item} initdata={item.data} mainSearch={[]} />
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'tablecard') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TableCard config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <TableCard config={item} initdata={item.data} mainSearch={[]}/>
          </Col>
        )
      } else if (item.type === 'table' && item.subtype === 'normaltable') {
        return (
          <Col span={item.width} key={item.uuid}>
            <NormalTable config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <NormalTable config={item} initdata={item.data} mainSearch={[]}/>
          </Col>
        )
      } else if (item.type === 'code') {
        return (
          <Col span={item.width} key={item.uuid}>
            <SandBox config={item} initdata={item.data} mainSearch={[]} menuType="" />
            <SandBox config={item} initdata={item.data} mainSearch={[]}/>
          </Col>
        )
      } else if (item.type === 'balcony') {
        return (
          <Col span={item.width} key={item.uuid}>
            <Balcony config={item} initdata={item.data} menuType="" />
            <Balcony config={item} initdata={item.data}/>
          </Col>
        )
      } else if (item.type === 'timeline') {
        return (
          <Col span={item.width} key={item.uuid}>
            <TimeLine config={item} initdata={item.data} menuType="" />
            <TimeLine config={item} initdata={item.data}/>
          </Col>
        )
      } else {
src/views/design/header/editfirstmenu/dragelement/card.jsx
src/views/design/header/editfirstmenu/dragelement/index.jsx
src/views/design/header/editfirstmenu/dragelement/index.scss
src/views/design/header/editfirstmenu/dragelement/itemtypes.js
src/views/design/header/editfirstmenu/index.jsx
src/views/design/header/editfirstmenu/index.scss
src/views/design/header/editfirstmenu/menuform/index.jsx
src/views/design/header/editfirstmenu/menuform/index.scss
src/views/design/header/index.jsx
@@ -22,7 +22,7 @@
import MKEmitter from '@/utils/events.js'
import './index.scss'
const EditMenu = asyncComponent(() => import('@/templates/menuconfig/editfirstmenu'))
const EditMenu = asyncComponent(() => import('./editfirstmenu'))
const VersionsUp = asyncComponent(() => import('./versions'))
const { confirm } = Modal
@@ -32,6 +32,7 @@
    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
    userName: sessionStorage.getItem('CloudUserName'),
    avatar: Utils.getrealurl(sessionStorage.getItem('CloudAvatar')),
    memberLevel: Utils.getMemberLevel()
  }
  logout = () => {
@@ -80,6 +81,12 @@
      this.props.modifyMenuTree(menulist)
      if (window.GLOB.systemType !== 'production') { // 非正式系统选择第一项
        this.props.modifyMainMenu(menulist[0] || null)
      } else {
        this.props.resetEditLevel('HS')
        window.GLOB.mkHS = true
        this.props.modifyMainMenu({
          MenuID: 'systemManageView'
        })
      }
    } else {
      notification.error({
@@ -154,7 +161,7 @@
                trdItem.type = trdItem.PageParam.Template || trdItem.type
                trdItem.OpenType = trdItem.PageParam.OpenType || trdItem.OpenType
                if (trdItem.type === 'CustomPage' && this.props.memberLevel < 20) { // 会员等级大于等于20时,有编辑权限
                if (trdItem.type === 'CustomPage' && this.state.memberLevel < 20) { // 会员等级大于等于20时,有编辑权限
                  trdItem.forbidden = true
                }
              }
@@ -195,6 +202,7 @@
    if (editLevel === 'HS')  return
    window.GLOB.mkHS = true
    this.props.resetEditLevel('HS')
    this.props.modifyMainMenu({
      MenuID: 'systemManageView'
@@ -215,6 +223,7 @@
    this.props.modifyMainMenu(menulist[0] || null)
    this.props.resetEditLevel(false)
    window.GLOB.mkHS = false
    MKEmitter.emit('modifyTabs', null, 'replace')
  }
@@ -222,6 +231,7 @@
  exitEdit = () => {
    // 退出编辑状态
    this.props.resetEditLevel(false)
    window.GLOB.mkHS = false
  }
  
  UNSAFE_componentWillMount () {
@@ -272,12 +282,13 @@
          }
        })
      }, 50)
    } else if (window.GLOB.systemType === 'production') {
      this.props.resetEditLevel('HS')
      this.props.modifyMainMenu({
        MenuID: 'systemManageView'
      })
    }
    window.addEventListener('storage', (e) => {
      if (e.key !== 'menuUpdate') return
      this.reload()
    })
  }
  shouldComponentUpdate (nextProps, nextState) {
@@ -305,7 +316,7 @@
  render () {
    const { mainMenu, editLevel } = this.props
    const { menulist } = this.state
    const { menulist, memberLevel } = this.state
    return (
      <header className={'sys-header-container ant-menu-dark ' + (['level2', 'level3', 'HS'].includes(editLevel) ? 'mask' : '')} id="main-header-container">
@@ -338,7 +349,7 @@
            <div className="icon"><AppstoreOutlined /></div>
            <div className="title">应用管理</div>
            <div className="detail">可创建及管理PC、pad及移动端等不同设备的应用,实现明科云APP、微信公众号、小程序等多平台的应用共享。</div>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/appmanage')}}>
            <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/appmanage')}}>
              编辑
            </Button>
          </div> : null
@@ -348,7 +359,7 @@
            <div className="icon"><AppstoreOutlined /></div>
            <div className="title">应用管理</div>
            <div className="detail">可创建及管理PC、pad及移动端等不同设备的应用,实现明科云APP、微信公众号、小程序等多平台的应用共享。</div>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/appcheck')}}>
            <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/appcheck')}}>
              查看
            </Button>
          </div> : null
@@ -358,7 +369,7 @@
            <div className="icon"><ApiOutlined /></div>
            <div className="title">接口调试</div>
            <div className="detail">可自动处理登录接口的参数加密,以及业务接口的签名计算,方便开发人员的接口测试工作。</div>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/interface')}}>
            <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/interface')}}>
              编辑
            </Button>
          </div> : null
@@ -369,7 +380,7 @@
            <div className="icon"><HomeOutlined /></div>
            <div className="title">首页</div>
            <div className="detail">基于自定义页面的首页设计,可实现灵活的元素配置及样式调整,展现当前系统的风格。</div>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}>
            <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}>
              编辑
            </Button>
          </div> : null
@@ -407,8 +418,7 @@
    menuTree: state.menuTree,
    mainMenu: state.mainMenu,
    editLevel: state.editLevel,
    permAction: state.permAction,
    memberLevel: state.memberLevel
    permAction: state.permAction
  }
}
src/views/design/sidemenu/editsecmenu/index.jsx
src/views/design/sidemenu/editsecmenu/index.scss
src/views/design/sidemenu/editthdmenu/index.jsx
File was renamed from src/templates/menuconfig/editthdmenu/index.jsx
@@ -545,8 +545,8 @@
  }
  getUsedTemplate = () => {
    const { memberLevel } = this.props
    let { sysTemplates } = this.state
    let memberLevel = Utils.getMemberLevel()
    const illust = { // 模板图片,用于已使用模板
      CommonTable: mainsubtable,
      TreePage: treepage,
@@ -852,7 +852,7 @@
                    {this.state.usedTemplates && this.state.usedTemplates.map((template, index) => {
                      if (template.title.toLowerCase().indexOf(this.state.tempSearchKey.toLowerCase()) >= 0) {
                        return (
                          <Col key={template.type + index} className={template.disabled ? 'disabled' : ''} title={template.disTitle || ''} span={8}>
                          <Col key={template.type + index} className={template.disabled ? 'disabled' : ''} title={template.disTitle || ''} span={6}>
                            <Card
                              title={template.title}>
                              <img onClick={() => {this.previewPicture(template)}} src={template.url} alt=""/>
@@ -967,8 +967,7 @@
const mapStateToProps = (state) => {
  return {
    mainMenu: state.mainMenu,
    menuTree: state.menuTree,
    memberLevel: state.memberLevel
    menuTree: state.menuTree
  }
}
src/views/design/sidemenu/editthdmenu/index.scss
src/views/design/sidemenu/editthdmenu/menuform/index.jsx
src/views/design/sidemenu/editthdmenu/menuform/index.scss
src/views/design/sidemenu/editthdmenu/preview/index.jsx
src/views/design/sidemenu/editthdmenu/preview/index.scss
src/views/design/sidemenu/index.jsx
@@ -1,8 +1,8 @@
import React, {Component} from 'react'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { Menu, notification, Popover } from 'antd'
import { EditOutlined, CloseOutlined, SwapOutlined, PlusOutlined, UnlockOutlined, SettingOutlined } from '@ant-design/icons'
import { Menu, notification, Popover, Modal, Spin } from 'antd'
import { EditOutlined, SwapOutlined, PlusOutlined, UnlockOutlined, SettingOutlined } from '@ant-design/icons'
import asyncComponent from '@/utils/asyncComponent'
import { resetEditLevel, modifyMenuTree, modifyMainMenu } from '@/store/action'
@@ -13,8 +13,9 @@
import MkIcon from '@/components/mk-icon'
import './index.scss'
const EditSecMenu = asyncComponent(() => import('@/templates/menuconfig/editsecmenu'))
const EditThdMenu = asyncComponent(() => import('@/templates/menuconfig/editthdmenu'))
const EditSecMenu = asyncComponent(() => import('./editsecmenu'))
const EditThdMenu = asyncComponent(() => import('./editthdmenu'))
const TransferForm = asyncComponent(() => import('@/templates/zshare/basetransferform'))
const { SubMenu } = Menu
class Sidemenu extends Component {
@@ -259,8 +260,9 @@
  render () {
    const { mainMenu, editLevel } = this.props
    const { visible } = this.state
    let isnew = false
    let isnew = true
    return (
      <aside className="mk-sys-side-menu ant-menu-dark mk-edit">
@@ -293,15 +295,8 @@
                {item.children.map(cell => {
                  return (
                    <Menu.Item key={cell.MenuID}>
                      {editLevel !== 'HS' && isnew ?
                        <Popover overlayClassName="mk-popover-control-wrap mk-menu-control" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
                          <div className="mk-popover-control">
                            <EditOutlined className="edit" onClick={() => this.editmenu(cell)} />
                            <CloseOutlined className="close" onClick={() => {}} />
                          </div>
                        } trigger="hover" placement="top">
                          <span className="editable-menu-item">{cell.MenuName}</span>
                        </Popover> :
                      {editLevel !== 'HS' ?
                        <span className="editable-menu-item" onDoubleClick={() => this.editmenu(cell)}>{cell.MenuName}</span> :
                        <a href={cell.src} id={cell.MenuID} onClick={(e) => this.changemenu(e, cell)}>{cell.MenuName}</a>
                      }
                    </Menu.Item>
@@ -329,6 +324,18 @@
            exitEdit={this.exitEdit}
          /> : null
        }
        <Modal
          title="解冻菜单"
          width={600}
          visible={visible}
          onOk={this.thawMemuSubmit}
          confirmLoading={this.state.confirmLoading}
          onCancel={this.thawMemuCancel}
          destroyOnClose
        >
          {!this.state.thawmenulist ? <Spin style={{marginLeft: 'calc(50% - 22px)', marginTop: '70px', marginBottom: '70px'}} size="large" /> :
          <TransferForm onChange={(vals) => this.setState({targetKeys: vals})} menulist={this.state.thawmenulist}/>}
        </Modal>
      </aside>
    )
  }
@@ -338,7 +345,6 @@
  return {
    mainMenu: state.mainMenu,
    menuTree: state.menuTree,
    memberLevel: state.memberLevel,
    editLevel: state.editLevel
  }
}
src/views/design/sidemenu/index.scss
@@ -14,6 +14,7 @@
    .editable-menu-item {
      display: block;
      padding-left: 48px;
      cursor: pointer;
    }
  }
  .ant-menu-sub.ant-menu-inline {
src/views/design/sidemenu/menuelement/card.jsx
src/views/design/sidemenu/menuelement/index.jsx
src/views/design/sidemenu/menuelement/index.scss
src/views/design/sidemenu/menuelement/itemtypes.js
src/views/design/sidemenu/menuform/index.jsx
src/views/design/sidemenu/menuform/index.scss
copy from src/templates/menuconfig/editfirstmenu/menuform/index.scss copy to src/views/design/sidemenu/menuform/index.scss
src/views/login/index.jsx
@@ -1,6 +1,5 @@
import React, { Component } from 'react'
import { message, Modal, notification } from 'antd'
import { connect } from 'react-redux'
import md5 from 'md5'
import moment from 'moment'
@@ -11,7 +10,6 @@
import enUS from '@/locales/en-US/login.js'
import asyncComponent from '@/utils/asyncComponent'
import asyncLoadComponent from '@/utils/asyncLoadComponent'
import { modifyMemberLevel } from '@/store/action'
import './index.scss'
const LoginForm = asyncLoadComponent(() => import('./loginform'))
@@ -639,8 +637,8 @@
            let memberLevel = res.member_level
            if (typeof(memberLevel) === 'number' && memberLevel > 10 && parseInt(memberLevel / 10) * 10 === memberLevel) {
              sessionStorage.setItem('Member_Level', md5('mksoft' + moment().format('YYYYMM') + memberLevel))
              this.props.modifyMemberLevel(memberLevel)
              sessionStorage.setItem('Member_Level', md5('mksoft' + window.GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + memberLevel))
              window.GLOB.memberLevel = memberLevel
            }
            // positecgroup
@@ -897,14 +895,4 @@
  }
}
const mapStateToProps = () => {
  return {}
}
const mapDispatchToProps = (dispatch) => {
  return {
    modifyMemberLevel: (memberLevel) => dispatch(modifyMemberLevel(memberLevel))
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(Login)
export default Login
src/views/mobdesign/index.jsx
@@ -1,5 +1,4 @@
import React, { Component } from 'react'
import { connect } from 'react-redux'
import { DndProvider } from 'react-dnd'
import { withRouter } from 'react-router'
import { is, fromJS } from 'immutable'
@@ -56,6 +55,8 @@
window.GLOB.urlFields = []               // url变量
window.GLOB.customMenu = null            // 保存菜单信息
const memberLevel = Utils.getMemberLevel()
class MobDesign extends Component {
  state = {
    localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS,
@@ -80,7 +81,7 @@
  }
  UNSAFE_componentWillMount() {
    if (this.props.memberLevel < 30) return
    if (memberLevel < 30) return
    try {
      let param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param)))
@@ -150,7 +151,7 @@
  }
  componentDidMount () {
    if (this.props.memberLevel < 30) {
    if (memberLevel < 30) {
      document.getElementById('mk-mob-design-view').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh; height: 100vh; background: #fff;">本应用没有PC端页面的编辑权限,请联系管理员!</div>'
      return
    }
@@ -1989,14 +1990,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(MobDesign))
export default withRouter(MobDesign)
src/views/pcdesign/index.jsx
@@ -1,5 +1,4 @@
import React, { Component } from 'react'
import { connect } from 'react-redux'
import { DndProvider } from 'react-dnd'
import { withRouter } from 'react-router'
import { is, fromJS } from 'immutable'
@@ -56,6 +55,8 @@
window.GLOB.urlFields = []               // url变量
window.GLOB.customMenu = null            // 保存菜单信息
const memberLevel = Utils.getMemberLevel()
class MenuDesign extends Component {
  state = {
    localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS,
@@ -82,7 +83,7 @@
  }
  UNSAFE_componentWillMount() {
    if (this.props.memberLevel < 30) return
    if (memberLevel < 30) return
    try {
      let param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param)))
@@ -126,7 +127,7 @@
  }
  componentDidMount () {
    if (this.props.memberLevel < 30) {
    if (memberLevel < 30) {
      document.getElementById('mk-pc-design-view').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh; height: 100vh; background: #fff;">本应用没有PC端页面的编辑权限,请联系管理员!</div>'
      return
    }
@@ -1963,14 +1964,4 @@
  }
}
const mapStateToProps = (state) => {
  return {
    memberLevel: state.memberLevel
  }
}
const mapDispatchToProps = () => {
  return {}
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(MenuDesign))
export default withRouter(MenuDesign)
src/views/sso/index.jsx
@@ -1,13 +1,11 @@
import React, {Component} from 'react'
import { Spin, notification } from 'antd'
import { connect } from 'react-redux'
import md5 from 'md5'
import moment from 'moment'
import Api from '@/api'
import Utils from '@/utils/utils.js' 
import { styles } from '@/store/options.js'
import { modifyMemberLevel } from '@/store/action'
import './index.scss'
class SSOLogin extends Component {
@@ -140,8 +138,8 @@
        let memberLevel = res.member_level
        if (typeof(memberLevel) === 'number' && memberLevel > 10 && parseInt(memberLevel / 10) * 10 === memberLevel) {
          sessionStorage.setItem('Member_Level', md5('mksoft' + moment().format('YYYYMM') + memberLevel))
          this.props.modifyMemberLevel(memberLevel)
          sessionStorage.setItem('Member_Level', md5('mksoft' + window.GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + memberLevel))
          window.GLOB.memberLevel = memberLevel
        }
        this.props.history.replace('/main')
      } else {
@@ -166,14 +164,4 @@
  }
}
const mapStateToProps = () => {
  return {}
}
const mapDispatchToProps = (dispatch) => {
  return {
    modifyMemberLevel: (memberLevel) => dispatch(modifyMemberLevel(memberLevel))
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(SSOLogin)
export default SSOLogin