Commit bd35585f authored by 武广's avatar 武广

fix: 添加key

parent 7d9070cb
...@@ -252,35 +252,41 @@ const CustomTree = forwardRef(props => { ...@@ -252,35 +252,41 @@ const CustomTree = forwardRef(props => {
} }
}; };
const initTreeData = (arr = [], level) => // const initTreeData = (arr = [], values = [], level) =>
arr.map(item => { // arr.map(item => {
const json = { // const valueObj = values.find(val => val.key === item.key) || {};
value: item.value || [], // console.log('valueObj.children :>> ', valueObj.children);
level, // const json = {
visibleChildren: false, // value: valueObj.children || item.value || [],
checked: false, // level,
indeterminate: false, // visibleChildren: false,
label: item[props.labelName || 'label'], // checked: false,
key: item[props.keyName || 'key'], // indeterminate: false,
isLeaf: true, // label: item[props.labelName || 'label'],
isLoading: false, // key: item[props.keyName || 'key'],
}; // isLeaf: true,
getIsChecked(item.key, json); // isLoading: false,
if (item.children) { // };
json.children = initTreeData(item.children, level + 1); // getIsChecked(item.key, json);
} // if (item.children) {
return json; // json.children = initTreeData(item.children, valueObj.children, level + 1);
}); // }
// return json;
// });
const initTreeValue = (arr = [], values = [], parentChecked) => const initTreeValue = (arr = [], values = [], parentChecked, level = 1) =>
arr.forEach(item => { arr.forEach(item => {
const valueObj = values.find(val => val.key === item.key) || {}; const valueObj = values.find(val => val.key === item.key) || {};
item.checked = item.checked =
(typeof parentChecked === 'boolean' && parentChecked) || valueObj.checked || false; (typeof parentChecked === 'boolean' && parentChecked) || valueObj.checked || false;
item.indeterminate = valueObj.indeterminate || false; item.indeterminate = valueObj.indeterminate || false;
item.value = valueObj.children || []; item.value = valueObj.children || [];
item.isLeaf = typeof item.isLeaf === 'boolean' ? item.isLeaf : true;
item.isLoading = false;
item.visibleChildren = item.visibleChildren || false;
item.level = level;
if (item.children && item.children.length) { if (item.children && item.children.length) {
initTreeValue(item.children, valueObj.children, item.checked); initTreeValue(item.children, valueObj.children, item.checked, level + 1);
} }
}); });
...@@ -291,8 +297,9 @@ const CustomTree = forwardRef(props => { ...@@ -291,8 +297,9 @@ const CustomTree = forwardRef(props => {
}, [props.value]); }, [props.value]);
useEffect(() => { useEffect(() => {
const arr = initTreeData(props.treeData, 1); const datas = [...props.treeData];
setTreeData(arr); initTreeValue(datas, props.value);
setTreeData(datas);
}, [props.treeData]); }, [props.treeData]);
// 委托 - 点击别的地方关闭子层 // 委托 - 点击别的地方关闭子层
...@@ -318,9 +325,12 @@ const CustomTree = forwardRef(props => { ...@@ -318,9 +325,12 @@ const CustomTree = forwardRef(props => {
treeData={item} treeData={item}
></CTreeNode> ></CTreeNode>
{(item.visibleChildren && childrenList && childrenList.length && ( {(item.visibleChildren && childrenList && childrenList.length && (
<div className={styles['tree-children-box']}> <div className={styles['tree-children-box']} key="childrens">
{childrenList.map(arr => ( {childrenList.map(arr => (
<div className={styles['tree-children-wrapper']}> <div
className={styles['tree-children-wrapper']}
key={`children${arr[0].key}`}
>
{renderTreeNodes(arr) || ''} {renderTreeNodes(arr) || ''}
</div> </div>
))} ))}
......
...@@ -48,22 +48,22 @@ const AddAreaModal = props => { ...@@ -48,22 +48,22 @@ const AddAreaModal = props => {
const handleOk = () => { const handleOk = () => {
validateFields(async (error, fieldsValue) => { validateFields(async (error, fieldsValue) => {
const newData = []; const newData = [];
const getValues = list => { const getValues = (list, level) => {
list.forEach(itemData => { list.forEach(itemData => {
if (itemData.checked) { if (itemData.checked) {
newData.push({ newData.push({
addressId: itemData.key, addressId: itemData.key,
addressLevel: itemData.level, addressLevel: itemData.level || level,
addressName: itemData.label, addressName: itemData.label,
}); });
} else if (itemData.children && itemData.children.length) { } else if (itemData.children && itemData.children.length) {
getValues(itemData.children); getValues(itemData.children, level + 1);
} }
}); });
}; };
if (!error) { if (!error) {
console.log('fieldsValue :>> ', fieldsValue); console.log('fieldsValue :>> ', fieldsValue);
getValues(fieldsValue.list); getValues(fieldsValue.list, 1);
if (props.templateData.status) { if (props.templateData.status) {
const data = await forbiddenAddress({ const data = await forbiddenAddress({
templateId: props.templateData.id, templateId: props.templateData.id,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment