From 1f3f4cd853ad7c2d6a705827d72fe55838961ec3 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Mon, 28 Jul 2025 10:50:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=A7=E5=93=81=E6=A0=91:=20?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=A4=9A=E5=9F=8E=E5=B8=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Detail/ProductQuotationLogPopover.jsx | 6 +- src/views/products/Detail/ProductsTree.jsx | 61 ++++++++++++------- 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/src/views/products/Detail/ProductQuotationLogPopover.jsx b/src/views/products/Detail/ProductQuotationLogPopover.jsx index 26aed6b..9bc011e 100644 --- a/src/views/products/Detail/ProductQuotationLogPopover.jsx +++ b/src/views/products/Detail/ProductQuotationLogPopover.jsx @@ -180,6 +180,9 @@ const ProductQuotationLogPopover = ({ method, triggerProps = {}, ...props }) => const columns = [...columnsSets(t, false), { title: '时间', dataIndex: 'updatetime', key: 'updatetime' }]; return ( @@ -195,9 +198,6 @@ const ProductQuotationLogPopover = ({ method, triggerProps = {}, ...props }) => } trigger={['click']} - placement='bottom' - className='' - rootClassName='w-5/6' open={open} onOpenChange={(v) => { setOpen(v); diff --git a/src/views/products/Detail/ProductsTree.jsx b/src/views/products/Detail/ProductsTree.jsx index 4378482..bcb12b3 100644 --- a/src/views/products/Detail/ProductsTree.jsx +++ b/src/views/products/Detail/ProductsTree.jsx @@ -53,6 +53,7 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { const [rawTreeData, setRawTreeData] = useState([]); const [flattenTreeData, setFlattenTreeData] = useState([]); const [expandedKeys, setExpandedKeys] = useState([]); + const [selectedKeys, setSelectedKeys] = useState([]); const [autoExpandParent, setAutoExpandParent] = useState(true); useEffect(() => { @@ -74,28 +75,30 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { const _show = productsTypes .filter((kk) => hasDataTypes.includes(kk.value)) .map((ele) => ({ - ...ele, - title: ele.label, - key: ele.value, - children: (agencyProducts[ele.value] || []).map((product) => { - const lgc_map = product.lgc_details.reduce((rlgc, clgc) => ({...rlgc, [clgc.lgc]: clgc}), {}); - return { - // title: product.info.title || lgc_map?.['2']?.title || lgc_map?.['1']?.title || '', - title: `【${product.info.city_name}】` + (product.info.title || lgc_map?.['2']?.title || lgc_map?.['1']?.title || product.info.product_title || ''), - // key: `${ele.value}-${product.info.id}`, - key: product.info.id, - _raw: product, - isLeaf: true, - }}), - // 增加`城市`层级 - // _children: Object.keys(copyAgencyProducts[ele.value] || []).map(city => { - // return { - // title: city, - // key: `${ele.value}-${city}`, - // children: copyAgencyProducts[ele.value][city], - // }; - // }), - })); + ...ele, + title: ele.label, + key: ele.value, + children: (agencyProducts[ele.value] || []).reduce((arr, product) => { + const lgc_map = product.lgc_details.reduce((rlgc, clgc) => ({ ...rlgc, [clgc.lgc]: clgc }), {}); + const combindCityList = product.info.city_list.indexOf(city => city.id === product.info.city_id) !== -1 ? product.info.city_list : [...product.info.city_list, { id: product.info.city_id, name: product.info.city_name }]; + const flatCityP = combindCityList.map(city => ({ + title: `【${city.name}】` + (product.info.title || lgc_map?.['2']?.title || lgc_map?.['1']?.title || product.info.product_title || ''), + // key: `${ele.value}-${product.info.id}`, + key: `${product.info.id}-${city.id}`, + _raw: product, + isLeaf: true, + })); + return arr.concat(flatCityP); + }, []), + // 增加`城市`层级 + // _children: Object.keys(copyAgencyProducts[ele.value] || []).map(city => { + // return { + // title: city, + // key: `${ele.value}-${city}`, + // children: copyAgencyProducts[ele.value][city], + // }; + // }), + })); setTreeData(_show); setRawTreeData(_show); setFlattenTreeData(flattenTreeFun(_show)); @@ -106,6 +109,16 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { return () => {}; }, [productsTypes, agencyProducts]); + useEffect(() => { + const allKeysWithCity = [...editingProduct.info.city_list, { id: editingProduct.info.city_id, name: editingProduct.info.city_name }].map( + (city) => `${editingProduct.info.id}-${city.id}` + ); + setSelectedKeys(allKeysWithCity); + + return () => {}; + }, [editingProduct?.info?.id]); + + const [searchValue, setSearchValue] = useState(''); const onSearch = ({ target: { value } }) => { // const { value } = e.target; @@ -130,6 +143,8 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { const handleNodeSelect = (selectedKeys, { node }) => { if (node._raw) { setEditingProduct(node._raw); + const allKeysWithCity = [...node._raw.info.city_list, { id: node._raw.info.city_id, name: node._raw.info.city_name }].map((city) => `${node._raw.info.id}-${city.id}`); + setSelectedKeys(allKeysWithCity); } else { // 单击: 折叠/展开 // const isExpand = expandedKeys.includes(selectedKeys[0]); @@ -174,7 +189,7 @@ const ProductsTree = ({ onNodeSelect, ...props }) => { } onSelect={handleNodeSelect} treeData={treeData}