| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { Form, Row, Col, Button, Input, Select, Cascader } from 'antd' |
| | | import { Form, Row, Col, Button, Input, Select, Cascader, notification } from 'antd' |
| | | import './index.scss' |
| | | |
| | | class ExcelOutColumn extends Component { |
| | | class MenusColumn extends Component { |
| | | static propTpyes = { |
| | | menus: PropTypes.array, |
| | | appType: PropTypes.string, |
| | | menulist: PropTypes.array, |
| | | columnChange: PropTypes.func // 修改函数 |
| | | columnChange: PropTypes.func |
| | | } |
| | | |
| | | handleConfirm = () => { |
| | | const { appType, menus, menulist } = this.props |
| | | // 表单提交时检查输入值是否正确 |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | | if (!err) { |
| | | if (menus.filter(item => item.sign === values.sign).length > 0) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '标识已存在!', |
| | | duration: 2 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | if (!appType) { |
| | | let fId = values.menu[0] || '' |
| | | let sId = values.menu[1] || '' |
| | | let tId = values.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 |
| | | |
| | | values.MenuID = t.MenuID |
| | | values.MenuName = t.MenuName |
| | | values.MenuNo = t.MenuNo |
| | | values.tabType = t.type |
| | | values.label = label |
| | | }) |
| | | }) |
| | | }) |
| | | } else { |
| | | menulist.forEach(f => { |
| | | if (values.menu !== f.value) return |
| | | values.label = f.label |
| | | }) |
| | | } |
| | | |
| | | this.props.columnChange(values) |
| | | this.props.form.setFieldsValue({ |
| | | Column: '', |
| | | Text: '', |
| | | Width: 20 |
| | | sign: '', |
| | | menu: appType ? '' : [] |
| | | }) |
| | | } |
| | | }) |
| | |
| | | <Row gutter={24}> |
| | | <Col span={10}> |
| | | <Form.Item label="标识"> |
| | | {getFieldDecorator('name', { |
| | | initialValue: '', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请输入标识!' |
| | | } |
| | | ] |
| | | {getFieldDecorator('sign', { |
| | | initialValue: '' |
| | | })(<Input placeholder="" autoComplete="off" />)} |
| | | </Form.Item> |
| | | </Col> |
| | |
| | | } |
| | | } |
| | | |
| | | export default Form.create()(ExcelOutColumn) |
| | | export default Form.create()(MenusColumn) |
| | |
| | | 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> |
| | | ) |
| | | } |
| | |
| | | // .menus-box-wrap { |
| | | |
| | | // } |
| | | .menus-box-wrap { |
| | | min-height: 250px; |
| | | } |
| | |
| | | openView = () => { |
| | | const { card, data, cards } = this.props |
| | | |
| | | if (card.setting.click === 'menu') { |
| | | if (card.setting.click === 'menus' && cards.subtype === 'datacard' && card.$cardType !== 'extendCard') { |
| | | let menu = null |
| | | |
| | | if (card.menus && card.menus.length > 0) { |
| | | let s = data[card.setting.menuType] || '' |
| | | card.menus.forEach(m => { |
| | | if (s !== m.sign) return |
| | | menu = m |
| | | }) |
| | | } |
| | | if (!menu || !menu.MenuID) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '未查询到菜单信息!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | menu.type = menu.tabType |
| | | |
| | | let newtab = { |
| | | ...menu, |
| | | param: {} |
| | | } |
| | | |
| | | if (card.setting.joint === 'true') { |
| | | newtab.param.$BID = data.$$uuid || '' |
| | | } |
| | | |
| | | if (['linkage_navigation', 'linkage', 'menu_board'].includes(window.GLOB.navBar)) { |
| | | MKEmitter.emit('modifyTabs', newtab, 'replace') |
| | | } else { |
| | | MKEmitter.emit('modifyTabs', newtab, 'plus', true) |
| | | } |
| | | } else if (card.setting.click === 'menu') { |
| | | let menu = null |
| | | |
| | | if (card.setting.MenuID) { |