import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import styles from './index.module.scss' import { Button, Input, Tree, TreeDataNode } from 'antd' import D1Loc from './D1Loc' import D1goods from './D1goods' import { filterTreeByName } from '@/utils/history' import { TypeZ1dict } from '@/pages/Z_system/Z1dict/type' import { D1_APIgetTree } from '@/store/action/D1storage' type TypeTopBtn = '按库位查看' | '按藏品查看' const topBtnArr: TypeTopBtn[] = ['按库位查看', '按藏品查看'] function D1storage() { const [topAc, setTopAc] = useState('按库位查看') // 库位传递参数给藏品 const lookData = useRef([]) // 有关树------ const [loding, setLoding] = useState(false) const [dictList, setDictList] = useState([]) const getTreeFu = useCallback(async () => { const res = await D1_APIgetTree() if (res.code === 0) { setDictList(res.data) setLoding(true) if (res.data && res.data.length) setAcShu(res.data[0].id) } }, []) useEffect(() => { getTreeFu() }, [getTreeFu]) // 当前选中的树节点ID const [acShu, setAcShu] = useState(0) // 点击树节点 const onSelect = (id: any) => { // console.log('点击树节点', id) if (id[0]) setAcShu(id[0]) } const [value, setValue] = useState('') const [value2, setValue2] = useState('') const timeRef = useRef(-1) const valueChange = useCallback((val: string) => { setValue(val.trim()) clearTimeout(timeRef.current) timeRef.current = window.setTimeout(() => { setValue2(val.trim()) }, 500) }, []) // value变化的时候获取所有dom 设置隐藏 const treeDataTemp = useMemo(() => { if (value2) { return filterTreeByName(dictList, value2) } else return dictList }, [dictList, value2]) // 搜索高亮 const treeData = useMemo(() => { const loop = (dataTemp: any[]): TreeDataNode[] => { const data = dataTemp || [] return data.map(item => { const strTitle = ((item.num ? item.num + ' - ' : '') + item.name) as string const index = strTitle.indexOf(value) const beforeStr = strTitle.substring(0, index) const afterStr = strTitle.slice(index + value.length) const title = index > -1 ? ( {beforeStr} {value} {afterStr} ) : ( {strTitle} ) if (item.children) { return { title, key: item.id, children: loop(item.children) } } return { title, key: item.id } }) } return loop(treeDataTemp) }, [treeDataTemp, value]) // 数列表 const TreeDom = useMemo(() => { return (
valueChange(e.target.value)} />
{treeDataTemp && treeDataTemp.length ? (
) : null} {loding && treeDataTemp.length === 0 ?
暂无数据
: null}
) }, []) return (
分库管理
仓库列表 {topBtnArr.map(v => ( ))}
{topAc === '按库位查看' ? ( { lookData.current = val setTopAc('按藏品查看') }} /> ) : null} {topAc === '按藏品查看' ? : null}
) } const MemoD1storage = React.memo(D1storage) export default MemoD1storage