diff --git a/src/components/MultiplePicker/index.md b/src/components/MultiplePicker/index.md index b685267..08fe7a8 100644 --- a/src/components/MultiplePicker/index.md +++ b/src/components/MultiplePicker/index.md @@ -60,9 +60,9 @@ nav: ## ChangeValLink | 参数 | 说明 | 类型 | 默认值 | 是否必填 | -| ----------- | ------------ | ------------- | -------- | -------- | --- | -| linkVals | 选中的值集 | `Array` | - | 否 | -| unLlinkVals | 非选中的值集 | `Array` | - | 否 | +| ----------- | ------------ | ------------- | -------- | -------- | +| linkVals | 选中的值集 | `Array ` | - | 否 | +| unLlinkVals | 非选中的值集 | `Array ` | - | 否 | ## 备注 diff --git a/src/components/MultiplePicker/multiplePickerGroup.tsx b/src/components/MultiplePicker/multiplePickerGroup.tsx index 6b981d1..34f6059 100644 --- a/src/components/MultiplePicker/multiplePickerGroup.tsx +++ b/src/components/MultiplePicker/multiplePickerGroup.tsx @@ -55,13 +55,24 @@ const MultiplePickerGroup: FC = (props) => { changeValLink: ChangeValLink, hasValue: (string | number)[], oldValue: (string | number)[], + currentValue?: IDataItem, ): (string | number)[] => { let valueArr: (string | number)[] = hasValue; if (changeValLink && Object.keys(changeValLink).length > 0) { if (changeValLink?.linkVals) { - valueArr = Array.from( - new Set([...valueArr, ...(changeValLink?.linkVals || [])]), - ); + if ( + currentValue?.value && + oldValue.some((item) => item === currentValue?.value) + ) { + let oldValueList = oldValue.filter((item) => { + return !changeValLink.linkVals?.some((it) => it === item); + }); + valueArr = Array.from(new Set([...oldValueList])); + } else { + valueArr = Array.from( + new Set([...valueArr, ...(changeValLink?.linkVals || [])]), + ); + } } if (changeValLink?.unLlinkVals) { changeValLink?.unLlinkVals?.forEach((it: string | number) => { @@ -115,11 +126,10 @@ const MultiplePickerGroup: FC = (props) => { const pickerClick = (val: IDataItem) => { let list = JSON.parse(JSON.stringify(selValueList)); if ( - !list.some((i: string | number) => i === val.value) && valueLinks[val?.value] && Object.keys(valueLinks[val?.value]).length > 0 ) { - list = setValueList(valueLinks[val?.value], list, list); + list = setValueList(valueLinks[val?.value], list, list, val); } if (list.indexOf(val.value) !== -1) { list.splice(list.indexOf(val.value), 1);