mutilOptions.js 4.52 KB
import React from 'react'
import UserManageBar from '@components/Common/WhiteBar/index'
import { Form, Button, Input, Tree, message, Radio, } from 'antd'
import Utils from '@src/utils/utils'
const FormItem = Form.Item;
const TreeNode = Tree.TreeNode
//创建所属机构树
class OrgOptionsForm extends React.Component {
  state = {}
  //查询角色列表
  queryList = () => {
    let data = this.props.form.getFieldsValue();
    if (!data.name || !data.name.replace(/\s+/g, "")) {

      message.warn('请输入角色名')
      return
    }
    this.props.getRoleParam(data.name.replace(/\s+/g, ""))
    this.setState({
      checkedKeys: []
    })
  }

  componentWillMount(){
    this.reset()
    const { setRadioId } = this.props
    console.log(setRadioId)
    this.setState({
      checkedKeys:setRadioId ? [setRadioId.key] : ''
    })
  }

  //重置
  reset = () => {
    this.props.getRoleInfo()
    this.props.form.resetFields()
    this.setState({
      checkedKeys: []
    })
    this.props.getRoleObj({})

  }

  //递归获取树形机构图
  renderTreeNodes = (data) => {
    const selfObj = this.props.selfObj
    const { setRadioId } = this.props
    console.log('selfObj',selfObj)
    return data.map((item,index ) => {
      if (item.roles && item.roles.length > 0) {
           return <TreeNode
            icon={<Radio ref={item.name}  disabled={selfObj ? (selfObj.key== item.id ? true:false) :false} 
              checked={setRadioId.key == item.id} value={item.id} />}
            title={<span> {Utils.formatTableColumn(item.name)}</span>}
            key={item.id}
            name={item.name}
          >
               {selfObj? selfObj.key== item.id ? delete  item.roles: this.renderTreeNodes(item.roles):this.renderTreeNodes(item.roles)}
           
          </TreeNode>
        
      } else {
        return <TreeNode icon={<Radio ref={item.name}  disabled={selfObj ? (selfObj.key== item.id ? true:false) :false} checked={setRadioId.key== item.id} value={item.id} />} title={<span> {Utils.formatTableColumn(item.name)}

        </span>} key={item.id}
          name={item.name}
        >

        </TreeNode>
      }
    })
  }

  onCheck = (checkedKeys) => {
    // this.props.patchMenuInfo(checkedKeys)  
  }

  onSelect = (checkedKeys, e) => {
    // console.log(e.node.props.name)
    // console.log(checkedKeys.includes('top'));
    if (checkedKeys.includes('top') || checkedKeys.length === 0) return
    this.setState({
      checkedKeys,
      checked: {
        key: checkedKeys[0],
        val: e.node.props.name
      }
    })
    // console.log('子组件',this.state.checked);
    const selfObj = this.props.selfObj
    if(selfObj){
       if( selfObj.key !== checkedKeys[0]){
        if (checkedKeys && checkedKeys.length > 0) {
          this.props.getRoleObj(
            {
              key: checkedKeys[0],
              val: e.node.props.name
            }
          )
        } 
      }
    }else{
       if (checkedKeys && checkedKeys.length > 0) {
          this.props.getRoleObj(
            {
              key: checkedKeys[0],
              val: e.node.props.name
            }
          )
        }
    }
   
  }

  render() {

    const { getFieldDecorator } = this.props.form;
    const roleOptionsArr = this.props.roleOptionsArr || []

    return (
      <div>
        <Form layout="inline" >
          <FormItem  >
            <label >角色名称</label>
            {
              getFieldDecorator('name', {
                // initialValue: '雨轩',

              })(
                <Input placeholder="角色名称" />
              )
            }
          </FormItem>
          <FormItem style={{ marginTop: 38, }} >
            <Button onClick={(item) => { this.queryList(item) }} style={{ background: '#00BB29', color: "#fff", marginRight: 4 }} >查询</Button>
            <Button onClick={this.reset} style={{ background: '#ED1719', color: "#fff" }} type="danger">重置</Button>
          </FormItem>
        </Form>
        <UserManageBar title="详细数据" />

        <div className="treeTable" >
          {roleOptionsArr.length !== 0 ?
            <Tree
              // checkable
              showIcon
              //defaultExpandAll
              className="orgTree"
              onSelect={(checkedKeys, e) => { this.onSelect(checkedKeys, e) }}
            >
              {this.renderTreeNodes(roleOptionsArr)}
            </Tree>
            : <div className="ant-table-placeholder">No data</div>
          }
        </div>
      </div>
    );
  }
}
OrgOptionsForm = Form.create({})(OrgOptionsForm)

export default OrgOptionsForm