import React, { useState, useRef,useEffect,forwardRef, useImperativeHandle } from 'react'; import {Tree, Input, Checkbox, Spin, Modal,Tabs} from 'antd'; import { FileTextOutlined } from '@ant-design/icons'; import Jbxx from '../../../../Home/MapCtrl/components/Skjcxx/jbxx' import Krqx from '../../../../Home/MapCtrl/components/Skjcxx/Krqx' import Zrtx from '../../../../Home/MapCtrl/components/Skjcxx/zrtx' import Jzw from '../../../../Home/MapCtrl/components/Skjcxx/jzw' import Jsxx from '../../../../Home/MapCtrl/components/Skjcxx/jsxx' import Gctp from '../../../../Home/MapCtrl/components/Skjcxx/gctp' import Fxya from '../../../../Home/MapCtrl/components/Skjcxx/fxya' import Sjbg from '../../../../Home/MapCtrl/components/Skjcxx/sjbg' import SdzJbxx from '../../../../Home/MapCtrl/components/sdz/jbxx' import SdzZrr from '../../../../Home/MapCtrl/components/sdz/zrr' import SdzGctp from '../../../../Home/MapCtrl/components/sdz/gctp' import SdzFxya from '../../../../Home/MapCtrl/components/sdz/fxya' import SdzSjzl from '../../../../Home/MapCtrl/components/sdz/sjzl' import './index.less'; const { Search } = Input; type IProps = { onSelectFun?: any; setCode?: any; showCheckbox: any; tableName?: any; hasAlertBox?: boolean;//顶部是否有预警条 setTag?: any, data?: any, clickHandler?: any, url?:any } const AdcdTreeSelector: React.FC = forwardRef(({ onSelectFun, clickHandler, setCode, setTag, showCheckbox, tableName, hasAlertBox, data, url }, ref) => { const [loading, setLoading] = useState(true); const [treeData, setTreeData] = useState([]); const [newTreeData, setNewTreeData] = useState([]); const [isFiter, setIsFiter] = useState(false); const [expandedKeys, setExpandedKeys] = useState([]); const [checkedKeys, setCheckedKeys] = useState([]); const [selectedKeys, setSelectedKeys] = useState([]); const [selectedItem, setSelectedItem] = useState({}); const [autoExpandParent, setAutoExpandParent] = useState(true); const [treeBoxHeight, setTreeBoxHeight] = useState({}) const [itemDetail, setItemDetail] = useState({}) // 树中的每一项的详细信息 const [open, setOpen] = useState(false) const [keys, setKeys] = useState(1) const selectKeysRef = useRef() console.log("data22",data); useImperativeHandle(ref, () => ({ getTreeData: () => { getCustomerTreeData(); } })) const TabList1 = [ { key: '1', label: '基本信息', }, { key: '2', label: '库容曲线', }, { key: '3', label: '责任体系', }, { key: '4', label: '建筑物', }, { key: '5', label: '建设信息', }, { key: '6', label: '工程图片', }, { key: '7', label: '防汛预案', }, { key: '8', label: '设计报告', }, ] const TabList2 = [ { key: '1', label: '基本信息', }, { key: '3', label: '责任体系', }, { key: '6', label: '工程图片', }, { key: '7', label: '防汛预案', }, { key: '8', label: '设计资料', }, ] useEffect(() => { getCustomerTreeData(); }, []); useEffect(() => { if(tableName){ setSelectedKeys([]); } }, [tableName]); useEffect(()=>{ //根据预警条计/多选框计算高度 if(hasAlertBox){ if(showCheckbox){ setTreeBoxHeight({height:"calc( 100vh - 240px )"}) }else{ setTreeBoxHeight({height:"calc( 100vh - 210px )"}) } }else{ if(showCheckbox){ setTreeBoxHeight({height:"calc( 100vh - 224px )"}) }else{ setTreeBoxHeight({height:"calc( 100vh - 194px )"}) } } },[hasAlertBox]) const getCustomerTreeData = async () => { let params = { "level": 4 }; // const adcdTreedata:any = await getGczxGcTreeData(params); const adcdTreedata: any = await url(params); const item:any = adcdTreedata?.[0]?.children?.[0] if (item) { if (selectKeysRef.current) { setSelectedKeys(selectKeysRef.current) setCode(selectKeysRef.current[0]) } else { setCode(item.code) setSelectedKeys([item.code]) setTag(item.type) } // setCode(item.code) // setSelectedKeys([item.code]) } if (adcdTreedata.length > 0) { handelTreeData(adcdTreedata); setTreeData(adcdTreedata); setLoading(false); } }; // @ts-ignore const handelTreeData = (data) => { if (data.length > 0) { // @ts-ignore data.forEach(item => { item.title = item.sname; // ( // // {item.sname} //
按钮
//
// ) item.key = item.code; if (item.children && item.children.length > 0) { handelTreeData(item.children); } }); } } const onExpand = (expandedKeysValue: any) => { setExpandedKeys(expandedKeysValue); setAutoExpandParent(false); }; const [adcdLevel,setAdcdLevel] = useState(false); const onSelect = (selectedKeysValue: any, info: any) => { setSelectedKeys(selectedKeysValue); selectKeysRef.current = selectedKeysValue; setSelectedItem(info); if (info.selectedNodes.length > 0) { let selectData = info.selectedNodes[0]; let adcdVal = ""; adcdVal = selectData.code; // if(!adcdLevel){ // const code = selectData.code.substring(0,15); // if(code.endsWith('000000000')){//县 // adcdVal = selectData.code.substring(0,6); // }else if(code.endsWith('000000')){//镇 // adcdVal = selectData.code.substring(0,9); // }else if(code.endsWith('000')){//村 // adcdVal = selectData.code.substring(0,12); // }else{ // adcdVal = selectData.code; // } // }else{ // adcdVal = selectData.code; // } let params = { code: adcdVal }; if(onSelectFun){ onSelectFun(params); } if(setCode){ setCode(adcdVal) setTag(selectData.type) } } else { let params = { code: "" }; if(onSelectFun){ onSelectFun(params); } if(setCode){ setCode("") setTag("") } } }; useEffect(() => { if(selectedKeys.length>0 && Object.keys(selectedItem).length>0){ onSelect(selectedKeys,selectedItem); } }, [adcdLevel]); // @ts-ignore const rebuildData = (value, arr) => { if (!arr) { return []; } // @ts-ignore let newarr = []; if (Object.prototype.toString.call(arr) === "[object Array]") { // @ts-ignore arr.forEach((element) => { if (element.sname.indexOf(value) > -1) { const ab = rebuildData(value, element.children); const obj = { ...element, children: ab, }; newarr.push(obj); } else { if (element.children && element.children.length > 0) { const ab = rebuildData(value, element.children); const obj = { ...element, children: ab, }; if (ab && ab.length > 0) { newarr.push(obj); } } } }); } // @ts-ignore setNewTreeData(newarr.length > 0 ? newarr : []); // @ts-ignore return newarr; }; // @ts-ignore const fiterData = (event) => { setIsFiter(true); if (treeData.length > 0) { rebuildData(event.target.value, treeData) } }; const onChange = (key:any) => { setKeys(key) } return (
{!loading && fiterData(e)} />} {/* */} { treeData.length > 0 && showCheckbox && !loading && <>
{ setAdcdLevel(e.target.checked); }} >仅查询当前级
} { loading?
:null }
{ treeData.length > 0 && { return (<> { v.children?.length > 0 ? null : <>
{ e.stopPropagation() setOpen(true) setItemDetail(v) console.log(v); clickHandler(v) }}>
}
{v.title}
) }} onSelect={onSelect} selectedKeys={selectedKeys} treeData={isFiter ? newTreeData : treeData} /> }
{ setOpen(false) setKeys(1) }} className='detail-modal' destroyOnClose >
{itemDetail.type === 1 ?data?.resName : data?.hystName}
<> {itemDetail.type == 1 ?
{keys == 1 && } {keys == 2 && } {keys == 3 && } {keys == 4 && } {keys == 5 && } {keys == 6 && } {keys == 7 && } {keys == 8 && }
:
{keys == 1 && } {keys == 3 && } {keys == 6 && } {keys == 7 && } {keys == 8 && }
}
); }); export default AdcdTreeSelector;