import React, { useEffect, useState } from 'react'; import LargeScreenComponentTabs from '../LargeScreenComponentTabs/index'; import LargeScreenComponentSearch from '../LargeScreenComponentSearch/index'; import LargeScreenComponentFiltr from '../LargeScreenComponentFiltr/index'; import LargeScreenComponentUpload from '../LargeScreenComponentUpload/index'; import LargeScreenComponentTitle from '../LargeScreenComponentTitle/index'; import LargeScreenComponentText from '../LargeScreenComponentText/index'; import LargeScreenComponentSelect from '../LargeScreenComponentSelect/index'; import LargeScreenComponentTree from '../LargeScreenComponentTree/index'; import LargeScreenComponentCollapse from '../LargeScreenComponentCollapse/index'; import LargeScreenComponentCard from '../LargeScreenComponentCard/index'; import LargeScreenComponentButton from '../LargeScreenComponentButton/index'; import LargeScreenComponentCheckBox from '../LargeScreenComponentCheckBox/index'; import LargeScreenComponentInputNumber from '../LargeScreenComponentInputNumber/index'; import ControlBtn from '../Control-btn/index'; import { ILargeScreenComponent } from '../../type/LargeScreenComponent'; import { useRecoilState } from 'recoil'; import { sidebarIndexAtom } from '../../store/page'; import { Spin } from 'antd'; import undeveloped_black from '../image/undeveloped_black.png'; import undeveloped_white from '../image/undeveloped_white.png'; import './style.scss'; const LargeScreenComponent: React.FC = (props) => { const { sidebarDetail = [], cardStyle, sidebarDetailEvent, clickControlBtn, componentLoading, sceneEvent //3D元件的点击事件 } = props; const { loading, cardLoading } = componentLoading; const [controlClass, setControlClass] = useState(''); //控制展开收起按钮样式 const [wrapClass, setWrapClass] = useState(''); //控制展开收起按钮样式 const [iconType, setIconType] = useState('icon-arrow-left-bold'); //控制展开收起按钮icon const [tabsUpdate, setTabsUpdate] = useState(''); //保存select切换的值 const [selectUpdate, setSelectUpdate] = useState( '' ); //保存tabs切换的值 const [searchUpdate, setSearchUpdate] = useState( '' ); //保存tabs切换的值 const [, setCurrentElement] = useRecoilState(sidebarIndexAtom); //页面当前选中的index // 更改类型 const change = (value: any, key: string, type: string) => { sidebarDetailEvent(value, key, type); }; useEffect(() => { //记录tabs切换的值 更新input的值 Array.isArray(sidebarDetail) && sidebarDetail?.length > 0 && sidebarDetail.map((item) => { if (item?.type === 'tabs') { setTabsUpdate(item?.value); } else if (item?.type === 'select') { setSelectUpdate(item?.value); } else if (item?.type === 'filtr') { setSearchUpdate(item?.value); } }); }, [sidebarDetail]); const renderComponent = (item) => { switch (item?.type) { case 'tabs': return ( change(value, item?.key, item?.type)} /> ); break; case 'search': return ( change(rest, item?.key, item?.type)} /> ); break; case 'filtr': return ( change(rest, item?.key, item?.type)} /> ); break; case 'upload': return ( change(rest, item?.key, item?.type)} /> ); break; case 'text': return ( change(item, item?.key, item?.type)} /> ); break; case 'select': return ( change(rest, item?.key, item?.type)} /> ); break; case 'tree': return ( change(rest, item?.key, item?.type)} /> ); break; case 'collapse': return ( change(rest, item?.key, item?.type)} /> ); break; case 'card': return ( change(rest, item?.key, item?.type)} sceneEvent={sceneEvent} /> ); break; case 'button': return ( change(null, item?.key, item?.type)} /> ); break; case 'title': return ; break; case 'checkBox': return ( change(value, item?.key, item?.type)} /> ); break; case 'inputNumber': return ( change(rest, item?.key, item?.type)} {...item} /> ); break; } }; //展开收起的样式 const controlBtnClick = () => { if (wrapClass) { setWrapClass(''); setControlClass(''); setIconType('icon-arrow-right-bold'); } else { setWrapClass('zl-component-com-siler-close'); setControlClass('zl-right-control-up'); setIconType('icon-arrow-left-bold'); } clickControlBtn?.('component'); }; return (
{ sidebarDetailEvent(null, null, 'scroll'); }} > {sidebarDetail?.length === 0 ? (
暂未开发 暂未开发 正在开发敬请期待~
) : ( <> )} {sidebarDetail?.length > 0 && sidebarDetail?.map((item) => { return renderComponent(item); })}
{loading ? (
) : ( <> )}
); }; export default LargeScreenComponent;