feat: 产品树: 显示多城市

main
Lei OT 2 months ago
parent c49682bb84
commit 27b6063a1e

@ -53,6 +53,7 @@ const ProductsTree = ({ onNodeSelect, ...props }) => {
const [rawTreeData, setRawTreeData] = useState([]); const [rawTreeData, setRawTreeData] = useState([]);
const [flattenTreeData, setFlattenTreeData] = useState([]); const [flattenTreeData, setFlattenTreeData] = useState([]);
const [expandedKeys, setExpandedKeys] = useState([]); const [expandedKeys, setExpandedKeys] = useState([]);
const [selectedKeys, setSelectedKeys] = useState([]);
const [autoExpandParent, setAutoExpandParent] = useState(true); const [autoExpandParent, setAutoExpandParent] = useState(true);
useEffect(() => { useEffect(() => {
@ -77,16 +78,18 @@ const ProductsTree = ({ onNodeSelect, ...props }) => {
...ele, ...ele,
title: ele.label, title: ele.label,
key: ele.value, key: ele.value,
children: (agencyProducts[ele.value] || []).map((product) => { children: (agencyProducts[ele.value] || []).reduce((arr, product) => {
const lgc_map = product.lgc_details.reduce((rlgc, clgc) => ({ ...rlgc, [clgc.lgc]: clgc }), {}); const lgc_map = product.lgc_details.reduce((rlgc, clgc) => ({ ...rlgc, [clgc.lgc]: clgc }), {});
return { 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 }];
// title: product.info.title || lgc_map?.['2']?.title || lgc_map?.['1']?.title || '', const flatCityP = combindCityList.map(city => ({
title: `${product.info.city_name}` + (product.info.title || lgc_map?.['2']?.title || lgc_map?.['1']?.title || product.info.product_title || ''), 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: `${ele.value}-${product.info.id}`,
key: product.info.id, key: `${product.info.id}-${city.id}`,
_raw: product, _raw: product,
isLeaf: true, isLeaf: true,
}}), }));
return arr.concat(flatCityP);
}, []),
// `` // ``
// _children: Object.keys(copyAgencyProducts[ele.value] || []).map(city => { // _children: Object.keys(copyAgencyProducts[ele.value] || []).map(city => {
// return { // return {
@ -130,6 +133,8 @@ const ProductsTree = ({ onNodeSelect, ...props }) => {
const handleNodeSelect = (selectedKeys, { node }) => { const handleNodeSelect = (selectedKeys, { node }) => {
if (node._raw) { if (node._raw) {
setEditingProduct(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 { } else {
// : / // : /
// const isExpand = expandedKeys.includes(selectedKeys[0]); // const isExpand = expandedKeys.includes(selectedKeys[0]);
@ -174,7 +179,7 @@ const ProductsTree = ({ onNodeSelect, ...props }) => {
<Tree <Tree
blockNode blockNode
showLine defaultExpandAll expandAction={'doubleClick'} showLine defaultExpandAll expandAction={'doubleClick'}
selectedKeys={[editingProduct?.info?.id || editingProduct?.info?.product_type_id]} selectedKeys={selectedKeys} multiple
switcherIcon={<CaretDownOutlined />} switcherIcon={<CaretDownOutlined />}
onSelect={handleNodeSelect} onSelect={handleNodeSelect}
treeData={treeData} treeData={treeData}

Loading…
Cancel
Save