king
2022-05-11 823c72bc5918bf9d2fdd8415607908b68ebcd399
2022-05-11
13个文件已修改
345 ■■■■■ 已修改文件
public/options.json 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/search/main-search/dragsearch/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/setupProxy.js 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/index.jsx 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/index.jsx 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/comtableconfig/index.jsx 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/menuconfig/editthdmenu/index.jsx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/menuconfig/menuelement/card.jsx 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/actioncomponent/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/chartgroupcomponent/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/subtableconfig/index.jsx 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils-update.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/design/header/index.jsx 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/options.json
@@ -1,18 +1,18 @@
{
  "appId": "202108312122504607B107A83F55B40C98CCF",
  "appkey": "20210831212235413F287EC3BF489424496C8",
  "appId": "202109161556242376DEC38C96FFF414E8DEF",
  "appkey": "20210916155606327FB54C811DE824AFEB22C",
  "mainSystemApi": "http://sso.mk9h.cn/cloud/webapi/dostars",
  "systemType": "",
  "externalDatabase": "false",
  "externalDatabase": "",
  "lineColor": "",
  "filter": "false",
  "defaultApp": "mkindustry",
  "defaultApp": "mk",
  "defaultLang": "zh-CN",
  "WXAppID": "",
  "debugger": false,
  "licenseKey": "7EFE13KIKLILIJB64C12",
  "probation": "2021-12-31",
  "licenseKey": "",
  "probation": "",
  "keepPassword": "true",
  "host": "http://demo.mk9h.cn",
  "service": "erp_new/"
  "service": "kalai_mes/"
}
src/menu/components/search/main-search/dragsearch/index.jsx
@@ -92,7 +92,7 @@
        <div className="ant-row ant-form-item" style={{lineHeight: '40px', height: '55px', marginBottom: 0}}>
          <div className="ant-col ant-form-item-label ant-col-xs-24 ant-col-sm-8">
          </div>
          <div className="ant-col ant-form-item-control-wrapper ant-col-xs-24 ant-col-sm-16">
          <div className="ant-col ant-form-item-control-wrapper ant-col-xs-24 ant-col-sm-16" style={{whiteSpace: 'nowrap'}}>
            <Button type="primary">搜索</Button>
            {appType !== 'mob' ? <Button style={{ marginLeft: 8 }}>重置</Button> : null}
            <div style={{position: 'absolute', top: 0, bottom: 0, left: 0, right: 0}}></div>
@@ -117,7 +117,7 @@
        <div className="ant-row ant-form-item" style={{lineHeight: '40px', height: '55px', marginBottom: 0}}>
          <div className="ant-col ant-form-item-label ant-col-xs-24 ant-col-sm-8">
          </div>
          <div className="ant-col ant-form-item-control-wrapper ant-col-xs-24 ant-col-sm-16">
          <div className="ant-col ant-form-item-control-wrapper ant-col-xs-24 ant-col-sm-16" style={{whiteSpace: 'nowrap'}}>
            <Button type="primary">搜索</Button>
            {appType !== 'mob' ? <Button style={{ marginLeft: 8 }}>重置</Button> : null}
            <div style={{position: 'absolute', top: 0, bottom: 0, left: 0, right: 0}}></div>
src/setupProxy.js
@@ -1,55 +1,55 @@
const proxy = require('http-proxy-middleware')
const host = 'http://qingqiumarket.cn'
const service = 'mkwms/'
// const proxy = require('http-proxy-middleware')
// const host = 'http://qingqiumarket.cn'
// const service = 'mkwms/'
// module.exports = function(app) {}
module.exports = function(app) {
  // app.use(proxy('/webapi', {
  //   target: `${host}/${service}webapi`,
  //   secure: false,
  //   changeOrigin: true,
  //   pathRewrite: {
  //   '^/webapi': '/'
  //   }
  //   // cookieDomainRewrite: "http://localhost:3000"
  // }))
module.exports = function(app) {}
// module.exports = function(app) {
//   app.use(proxy('/webapi', {
//     target: `${host}/${service}webapi`,
//     secure: false,
//     changeOrigin: true,
//     pathRewrite: {
//     '^/webapi': '/'
//     }
//     // cookieDomainRewrite: "http://localhost:3000"
//   }))
  
  // app.use(proxy('/zh-CN', { // 登录接口
  //   target: `${host}/${service}zh-CN`,
  //   secure: false,
  //   changeOrigin: true,
  //   pathRewrite: {
  //   '^/zh-CN': '/'
  //   }
  // }))
//   app.use(proxy('/zh-CN', { // 登录接口
//     target: `${host}/${service}zh-CN`,
//     secure: false,
//     changeOrigin: true,
//     pathRewrite: {
//     '^/zh-CN': '/'
//     }
//   }))
  // app.use(proxy('/Upload', {
  //   target: `${host}/${service}zh-CN/Home/Upload`,
  //   secure: false,
  //   changeOrigin: true,
  //   pathRewrite: {
  //   '^/Upload': '/'
  //   }
  // }))
//   app.use(proxy('/Upload', {
//     target: `${host}/${service}zh-CN/Home/Upload`,
//     secure: false,
//     changeOrigin: true,
//     pathRewrite: {
//     '^/Upload': '/'
//     }
//   }))
  // app.use(proxy('/wxpay', {
  //   target: `${host}/${service}wxpay`,
  //   secure: false,
  //   changeOrigin: true,
  //   pathRewrite: {
  //   '^/wxpay': '/'
  //   }
  // }))
//   app.use(proxy('/wxpay', {
//     target: `${host}/${service}wxpay`,
//     secure: false,
//     changeOrigin: true,
//     pathRewrite: {
//     '^/wxpay': '/'
//     }
//   }))
  app.use(proxy('/trans', {
    target: `${host}/${service}`,
    secure: false,
    changeOrigin: true
  }))
//   app.use(proxy('/trans', {
//     target: `${host}/${service}`,
//     secure: false,
//     changeOrigin: true
//   }))
  app.use(proxy('/api', { // 旷视面板机接口测试
    target: `http://192.168.1.66:80`,
    secure: false,
    changeOrigin: true
  }))
}
//   app.use(proxy('/api', { // 旷视面板机接口测试
//     target: `http://192.168.1.66:80`,
//     secure: false,
//     changeOrigin: true
//   }))
// }
src/tabviews/commontable/index.jsx
@@ -183,17 +183,22 @@
      config.tabgroups = config.tabgroups.filter(group => group.sublist.length > 0)
      let roleId = sessionStorage.getItem('role_id') || '' // 角色ID
      // 视图权限
      config.charts = config.charts.filter(item => {
        if (item.Hide === 'true') return false
        if (!item.blacklist || item.blacklist.length === 0) return true
        return item.blacklist.filter(v => roleId.indexOf(v) > -1).length === 0
      })
      if (config.charts.length <= 1) {
        config.expand = true
      let chartId = ''
      if (config.charts) {
        // 视图权限
        config.charts = config.charts.filter(item => {
          if (item.Hide === 'true') return false
          if (!item.blacklist || item.blacklist.length === 0) return true
          return item.blacklist.filter(v => roleId.indexOf(v) > -1).length === 0
        })
        if (config.charts.length <= 1) {
          config.expand = true
        }
        chartId = config.charts[0] ? config.charts[0].uuid : ''
      }
      let chartId = config.charts[0] ? config.charts[0].uuid : ''
      config.search = Utils.initSearchVal(config.search)
@@ -1129,7 +1134,7 @@
        {searchlist && searchlist.length ?
          <MainSearch BID={BID} searchlist={searchlist} setting={setting} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
        }
        {setting ? <Row className="chart-view" gutter={16}>
        {setting && config.charts ? <Row className="chart-view" gutter={16}>
          {/* 视图组 */}
          {!config.expand ? <Tabs activeKey={chartId} onChange={this.changeChart}>
            {config.charts.map(item => (
@@ -1209,6 +1214,41 @@
            }
          })}
        </Row> : null }
        {setting && !config.charts ? <div className="chart-view">
          <div className="commontable-main-action">
            <MainAction
              BID={BID}
              setting={setting}
              actions={actions}
              columns={columns}
              dict={this.state.dict}
              MenuID={MenuID}
              selectedData={selectedData}
              ContainerId={this.state.ContainerId}
            />
          </div>
          <div className="main-table-box">
            {(setting.tableType === 'radio' || setting.tableType === 'checkbox') && this.state.data && this.state.data.length > 0 ?
              <Switch title="收起" className="main-pickup" checkedChildren="开" unCheckedChildren="关" checked={pickup} onChange={this.pickupChange} /> : null
            }
            <MainTable
              MenuID={MenuID}
              tableId={MenuID}
              pickup={pickup}
              setting={setting}
              columns={columns}
              pageSize={pageSize}
              dict={this.state.dict}
              data={this.state.data}
              total={this.state.total}
              loading={this.state.loading}
              statFValue={this.state.statFValue}
              ContainerId={this.state.ContainerId}
              refreshdata={this.refreshbytable}
              chgSelectData={this.changeSelectedData}
            />
          </div>
        </div> : null }
        {setting && config.tabgroups.map(group => (
          <Tabs key={group.uuid}>
            {group.sublist.map(_tab => {
src/tabviews/subtable/index.jsx
@@ -160,18 +160,21 @@
        return col
      })
      // 视图权限
      config.charts = config.charts.filter(item => {
        if (item.Hide === 'true') return false
        if (!item.blacklist || item.blacklist.length === 0) return true
        return item.blacklist.filter(v => roleId.indexOf(v) > -1).length === 0
      })
      if (config.charts.length <= 1) {
        config.expand = true
      let chartId = ''
      if (config.charts) {
        // 视图权限
        config.charts = config.charts.filter(item => {
          if (item.Hide === 'true') return false
          if (!item.blacklist || item.blacklist.length === 0) return true
          return item.blacklist.filter(v => roleId.indexOf(v) > -1).length === 0
        })
        if (config.charts.length <= 1) {
          config.expand = true
        }
        chartId = config.charts[0] ? config.charts[0].uuid : ''
      }
      let chartId = config.charts[0] ? config.charts[0].uuid : ''
      // 1、筛选字段集,2、过滤隐藏列及合并列中的字段uuid
      config.columns.forEach(col => {
@@ -999,7 +1002,7 @@
        {searchlist && searchlist.length ?
          <SubSearch BID={BID} setting={setting} searchlist={searchlist} menuType={this.props.menuType} refreshdata={this.refreshbysearch}/> : null
        }
        {config ? <Row className="chart-view" gutter={16}>
        {config && config.charts ? <Row className="chart-view" gutter={16}>
          {/* 视图组 */}
          {!config.expand ? <Tabs activeKey={chartId} onChange={this.changeChart}>
            {config.charts.map(item => (
@@ -1083,6 +1086,43 @@
            }
          })}
        </Row> : null }
        {config && !config.charts ? <>
          <div className="sub-action">
            <SubAction
              BID={BID}
              BData={BData}
              setting={setting}
              actions={actions}
              columns={columns}
              Tab={this.props.Tab}
              MenuID={this.props.MenuID}
              selectedData={selectedData}
              ContainerId={this.props.ContainerId}
            />
          </div>
          <div className="subtable-box">
            {(setting.tableType === 'radio' || setting.tableType === 'checkbox') && this.state.data && this.state.data.length > 0 ?
              <Switch title="收起" className="subtable-pickup" checkedChildren="开" unCheckedChildren="关" checked={pickup} onChange={this.pickupChange} /> : null
            }
            <SubTable
              BData={BData}
              tableId={this.props.Tab.uuid}
              pickup={pickup}
              setting={setting}
              columns={columns}
              pageSize={pageSize}
              dict={this.state.dict}
              data={this.state.data}
              total={this.state.total}
              MenuID={this.props.MenuID}
              loading={this.state.loading}
              statFValue={this.state.statFValue}
              ContainerId={this.props.ContainerId}
              refreshdata={this.refreshbytable}
              chgSelectData={this.changeSelectedData}
            />
          </div>
        </> : null }
        {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
      </div>
    )
src/templates/comtableconfig/index.jsx
@@ -135,7 +135,7 @@
    }
    this.setState({
      chartview: _config.charts[0].uuid,
      chartview: _config.charts ? _config.charts[0].uuid : '',
      config: _config,
      openEdition: menu.open_edition || '',
      activeKey: menu.activeKey || '0',
@@ -1112,7 +1112,7 @@
          config: null
        }, () => {
          this.setState({
            chartview: _config.charts[0].uuid,
            chartview: _config.charts ? _config.charts[0].uuid : '',
            config: _config,
            openEdition: res.open_edition || '',
            activeKey: menu.activeKey || '0',
@@ -1265,12 +1265,12 @@
                config={config}
                updatesearch={this.updatesearch}
              />
              <div className="chart-view" style={{position: 'relative'}}>
                {/* 视图组 权限 会员等级20+ */}
                {this.props.memberLevel >= 20 ? <ChartGroupComponent
              {config.charts ? <div className="chart-view" style={{position: 'relative'}}>
                {/* 视图组 已弃用 */}
                <ChartGroupComponent
                  config={config}
                  updatechartgroup={this.updatechartgroup}
                /> : null}
                />
                {config.charts.map(item => {
                  if (!config.expand && chartview !== item.uuid) return ''
@@ -1315,7 +1315,21 @@
                    )
                  }
                })}
              </div>
              </div> : <>
                <ActionComponent
                  type="main"
                  menu={{ MenuID: this.props.menu.MenuID, MenuName: config.MenuName, MenuNo: config.MenuNo, fstMenuList: this.props.menu.fstMenuList }}
                  config={config}
                  tabs={this.state.tabviews}
                  setSubConfig={(_btn) => this.setSubConfig(_btn, 'button')}
                  updateaction={this.updateaction}
                />
                <ColumnComponent
                  config={config}
                  menu={this.props.menu}
                  updatecolumn={this.updateconfig}
                />
              </>}
              {/* 标签组 */}
              <TabsComponent
                config={config}
src/templates/menuconfig/editthdmenu/index.jsx
@@ -558,17 +558,20 @@
      let _templates = []
      res.UserTemp.forEach(temp => {
        if (temp.Template === 'NewPage') {
        if (temp.Template === 'NewPage' || temp.Template === 'RolePermission') {
          return
        } else if (temp.Template === 'CustomPage' && memberLevel < 20) {
          return
          temp.disabled = true
          temp.disTitle = '会员等级不够,无开发权限。'
        }
        
        _templates.push({
          uuid: temp.MenuID,
          title: temp.MenuName,
          type: temp.Template,
          url: illust[temp.Template]
          url: illust[temp.Template],
          disabled: temp.disabled || false,
          disTitle: temp.disTitle || ''
        })
      })
@@ -849,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} span={8}>
                          <Col key={template.type + index} className={template.disabled ? 'disabled' : ''} title={template.disTitle || ''} span={8}>
                            <Card
                              title={template.title}>
                              <img onClick={() => {this.previewPicture(template)}} src={template.url} alt=""/>
src/templates/menuconfig/menuelement/card.jsx
@@ -53,7 +53,8 @@
      </div>
      {/* 自定义模板,在新页面编辑 */}
      {!card.forbidden && card.type !== 'CustomPage' ? <EditOutlined className="edit" onClick={edit} /> : null}
      {card.type === 'CustomPage' ? <EditOutlined className="edit" onClick={() => {window.open(`#/menudesign/${_param}`)}}/> : null}
      {!card.forbidden && card.type === 'CustomPage' ? <EditOutlined className="edit" onClick={() => {window.open(`#/menudesign/${_param}`)}}/> : null}
      {card.forbidden && card.type === 'CustomPage' ? <EditOutlined className="edit" style={{color: '#959595', cursor: 'not-allowed'}} title="会员等级不够,无开发权限。"/> : null}
      <CloseOutlined className="close" onClick={close} />
    </div>
  )
src/templates/sharecomponent/actioncomponent/index.jsx
@@ -910,7 +910,7 @@
    const { actionlist, visible, card, dict, copying, profVisible, record } = this.state
    return (
      <div className="model-table-action-list" style={config.charts.length > 1 ? {paddingTop: 25} : null}>
      <div className="model-table-action-list" style={config.charts && config.charts.length > 1 ? {paddingTop: 25} : null}>
        <Tooltip placement="bottomLeft" overlayClassName="middle" title="在左侧工具栏《按钮》中,选择对应类型的按钮拖至此处添加,如选择按钮类型为表单、新标签页等含有配置页面的按钮,可在左侧工具栏-按钮-可配置按钮处,点击按钮完成相关配置。注:当设置按钮显示位置为表格时,显示列会增加操作列。">
          <QuestionCircleOutlined style={{color: '#c49f47', position: 'absolute', left: '5px', top: '5px'}} />
        </Tooltip>
src/templates/sharecomponent/chartgroupcomponent/index.jsx
@@ -254,6 +254,7 @@
    }
  }
  // 已弃用,不在开放添加通道
  render() {
    const { config } = this.props
    const { dict, chartlist, modaltype, card, chartview } = this.state
src/templates/subtableconfig/index.jsx
@@ -118,7 +118,7 @@
    this.setState({
      openEdition: editSubTab ? (editSubTab.open_edition || '') : (editTab.open_edition || ''),
      chartview: _config.charts[0].uuid,
      chartview: _config.charts ? _config.charts[0].uuid : '',
      originActions: _oriActions,
      config: _config,
      activeKey: _activeKey || '0',
@@ -987,7 +987,7 @@
          config: null
        }, () => {
          this.setState({
            chartview: _config.charts[0].uuid,
            chartview: _config.charts ? _config.charts[0].uuid : '',
            config: _config,
            openEdition: res.open_edition || '',
            activeKey: '0',
@@ -1109,12 +1109,12 @@
                config={config}
                updatesearch={this.updatesearch}
              />
              <div className="chart-view" style={{position: 'relative'}}>
                {/* 视图组 权限 会员等级20+ */}
                {this.props.memberLevel >= 20 ? <ChartGroupComponent
              {config.charts ? <div className="chart-view" style={{position: 'relative'}}>
                {/* 视图组 已弃用 */}
                <ChartGroupComponent
                  config={config}
                  updatechartgroup={this.updatechartgroup}
                /> : null}
                />
                {config.charts.map(item => {
                  if (!config.expand && chartview !== item.uuid) return ''
@@ -1159,7 +1159,21 @@
                    )
                  }
                })}
              </div>
              </div> : <>
                <ActionComponent
                  type="subtable"
                  menu={{MenuID: config.uuid, MenuName: config.tabName, MenuNo: config.tabNo, fstMenuList: this.props.menu.fstMenuList}}
                  config={config}
                  tabs={this.state.tabviews}
                  setSubConfig={this.setSubConfig}
                  updateaction={this.updateaction}
                />
                <ColumnComponent
                  config={config}
                  menu={this.props.menu}
                  updatecolumn={this.updateconfig}
                />
              </>}
            </Card>
          </div>
        </DndProvider>
src/utils/utils-update.js
@@ -135,6 +135,14 @@
    })
  }
  if (config.version < '2.0') {
    config.version = '2.0'
    // 去除传统table中的标签,调整数据结构
    if (config.charts && config.charts.length === 1) {
      config.charts = null
    }
  }
  config.Template = 'CommonTable'
  return config
@@ -216,6 +224,14 @@
      return item
    })
  }
  if (config.version < '2.0') {
    config.version = '2.0'
    // 去除传统table中的标签,调整数据结构
    if (config.charts && config.charts.length === 1) {
      config.charts = null
    }
  }
  
  config.Template = 'SubTable'
src/views/design/header/index.jsx
@@ -333,43 +333,43 @@
        {editLevel === 'HS' ? <Button className="level4-close" type="primary" onClick={this.exitManage}>退出</Button> : null}
        {/* 进入编辑按钮 */}
        {!editLevel && menulist ? <EditOutlined onClick={this.enterEdit} className="edit-check" /> : null}
        {!editLevel && options.sysType === 'local' && window.GLOB.systemType !== 'production' && this.props.memberLevel >= 20 ?
        {!editLevel && options.sysType === 'local' && window.GLOB.systemType !== 'production' ?
          <div className="app-entrance entrance">
            <div className="icon"><AppstoreOutlined /></div>
            <div className="title">应用管理</div>
            <div className="detail">可创建及管理PC、pad及移动端等不同设备的应用,实现明科云APP、微信公众号、小程序等多平台的应用共享。</div>
            <Button type="primary" onClick={() => {window.open('#/appmanage')}}>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/appmanage')}}>
              编辑
            </Button>
          </div> : null
        }
        {editLevel === 'HS' && options.sysType === 'local' && window.GLOB.systemType === 'production' && this.props.memberLevel >= 20 ?
        {editLevel === 'HS' && options.sysType === 'local' && window.GLOB.systemType === 'production' ?
          <div className="app-prod-entrance entrance">
            <div className="icon"><AppstoreOutlined /></div>
            <div className="title">应用管理</div>
            <div className="detail">可创建及管理PC、pad及移动端等不同设备的应用,实现明科云APP、微信公众号、小程序等多平台的应用共享。</div>
            <Button type="primary" onClick={() => {window.open('#/appcheck')}}>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/appcheck')}}>
              查看
            </Button>
          </div> : null
        }
        {!editLevel && options.sysType === 'local' && this.props.memberLevel >= 20 ?
        {!editLevel && options.sysType === 'local' ?
          <div className="api-entrance entrance">
            <div className="icon"><ApiOutlined /></div>
            <div className="title">接口调试</div>
            <div className="detail">可自动处理登录接口的参数加密,以及业务接口的签名计算,方便开发人员的接口测试工作。</div>
            <Button type="primary" onClick={() => {window.open('#/interface')}}>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/interface')}}>
              编辑
            </Button>
          </div> : null
        }
        {/* window.btoa(window.encodeURIComponent(JSON.stringify({ MenuType: 'home', MenuId: 'home_page_id', MenuName: '首页' }))) */}
        {!editLevel && window.GLOB.systemType !== 'production' && this.props.memberLevel >= 20 ?
        {!editLevel && window.GLOB.systemType !== 'production' ?
          <div className="home-entrance entrance">
            <div className="icon"><HomeOutlined /></div>
            <div className="title">首页</div>
            <div className="detail">基于自定义页面的首页设计,可实现灵活的元素配置及样式调整,展现当前系统的风格。</div>
            <Button type="primary" onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}>
            <Button type="primary" disabled={!(this.props.memberLevel >= 20)} title={this.props.memberLevel >= 20 ? '' : '会员等级不够,无开发权限。'} onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}>
              编辑
            </Button>
          </div> : null