king
2021-10-14 b5c96c82c04f57d1d0e1e04d96e99e6d7829881f
2021-10-14
4个文件已修改
181 ■■■■ 已修改文件
src/menu/components/card/cardcomponent/menus-wrap/menus/columnform/index.jsx 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcomponent/menus-wrap/menus/index.jsx 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcomponent/menus-wrap/menus/index.scss 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/cardItem/index.jsx 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcomponent/menus-wrap/menus/columnform/index.jsx
@@ -1,24 +1,67 @@
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 ? '' : []
        })
      }
    })
@@ -43,14 +86,8 @@
        <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>
@@ -80,4 +117,4 @@
  }
}
export default Form.create()(ExcelOutColumn)
export default Form.create()(MenusColumn)
src/menu/components/card/cardcomponent/menus-wrap/menus/index.jsx
@@ -1,7 +1,8 @@
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'
@@ -20,10 +21,11 @@
    columns: [
      {
        title: '标识',
        dataIndex: 'name',
        dataIndex: 'sign',
        inputType: 'input',
        editable: true,
        unique: true,
        required: false,
        width: '30%'
      },
      {
@@ -33,13 +35,7 @@
        editable: true,
        required: true,
        width: '40%',
        render: (text) => {
          if (text === 'image') {
            return '图片'
          } else {
            return '文本'
          }
        },
        render: (text, record) => record.label,
        options: this.props.menulist
      }
    ]
@@ -55,14 +51,62 @@
  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() {
@@ -71,9 +115,8 @@
    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>
    )
  }
src/menu/components/card/cardcomponent/menus-wrap/menus/index.scss
@@ -1,3 +1,3 @@
// .menus-box-wrap {
// }
.menus-box-wrap {
  min-height: 250px;
}
src/tabviews/custom/components/card/cardItem/index.jsx
@@ -44,7 +44,42 @@
  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) {