Skip to content

Commit 2ec9a86

Browse files
authored
Merge pull request #261 from linjyuan/feat-MultiplePicker-addLink
feat: MultiplePicker 的关联联动进行修改,取消【全选】则全部不会勾选
2 parents c6a0098 + d86607a commit 2ec9a86

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

src/components/MultiplePicker/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ nav:
6060
## ChangeValLink
6161

6262
| 参数 | 说明 | 类型 | 默认值 | 是否必填 |
63-
| ----------- | ------------ | ------------- | -------- | -------- | --- |
64-
| linkVals | 选中的值集 | `Array<string | number>` | - ||
65-
| unLlinkVals | 非选中的值集 | `Array<string | number>` | - ||
63+
| ----------- | ------------ | ------------- | -------- | -------- |
64+
| linkVals | 选中的值集 | `Array<string \| number> ` | - ||
65+
| unLlinkVals | 非选中的值集 | `Array<string \| number> ` | - ||
6666

6767
## 备注
6868

src/components/MultiplePicker/multiplePickerGroup.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,24 @@ const MultiplePickerGroup: FC<IMultiplePickerGroupProps> = (props) => {
5555
changeValLink: ChangeValLink,
5656
hasValue: (string | number)[],
5757
oldValue: (string | number)[],
58+
currentValue?: IDataItem,
5859
): (string | number)[] => {
5960
let valueArr: (string | number)[] = hasValue;
6061
if (changeValLink && Object.keys(changeValLink).length > 0) {
6162
if (changeValLink?.linkVals) {
62-
valueArr = Array.from(
63-
new Set([...valueArr, ...(changeValLink?.linkVals || [])]),
64-
);
63+
if (
64+
currentValue?.value &&
65+
oldValue.some((item) => item === currentValue?.value)
66+
) {
67+
let oldValueList = oldValue.filter((item) => {
68+
return !changeValLink.linkVals?.some((it) => it === item);
69+
});
70+
valueArr = Array.from(new Set([...oldValueList]));
71+
} else {
72+
valueArr = Array.from(
73+
new Set([...valueArr, ...(changeValLink?.linkVals || [])]),
74+
);
75+
}
6576
}
6677
if (changeValLink?.unLlinkVals) {
6778
changeValLink?.unLlinkVals?.forEach((it: string | number) => {
@@ -115,11 +126,10 @@ const MultiplePickerGroup: FC<IMultiplePickerGroupProps> = (props) => {
115126
const pickerClick = (val: IDataItem) => {
116127
let list = JSON.parse(JSON.stringify(selValueList));
117128
if (
118-
!list.some((i: string | number) => i === val.value) &&
119129
valueLinks[val?.value] &&
120130
Object.keys(valueLinks[val?.value]).length > 0
121131
) {
122-
list = setValueList(valueLinks[val?.value], list, list);
132+
list = setValueList(valueLinks[val?.value], list, list, val);
123133
}
124134
if (list.indexOf(val.value) !== -1) {
125135
list.splice(list.indexOf(val.value), 1);

0 commit comments

Comments
 (0)