codeIndex.js 4.31 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 () {
    this.props.onRef(this);
  }
  //查询角色列表
  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
    const parentCode = this.props.parentCode
    
    return data.map(item => {
      
      if (item.childOrgs && item.childOrgs.length > 0) {
        return <TreeNode icon={<Radio  ref={item.name}  disabled={parentCode== item.code ? true:false}  checked={checkedObj.key == item.code} value={item.code} />} 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.code}
          name={item.name}
        >

          {this.renderTreeNodes(item.childOrgs)}
        </TreeNode>
      } else {
        return <TreeNode icon={<Radio ref={item.name} disabled={parentCode== item.code ? true:false}  checked={checkedObj.key == item.code} value={item.code} />} 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.code}
          name={item.name}
        >

        </TreeNode>
      }
      })
    
    
  }

  onSelect = (checkedKeys, e) => {
    const parentCode = this.props.parentCode
    //console.log(e.node.props.name)
    //console.log(checkedKeys);
    if(parentCode !== checkedKeys[0]){
       if (checkedKeys && checkedKeys.length > 0) {
        this.props.getCheckedObj(
          {
            key: checkedKeys[0],
            val: e.node.props.name
          }
        )
      }  
    }
  }

  render() {

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

    return (
      <div>
        <Form layout="inline" >
          <FormItem  >
            <label >机构名称</label>
            {
              getFieldDecorator('orgName', {
              })(
                <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
            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