Просмотр исходного кода

fix(部门管理): 修复资产绑定中产品分类树形table多选异常问题

xieyonghong 3 лет назад
Родитель
Сommit
5fd6064b71

+ 9 - 2
src/pages/system/Department/Assets/productCategory/bind.tsx

@@ -11,6 +11,7 @@ import { useIntl } from '@@/plugin-locale/localeExports';
 import type { ProductCategoryItem } from '@/pages/system/Department/typings';
 import PermissionModal from '@/pages/system/Department/Assets/permissionModal';
 import SearchComponent from '@/components/SearchComponent';
+import { difference } from 'lodash';
 
 interface Props {
   reload: () => void;
@@ -118,8 +119,14 @@ const Bind = observer((props: Props) => {
         pagination={false}
         rowSelection={{
           selectedRowKeys: Models.bindKeys,
-          onChange: (selectedRowKeys, selectedRows) => {
-            Models.bindKeys = getTableKeys(selectedRows);
+          onSelect: (record, selected, selectedRows) => {
+            const keys = getTableKeys(selected ? selectedRows : [record]);
+            if (selected) {
+              Models.bindKeys = keys;
+            } else {
+              // 去除重复的key
+              Models.bindKeys = difference(Models.bindKeys, keys);
+            }
           },
         }}
         params={searchParam}

+ 10 - 2
src/pages/system/Department/Assets/productCategory/index.tsx

@@ -12,6 +12,7 @@ import Models from '@/pages/system/Department/Assets/productCategory/model';
 import Service from '@/pages/system/Department/Assets/service';
 import Bind from './bind';
 import SearchComponent from '@/components/SearchComponent';
+import { difference } from 'lodash';
 
 export const service = new Service<ProductCategoryItem>('assets');
 
@@ -24,6 +25,7 @@ export const getTableKeys = (rows: ProductCategoryItem[]): string[] => {
       keys = [...keys, ...childrenKeys];
     }
   });
+
   return keys;
 };
 
@@ -187,8 +189,14 @@ export default observer(() => {
         }}
         rowSelection={{
           selectedRowKeys: Models.unBindKeys,
-          onChange: (selectedRowKeys, selectedRows) => {
-            Models.unBindKeys = selectedRows.map((item) => item.id);
+          onSelect: (record, selected, selectedRows) => {
+            const keys = getTableKeys(selected ? selectedRows : [record]);
+            if (selected) {
+              Models.unBindKeys = keys;
+            } else {
+              // 去除重复的key
+              Models.unBindKeys = difference(Models.unBindKeys, keys);
+            }
           },
         }}
         toolBarRender={() => [