king
2020-12-28 6467e4115c5284a15f393e3dd2ffb07ebd2a96d6
2020-12-28
20个文件已修改
410 ■■■■ 已修改文件
src/assets/css/viewstyle.scss 314 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/sidemenu/index.scss 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/modalconfig/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/options.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/reducer.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/prop-card/index.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/normal-table/index.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/mutilform/customSwitch/index.jsx 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/mutilform/index.jsx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/normalTable/index.scss 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/topSearch/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/dragelement/card.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/formconfig.jsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/modalform/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.scss 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/main/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/viewstyle.scss
@@ -1,80 +1,320 @@
.mk-white {
  > .flex-container {
    > .header-container {
      background: #ffffff;
      color: #000000;
      box-shadow: 0 2px 8px #f0f1f2;
// bg1     主背景色
// bg2     次背景色
// font1   主字体颜色
// color1  1阶色 - 底色
// color2  2阶色
// color3  3阶色
// color4  4阶色
// color5  5阶色
// color6  6阶色 - 主色系
// color7  7阶色
// color8  8阶色
// color9  9阶色
// color10 10阶色
@mixin viewstyle($bg1, $bg2, $font1, $font2, $color1, $color2, $color3, $color4, $color5, $color6, $color7, $color8, $color9, $color10) {
  .login-container {
    background-color: $bg1;
    .logo {
      border-color: transparent;
      .plat-name {
        color: $font1;
      }
    }
    .login-middle {
      border-color: transparent;
      .login-form-button {
        background-color: $color6;
        border-color: $color6;
      }
      .login-form-button[disabled] {
        background-color: $color5;
        border-color: $color5;
      }
      button.vercode {
        color: $color6;
      }
      .ant-tabs {
        .ant-tabs-tab.ant-tabs-tab-active {
          color: $color6;
        }
        .ant-tabs-tab:hover {
          color: $color6;
        }
      }
    }
    .login-bottom {
      color: $font1;
      a {
        color: $font1;
      }
    }
  }
  #root > .main-view {
    > .header-container {
      background: $bg1;
      color: $font1;
      box-shadow: 0 1px 1px #d9d9d9;
      .header-setting span {
        color: $font1;
      }
      > .header-collapse i {
        color: #000000;
        color: $font1;
      }
      > .header-menu {
        li {
          span {
            color: #000000;
            color: $font1;
          }
    
          &:hover {
            span {
              color: #1890ff;
              border-bottom: 4px solid #1890ff;
              color: $color6;
              border-bottom: 4px solid $color6;
            }
          }
          &.active {
            span {
              color: #1890ff;
              border-bottom: 4px solid #1890ff;
              color: $color6;
              border-bottom: 4px solid $color6;
            }
          }
        }
      }
      > .header-setting span {
        color: #000000;
      }
      > .header-edit-box .dragdashboard {
        background: #ffffff;
      }
    }
    > .side-menu {
      border-right: 1px solid #d9d9d9;
      background: #ffffff;
      background: $bg1;
      > .ant-menu {
        background: #ffffff;
        background: $bg1;
        > .ant-menu-submenu {
          color: #000000;
          background: #ffffff;
          color: $font1;
          background: transparent;
          > .ant-menu-submenu-title {
            background: #ffffff;
            &:hover {
              color: #1890ff;
              color: $font1;
            }
            > .ant-menu-submenu-arrow:before {
              background: #000000;
              background: $font1;
            }
            > .ant-menu-submenu-arrow:after {
              background: #000000;
              background: $font1;
            }
          }
          > .ant-menu-sub {
            background: #ffffff;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25) inset;
            background: transparent;
            box-shadow: none;
            .ant-menu-item {
              border-bottom: 1px solid #d9d9d9;
              // background-color: #c4ebfd;
              a {
                color: #000000;
                color: $font2;
              }
            }
          }
        }
        > .ant-menu-submenu.ant-menu-submenu-open {
          color: #1890ff;
          > .ant-menu-submenu-title {
            background: $bg2;
          }
        }
      }
      // .ant-menu-inline.ant-menu-sub {
      //   background: #ffffff;
      //   color: #000000;
      // }
    }
    > .side-menu:not(.edit) {
      > .ant-menu {
        > .ant-menu-submenu {
          > .ant-menu-sub {
            .ant-menu-item.ant-menu-item-active, .ant-menu-item.ant-menu-item-selected {
              background: $color5;
              color: #ffffff;
              a {
                color: #ffffff;
              }
            }
          }
        }
      }
    }
    >.content-box {
      >.content-header {
        >.ant-tabs {
          >.ant-tabs-bar {
            .ant-tabs-tab:hover {
              color: $color5;
            }
            .ant-tabs-tab.ant-tabs-tab-active {
              color: $color6;
            }
            .ant-tabs-ink-bar {
              background-color: $color6;
            }
          }
        }
      }
      .normal-data-table, .normal-custom-table {
        table {
          .ant-table-tbody {
            > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
              background-color: $color1;
            }
            > tr.ant-table-row-selected:not(.background) td {
              background-color: $color1;
            }
            > tr.ant-table-row-selected:not(.background):hover .ant-table-column-sort {
              background-color: $color1;
            }
            > tr.mk-row-active:not(.background) td {
              background-color: $color3;
            }
            > tr.ant-table-row-selected.mk-row-active:not(.background):hover .ant-table-column-sort {
              background-color: $color3;
            }
          }
        }
      }
      .top-search {
        >.ant-row {
          .ant-col.search-button {
            .ant-btn:not(.ant-btn-primary):active, .ant-btn:not(.ant-btn-primary).active, .ant-btn:not(.ant-btn-primary):hover, .ant-btn:not(.ant-btn-primary):focus {
              color: $color7;
              border-color: $color7;
            }
            .ant-btn-primary {
              background-color: $color6;
              border-color: $color6;
            }
          }
        }
      }
      .ant-tabs-nav .ant-tabs-tab-active {
        color: $color6;
      }
      .ant-tabs-nav .ant-tabs-ink-bar {
        background-color: $color6;
      }
      .ant-tabs-nav .ant-tabs-tab:active {
        color: $color7;
      }
      .ant-tabs-nav .ant-tabs-tab:hover {
        color: $color5;
      }
      .ant-pagination {
        .ant-pagination-item-active {
          border-color: $color6;
          a {
            color: $color6;
          }
        }
        .ant-pagination-item:hover a {
          color: $color6;
        }
        .ant-pagination-prev:hover .ant-pagination-item-link {
          color: $color6;
        }
        .ant-pagination-next:hover .ant-pagination-item-link {
          color: $color6;
        }
      }
    }
  }
}
  // 系统样式修改
  // .ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) {
  //   background-color: $color1;
  // }
  // .ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
  //   background-color: $color1;
  // }
  // // 复选框
  // .ant-checkbox-checked .ant-checkbox-inner {
  //   background-color: $color6;
  //   border-color: $color6;
  // }
  // .ant-checkbox-checked::after {
  //   border: 1px solid $color6;
  // }
  // .ant-checkbox-indeterminate .ant-checkbox-inner::after {
  //   background-color: $color6;
  // }
  // .ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner, .ant-checkbox-input:focus + .ant-checkbox-inner {
  //   border-color: $color6;
  // }
  // // 下拉框
  // .ant-select-selection:hover {
  //   border-color: $color5;
  // }
  // .ant-select-focused .ant-select-selection, .ant-select-selection:focus, .ant-select-selection:active {
  //   border-color: $color5;
  //   box-shadow: 0 0 0 2px $color2;
  // }
  // // 切换
  // .ant-switch-checked {
  //   background-color: $color6;
  // }
  // // 输入框
  // .ant-input:hover {
  //   border-color: $color5;
  // }
  // .ant-input:focus, .ant-input:active {
  //   border-color: $color5;
  //   box-shadow: 0 0 0 2px $color2;
  // }
  // .ant-input-number-focused {
  //   border-color: $color5;
  //   box-shadow: 0 0 0 2px $color2;
  // }
  // .ant-input-number:hover, .ant-input-number:focus, .ant-input-number:active, .ant-input-number-input:hover, .ant-input-number-input:focus, .ant-input-number-input:active, .ant-input-number-focused:hover, .ant-input-number-focused:focus, .ant-input-number-focused:active {
  //   border-color: $color5;
  // }
  // .ant-input-number:focus, .ant-input-number:active {
  //   box-shadow: 0 0 0 2px $color2;
  // }
  // // 日历
  // .ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
  //   border-color: $color5;
  // }
}
@mixin bgblack() {
  #root > .main-view {
    > .header-container {
      box-shadow: none;
      > .header-menu {
        li {
          &:hover, &.active {
            span {
              color: #ffffff;
            }
          }
        }
      }
    }
  }
}
body.mk-blue-black {
  --antd-wave-shadow-color: #1890ff;
  @include viewstyle(#000000, #434343,rgba(255, 255, 255, 0.85), rgba(255, 255, 255, 0.65), #e6f7ff, #bae7ff, #91d5ff, #69c0ff, #40a9ff, #1890ff, #096dd9, #0050b3, #003a8c, #002766);
  @include bgblack();
}
body.mk-blue-white {
  --antd-wave-shadow-color: #1890ff;
  @include viewstyle(#ffffff, #ffffff, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.65), #e6f7ff, #bae7ff, #91d5ff, #69c0ff, #40a9ff, #1890ff, #096dd9, #0050b3, #003a8c, #002766);
}
body.mk-red-black {
  --antd-wave-shadow-color: #f5222d;
  @include viewstyle(#000000, #434343,rgba(255, 255, 255, 0.85), rgba(255, 255, 255, 0.65), #fff1f0, #ffccc7, #ffa39e, #ff7875, #ff4d4f, #f5222d, #cf1322, #a8071a, #820014, #5c0011);
  @include bgblack();
}
body.mk-red-white {
  --antd-wave-shadow-color: #f5222d;
  @include viewstyle(#ffffff, #ffffff, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.65), #fff1f0, #ffccc7, #ffa39e, #ff7875, #ff4d4f, #f5222d, #cf1322, #a8071a, #820014, #5c0011);
}
body.mk-orange-black {
  --antd-wave-shadow-color: #fa8c16;
  @include viewstyle(#000000, #434343,rgba(255, 255, 255, 0.85), rgba(255, 255, 255, 0.65), #fff7e6, #ffe7ba, #ffd591, #ffc069, #ffa940, #fa8c16, #d46b08, #ad4e00, #873800, #612500);
  @include bgblack();
}
body.mk-orange-white {
  --antd-wave-shadow-color: #fa8c16;
  @include viewstyle(#ffffff, #ffffff, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.65), #fff7e6, #ffe7ba, #ffd591, #ffc069, #ffa940, #fa8c16, #d46b08, #ad4e00, #873800, #612500);
}
src/components/sidemenu/index.scss
@@ -16,11 +16,11 @@
  .ant-menu-sub.ant-menu-inline {
    position: relative;
  }
  .ant-menu-sub.ant-menu-inline > .ant-menu-item { // 重置三级菜单行高
  .ant-menu-sub.ant-menu-inline > .ant-menu-item {
    height: 38px;
    line-height: 38px;
    margin: 0px;
    border-bottom: 1px solid #000c17;
    // border-bottom: 1px solid #000c17;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
@@ -31,10 +31,10 @@
      top: -5px;
    }
  }
  .ant-menu-sub.ant-menu-inline > .ant-menu-item.ant-menu-item-active { // 重置三级菜单行高
  .ant-menu-sub.ant-menu-inline > .ant-menu-item.ant-menu-item-active {
    background: #06b4f7;
  }
  .ant-menu-sub.ant-menu-inline > .ant-menu-item.ant-menu-item-selected { // 重置三级菜单行高
  .ant-menu-sub.ant-menu-inline > .ant-menu-item.ant-menu-item-selected {
    background: #06b4f7;
  }
  .ant-menu-inline .ant-menu-item {
src/index.js
@@ -158,6 +158,9 @@
          link.href = GLOB.favicon
          document.getElementsByTagName('head')[0].appendChild(link)
        }
        if (GLOB.style && options.styles[GLOB.style]) {
          document.body.className = options.styles[GLOB.style]
        }
      } catch {
        console.warn('Parse Failure')
      }
src/menu/modalconfig/index.jsx
@@ -199,7 +199,7 @@
      _formfields = config.fields
    }
    _inputfields = _formfields.filter(item => item.type === 'text' || item.type === 'number' || item.type === 'color')
    _inputfields = _formfields.filter(item => item.type === 'text' || item.type === 'number' || item.type === 'textarea' || item.type === 'color')
    _tabfields = _formfields.filter(item => card.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type))
    _tabfields.unshift({field: '', text: '原表单'})
src/store/options.js
@@ -5,6 +5,11 @@
  cakey: 'MjAyMDAxMTYxMjQwMDQ2NDM$mk2N0QzODE2MjExNUI0MTc4OTVDMQ==',
  cdomain: 'aHR0cDovL2Nsb3V$mkkLm1rOWguY24=', // window.btoa('') 域名 不带 /; baoshide ( aHR0cDovL2Nsb3VkLnBv$mkc2l0ZWNncm91cC5jb206ODA4MA== )
  styles: {
    white: 'mk-white'
    bg_black_style_blue: 'mk-blue-black',
    bg_white_style_blue: 'mk-blue-white',
    bg_black_style_red: 'mk-red-black',
    bg_white_style_red: 'mk-red-white',
    bg_black_style_orange: 'mk-orange-black',
    bg_white_style_orange: 'mk-orange-white',
  }
}
src/store/reducer.js
@@ -81,6 +81,7 @@
      }
    case Type.RESET_EDITSTATE:
    // 重置编辑状态
      document.body.className = ''
      return {
        ...state,
        tabviews: [],
src/tabviews/custom/components/card/prop-card/index.jsx
@@ -42,15 +42,15 @@
      _sync = _config.setting.sync === 'true'
      if (_sync && data) {
        _data = data[_config.dataName]
        _data = data[_config.dataName] || {}
        if (_data && Array.isArray(_data)) {
          _data = _data[0]
          _data = _data[0] || {}
        }
        _sync = false
      } else if (_sync && initdata) {
        _data = initdata
        _data = initdata || {}
        if (_data && Array.isArray(_data)) {
          _data = _data[0]
          _data = _data[0] || {}
        }
        _sync = false
      }
src/tabviews/custom/components/table/normal-table/index.scss
@@ -51,7 +51,4 @@
      line-height: 150px!important;
    }
  }
  .normal-data-table {
    padding: 0;
  }
}
src/tabviews/zshare/mutilform/customSwitch/index.jsx
@@ -33,10 +33,11 @@
  }
  render() {
    const { Item } = this.props
    const { defaultChecked } = this.state
    return (
      <Switch defaultChecked={defaultChecked} onChange={this.onChange}/>
      <Switch checkedChildren={Item.openText || ''} unCheckedChildren={Item.closeText || ''} defaultChecked={defaultChecked} onChange={this.onChange}/>
    )
  }
}
src/tabviews/zshare/mutilform/index.jsx
@@ -93,15 +93,18 @@
    let deForms = []    // 需要动态获取下拉菜单的表单
    formlist.forEach(item => {
      if (item.type === 'text' || item.type === 'number') {                // 用于过滤下拉菜单关联表单
      if (item.type === 'text' || item.type === 'number') {              // 用于过滤下拉菜单关联表单
        _inputfields.push(item.field)
      } else if (item.type === 'textarea' && item.encryption === 'true') { // 加密字段
        encrypts.push(item.field)
      } else if (item.type === 'textarea') {
        _inputfields.push(item.field)
        if (item.encryption === 'true') {                                // 加密字段
          encrypts.push(item.field)
        }
      } else if (item.type === 'link') {
        linkFields[item.linkField] = linkFields[item.linkField] || []
        linkFields[item.linkField].push(item.field)
      }
      if (item.interception === 'true') {                                  // 字符截取字段
      if (item.interception === 'true') {                                // 字符截取字段
        intercepts.push(item.field)
      }
    })
src/tabviews/zshare/normalTable/index.scss
@@ -22,9 +22,6 @@
      tr {
        th {
          position: relative;
          // .ant-table-column-title {
          //   white-space: nowrap;
          // }
        }
      }
    }
@@ -54,7 +51,6 @@
  }
  .ant-table-body {
    overflow-x: auto!important;
    // min-height: 90px;
    table {
      .ant-table-tbody > tr > td {
        vertical-align: top;
src/tabviews/zshare/topSearch/index.jsx
@@ -642,7 +642,7 @@
    if (showButton) {
      fields.push(
        <Col span={6} style={{ whiteSpace: 'nowrap' }} key="actions">
        <Col span={6} style={{ whiteSpace: 'nowrap' }} className="search-button" key="actions">
          <Form.Item label={' '} colon={false} style={{ minHeight: '40px' }}>
            <Button type="primary" onClick={this.handleSearch}>
              {dict['main.search']}
src/templates/formtabconfig/index.jsx
@@ -439,7 +439,7 @@
      _formfields = [..._formfields, ...group.sublist]
    })
    _inputfields = _formfields.filter(item => item.type === 'text' || item.type === 'number' || item.type === 'color')
    _inputfields = _formfields.filter(item => item.type === 'text' || item.type === 'number' || item.type === 'textarea' || item.type === 'color')
    _tabfields = _formfields.filter(item => card.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type))
    _tabfields.unshift({field: '', text: '原表单'})
    
src/templates/modalconfig/dragelement/card.jsx
@@ -104,7 +104,7 @@
  } else if (card.type === 'linkMain') {
    formItem = (<Input style={{marginTop: '4px'}} />)
  } else if (card.type === 'switch') {
    formItem = (<Switch style={{marginTop: '8px'}} checked={card.initval}/>)
    formItem = (<Switch checkedChildren={card.openText || ''} unCheckedChildren={card.closeText || ''} style={{marginTop: '8px'}} checked={card.initval}/>)
  } else if (card.type === 'radio') {
    formItem = card.options && card.options.length > 0 ? (<Radio.Group value={card.initval}>
      {card.options.map(cell => <Radio key={cell.key} value={cell.Value}>{cell.Text}</Radio>)}
src/templates/modalconfig/index.jsx
@@ -276,7 +276,7 @@
      _formfields = config.fields
    }
    _inputfields = _formfields.filter(item => item.type === 'text' || item.type === 'number' || item.type === 'color')
    _inputfields = _formfields.filter(item => item.type === 'text' || item.type === 'number' || item.type === 'textarea' || item.type === 'color')
    _tabfields = _formfields.filter(item => card.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type))
    _tabfields.unshift({field: '', text: '原表单'})
src/templates/zshare/formconfig.jsx
@@ -1963,6 +1963,20 @@
      required: true
    },
    {
      type: 'text',
      key: 'openText',
      label: '开启提示',
      initVal: card.openText || '',
      required: false
    },
    {
      type: 'text',
      key: 'closeText',
      label: '关闭提示',
      initVal: card.closeText || '',
      required: false
    },
    {
      type: 'radio',
      key: 'resourceType',
      label: Formdict['header.form.resourceType'],
src/templates/zshare/modalform/index.jsx
@@ -23,7 +23,7 @@
  multiselect: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'fieldlength', 'entireLine', 'tooltip'],
  link: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'setAll', 'linkField', 'entireLine', 'tooltip', 'emptyText', 'enter'],
  fileupload: ['readonly', 'required', 'readin', 'fieldlength', 'maxfile', 'fileType', 'entireLine', 'tooltip'],
  switch: ['initval', 'openVal', 'closeVal', 'readonly', 'hidden', 'readin', 'entireLine', 'tooltip'],
  switch: ['initval', 'openVal', 'closeVal', 'openText', 'closeText', 'readonly', 'hidden', 'readin', 'entireLine', 'tooltip'],
  date: ['initval', 'readonly', 'required', 'hidden', 'readin', 'entireLine', 'tooltip'],
  datemonth: ['initval', 'readonly', 'required', 'hidden', 'readin', 'entireLine', 'tooltip'],
  datetime: ['initval', 'readonly', 'required', 'hidden', 'readin', 'entireLine', 'tooltip'],
src/views/login/index.jsx
@@ -341,7 +341,7 @@
            window.GLOB.style = systemMsg.style
        
            if (window.GLOB.style && options.styles[window.GLOB.style]) {
              document.getElementById('root').className = options.styles[window.GLOB.style]
              document.body.className = options.styles[window.GLOB.style]
            }
            if (res.titlelogo && window.GLOB.favicon !== res.titlelogo) {
src/views/login/index.scss
@@ -55,6 +55,13 @@
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
        border-top: 0;
      }
      .ant-tabs-tab:first-child {
        border-left: 0;
      }
      .ant-tabs-tab:last-child {
        border-right: 0;
      }
      .ant-tabs-tab.ant-tabs-tab-active {
        cursor: default;
@@ -90,6 +97,7 @@
      min-width: 300px;
      border-radius: 5px;
      overflow: hidden;
      border: 1px solid #e8e8e8;
      .form-item-wrap {
        padding: 0.6vw 1.6vw 1.6vw;
@@ -199,11 +207,11 @@
      color: #ffffff;
    }
  }
  .ant-btn-primary[disabled] {
    color: #fff;
    background-color: #40a9ff;
    border-color: #40a9ff;
  }
  // .ant-btn-primary[disabled] {
  //   color: #fff;
  //   background-color: #40a9ff;
  //   border-color: #40a9ff;
  // }
}
.sync-cloud-application {
  .ant-modal-body {
src/views/main/index.jsx
@@ -13,7 +13,7 @@
class Main extends Component {
  render () {
    return (
      <div className="flex-container">
      <div className="flex-container main-view">
        <ConfigProvider locale={_locale}>
          <Header key="header"/>
          <Sidemenu key="sidemenu"/>