king
2020-01-17 a0a285c90987eb9b1591f90333f3aeb15659ded2
src/components/sidemenu/editthdmenu/index.jsx
@@ -30,8 +30,6 @@
  CommonTable: nortable
}
let previewList = null // 初始菜单列表
class EditMenu extends Component {
  static propTpyes = {
    reload: PropTypes.func,      // 菜单修改后刷新
@@ -43,7 +41,6 @@
  state = {
    dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS,
    show: true,            // 控制菜单刷新
    thawmenulist: null,    // 已冻结的二级菜单
    type: '',              // 操作类型,新建或编辑菜单
    tabview: '',           // 选择模板窗口(template)、基础表格配置(CommonTable)、表单(Modal)、子表(SubTable)
@@ -59,6 +56,7 @@
    preview: null,         // 图片预览url
    pretemplate: null,     // 预览模板
    btnParam: null,        // 编辑按钮的配置信息
    menulist: null,        // 编辑中的菜单
    sysTemplates: sysTemps // 系统模板
  }
@@ -66,7 +64,9 @@
   * @description 菜单顺序改变时,保存中间状态
   */
  handlePreviewList = (List) => {
    previewList = List
    this.setState({
      menulist: List
    })
  }
  /**
@@ -77,7 +77,8 @@
   */
  handleMenu = (menu) => {
    const _this = this
    if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
    if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
      notification.warning({
        top: 92,
        message: this.state.dict['header.menu.presave'],
@@ -168,7 +169,7 @@
  handleSubBtn = (type) => {
    // 操作按钮:添加、解除冻结、确认及关闭
    if (type === 'add') { // 点击添加时,展开模板
      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
        notification.warning({
          top: 92,
          message: this.state.dict['header.menu.presave'],
@@ -179,7 +180,7 @@
      this.setState({tabview: 'template', type: 'add'})
      document.getElementById('root').style.overflowY = 'hidden'
    } else if (type === 'thaw') {
      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
        notification.warning({
          top: 92,
          message: this.state.dict['header.menu.presave'],
@@ -213,11 +214,11 @@
        }
      })
    } else if (type === 'confirm') {
      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
        let _this = this
        let param  = {
          func: 'sPC_Menu_SortUpt',
          LText: previewList.map((item, index) => {
          LText: this.state.menulist.map((item, index) => {
            return 'select \'' + item.MenuID + '\' as Menuid,' + (index + 1) * 10 + ' as sort'
          })
        }
@@ -500,17 +501,18 @@
  }
  UNSAFE_componentWillMount () {
    previewList = null
    this.getUsedTemplate()
    this.setState({
      menulist: this.props.menulist
    })
  }
  UNSAFE_componentWillReceiveProps (nextProps) {
    if (!is(fromJS(this.props.menulist), fromJS(nextProps.menulist))) {
      previewList = null
      this.setState({show: false})
      setTimeout(() => {
        this.setState({show: true})
      }, 10)
      this.setState({
        menulist: nextProps.menulist
      })
    }
  }
@@ -543,13 +545,13 @@
          <Icon type={this.props.supMenu.PageParam.Icon} />
          <span>{this.props.supMenu.text}</span>
        </div>
        {this.state.show && <DndProvider backend={HTML5Backend}>
        <DndProvider backend={HTML5Backend}>
          <DragElement
            list={this.props.menulist}
            list={this.state.menulist}
            handlePreviewList={this.handlePreviewList}
            handleMenu={this.handleMenu}
          />
        </DndProvider>}
        </DndProvider>
        <div className="menu-add" onClick={() => {this.handleSubBtn('add')}}>
          <Icon type="plus" />
        </div>