From e5e3a0cf4cdff5829c4670e7ae98ef02fc0bda3f Mon Sep 17 00:00:00 2001 From: Lei OT Date: Tue, 22 Jul 2025 10:30:26 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=A0=B9=E6=8D=AE=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=BA=A7=E5=93=81,=20=E4=BB=85=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/products/Detail/ProductsTree.jsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/views/products/Detail/ProductsTree.jsx b/src/views/products/Detail/ProductsTree.jsx index fff21cd..4378482 100644 --- a/src/views/products/Detail/ProductsTree.jsx +++ b/src/views/products/Detail/ProductsTree.jsx @@ -5,7 +5,7 @@ import { CaretDownOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import useProductsStore from '@/stores/Products/Index'; import { useProductsTypes, useProductsAuditStatesMapVal } from '@/hooks/useProductsSets'; -import { groupBy, sortBy } from '@/utils/commons'; +import { groupBy, isEmpty, sortBy } from '@/utils/commons'; import NewProductModal from './NewProductModal'; import ContractRemarksModal from './ContractRemarksModal' @@ -49,7 +49,7 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { const [activeAgency] = useProductsStore((state) => [state.activeAgency]); const productsTypes = useProductsTypes(); - const [treeData, setTreeData] = useState([]); + const [treeData, setTreeData] = useState([]); // render data const [rawTreeData, setRawTreeData] = useState([]); const [flattenTreeData, setFlattenTreeData] = useState([]); const [expandedKeys, setExpandedKeys] = useState([]); @@ -109,6 +109,11 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { const [searchValue, setSearchValue] = useState(''); const onSearch = ({ target: { value } }) => { // const { value } = e.target; + if (isEmpty(value)) { + setTreeData(rawTreeData); + setSearchValue(value); + return; + } const newExpandedKeys = flattenTreeData .filter((item) => item.title.includes(value)) .map((item) => getParentKey(item.key, rawTreeData)) @@ -116,6 +121,11 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { setExpandedKeys(newExpandedKeys); setSearchValue(value); setAutoExpandParent(true); + const matchTree = rawTreeData.map(node1 => { + const _find = node1.children.filter(node2 => node2.title.includes(value)); + return _find.length > 0 ? {...node1, children: _find} : null; + }).filter(node => node); + setTreeData(matchTree); }; const handleNodeSelect = (selectedKeys, { node }) => { if (node._raw) {