| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { fromJS } from 'immutable' |
| | | import { is, fromJS } from 'immutable' |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import ColumnForm from './columnform' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import './index.scss' |
| | |
| | | columns: [ |
| | | { |
| | | title: '标识', |
| | | dataIndex: 'name', |
| | | dataIndex: 'sign', |
| | | inputType: 'input', |
| | | editable: true, |
| | | unique: true, |
| | | required: false, |
| | | width: '30%' |
| | | }, |
| | | { |
| | |
| | | editable: true, |
| | | required: true, |
| | | width: '40%', |
| | | render: (text) => { |
| | | if (text === 'image') { |
| | | return '图片' |
| | | } else { |
| | | return '文本' |
| | | } |
| | | }, |
| | | render: (text, record) => record.label, |
| | | options: this.props.menulist |
| | | } |
| | | ] |
| | |
| | | |
| | | columnChange = (values) => { |
| | | const { menus } = this.state |
| | | values.uuid = Utils.getuuid() |
| | | let _menus = [...menus, values] |
| | | |
| | | this.setState({menus: [...menus, values]}) |
| | | this.setState({menus: _menus}) |
| | | this.props.update(_menus) |
| | | } |
| | | |
| | | changeColumns = (columns) => { |
| | | // const { menus } = this.state |
| | | const { appType, menulist } = this.props |
| | | const { menus } = this.state |
| | | |
| | | let m = {} |
| | | menus.forEach(item => { |
| | | m[item.uuid] = item |
| | | }) |
| | | |
| | | columns = columns.map(col => { |
| | | let ori = m[col.uuid] |
| | | if (ori && is(fromJS({...col, $index: 1}), fromJS({...ori, $index: 1}))) return col |
| | | if (!appType) { |
| | | let fId = col.menu[0] || '' |
| | | let sId = col.menu[1] || '' |
| | | let tId = col.menu[2] || '' |
| | | let label = '' |
| | | |
| | | menulist.forEach(f => { |
| | | if (!fId || fId !== f.value) return |
| | | label = f.label |
| | | |
| | | f.children.forEach(s => { |
| | | if (!sId || sId !== s.value) return |
| | | label += ' / ' + s.label |
| | | |
| | | s.children.forEach(t => { |
| | | if (!tId || tId !== t.value) return |
| | | label += ' / ' + t.label |
| | | |
| | | col.MenuID = t.MenuID |
| | | col.MenuName = t.MenuName |
| | | col.MenuNo = t.MenuNo |
| | | col.tabType = t.type |
| | | col.label = label |
| | | }) |
| | | }) |
| | | }) |
| | | } else { |
| | | menulist.forEach(f => { |
| | | if (col.menu !== f.value) return |
| | | col.label = f.label |
| | | }) |
| | | } |
| | | return col |
| | | }) |
| | | |
| | | this.setState({menus: columns}) |
| | | this.props.update(columns) |
| | | } |
| | | |
| | | render() { |
| | |
| | | |
| | | return ( |
| | | <div className="menus-box-wrap"> |
| | | <ColumnForm appType={appType} menulist={menulist} columnChange={this.columnChange}/> |
| | | {/* <div style={{color: '#959595', fontSize: '13px', paddingLeft: '10px'}}>如需导出序号,请使用字段 $Index。</div> */} |
| | | <EditTable actions={['edit', 'move', 'del']} type="excelcolumn" data={menus} columns={columns} onChange={this.changeColumns}/> |
| | | <ColumnForm appType={appType} menus={menus} menulist={menulist} columnChange={this.columnChange}/> |
| | | <EditTable actions={['edit', 'move', 'copy', 'del']} type={appType + 'cardmenus'} data={menus} columns={columns} onChange={this.changeColumns}/> |
| | | </div> |
| | | ) |
| | | } |