@bit-sun/business-component 4.2.1-alpha.24-aiwei → 4.2.1-alpha.26-aiwei

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -6,7 +6,7 @@ import _, { omit, uniqBy, escapeRegExp, isNil, trim, isBoolean, debounce, cloneD
6
6
  import memoizeOne from 'memoize-one';
7
7
  import { formatMessage, history, useLocation, Link, useModel, setLocale, useIntl, request as request$3 } from 'umi';
8
8
  import isEqual from 'lodash/isEqual';
9
- import React$1, { useState, useEffect, useRef, forwardRef, useImperativeHandle, useMemo, Component, Fragment, useCallback, useLayoutEffect, createRef } from 'react';
9
+ import React$1, { useState, useEffect, useRef, forwardRef, useMemo, useImperativeHandle, Component, Fragment, useCallback, useLayoutEffect, createRef } from 'react';
10
10
  import { renderToString as renderToString$1 } from 'react-dom/server';
11
11
  import moment$1 from 'moment';
12
12
  import { EyeOutlined, DeleteOutlined, EditOutlined, CopyOutlined, CloseSquareOutlined, WarningOutlined, SendOutlined, ProfileTwoTone, ExclamationCircleOutlined, DownOutlined, UnorderedListOutlined, DashOutlined, CaretUpOutlined, CaretDownOutlined, SearchOutlined, CloseCircleOutlined, DownCircleFilled, ArrowLeftOutlined, FolderOutlined, EllipsisOutlined, HomeOutlined, DoubleLeftOutlined, DoubleRightOutlined, MenuUnfoldOutlined, CaretLeftOutlined, SettingOutlined, BulbOutlined, PlayCircleOutlined, SaveOutlined, FullscreenExitOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons';
@@ -5388,11 +5388,20 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5388
5388
  },
5389
5389
  pageSize: tableInitPageSize
5390
5390
  };
5391
+ var selectedInitPagination = _objectSpread2(_objectSpread2({}, initPagination), {}, {
5392
+ current: 1,
5393
+ pageSize: resolveTablePageSize((modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.selectedTablePageSize) || 20),
5394
+ total: 0
5395
+ });
5391
5396
  var tableInitPagination = _objectSpread2(_objectSpread2({}, initPagination), {}, {
5392
5397
  total: 0,
5393
5398
  current: 1,
5394
5399
  pageSizeOptions: TABLE_PAGE_SIZE_OPTIONS.map(String)
5395
5400
  });
5401
+ /**
5402
+ * 左侧弹窗表格大分页时的实际渲染上限;全选仍基于完整当前页 tableData。
5403
+ */
5404
+ var tableRenderPageSize = 200;
5396
5405
  var disabled = !!noOperate || (selectProps === null || selectProps === void 0 ? void 0 : selectProps.disabled) || (props === null || props === void 0 ? void 0 : props.disabled);
5397
5406
  var isHaveDependency = fixedparameter && fieldValToParam && ctx;
5398
5407
  var isHaveDValue = function isHaveDValue() {
@@ -5502,34 +5511,48 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5502
5511
  _useState32 = _slicedToArray(_useState31, 2),
5503
5512
  selectedRows = _useState32[0],
5504
5513
  setSelectedRows = _useState32[1];
5505
- var _useState33 = useState(false),
5514
+ var _useState33 = useState(selectedInitPagination),
5506
5515
  _useState34 = _slicedToArray(_useState33, 2),
5507
- checkedAll = _useState34[0],
5508
- setCheckedAll = _useState34[1];
5509
- var _useState35 = useState(false),
5516
+ selectedTablePagination = _useState34[0],
5517
+ setSelectedTablePagination = _useState34[1];
5518
+ var _useState35 = useState({}),
5510
5519
  _useState36 = _slicedToArray(_useState35, 2),
5511
- indeterminate = _useState36[0],
5512
- setIndeterminate = _useState36[1];
5513
- var _useState37 = useState({}),
5520
+ tableFormParams = _useState36[0],
5521
+ setTableFormParams = _useState36[1];
5522
+ var _useState37 = useState(false),
5514
5523
  _useState38 = _slicedToArray(_useState37, 2),
5515
- tableFormParams = _useState38[0],
5516
- setTableFormParams = _useState38[1];
5517
- var _useState39 = useState(false),
5524
+ tooltipVisible = _useState38[0],
5525
+ setTooltipVisible = _useState38[1];
5526
+ var _useState39 = useState(handleTableColumns(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.tableColumns)),
5518
5527
  _useState40 = _slicedToArray(_useState39, 2),
5519
- tooltipVisible = _useState40[0],
5520
- setTooltipVisible = _useState40[1];
5521
- var _useState41 = useState(handleTableColumns(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.tableColumns)),
5528
+ tableShowColumns = _useState40[0],
5529
+ setTabletShowColumns = _useState40[1]; // 默认展示表头-modalTableProps?.tableColumns
5530
+ var _useState41 = useState(false),
5522
5531
  _useState42 = _slicedToArray(_useState41, 2),
5523
- tableShowColumns = _useState42[0],
5524
- setTabletShowColumns = _useState42[1]; // 默认展示表头-modalTableProps?.tableColumns
5532
+ confirmLoading = _useState42[0],
5533
+ setConfirmLoading = _useState42[1];
5525
5534
  var _useState43 = useState(false),
5526
5535
  _useState44 = _slicedToArray(_useState43, 2),
5527
- confirmLoading = _useState44[0],
5528
- setConfirmLoading = _useState44[1];
5529
- var _useState45 = useState(false),
5530
- _useState46 = _slicedToArray(_useState45, 2),
5531
- modalSearched = _useState46[0],
5532
- setModalSearched = _useState46[1];
5536
+ modalSearched = _useState44[0],
5537
+ setModalSearched = _useState44[1];
5538
+ var selectAllTableRef = useRef(false);
5539
+ var getRecordKey = function getRecordKey(record) {
5540
+ var _record$mappingValueF;
5541
+ return (_record$mappingValueF = record === null || record === void 0 ? void 0 : record[mappingValueField]) !== null && _record$mappingValueF !== void 0 ? _record$mappingValueF : record === null || record === void 0 ? void 0 : record.value;
5542
+ };
5543
+ /**
5544
+ * 已选表格只向 Table 传入当前页数据,避免全选 1000 条时右侧表格同步处理全部数据。
5545
+ */
5546
+ var selectedTablePageRows = useMemo(function () {
5547
+ var current = Number((selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.current) || 1);
5548
+ var pageSize = Number((selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.pageSize) || selectedInitPagination.pageSize);
5549
+ var start = (current - 1) * pageSize;
5550
+ return (selectedRows || []).slice(start, start + pageSize).map(function (s, index) {
5551
+ return _objectSpread2(_objectSpread2({}, s), {}, {
5552
+ keyIndex: start + index + 1
5553
+ });
5554
+ });
5555
+ }, [selectedRows, selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.current, selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.pageSize, selectedInitPagination.pageSize]);
5533
5556
  var setSelectDataSource = function setSelectDataSource(list, total) {
5534
5557
  setItems(list);
5535
5558
  setItemsTotal(total);
@@ -5537,6 +5560,20 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5537
5560
  var clearSelectDataSource = function clearSelectDataSource() {
5538
5561
  setSelectDataSource([], 0);
5539
5562
  };
5563
+ /**
5564
+ * 清空弹窗已选数据。
5565
+ */
5566
+ var clearSelectedRows = function clearSelectedRows() {
5567
+ setSelectedRows([]);
5568
+ setPopValue([]);
5569
+ setSelectedTablePagination(function (prev) {
5570
+ return _objectSpread2(_objectSpread2({}, prev), {}, {
5571
+ total: 0,
5572
+ current: 1
5573
+ });
5574
+ });
5575
+ setSelectedRowKeys([]);
5576
+ };
5540
5577
  useImperativeHandle(ref, function () {
5541
5578
  return {
5542
5579
  refreshDataSource: function refreshDataSource() {
@@ -5729,6 +5766,18 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5729
5766
  setUniqueValue(makeUniqueValue());
5730
5767
  setTabletShowColumns(handleTableColumns(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.tableColumns));
5731
5768
  }, [resultSourceKey]);
5769
+ useEffect(function () {
5770
+ setSelectedTablePagination(function (prev) {
5771
+ var pageSize = (prev === null || prev === void 0 ? void 0 : prev.pageSize) || selectedInitPagination.pageSize;
5772
+ var maxCurrent = Math.ceil(selectedRows.length / pageSize) || 1;
5773
+ var current = selectedRows.length ? Math.min((prev === null || prev === void 0 ? void 0 : prev.current) || 1, maxCurrent) : 1;
5774
+ if ((prev === null || prev === void 0 ? void 0 : prev.total) === selectedRows.length && (prev === null || prev === void 0 ? void 0 : prev.current) === current) return prev;
5775
+ return _objectSpread2(_objectSpread2({}, prev), {}, {
5776
+ total: selectedRows.length,
5777
+ current: current
5778
+ });
5779
+ });
5780
+ }, [selectedRows.length, selectedInitPagination.pageSize]);
5732
5781
  useEffect(function () {
5733
5782
  if (init) {
5734
5783
  clearSelectDataSource();
@@ -5786,8 +5835,6 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5786
5835
  value: i
5787
5836
  };
5788
5837
  }));
5789
- setIndeterminate(!!value.length && value.length < itemsTotal);
5790
- setCheckedAll(itemsTotal && value.length === itemsTotal);
5791
5838
  } else {
5792
5839
  setSelectedRowKeys(labelInValue ? [value.key] : [value]);
5793
5840
  setSelectedRows(labelInValue ? [_defineProperty(_defineProperty(_defineProperty({}, mappingValueField, value.key), "value", value.key), "text", value.label)] : [_defineProperty(_defineProperty({}, mappingValueField, value), "value", value)]);
@@ -5875,8 +5922,6 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5875
5922
  setTablePagination(tableInitPagination);
5876
5923
  setSelectedRowKeys([]);
5877
5924
  setSelectedRows([]);
5878
- setCheckedAll(false);
5879
- setIndeterminate(false);
5880
5925
  };
5881
5926
  var handleCancel = function handleCancel() {
5882
5927
  clearModalTable();
@@ -5935,9 +5980,17 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5935
5980
  currentPage: pagination.current
5936
5981
  }), 2);
5937
5982
  };
5983
+ var handleSelectedTableChange = function handleSelectedTableChange(pagination) {
5984
+ setSelectedTablePagination(function (prev) {
5985
+ return _objectSpread2(_objectSpread2({}, prev), {}, {
5986
+ current: pagination.current,
5987
+ pageSize: pagination.pageSize
5988
+ });
5989
+ });
5990
+ };
5938
5991
  var onChangeSelectedKeys = function onChangeSelectedKeys(selectKeys, selectRows) {
5939
- var sksResult = (selectRows === null || selectRows === void 0 ? void 0 : selectRows.map(function (i) {
5940
- return i.value;
5992
+ var sksResult = (selectKeys === null || selectKeys === void 0 ? void 0 : selectKeys.length) ? selectKeys : (selectRows === null || selectRows === void 0 ? void 0 : selectRows.map(function (i) {
5993
+ return getRecordKey(i);
5941
5994
  })) || [];
5942
5995
  // 单选 默认直接选中 不需要确定 配置了modalRadioNeedFooter就需要确定
5943
5996
  if (!selectMode && !(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.modalRadioNeedFooter)) {
@@ -5947,33 +6000,96 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5947
6000
  setSelectedRowKeys(sksResult);
5948
6001
  setSelectedRows(selectRows);
5949
6002
  setPopValue(selectRows);
5950
- setIndeterminate(!!selectRows.length && selectRows.length < (tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.total));
5951
- setCheckedAll(selectRows.length === (tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.total));
5952
6003
  };
5953
- var rowSelection = {
5954
- type: selectMode ? 'checkbox' : 'radio',
5955
- selectedRowKeys: selectedRowKeys,
5956
- preserveSelectedRowKeys: true,
5957
- onChange: function onChange(sks, srs) {
5958
- // 处理翻页后,之前存储的selectedRows变为undefined
5959
- // selectedRows合并新数组,过滤undefined,过滤留下对应selectedRowKeys的集合
5960
- var tmpSelectedRows = selectedRows.concat(srs).filter(function (item) {
5961
- return item != undefined;
5962
- });
5963
- var totalSelectedRows = sks.map(function (key) {
5964
- return tmpSelectedRows.filter(function (item) {
5965
- return item[mappingValueField] == key;
5966
- })[0];
5967
- }).filter(function (item) {
5968
- return item != undefined;
5969
- });
5970
- onChangeSelectedKeys(sks, totalSelectedRows);
5971
- },
5972
- getCheckboxProps: (selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps) ? selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps : function () {
5973
- return {
5974
- disabled: disabled || !items.length && !tableData.length
5975
- };
5976
- }
6004
+ var getRowSelection = function getRowSelection() {
6005
+ var visibleRows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6006
+ var type = arguments.length > 1 ? arguments[1] : undefined;
6007
+ return {
6008
+ type: selectMode ? 'checkbox' : 'radio',
6009
+ selectedRowKeys: selectedRowKeys,
6010
+ preserveSelectedRowKeys: true,
6011
+ onSelectAll: function onSelectAll(selected) {
6012
+ selectAllTableRef.current = true;
6013
+ setTimeout(function () {
6014
+ selectAllTableRef.current = false;
6015
+ }, 0);
6016
+ var targetRows = type === 'noPage' ? visibleRows : tableData;
6017
+ var targetKeys = (targetRows || []).map(function (item) {
6018
+ return getRecordKey(item);
6019
+ });
6020
+ if (!selected) {
6021
+ var selectedKeySet = new Set((selectedRows || []).map(function (item) {
6022
+ return getRecordKey(item);
6023
+ }));
6024
+ if ((selectedRows || []).length === (targetRows || []).length && targetKeys.every(function (key) {
6025
+ return selectedKeySet.has(key);
6026
+ })) {
6027
+ clearSelectedRows();
6028
+ return;
6029
+ }
6030
+ var targetKeySet = new Set(targetKeys);
6031
+ var _nextSelectedRows = (selectedRows || []).filter(function (item) {
6032
+ return !targetKeySet.has(getRecordKey(item));
6033
+ });
6034
+ var _nextSelectedKeys = _nextSelectedRows.map(function (item) {
6035
+ return getRecordKey(item);
6036
+ });
6037
+ onChangeSelectedKeys(_nextSelectedKeys, _nextSelectedRows);
6038
+ return;
6039
+ }
6040
+ if (!(selectedRows || []).length) {
6041
+ onChangeSelectedKeys(targetKeys, targetRows || []);
6042
+ return;
6043
+ }
6044
+ var selectedRowMap = new Map();
6045
+ (selectedRows || []).forEach(function (item) {
6046
+ selectedRowMap.set(getRecordKey(item), item);
6047
+ });
6048
+ (targetRows || []).forEach(function (item) {
6049
+ selectedRowMap.set(getRecordKey(item), item);
6050
+ });
6051
+ var nextSelectedRows = Array.from(selectedRowMap.values()).filter(Boolean);
6052
+ var nextSelectedKeys = nextSelectedRows.map(function (item) {
6053
+ return getRecordKey(item);
6054
+ });
6055
+ onChangeSelectedKeys(nextSelectedKeys, nextSelectedRows);
6056
+ },
6057
+ onChange: function onChange(sks, srs) {
6058
+ if (selectAllTableRef.current) {
6059
+ selectAllTableRef.current = false;
6060
+ return;
6061
+ }
6062
+ if (!(sks === null || sks === void 0 ? void 0 : sks.length)) {
6063
+ clearSelectedRows();
6064
+ return;
6065
+ }
6066
+ // 处理翻页后,之前存储的selectedRows变为undefined
6067
+ // selectedRows合并新数组,过滤undefined,过滤留下对应selectedRowKeys的集合
6068
+ var visibleKeySet = new Set((visibleRows || []).map(function (item) {
6069
+ return getRecordKey(item);
6070
+ }));
6071
+ var selectedRowMap = new Map();
6072
+ (selectedRows || []).forEach(function (item) {
6073
+ var key = getRecordKey(item);
6074
+ if (!visibleKeySet.has(key)) {
6075
+ selectedRowMap.set(key, item);
6076
+ }
6077
+ });
6078
+ (srs || []).filter(Boolean).forEach(function (item) {
6079
+ selectedRowMap.set(getRecordKey(item), item);
6080
+ });
6081
+ var totalSelectedRows = Array.from(selectedRowMap.values()).filter(Boolean);
6082
+ var totalSelectedKeys = totalSelectedRows.map(function (item) {
6083
+ return getRecordKey(item);
6084
+ });
6085
+ onChangeSelectedKeys(totalSelectedKeys, totalSelectedRows);
6086
+ },
6087
+ getCheckboxProps: (selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps) ? selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps : function () {
6088
+ return {
6089
+ disabled: disabled || !items.length && !tableData.length
6090
+ };
6091
+ }
6092
+ };
5977
6093
  };
5978
6094
  var onRowClickSelect = function onRowClickSelect(e, record, type) {
5979
6095
  if (selectMode && !(disabled || !items.length && !tableData.length)) {
@@ -5981,7 +6097,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5981
6097
  var newSelect = [JSON.parse(JSON.stringify(record))];
5982
6098
  var srs = getRealStr(oldSelect, newSelect, record);
5983
6099
  var sks = srs.map(function (i) {
5984
- return i.value;
6100
+ return getRecordKey(i);
5985
6101
  });
5986
6102
  onChangeSelectedKeys(sks, srs);
5987
6103
  }
@@ -5990,7 +6106,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
5990
6106
  if (!selectMode && !(disabled || !items.length && !tableData.length)) {
5991
6107
  var srs = [JSON.parse(JSON.stringify(record))];
5992
6108
  var sks = srs.map(function (i) {
5993
- return i.value;
6109
+ return getRecordKey(i);
5994
6110
  });
5995
6111
  onChangeSelectedKeys(sks, srs);
5996
6112
  }
@@ -6262,6 +6378,10 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
6262
6378
  };
6263
6379
  var renderShowTable = function renderShowTable(tableList, type) {
6264
6380
  var _modalTableProps$tabl;
6381
+ var currentPageSize = Number((tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.pageSize) || tableInitPageSize);
6382
+ var needLimitRenderRows = type !== 'noPage' && currentPageSize >= tableRenderPageSize && (tableList === null || tableList === void 0 ? void 0 : tableList.length) > tableRenderPageSize;
6383
+ var currentTableList = needLimitRenderRows ? tableList.slice(0, tableRenderPageSize) : tableList;
6384
+ var currentDataSource = type == 'noPage' ? selectedTablePageRows : currentTableList;
6265
6385
  var viCount = (modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.visibleFieldsCount) || defaultVisibleFieldsCount;
6266
6386
  var canExpand = hasMoreQueryFields(modalTableProps);
6267
6387
  var collapsedList = modalTableProps === null || modalTableProps === void 0 ? void 0 : (_modalTableProps$tabl = modalTableProps.tableSearchForm) === null || _modalTableProps$tabl === void 0 ? void 0 : _modalTableProps$tabl.slice(0, viCount);
@@ -6291,13 +6411,14 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
6291
6411
  }, /*#__PURE__*/React$1.createElement(Table, _objectSpread2(_objectSpread2({
6292
6412
  bordered: true,
6293
6413
  size: "middle",
6294
- rowSelection: rowSelection,
6414
+ rowSelection: getRowSelection(currentDataSource, type),
6295
6415
  columns: tableShowColumns,
6296
- dataSource: tableList
6416
+ dataSource: currentDataSource
6297
6417
  }, type == 'noPage' ? {
6298
- pagination: _objectSpread2(_objectSpread2({}, initPagination), {}, {
6418
+ pagination: _objectSpread2(_objectSpread2({}, selectedTablePagination), {}, {
6299
6419
  showSizeChanger: false
6300
6420
  }),
6421
+ onChange: handleSelectedTableChange,
6301
6422
  locale: {
6302
6423
  emptyText: renderEmptyText('暂无已选结果', mTB)
6303
6424
  }
@@ -6333,13 +6454,9 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
6333
6454
  } // 务必填写 key
6334
6455
  ];
6335
6456
  var tabsItems2 = [{
6336
- label: "\u5DF2\u9009\uFF08".concat((selectedRowKeys === null || selectedRowKeys === void 0 ? void 0 : selectedRowKeys.length) || 0, "\uFF09"),
6457
+ label: "\u5DF2\u9009\uFF08".concat((selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.length) || 0, "\uFF09"),
6337
6458
  key: 'selected',
6338
- children: renderShowTable((selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.map(function (s, index) {
6339
- return _objectSpread2(_objectSpread2({}, s), {}, {
6340
- keyIndex: index + 1
6341
- });
6342
- })) || [], 'noPage')
6459
+ children: renderShowTable(selectedRows, 'noPage')
6343
6460
  }];
6344
6461
  var resetSelectDataSource = function resetSelectDataSource() {
6345
6462
  var isClear = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -6355,7 +6472,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
6355
6472
  props === null || props === void 0 ? void 0 : (_props$onClear = props.onClear) === null || _props$onClear === void 0 ? void 0 : _props$onClear.call(props);
6356
6473
  // 清空下拉框 / 弹窗 选中数据
6357
6474
  formaData([], items);
6358
- onChangeSelectedKeys([], []);
6475
+ clearSelectedRows();
6359
6476
  // 重置下拉框数据源
6360
6477
  resetSelectDataSource(true);
6361
6478
  };
@@ -6612,9 +6729,7 @@ var SearchSelect = /*#__PURE__*/forwardRef(function (props, ref) {
6612
6729
  }, /*#__PURE__*/React$1.createElement(Tabs, {
6613
6730
  items: tabsItems2,
6614
6731
  tabBarExtraContent: /*#__PURE__*/React$1.createElement("span", {
6615
- onClick: function onClick() {
6616
- return onChangeSelectedKeys([], []);
6617
- }
6732
+ onClick: clearSelectedRows
6618
6733
  }, "\u6E05\u7A7A\u5DF2\u9009")
6619
6734
  })) : null)))));
6620
6735
  });
@@ -39330,12 +39445,24 @@ var RuleObjectComponent = /*#__PURE__*/function (_Component) {
39330
39445
  padding: '10px',
39331
39446
  borderRadius: '4px'
39332
39447
  }
39333
- }, /*#__PURE__*/React$1.createElement("span", {
39448
+ }, /*#__PURE__*/React$1.createElement(Select, {
39449
+ disabled: disabled,
39334
39450
  style: {
39335
- marginRight: 8,
39336
- flexShrink: 0
39337
- }
39338
- }, "\u8BF7\u6C42\u53C2\u6570\u540D\u79F0:"), /*#__PURE__*/React$1.createElement(Input, {
39451
+ width: 150,
39452
+ marginRight: 10
39453
+ },
39454
+ placeholder: "\u8BF7\u9009\u62E9",
39455
+ value: String(itemDetail.reqConditionData.reqParamType || '10'),
39456
+ onChange: function onChange(val) {
39457
+ return _this.handleReqDataChange(itemDetail, 'reqParamType', val);
39458
+ }
39459
+ }, /*#__PURE__*/React$1.createElement(Select.Option, {
39460
+ value: "10"
39461
+ }, "\u8BF7\u6C42\u53C2\u6570\u540D\u79F0"), /*#__PURE__*/React$1.createElement(Select.Option, {
39462
+ value: "20"
39463
+ }, "\u8BF7\u6C42\u5934\u53C2\u6570\u540D\u79F0"), /*#__PURE__*/React$1.createElement(Select.Option, {
39464
+ value: "40"
39465
+ }, "\u6E90\u8BF7\u6C42\u5730\u5740")), String(itemDetail.reqConditionData.reqParamType || '10') !== '40' && /*#__PURE__*/React$1.createElement(Input, {
39339
39466
  disabled: disabled,
39340
39467
  style: {
39341
39468
  width: 150,
@@ -39891,6 +40018,8 @@ var RuleObjectComponent = /*#__PURE__*/function (_Component) {
39891
40018
  if (valueNames) {
39892
40019
  itemDetail.reqConditionData.paramNames = valueNames;
39893
40020
  }
40021
+ } else if (field === 'reqParamType') {
40022
+ itemDetail.reqConditionData.reqParamType = value;
39894
40023
  }
39895
40024
  _this.setState({
39896
40025
  ruleClassData: ruleClassData
package/dist/index.js CHANGED
@@ -5411,11 +5411,20 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5411
5411
  },
5412
5412
  pageSize: tableInitPageSize
5413
5413
  };
5414
+ var selectedInitPagination = _objectSpread2(_objectSpread2({}, initPagination), {}, {
5415
+ current: 1,
5416
+ pageSize: resolveTablePageSize((modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.selectedTablePageSize) || 20),
5417
+ total: 0
5418
+ });
5414
5419
  var tableInitPagination = _objectSpread2(_objectSpread2({}, initPagination), {}, {
5415
5420
  total: 0,
5416
5421
  current: 1,
5417
5422
  pageSizeOptions: TABLE_PAGE_SIZE_OPTIONS.map(String)
5418
5423
  });
5424
+ /**
5425
+ * 左侧弹窗表格大分页时的实际渲染上限;全选仍基于完整当前页 tableData。
5426
+ */
5427
+ var tableRenderPageSize = 200;
5419
5428
  var disabled = !!noOperate || (selectProps === null || selectProps === void 0 ? void 0 : selectProps.disabled) || (props === null || props === void 0 ? void 0 : props.disabled);
5420
5429
  var isHaveDependency = fixedparameter && fieldValToParam && ctx;
5421
5430
  var isHaveDValue = function isHaveDValue() {
@@ -5525,34 +5534,48 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5525
5534
  _useState32 = _slicedToArray(_useState31, 2),
5526
5535
  selectedRows = _useState32[0],
5527
5536
  setSelectedRows = _useState32[1];
5528
- var _useState33 = React$1.useState(false),
5537
+ var _useState33 = React$1.useState(selectedInitPagination),
5529
5538
  _useState34 = _slicedToArray(_useState33, 2),
5530
- checkedAll = _useState34[0],
5531
- setCheckedAll = _useState34[1];
5532
- var _useState35 = React$1.useState(false),
5539
+ selectedTablePagination = _useState34[0],
5540
+ setSelectedTablePagination = _useState34[1];
5541
+ var _useState35 = React$1.useState({}),
5533
5542
  _useState36 = _slicedToArray(_useState35, 2),
5534
- indeterminate = _useState36[0],
5535
- setIndeterminate = _useState36[1];
5536
- var _useState37 = React$1.useState({}),
5543
+ tableFormParams = _useState36[0],
5544
+ setTableFormParams = _useState36[1];
5545
+ var _useState37 = React$1.useState(false),
5537
5546
  _useState38 = _slicedToArray(_useState37, 2),
5538
- tableFormParams = _useState38[0],
5539
- setTableFormParams = _useState38[1];
5540
- var _useState39 = React$1.useState(false),
5547
+ tooltipVisible = _useState38[0],
5548
+ setTooltipVisible = _useState38[1];
5549
+ var _useState39 = React$1.useState(handleTableColumns(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.tableColumns)),
5541
5550
  _useState40 = _slicedToArray(_useState39, 2),
5542
- tooltipVisible = _useState40[0],
5543
- setTooltipVisible = _useState40[1];
5544
- var _useState41 = React$1.useState(handleTableColumns(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.tableColumns)),
5551
+ tableShowColumns = _useState40[0],
5552
+ setTabletShowColumns = _useState40[1]; // 默认展示表头-modalTableProps?.tableColumns
5553
+ var _useState41 = React$1.useState(false),
5545
5554
  _useState42 = _slicedToArray(_useState41, 2),
5546
- tableShowColumns = _useState42[0],
5547
- setTabletShowColumns = _useState42[1]; // 默认展示表头-modalTableProps?.tableColumns
5555
+ confirmLoading = _useState42[0],
5556
+ setConfirmLoading = _useState42[1];
5548
5557
  var _useState43 = React$1.useState(false),
5549
5558
  _useState44 = _slicedToArray(_useState43, 2),
5550
- confirmLoading = _useState44[0],
5551
- setConfirmLoading = _useState44[1];
5552
- var _useState45 = React$1.useState(false),
5553
- _useState46 = _slicedToArray(_useState45, 2),
5554
- modalSearched = _useState46[0],
5555
- setModalSearched = _useState46[1];
5559
+ modalSearched = _useState44[0],
5560
+ setModalSearched = _useState44[1];
5561
+ var selectAllTableRef = React$1.useRef(false);
5562
+ var getRecordKey = function getRecordKey(record) {
5563
+ var _record$mappingValueF;
5564
+ return (_record$mappingValueF = record === null || record === void 0 ? void 0 : record[mappingValueField]) !== null && _record$mappingValueF !== void 0 ? _record$mappingValueF : record === null || record === void 0 ? void 0 : record.value;
5565
+ };
5566
+ /**
5567
+ * 已选表格只向 Table 传入当前页数据,避免全选 1000 条时右侧表格同步处理全部数据。
5568
+ */
5569
+ var selectedTablePageRows = React$1.useMemo(function () {
5570
+ var current = Number((selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.current) || 1);
5571
+ var pageSize = Number((selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.pageSize) || selectedInitPagination.pageSize);
5572
+ var start = (current - 1) * pageSize;
5573
+ return (selectedRows || []).slice(start, start + pageSize).map(function (s, index) {
5574
+ return _objectSpread2(_objectSpread2({}, s), {}, {
5575
+ keyIndex: start + index + 1
5576
+ });
5577
+ });
5578
+ }, [selectedRows, selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.current, selectedTablePagination === null || selectedTablePagination === void 0 ? void 0 : selectedTablePagination.pageSize, selectedInitPagination.pageSize]);
5556
5579
  var setSelectDataSource = function setSelectDataSource(list, total) {
5557
5580
  setItems(list);
5558
5581
  setItemsTotal(total);
@@ -5560,6 +5583,20 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5560
5583
  var clearSelectDataSource = function clearSelectDataSource() {
5561
5584
  setSelectDataSource([], 0);
5562
5585
  };
5586
+ /**
5587
+ * 清空弹窗已选数据。
5588
+ */
5589
+ var clearSelectedRows = function clearSelectedRows() {
5590
+ setSelectedRows([]);
5591
+ setPopValue([]);
5592
+ setSelectedTablePagination(function (prev) {
5593
+ return _objectSpread2(_objectSpread2({}, prev), {}, {
5594
+ total: 0,
5595
+ current: 1
5596
+ });
5597
+ });
5598
+ setSelectedRowKeys([]);
5599
+ };
5563
5600
  React$1.useImperativeHandle(ref, function () {
5564
5601
  return {
5565
5602
  refreshDataSource: function refreshDataSource() {
@@ -5752,6 +5789,18 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5752
5789
  setUniqueValue(makeUniqueValue());
5753
5790
  setTabletShowColumns(handleTableColumns(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.tableColumns));
5754
5791
  }, [resultSourceKey]);
5792
+ React$1.useEffect(function () {
5793
+ setSelectedTablePagination(function (prev) {
5794
+ var pageSize = (prev === null || prev === void 0 ? void 0 : prev.pageSize) || selectedInitPagination.pageSize;
5795
+ var maxCurrent = Math.ceil(selectedRows.length / pageSize) || 1;
5796
+ var current = selectedRows.length ? Math.min((prev === null || prev === void 0 ? void 0 : prev.current) || 1, maxCurrent) : 1;
5797
+ if ((prev === null || prev === void 0 ? void 0 : prev.total) === selectedRows.length && (prev === null || prev === void 0 ? void 0 : prev.current) === current) return prev;
5798
+ return _objectSpread2(_objectSpread2({}, prev), {}, {
5799
+ total: selectedRows.length,
5800
+ current: current
5801
+ });
5802
+ });
5803
+ }, [selectedRows.length, selectedInitPagination.pageSize]);
5755
5804
  React$1.useEffect(function () {
5756
5805
  if (init) {
5757
5806
  clearSelectDataSource();
@@ -5809,8 +5858,6 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5809
5858
  value: i
5810
5859
  };
5811
5860
  }));
5812
- setIndeterminate(!!value.length && value.length < itemsTotal);
5813
- setCheckedAll(itemsTotal && value.length === itemsTotal);
5814
5861
  } else {
5815
5862
  setSelectedRowKeys(labelInValue ? [value.key] : [value]);
5816
5863
  setSelectedRows(labelInValue ? [_defineProperty(_defineProperty(_defineProperty({}, mappingValueField, value.key), "value", value.key), "text", value.label)] : [_defineProperty(_defineProperty({}, mappingValueField, value), "value", value)]);
@@ -5898,8 +5945,6 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5898
5945
  setTablePagination(tableInitPagination);
5899
5946
  setSelectedRowKeys([]);
5900
5947
  setSelectedRows([]);
5901
- setCheckedAll(false);
5902
- setIndeterminate(false);
5903
5948
  };
5904
5949
  var handleCancel = function handleCancel() {
5905
5950
  clearModalTable();
@@ -5958,9 +6003,17 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5958
6003
  currentPage: pagination.current
5959
6004
  }), 2);
5960
6005
  };
6006
+ var handleSelectedTableChange = function handleSelectedTableChange(pagination) {
6007
+ setSelectedTablePagination(function (prev) {
6008
+ return _objectSpread2(_objectSpread2({}, prev), {}, {
6009
+ current: pagination.current,
6010
+ pageSize: pagination.pageSize
6011
+ });
6012
+ });
6013
+ };
5961
6014
  var onChangeSelectedKeys = function onChangeSelectedKeys(selectKeys, selectRows) {
5962
- var sksResult = (selectRows === null || selectRows === void 0 ? void 0 : selectRows.map(function (i) {
5963
- return i.value;
6015
+ var sksResult = (selectKeys === null || selectKeys === void 0 ? void 0 : selectKeys.length) ? selectKeys : (selectRows === null || selectRows === void 0 ? void 0 : selectRows.map(function (i) {
6016
+ return getRecordKey(i);
5964
6017
  })) || [];
5965
6018
  // 单选 默认直接选中 不需要确定 配置了modalRadioNeedFooter就需要确定
5966
6019
  if (!selectMode && !(modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.modalRadioNeedFooter)) {
@@ -5970,33 +6023,96 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
5970
6023
  setSelectedRowKeys(sksResult);
5971
6024
  setSelectedRows(selectRows);
5972
6025
  setPopValue(selectRows);
5973
- setIndeterminate(!!selectRows.length && selectRows.length < (tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.total));
5974
- setCheckedAll(selectRows.length === (tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.total));
5975
6026
  };
5976
- var rowSelection = {
5977
- type: selectMode ? 'checkbox' : 'radio',
5978
- selectedRowKeys: selectedRowKeys,
5979
- preserveSelectedRowKeys: true,
5980
- onChange: function onChange(sks, srs) {
5981
- // 处理翻页后,之前存储的selectedRows变为undefined
5982
- // selectedRows合并新数组,过滤undefined,过滤留下对应selectedRowKeys的集合
5983
- var tmpSelectedRows = selectedRows.concat(srs).filter(function (item) {
5984
- return item != undefined;
5985
- });
5986
- var totalSelectedRows = sks.map(function (key) {
5987
- return tmpSelectedRows.filter(function (item) {
5988
- return item[mappingValueField] == key;
5989
- })[0];
5990
- }).filter(function (item) {
5991
- return item != undefined;
5992
- });
5993
- onChangeSelectedKeys(sks, totalSelectedRows);
5994
- },
5995
- getCheckboxProps: (selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps) ? selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps : function () {
5996
- return {
5997
- disabled: disabled || !items.length && !tableData.length
5998
- };
5999
- }
6027
+ var getRowSelection = function getRowSelection() {
6028
+ var visibleRows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6029
+ var type = arguments.length > 1 ? arguments[1] : undefined;
6030
+ return {
6031
+ type: selectMode ? 'checkbox' : 'radio',
6032
+ selectedRowKeys: selectedRowKeys,
6033
+ preserveSelectedRowKeys: true,
6034
+ onSelectAll: function onSelectAll(selected) {
6035
+ selectAllTableRef.current = true;
6036
+ setTimeout(function () {
6037
+ selectAllTableRef.current = false;
6038
+ }, 0);
6039
+ var targetRows = type === 'noPage' ? visibleRows : tableData;
6040
+ var targetKeys = (targetRows || []).map(function (item) {
6041
+ return getRecordKey(item);
6042
+ });
6043
+ if (!selected) {
6044
+ var selectedKeySet = new Set((selectedRows || []).map(function (item) {
6045
+ return getRecordKey(item);
6046
+ }));
6047
+ if ((selectedRows || []).length === (targetRows || []).length && targetKeys.every(function (key) {
6048
+ return selectedKeySet.has(key);
6049
+ })) {
6050
+ clearSelectedRows();
6051
+ return;
6052
+ }
6053
+ var targetKeySet = new Set(targetKeys);
6054
+ var _nextSelectedRows = (selectedRows || []).filter(function (item) {
6055
+ return !targetKeySet.has(getRecordKey(item));
6056
+ });
6057
+ var _nextSelectedKeys = _nextSelectedRows.map(function (item) {
6058
+ return getRecordKey(item);
6059
+ });
6060
+ onChangeSelectedKeys(_nextSelectedKeys, _nextSelectedRows);
6061
+ return;
6062
+ }
6063
+ if (!(selectedRows || []).length) {
6064
+ onChangeSelectedKeys(targetKeys, targetRows || []);
6065
+ return;
6066
+ }
6067
+ var selectedRowMap = new Map();
6068
+ (selectedRows || []).forEach(function (item) {
6069
+ selectedRowMap.set(getRecordKey(item), item);
6070
+ });
6071
+ (targetRows || []).forEach(function (item) {
6072
+ selectedRowMap.set(getRecordKey(item), item);
6073
+ });
6074
+ var nextSelectedRows = Array.from(selectedRowMap.values()).filter(Boolean);
6075
+ var nextSelectedKeys = nextSelectedRows.map(function (item) {
6076
+ return getRecordKey(item);
6077
+ });
6078
+ onChangeSelectedKeys(nextSelectedKeys, nextSelectedRows);
6079
+ },
6080
+ onChange: function onChange(sks, srs) {
6081
+ if (selectAllTableRef.current) {
6082
+ selectAllTableRef.current = false;
6083
+ return;
6084
+ }
6085
+ if (!(sks === null || sks === void 0 ? void 0 : sks.length)) {
6086
+ clearSelectedRows();
6087
+ return;
6088
+ }
6089
+ // 处理翻页后,之前存储的selectedRows变为undefined
6090
+ // selectedRows合并新数组,过滤undefined,过滤留下对应selectedRowKeys的集合
6091
+ var visibleKeySet = new Set((visibleRows || []).map(function (item) {
6092
+ return getRecordKey(item);
6093
+ }));
6094
+ var selectedRowMap = new Map();
6095
+ (selectedRows || []).forEach(function (item) {
6096
+ var key = getRecordKey(item);
6097
+ if (!visibleKeySet.has(key)) {
6098
+ selectedRowMap.set(key, item);
6099
+ }
6100
+ });
6101
+ (srs || []).filter(Boolean).forEach(function (item) {
6102
+ selectedRowMap.set(getRecordKey(item), item);
6103
+ });
6104
+ var totalSelectedRows = Array.from(selectedRowMap.values()).filter(Boolean);
6105
+ var totalSelectedKeys = totalSelectedRows.map(function (item) {
6106
+ return getRecordKey(item);
6107
+ });
6108
+ onChangeSelectedKeys(totalSelectedKeys, totalSelectedRows);
6109
+ },
6110
+ getCheckboxProps: (selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps) ? selectProps === null || selectProps === void 0 ? void 0 : selectProps.getCheckboxProps : function () {
6111
+ return {
6112
+ disabled: disabled || !items.length && !tableData.length
6113
+ };
6114
+ }
6115
+ };
6000
6116
  };
6001
6117
  var onRowClickSelect = function onRowClickSelect(e, record, type) {
6002
6118
  if (selectMode && !(disabled || !items.length && !tableData.length)) {
@@ -6004,7 +6120,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
6004
6120
  var newSelect = [JSON.parse(JSON.stringify(record))];
6005
6121
  var srs = getRealStr(oldSelect, newSelect, record);
6006
6122
  var sks = srs.map(function (i) {
6007
- return i.value;
6123
+ return getRecordKey(i);
6008
6124
  });
6009
6125
  onChangeSelectedKeys(sks, srs);
6010
6126
  }
@@ -6013,7 +6129,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
6013
6129
  if (!selectMode && !(disabled || !items.length && !tableData.length)) {
6014
6130
  var srs = [JSON.parse(JSON.stringify(record))];
6015
6131
  var sks = srs.map(function (i) {
6016
- return i.value;
6132
+ return getRecordKey(i);
6017
6133
  });
6018
6134
  onChangeSelectedKeys(sks, srs);
6019
6135
  }
@@ -6285,6 +6401,10 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
6285
6401
  };
6286
6402
  var renderShowTable = function renderShowTable(tableList, type) {
6287
6403
  var _modalTableProps$tabl;
6404
+ var currentPageSize = Number((tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.pageSize) || tableInitPageSize);
6405
+ var needLimitRenderRows = type !== 'noPage' && currentPageSize >= tableRenderPageSize && (tableList === null || tableList === void 0 ? void 0 : tableList.length) > tableRenderPageSize;
6406
+ var currentTableList = needLimitRenderRows ? tableList.slice(0, tableRenderPageSize) : tableList;
6407
+ var currentDataSource = type == 'noPage' ? selectedTablePageRows : currentTableList;
6288
6408
  var viCount = (modalTableProps === null || modalTableProps === void 0 ? void 0 : modalTableProps.visibleFieldsCount) || defaultVisibleFieldsCount;
6289
6409
  var canExpand = hasMoreQueryFields(modalTableProps);
6290
6410
  var collapsedList = modalTableProps === null || modalTableProps === void 0 ? void 0 : (_modalTableProps$tabl = modalTableProps.tableSearchForm) === null || _modalTableProps$tabl === void 0 ? void 0 : _modalTableProps$tabl.slice(0, viCount);
@@ -6314,13 +6434,14 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
6314
6434
  }, /*#__PURE__*/React__default['default'].createElement(antd.Table, _objectSpread2(_objectSpread2({
6315
6435
  bordered: true,
6316
6436
  size: "middle",
6317
- rowSelection: rowSelection,
6437
+ rowSelection: getRowSelection(currentDataSource, type),
6318
6438
  columns: tableShowColumns,
6319
- dataSource: tableList
6439
+ dataSource: currentDataSource
6320
6440
  }, type == 'noPage' ? {
6321
- pagination: _objectSpread2(_objectSpread2({}, initPagination), {}, {
6441
+ pagination: _objectSpread2(_objectSpread2({}, selectedTablePagination), {}, {
6322
6442
  showSizeChanger: false
6323
6443
  }),
6444
+ onChange: handleSelectedTableChange,
6324
6445
  locale: {
6325
6446
  emptyText: renderEmptyText('暂无已选结果', mTB)
6326
6447
  }
@@ -6356,13 +6477,9 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
6356
6477
  } // 务必填写 key
6357
6478
  ];
6358
6479
  var tabsItems2 = [{
6359
- label: "\u5DF2\u9009\uFF08".concat((selectedRowKeys === null || selectedRowKeys === void 0 ? void 0 : selectedRowKeys.length) || 0, "\uFF09"),
6480
+ label: "\u5DF2\u9009\uFF08".concat((selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.length) || 0, "\uFF09"),
6360
6481
  key: 'selected',
6361
- children: renderShowTable((selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.map(function (s, index) {
6362
- return _objectSpread2(_objectSpread2({}, s), {}, {
6363
- keyIndex: index + 1
6364
- });
6365
- })) || [], 'noPage')
6482
+ children: renderShowTable(selectedRows, 'noPage')
6366
6483
  }];
6367
6484
  var resetSelectDataSource = function resetSelectDataSource() {
6368
6485
  var isClear = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -6378,7 +6495,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
6378
6495
  props === null || props === void 0 ? void 0 : (_props$onClear = props.onClear) === null || _props$onClear === void 0 ? void 0 : _props$onClear.call(props);
6379
6496
  // 清空下拉框 / 弹窗 选中数据
6380
6497
  formaData([], items);
6381
- onChangeSelectedKeys([], []);
6498
+ clearSelectedRows();
6382
6499
  // 重置下拉框数据源
6383
6500
  resetSelectDataSource(true);
6384
6501
  };
@@ -6635,9 +6752,7 @@ var SearchSelect = /*#__PURE__*/React$1.forwardRef(function (props, ref) {
6635
6752
  }, /*#__PURE__*/React__default['default'].createElement(antd.Tabs, {
6636
6753
  items: tabsItems2,
6637
6754
  tabBarExtraContent: /*#__PURE__*/React__default['default'].createElement("span", {
6638
- onClick: function onClick() {
6639
- return onChangeSelectedKeys([], []);
6640
- }
6755
+ onClick: clearSelectedRows
6641
6756
  }, "\u6E05\u7A7A\u5DF2\u9009")
6642
6757
  })) : null)))));
6643
6758
  });
@@ -39353,12 +39468,24 @@ var RuleObjectComponent = /*#__PURE__*/function (_Component) {
39353
39468
  padding: '10px',
39354
39469
  borderRadius: '4px'
39355
39470
  }
39356
- }, /*#__PURE__*/React__default['default'].createElement("span", {
39471
+ }, /*#__PURE__*/React__default['default'].createElement(antd.Select, {
39472
+ disabled: disabled,
39357
39473
  style: {
39358
- marginRight: 8,
39359
- flexShrink: 0
39360
- }
39361
- }, "\u8BF7\u6C42\u53C2\u6570\u540D\u79F0:"), /*#__PURE__*/React__default['default'].createElement(antd.Input, {
39474
+ width: 150,
39475
+ marginRight: 10
39476
+ },
39477
+ placeholder: "\u8BF7\u9009\u62E9",
39478
+ value: String(itemDetail.reqConditionData.reqParamType || '10'),
39479
+ onChange: function onChange(val) {
39480
+ return _this.handleReqDataChange(itemDetail, 'reqParamType', val);
39481
+ }
39482
+ }, /*#__PURE__*/React__default['default'].createElement(antd.Select.Option, {
39483
+ value: "10"
39484
+ }, "\u8BF7\u6C42\u53C2\u6570\u540D\u79F0"), /*#__PURE__*/React__default['default'].createElement(antd.Select.Option, {
39485
+ value: "20"
39486
+ }, "\u8BF7\u6C42\u5934\u53C2\u6570\u540D\u79F0"), /*#__PURE__*/React__default['default'].createElement(antd.Select.Option, {
39487
+ value: "40"
39488
+ }, "\u6E90\u8BF7\u6C42\u5730\u5740")), String(itemDetail.reqConditionData.reqParamType || '10') !== '40' && /*#__PURE__*/React__default['default'].createElement(antd.Input, {
39362
39489
  disabled: disabled,
39363
39490
  style: {
39364
39491
  width: 150,
@@ -39914,6 +40041,8 @@ var RuleObjectComponent = /*#__PURE__*/function (_Component) {
39914
40041
  if (valueNames) {
39915
40042
  itemDetail.reqConditionData.paramNames = valueNames;
39916
40043
  }
40044
+ } else if (field === 'reqParamType') {
40045
+ itemDetail.reqConditionData.reqParamType = value;
39917
40046
  }
39918
40047
  _this.setState({
39919
40048
  ruleClassData: ruleClassData
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bit-sun/business-component",
3
- "version": "4.2.1-alpha.24-aiwei",
3
+ "version": "4.2.1-alpha.26-aiwei",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",
@@ -1,5 +1,5 @@
1
1
  // @ts-nocheck
2
- import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';
2
+ import React, { useState, useEffect, useMemo, useRef, forwardRef, useImperativeHandle } from 'react';
3
3
  import { useDebounceFn } from 'ahooks';
4
4
  import { Input, Button, Modal, Select, Divider, message, Spin, Form, Table, Checkbox, TreeSelect, Tooltip, Tag, Row, Col, Space, Tabs, Empty, DatePicker } from 'antd';
5
5
  import { SearchOutlined, CopyOutlined, CaretLeftOutlined } from '@ant-design/icons';
@@ -95,7 +95,12 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
95
95
  const isFormPage = pathname.match(pattern)?.length > 0;
96
96
 
97
97
  const initPagination = { showQuickJumper: true, showSizeChanger: true, showTotal: (total: any) => `共 ${total} 条`, pageSize: tableInitPageSize }
98
+ const selectedInitPagination = { ...initPagination, current: 1, pageSize: resolveTablePageSize(modalTableProps?.selectedTablePageSize || 20), total: 0 }
98
99
  const tableInitPagination = { ...initPagination, total: 0, current: 1, pageSizeOptions:TABLE_PAGE_SIZE_OPTIONS.map(String) }
100
+ /**
101
+ * 左侧弹窗表格大分页时的实际渲染上限;全选仍基于完整当前页 tableData。
102
+ */
103
+ const tableRenderPageSize = 200;
99
104
  const disabled = !!noOperate || selectProps?.disabled || props?.disabled;
100
105
  const isHaveDependency = fixedparameter && fieldValToParam && ctx;
101
106
  const isHaveDValue = () => {
@@ -153,13 +158,25 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
153
158
  const [tablePagination, setTablePagination] = useState(tableInitPagination)
154
159
  const [selectedRowKeys, setSelectedRowKeys] = useState([]);
155
160
  const [selectedRows, setSelectedRows] = useState([]);
156
- const [checkedAll, setCheckedAll] = useState(false)
157
- const [indeterminate, setIndeterminate] = useState(false)
161
+ const [selectedTablePagination, setSelectedTablePagination] = useState(selectedInitPagination);
158
162
  const [tableFormParams, setTableFormParams] = useState({});
159
163
  const [tooltipVisible, setTooltipVisible] = useState(false);
160
164
  const [tableShowColumns, setTabletShowColumns] = useState(handleTableColumns(modalTableProps?.tableColumns)); // 默认展示表头-modalTableProps?.tableColumns
161
165
  const [confirmLoading, setConfirmLoading] = useState(false);
162
166
  const [modalSearched, setModalSearched]=useState(false);
167
+ const selectAllTableRef = useRef(false);
168
+
169
+ const getRecordKey = (record: any) => record?.[mappingValueField] ?? record?.value;
170
+
171
+ /**
172
+ * 已选表格只向 Table 传入当前页数据,避免全选 1000 条时右侧表格同步处理全部数据。
173
+ */
174
+ const selectedTablePageRows = useMemo(() => {
175
+ const current = Number(selectedTablePagination?.current || 1);
176
+ const pageSize = Number(selectedTablePagination?.pageSize || selectedInitPagination.pageSize);
177
+ const start = (current - 1) * pageSize;
178
+ return (selectedRows || []).slice(start, start + pageSize).map((s,index)=> ({...s,keyIndex:start + index + 1}));
179
+ }, [selectedRows, selectedTablePagination?.current, selectedTablePagination?.pageSize, selectedInitPagination.pageSize]);
163
180
 
164
181
  const setSelectDataSource = (list,total: number) => {
165
182
  setItems(list);
@@ -169,6 +186,16 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
169
186
  setSelectDataSource([],0)
170
187
  }
171
188
 
189
+ /**
190
+ * 清空弹窗已选数据。
191
+ */
192
+ const clearSelectedRows = () => {
193
+ setSelectedRows([]);
194
+ setPopValue([]);
195
+ setSelectedTablePagination((prev: any) => ({ ...prev, total: 0, current: 1 }));
196
+ setSelectedRowKeys([]);
197
+ }
198
+
172
199
  useImperativeHandle(ref, () => ({
173
200
  refreshDataSource: (reset: boolean = false) => {
174
201
  if (reset) {
@@ -342,6 +369,16 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
342
369
  setTabletShowColumns(handleTableColumns(modalTableProps?.tableColumns));
343
370
  }, [resultSourceKey])
344
371
 
372
+ useEffect(() => {
373
+ setSelectedTablePagination((prev: any) => {
374
+ const pageSize = prev?.pageSize || selectedInitPagination.pageSize;
375
+ const maxCurrent = Math.ceil(selectedRows.length / pageSize) || 1;
376
+ const current = selectedRows.length ? Math.min(prev?.current || 1, maxCurrent) : 1;
377
+ if (prev?.total === selectedRows.length && prev?.current === current) return prev;
378
+ return { ...prev, total: selectedRows.length, current };
379
+ });
380
+ }, [selectedRows.length, selectedInitPagination.pageSize])
381
+
345
382
  useEffect(() => {
346
383
  if (init) {
347
384
  clearSelectDataSource();
@@ -388,9 +425,6 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
388
425
  setSelectedRowKeys(labelInValue ? value.map(i => i.key) : value)
389
426
  setSelectedRows(labelInValue ? value.map(i => ({ [mappingValueField]: i.key, value: i.key, text: i.label })) : value.map(i => ({ [mappingValueField]: i, value: i })))
390
427
  setPopValue(labelInValue ? value.map(i => ({ value: i.key, text: i.label })) : value.map(i => ({ value: i })));
391
- setIndeterminate(!!value.length && value.length < itemsTotal);
392
- setCheckedAll(itemsTotal && value.length === itemsTotal);
393
-
394
428
  } else {
395
429
  setSelectedRowKeys(labelInValue ? [value.key] : [value])
396
430
  setSelectedRows(labelInValue ? [{ [mappingValueField]: value.key, value: value.key, text: value.label }] : [{ [mappingValueField]: value, value: value }])
@@ -461,8 +495,6 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
461
495
  setTablePagination(tableInitPagination);
462
496
  setSelectedRowKeys([]);
463
497
  setSelectedRows([]);
464
- setCheckedAll(false);
465
- setIndeterminate(false);
466
498
  };
467
499
 
468
500
  const handleCancel = () => {
@@ -522,6 +554,10 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
522
554
  getData({ ...tableFormParams, pageSize: pagination.pageSize, currentPage: pagination.current }, 2)
523
555
  }
524
556
 
557
+ const handleSelectedTableChange = (pagination) => {
558
+ setSelectedTablePagination((prev: any) => ({ ...prev, current: pagination.current, pageSize: pagination.pageSize }));
559
+ }
560
+
525
561
  // 扁平化二维数组的方法
526
562
  const mapRows = params => {
527
563
  var res = [];
@@ -539,7 +575,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
539
575
  };
540
576
 
541
577
  const onChangeSelectedKeys = (selectKeys, selectRows) => {
542
- let sksResult = selectRows?.map((i) => i.value)||[];
578
+ let sksResult = selectKeys?.length ? selectKeys : selectRows?.map((i) => getRecordKey(i))||[];
543
579
 
544
580
  // 单选 默认直接选中 不需要确定 配置了modalRadioNeedFooter就需要确定
545
581
  if(!selectMode && !modalTableProps?.modalRadioNeedFooter) {
@@ -550,34 +586,87 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
550
586
  setSelectedRowKeys(sksResult)
551
587
  setSelectedRows(selectRows)
552
588
  setPopValue(selectRows);
553
- setIndeterminate(!!selectRows.length && selectRows.length < tablePagination?.total);
554
- setCheckedAll(selectRows.length === tablePagination?.total);
555
589
  }
556
590
 
557
- const rowSelection = {
591
+ const getRowSelection = (visibleRows: any[] = [], type?: string) => ({
558
592
  type: selectMode ? 'checkbox' : 'radio',
559
593
  selectedRowKeys,
560
594
  preserveSelectedRowKeys: true,
595
+ onSelectAll: (selected) => {
596
+ selectAllTableRef.current = true;
597
+ setTimeout(() => {
598
+ selectAllTableRef.current = false;
599
+ }, 0);
600
+ const targetRows = type === 'noPage' ? visibleRows : tableData;
601
+ const targetKeys = (targetRows || []).map((item: any) => getRecordKey(item));
602
+ if (!selected) {
603
+ const selectedKeySet = new Set((selectedRows || []).map((item: any) => getRecordKey(item)));
604
+ if ((selectedRows || []).length === (targetRows || []).length && targetKeys.every((key: any) => selectedKeySet.has(key))) {
605
+ clearSelectedRows();
606
+ return;
607
+ }
608
+ const targetKeySet = new Set(targetKeys);
609
+ const nextSelectedRows = (selectedRows || []).filter((item: any) => !targetKeySet.has(getRecordKey(item)));
610
+ const nextSelectedKeys = nextSelectedRows.map((item: any) => getRecordKey(item));
611
+ onChangeSelectedKeys(nextSelectedKeys, nextSelectedRows);
612
+ return;
613
+ }
614
+
615
+ if (!(selectedRows || []).length) {
616
+ onChangeSelectedKeys(targetKeys, targetRows || []);
617
+ return;
618
+ }
619
+
620
+ const selectedRowMap = new Map();
621
+ (selectedRows || []).forEach((item: any) => {
622
+ selectedRowMap.set(getRecordKey(item), item);
623
+ });
624
+ (targetRows || []).forEach((item: any) => {
625
+ selectedRowMap.set(getRecordKey(item), item);
626
+ });
627
+ const nextSelectedRows = Array.from(selectedRowMap.values()).filter(Boolean);
628
+ const nextSelectedKeys = nextSelectedRows.map((item: any) => getRecordKey(item));
629
+ onChangeSelectedKeys(nextSelectedKeys, nextSelectedRows);
630
+ },
561
631
  onChange: (sks, srs) => {
632
+ if (selectAllTableRef.current) {
633
+ selectAllTableRef.current = false;
634
+ return;
635
+ }
636
+ if (!sks?.length) {
637
+ clearSelectedRows();
638
+ return;
639
+ }
562
640
  // 处理翻页后,之前存储的selectedRows变为undefined
563
641
  // selectedRows合并新数组,过滤undefined,过滤留下对应selectedRowKeys的集合
564
- let tmpSelectedRows = selectedRows.concat(srs).filter(item => item != undefined);
565
- let totalSelectedRows = sks.map(key => tmpSelectedRows.filter(item => item[mappingValueField] == key)[0]).filter(item => item != undefined)
566
- onChangeSelectedKeys(sks, totalSelectedRows)
642
+ const visibleKeySet = new Set((visibleRows || []).map((item: any) => getRecordKey(item)));
643
+ const selectedRowMap = new Map();
644
+ (selectedRows || []).forEach((item: any) => {
645
+ const key = getRecordKey(item);
646
+ if (!visibleKeySet.has(key)) {
647
+ selectedRowMap.set(key, item);
648
+ }
649
+ });
650
+ (srs || []).filter(Boolean).forEach((item: any) => {
651
+ selectedRowMap.set(getRecordKey(item), item);
652
+ });
653
+ const totalSelectedRows = Array.from(selectedRowMap.values()).filter(Boolean);
654
+ const totalSelectedKeys = totalSelectedRows.map((item: any) => getRecordKey(item));
655
+ onChangeSelectedKeys(totalSelectedKeys, totalSelectedRows)
567
656
  },
568
657
  getCheckboxProps: selectProps?.getCheckboxProps ? selectProps?.getCheckboxProps : () => {
569
658
  return ({
570
659
  disabled: disabled || (!items.length && !tableData.length),
571
660
  })
572
661
  },
573
- };
662
+ });
574
663
 
575
664
  const onRowClickSelect = (e, record,type) => {
576
665
  if (selectMode && !(disabled || (!items.length && !tableData.length))) {
577
666
  const oldSelect = selectedRows;
578
667
  const newSelect = [JSON.parse(JSON.stringify(record))];
579
668
  const srs = getRealStr(oldSelect,newSelect,record);
580
- const sks = srs.map((i: any) => i.value)
669
+ const sks = srs.map((i: any) => getRecordKey(i))
581
670
 
582
671
  onChangeSelectedKeys(sks, srs)
583
672
  }
@@ -585,7 +674,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
585
674
  const onDoubleClickSelect = (e, record,type) => {
586
675
  if (!selectMode && !(disabled || (!items.length && !tableData.length))) {
587
676
  const srs = [JSON.parse(JSON.stringify(record))]
588
- const sks = srs.map((i: any) => i.value)
677
+ const sks = srs.map((i: any) => getRecordKey(i))
589
678
  onChangeSelectedKeys(sks, srs)
590
679
  }
591
680
  }
@@ -788,6 +877,10 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
788
877
  }
789
878
 
790
879
  const renderShowTable = (tableList, type) => {
880
+ const currentPageSize = Number(tablePagination?.pageSize || tableInitPageSize);
881
+ const needLimitRenderRows = type !== 'noPage' && currentPageSize >= tableRenderPageSize && tableList?.length > tableRenderPageSize;
882
+ const currentTableList = needLimitRenderRows ? tableList.slice(0, tableRenderPageSize) : tableList;
883
+ const currentDataSource = type=='noPage' ? selectedTablePageRows : currentTableList;
791
884
  const viCount = modalTableProps?.visibleFieldsCount || defaultVisibleFieldsCount;
792
885
  const canExpand = hasMoreQueryFields(modalTableProps);
793
886
  const collapsedList = modalTableProps?.tableSearchForm?.slice(0, viCount);
@@ -815,11 +908,12 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
815
908
  <Table
816
909
  bordered
817
910
  size="middle"
818
- rowSelection={rowSelection}
911
+ rowSelection={getRowSelection(currentDataSource, type)}
819
912
  columns={tableShowColumns}
820
- dataSource={tableList}
913
+ dataSource={currentDataSource}
821
914
  {...type=='noPage'?{
822
- pagination: { ...initPagination,showSizeChanger: false },
915
+ pagination: { ...selectedTablePagination,showSizeChanger: false },
916
+ onChange: handleSelectedTableChange,
823
917
  locale: {
824
918
  emptyText: renderEmptyText('暂无已选结果',mTB),
825
919
  }
@@ -852,7 +946,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
852
946
  { label: `全部(${tablePagination?.total || 0})`, key: 'all', children: renderShowTable(tableData) }, // 务必填写 key
853
947
  ];
854
948
  const tabsItems2 = [
855
- { label: `已选(${selectedRowKeys?.length || 0})`, key: 'selected', children: renderShowTable(selectedRows?.map((s,index)=> ({...s,keyIndex:index+1}))||[],'noPage') },
949
+ { label: `已选(${selectedRows?.length || 0})`, key: 'selected', children: renderShowTable(selectedRows,'noPage') },
856
950
  ];
857
951
 
858
952
  const resetSelectDataSource = (isClear=false) => {
@@ -868,7 +962,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
868
962
  props?.onClear?.();
869
963
  // 清空下拉框 / 弹窗 选中数据
870
964
  formaData([], items);
871
- onChangeSelectedKeys([], [])
965
+ clearSelectedRows();
872
966
  // 重置下拉框数据源
873
967
  resetSelectDataSource(true);
874
968
  }
@@ -1082,7 +1176,7 @@ const SearchSelect = forwardRef((props: any, ref: any) => {
1082
1176
 
1083
1177
  <div className={'search_select_wrapper_bottomTable'}>
1084
1178
  <div className={selectMode ?'search_select_wrapper_bottomTable_wrapLeft2':'search_select_wrapper_bottomTable_wrapLeft1'}><Tabs items={tabsItems1} /></div>
1085
- {selectMode ? <div className={'search_select_wrapper_bottomTable_wrapRight'}><Tabs items={tabsItems2} tabBarExtraContent={<span onClick={()=> onChangeSelectedKeys([], [])}>清空已选</span>} /></div> : null}
1179
+ {selectMode ? <div className={'search_select_wrapper_bottomTable_wrapRight'}><Tabs items={tabsItems2} tabBarExtraContent={<span onClick={clearSelectedRows}>清空已选</span>} /></div> : null}
1086
1180
  </div>
1087
1181
  </div>
1088
1182
  </Modal>
@@ -1143,21 +1143,36 @@ class RuleObjectComponent extends Component {
1143
1143
  borderRadius: '4px',
1144
1144
  }}
1145
1145
  >
1146
- <span style={{ marginRight: 8, flexShrink: 0 }}>
1147
- 请求参数名称:
1148
- </span>
1149
- <Input
1146
+ <Select
1150
1147
  disabled={disabled}
1151
1148
  style={{ width: 150, marginRight: 10 }}
1152
- value={itemDetail.reqConditionData.reqParamName}
1153
- onChange={(e) =>
1154
- this.handleReqDataChange(
1155
- itemDetail,
1156
- 'reqParamName',
1157
- e.target.value,
1158
- )
1149
+ placeholder="请选择"
1150
+ value={String(
1151
+ itemDetail.reqConditionData.reqParamType || '10',
1152
+ )}
1153
+ onChange={(val) =>
1154
+ this.handleReqDataChange(itemDetail, 'reqParamType', val)
1159
1155
  }
1160
- />
1156
+ >
1157
+ <Select.Option value="10">请求参数名称</Select.Option>
1158
+ <Select.Option value="20">请求头参数名称</Select.Option>
1159
+ <Select.Option value="40">源请求地址</Select.Option>
1160
+ </Select>
1161
+ {String(itemDetail.reqConditionData.reqParamType || '10') !==
1162
+ '40' && (
1163
+ <Input
1164
+ disabled={disabled}
1165
+ style={{ width: 150, marginRight: 10 }}
1166
+ value={itemDetail.reqConditionData.reqParamName}
1167
+ onChange={(e) =>
1168
+ this.handleReqDataChange(
1169
+ itemDetail,
1170
+ 'reqParamName',
1171
+ e.target.value,
1172
+ )
1173
+ }
1174
+ />
1175
+ )}
1161
1176
 
1162
1177
  <span style={{ marginRight: 8, flexShrink: 0 }}>类型:</span>
1163
1178
  <Select
@@ -1843,6 +1858,8 @@ class RuleObjectComponent extends Component {
1843
1858
  if (valueNames) {
1844
1859
  itemDetail.reqConditionData.paramNames = valueNames;
1845
1860
  }
1861
+ } else if (field === 'reqParamType') {
1862
+ itemDetail.reqConditionData.reqParamType = value;
1846
1863
  }
1847
1864
 
1848
1865
  this.setState(