index.js 4.86 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 = {}
  componentDidMount() {
    if (this.props.onRef) {
      this.props.onRef(this);
    }
    this.props.getOrgByName()
    this.reset()
  }
  //查询角色列表
  queryList = () => {
    let data = this.props.form.getFieldsValue();
    if (!data.orgName || !data.orgName.replace(/\s+/g, "")) {

      message.warn('请输入机构名')
      return
    }
    this.props.getOrgByName(data.orgName.replace(/\s+/g, ""))
    this.setState({
      checkedKeys: []
    })
     
  }

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

  //递归获取树形机构图
  renderTreeNodes = (data) => {
    const checkedObj = this.props.checkedObj
    return data.map(item => {
      const isLeaf = !(item.childOrgs && item.childOrgs.length > 0)
      if (item.childOrgs && item.childOrgs.length > 0) {
        return <TreeNode dataRef={item}  isLeaf={ isLeaf }
                icon={<Radio ref={item.name} 
                checked={checkedObj? checkedObj.key ==item.id:this.state.checkedKeys == item.id} value={item.id} />} 
                title={<span className='title' > 
                 {Utils.formatTableColumn(item.name)}
          <span className="orgGrade" >{item.orgGrade}  </span>
          <span className="updateTime" >{Utils.formateDateToYMD(item.updateTime)}</span>
          <span className="remark" >{ Utils.formatTableColumn(item.remark) }</span>
          </span>} key={item.id}
          name={item.name}
        >

          {this.renderTreeNodes(item.childOrgs)}
        </TreeNode>
      } else {
        return <TreeNode dataRef={item} isLeaf={ isLeaf } icon={<Radio ref={item.name} checked={checkedObj? checkedObj.key ==item.id:this.state.checkedKeys == item.id} value={item.id} />} title={<span  > {Utils.formatTableColumn(item.name)}
          <span className="orgGrade" >{item.orgGrade}  </span>
          <span className="updateTime" >{Utils.formateDateToYMD(item.updateTime)}</span>
          <span className="remark" >{ Utils.formatTableColumn(item.remark) }</span>
        </span>} key={item.id}
          name={item.name}
        >

        </TreeNode>
      }
    })
  }

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

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

        }
      )
    }
  }
  

  render() {

    const { getFieldDecorator } = this.props.form;
    const orgOptionsArr = this.props.orgOptionsArr

    return (
      <div>
        <Form layout="inline" >
          <FormItem  >
            <label >机构名称</label>
            {
              getFieldDecorator('orgName', {
                // 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" >
          <div className="treeHeader">
            <div className="flex-item">机构名称</div>
            <div className="flex-item">机构级别</div>
            <div className="flex-item">更新时间</div>
            <div className="flex-item">备注</div>
          </div>
          {orgOptionsArr.length !==0 ? 
          <Tree
            // checkable
            showIcon
            // defaultExpandAll
            // loadData={this.props.onLoadData}
            className="orgTree"
            onSelect={(checkedKeys, e) => { this.onSelect(checkedKeys, e) }}
          >

            {this.renderTreeNodes(orgOptionsArr)}
          </Tree>
            : <div className="ant-table-placeholder">No data</div>
              }
        </div>
      </div>
    );
  }
}
OrgOptionsForm = Form.create({})(OrgOptionsForm)

export default OrgOptionsForm