| | |
| | | CommonTable: nortable |
| | | } |
| | | |
| | | let previewList = null // 初始菜单列表 |
| | | |
| | | class EditMenu extends Component { |
| | | static propTpyes = { |
| | | reload: PropTypes.func, // 菜单修改后刷新 |
| | |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | show: true, // 控制菜单刷新 |
| | | thawmenulist: null, // 已冻结的二级菜单 |
| | | type: '', // 操作类型,新建或编辑菜单 |
| | | tabview: '', // 选择模板窗口(template)、基础表格配置(CommonTable)、表单(Modal)、子表(SubTable) |
| | |
| | | preview: null, // 图片预览url |
| | | pretemplate: null, // 预览模板 |
| | | btnParam: null, // 编辑按钮的配置信息 |
| | | menulist: null, // 编辑中的菜单 |
| | | sysTemplates: sysTemps // 系统模板 |
| | | } |
| | | |
| | |
| | | * @description 菜单顺序改变时,保存中间状态 |
| | | */ |
| | | handlePreviewList = (List) => { |
| | | previewList = List |
| | | this.setState({ |
| | | menulist: List |
| | | }) |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | 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'], |
| | |
| | | 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'], |
| | |
| | | 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'], |
| | |
| | | } |
| | | }) |
| | | } 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' |
| | | }) |
| | | } |
| | |
| | | } |
| | | |
| | | 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 |
| | | }) |
| | | } |
| | | } |
| | | |
| | |
| | | <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> |