Skip to content

Commit 70ca415

Browse files
committed
Fixed select
1 parent 58f22cb commit 70ca415

6 files changed

Lines changed: 111 additions & 28 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
```
1414
git clone https://github.com/LyricTian/gin-admin-react.git
1515
cd gin-admin-react
16-
npm install
17-
npm start
16+
yarn
17+
yarn start
1818
```
1919

2020
## 打包编译
2121

2222
```
23-
npm run build
23+
yarn run build
2424
```
2525

2626
## MIT License

src/pages/Demo/DemoList.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,13 @@ class DemoList extends PureComponent {
8686
});
8787
};
8888

89-
onTableSelectRow = (keys, rows) => {
89+
handleTableSelectRow = (selectedRowKeys, selectedRows) => {
90+
let keys = [];
91+
let rows = [];
92+
if (selectedRowKeys.length > 0 && selectedRows.length > 0) {
93+
keys = [selectedRowKeys[selectedRowKeys.length - 1]];
94+
rows = [selectedRows[selectedRows.length - 1]];
95+
}
9096
this.setState({
9197
selectedRowKeys: keys,
9298
selectedRows: rows,
@@ -301,7 +307,7 @@ class DemoList extends PureComponent {
301307
<Table
302308
rowSelection={{
303309
selectedRowKeys,
304-
onChange: this.onTableSelectRow,
310+
onChange: this.handleTableSelectRow,
305311
}}
306312
loading={loading}
307313
rowKey={record => record.record_id}

src/pages/Menu/MenuList.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,16 @@ class MenuList extends PureComponent {
7070
});
7171
};
7272

73-
onTableSelectRow = (selectedRowKeys, selectedRows) => {
73+
handleTableSelectRow = (selectedRowKeys, selectedRows) => {
74+
let keys = [];
75+
let rows = [];
76+
if (selectedRowKeys.length > 0 && selectedRows.length > 0) {
77+
keys = [selectedRowKeys[selectedRowKeys.length - 1]];
78+
rows = [selectedRows[selectedRows.length - 1]];
79+
}
7480
this.setState({
75-
selectedRowKeys,
76-
selectedRows,
81+
selectedRowKeys: keys,
82+
selectedRows: rows,
7783
});
7884
};
7985

@@ -356,7 +362,7 @@ class MenuList extends PureComponent {
356362
<Table
357363
rowSelection={{
358364
selectedRowKeys,
359-
onChange: this.onTableSelectRow,
365+
onChange: this.handleTableSelectRow,
360366
}}
361367
loading={loading}
362368
rowKey={record => record.record_id}

src/pages/Role/RoleList.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,13 @@ class RoleList extends PureComponent {
6868
});
6969
};
7070

71-
handleTableSelectRow = (keys, rows) => {
71+
handleTableSelectRow = (selectedRowKeys, selectedRows) => {
72+
let keys = [];
73+
let rows = [];
74+
if (selectedRowKeys.length > 0 && selectedRows.length > 0) {
75+
keys = [selectedRowKeys[selectedRowKeys.length - 1]];
76+
rows = [selectedRows[selectedRows.length - 1]];
77+
}
7278
this.setState({
7379
selectedRowKeys: keys,
7480
selectedRows: rows,

src/pages/Role/RoleMenu/index.js

Lines changed: 75 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,29 +92,90 @@ export default class RoleMenu extends PureComponent {
9292
}
9393
};
9494

95-
handleSelectedRow = (_, rows) => {
96-
const { dataSource } = this.state;
97-
const list = [];
95+
expandAllChild = data => {
96+
let child = [];
97+
for (let i = 0; i < data.length; i += 1) {
98+
child.push(data[i]);
99+
if (data[i].children) {
100+
child = [...child, ...this.expandAllChild(data[i].children)];
101+
}
102+
}
103+
return child;
104+
};
105+
106+
checkAndAdd = (data, addData) => {
107+
const list = [...data];
98108

99-
for (let i = 0; i < rows.length; i += 1) {
109+
for (let i = 0; i < addData.length; i += 1) {
100110
let exists = false;
101-
for (let j = 0; j < dataSource.length; j += 1) {
102-
if (dataSource[j].menu_id === rows[i].record_id) {
111+
for (let j = 0; j < list.length; j += 1) {
112+
if (list[j].menu_id === addData[i].record_id) {
103113
exists = true;
104-
list.push({ ...dataSource[j] });
105114
break;
106115
}
107116
}
108117

109118
if (!exists) {
110-
list.push({
111-
menu_id: rows[i].record_id,
112-
actions: rows[i].actions ? rows[i].actions.map(v => v.code) : [],
113-
resources: rows[i].resources ? rows[i].resources.map(v => v.code) : [],
114-
});
119+
const item = {
120+
menu_id: addData[i].record_id,
121+
actions: addData[i].actions ? addData[i].actions.map(v => v.code) : [],
122+
resources: addData[i].resources ? addData[i].resources.map(v => v.code) : [],
123+
};
124+
list.push(item);
115125
}
116126
}
117127

128+
return list;
129+
};
130+
131+
cancelSelected = (data, selectedRows) => {
132+
const list = [];
133+
for (let i = 0; i < data.length; i += 1) {
134+
let exists = false;
135+
for (let j = 0; j < selectedRows.length; j += 1) {
136+
if (data[i].menu_id === selectedRows[j].record_id) {
137+
exists = true;
138+
break;
139+
}
140+
}
141+
if (!exists) {
142+
list.push(data[i]);
143+
}
144+
}
145+
return list;
146+
};
147+
148+
handleSelectedRow = (record, selected) => {
149+
let selectedRows = [record];
150+
if (record.children) {
151+
selectedRows = [...selectedRows, ...this.expandAllChild(record.children)];
152+
}
153+
154+
const { dataSource } = this.state;
155+
let list = [];
156+
if (selected) {
157+
list = this.checkAndAdd(dataSource, selectedRows);
158+
} else {
159+
list = this.cancelSelected(dataSource, selectedRows);
160+
}
161+
162+
this.setState({ dataSource: list }, () => {
163+
this.triggerChange(list);
164+
});
165+
};
166+
167+
handleSelectAll = (selected, selectRows) => {
168+
let list = [];
169+
if (selected) {
170+
list = selectRows.map(vv => {
171+
const item = {
172+
menu_id: vv.record_id,
173+
actions: vv.actions ? vv.actions.map(v => v.code) : [],
174+
resources: vv.resources ? vv.resources.map(v => v.code) : [],
175+
};
176+
return item;
177+
});
178+
}
118179
this.setState({ dataSource: list }, () => {
119180
this.triggerChange(list);
120181
});
@@ -149,10 +210,8 @@ export default class RoleMenu extends PureComponent {
149210
defaultExpandAllRows
150211
rowSelection={{
151212
selectedRowKeys: dataSource.map(v => v.menu_id),
152-
onChange: this.handleSelectedRow,
153-
getCheckboxProps: record => ({
154-
disabled: record.hasChild,
155-
}),
213+
onSelect: this.handleSelectedRow,
214+
onSelectAll: this.handleSelectAll,
156215
}}
157216
rowKey={record => record.record_id}
158217
components={components}

src/pages/User/UserList.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,13 @@ class UserList extends PureComponent {
8787
});
8888
};
8989

90-
onTableSelectRow = (keys, rows) => {
90+
handleTableSelectRow = (selectedRowKeys, selectedRows) => {
91+
let keys = [];
92+
let rows = [];
93+
if (selectedRowKeys.length > 0 && selectedRows.length > 0) {
94+
keys = [selectedRowKeys[selectedRowKeys.length - 1]];
95+
rows = [selectedRows[selectedRows.length - 1]];
96+
}
9197
this.setState({
9298
selectedRowKeys: keys,
9399
selectedRows: rows,
@@ -333,7 +339,7 @@ class UserList extends PureComponent {
333339
<Table
334340
rowSelection={{
335341
selectedRowKeys,
336-
onChange: this.onTableSelectRow,
342+
onChange: this.handleTableSelectRow,
337343
}}
338344
loading={loading}
339345
rowKey={record => record.record_id}

0 commit comments

Comments
 (0)