/* * @Author: code4eat awesomedema@gmail.com * @Date: 2022-06-29 11:05:04 * @LastEditors: code4eat awesomedema@gmail.com * @LastEditTime: 2022-07-01 11:07:09 * @FilePath: /KC-MiddlePlatform/src/components/NavSelecter/index.tsx * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ import { Tabs, Checkbox, Button } from 'antd'; import React, { useEffect, useState } from 'react'; import './style.less'; const { TabPane } = Tabs; export type NavSelecterItemType = { name: string; menuId: number|string; path:string; systemId:string; } export type NavSelecterData = { name: string; menuId: number|string; path:string; systemId:string; child?: NavSelecterData[] } export interface NavSelecter { onVisibleChange?: (t: boolean) => void; onChecked?:(t:NavSelecterItemType[]) => void; value?:NavSelecterItemType[]; data?: NavSelecterData[]; } const NavSelecter = (props: NavSelecter) => { const { onVisibleChange, data,value=[],onChecked } = props; const [checkedIds,set_checkedIds] = useState<(string|number)[]>([]); const [checkedItems,set_checkedItems] = useState([]); const onChange = (tab:NavSelecterItemType) => { let _checkedIds = checkedIds; let _checkedItems = [...checkedItems]; if(_checkedIds.includes(tab.menuId)){ _checkedIds.splice(checkedIds.indexOf(tab.menuId),1); _checkedItems.splice(_checkedItems.findIndex(t=>t.menuId == tab.menuId),1); set_checkedIds([..._checkedIds]); set_checkedItems([..._checkedItems]); }else{ _checkedIds.push(tab.menuId); _checkedItems.push(tab); set_checkedItems([..._checkedItems]); set_checkedIds([..._checkedIds]); } }; const onMaskClick = (e: React.MouseEvent) => { onVisibleChange && onVisibleChange(false); } const onCommit = ()=>{ onChecked&&onChecked(checkedItems); onVisibleChange && onVisibleChange(false); } const onReset = ()=>{ set_checkedItems([]); set_checkedIds([]); } useEffect(()=>{ set_checkedIds(value?.map(t=>t.menuId)); set_checkedItems(value); },[value]); return (
onMaskClick(e)}>
e.stopPropagation()}> { data?.map((val) => ( { val.child?.map((item) => (
{item.name}
{ item.child?.map(a => (
onChange({ name: a.name, menuId:a.menuId , path:a.path, systemId:a.systemId })} checked={checkedIds.includes(a.menuId)} > {a.name}
)) }
)) }
)) }
e.stopPropagation()}> {`已选中${checkedIds.length}项`}
) } export default NavSelecter;