feffery_antd_components 0.2.2 → 0.2.6

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.
Files changed (44) hide show
  1. package/DESCRIPTION +1 -1
  2. package/Project.toml +1 -1
  3. package/README-en_US.md +1 -1
  4. package/README.md +1 -1
  5. package/build/lib/feffery_antd_components/AntdAccordion.py +2 -2
  6. package/build/lib/feffery_antd_components/AntdCollapse.py +1 -1
  7. package/build/lib/feffery_antd_components/AntdDraggerUpload.py +4 -0
  8. package/build/lib/feffery_antd_components/AntdDropdown.py +11 -3
  9. package/build/lib/feffery_antd_components/AntdPictureUpload.py +4 -0
  10. package/build/lib/feffery_antd_components/AntdTable.py +12 -5
  11. package/build/lib/feffery_antd_components/AntdTree.py +11 -3
  12. package/build/lib/feffery_antd_components/AntdUpload.py +4 -0
  13. package/build/lib/feffery_antd_components/feffery_antd_components.min.js +1 -1
  14. package/build/lib/feffery_antd_components/metadata.json +129 -1
  15. package/build/lib/feffery_antd_components/package-info.json +1 -1
  16. package/feffery_antd_components/AntdAccordion.py +2 -2
  17. package/feffery_antd_components/AntdCollapse.py +1 -1
  18. package/feffery_antd_components/AntdDraggerUpload.py +4 -0
  19. package/feffery_antd_components/AntdDropdown.py +11 -3
  20. package/feffery_antd_components/AntdPictureUpload.py +4 -0
  21. package/feffery_antd_components/AntdTable.py +12 -5
  22. package/feffery_antd_components/AntdTree.py +11 -3
  23. package/feffery_antd_components/AntdUpload.py +4 -0
  24. package/feffery_antd_components/feffery_antd_components.min.js +1 -1
  25. package/feffery_antd_components/metadata.json +129 -1
  26. package/feffery_antd_components/package-info.json +1 -1
  27. package/package.json +1 -1
  28. package/src/jl/'feffery'_antdaccordion.jl +2 -2
  29. package/src/jl/'feffery'_antdcollapse.jl +1 -1
  30. package/src/jl/'feffery'_antddraggerupload.jl +4 -2
  31. package/src/jl/'feffery'_antddropdown.jl +5 -1
  32. package/src/jl/'feffery'_antdpictureupload.jl +4 -2
  33. package/src/jl/'feffery'_antdtable.jl +6 -3
  34. package/src/jl/'feffery'_antdtree.jl +5 -1
  35. package/src/jl/'feffery'_antdupload.jl +4 -2
  36. package/src/lib/components/AntdAccordion.react.js +4 -4
  37. package/src/lib/components/AntdCollapse.react.js +2 -2
  38. package/src/lib/components/AntdDropdown.react.js +57 -15
  39. package/src/lib/components/AntdTable.react.js +126 -92
  40. package/src/lib/components/AntdTree.react.js +72 -11
  41. package/src/lib/components/upload/AntdDraggerUpload.react.js +14 -3
  42. package/src/lib/components/upload/AntdPictureUpload.react.js +14 -3
  43. package/src/lib/components/upload/AntdUpload.react.js +14 -3
  44. package/usage.py +131 -48
@@ -465,6 +465,7 @@ class AntdTable extends Component {
465
465
  size,
466
466
  mode,
467
467
  nClicksButton,
468
+ nDoubleClicksCell,
468
469
  summaryRowContents,
469
470
  summaryRowFixed,
470
471
  customFormatFuncs,
@@ -820,101 +821,109 @@ class AntdTable extends Component {
820
821
  }
821
822
  // dropdown模式
822
823
  else if (columns[i]['renderOptions']['renderType'] === 'dropdown') {
823
- columns[i]['render'] = (menuItems, record) => (
824
- <Dropdown
825
- overlay={
826
- <Menu onClick={(item, key, keyPath, domEvent) => {
827
- setTimeout(function () {
828
- setProps({
829
- nClicksDropdownItem: nClicksDropdownItem + 1,
830
- recentlyClickedDropdownItemTitle: item.key,
831
- recentlyDropdownItemClickedDataIndex: columns[i].dataIndex,
832
- recentlyDropdownItemClickedRow: record
833
- })
834
- }, 200);
835
- }}>
836
- {
837
- menuItems.map(
838
- menuItem => (
839
- menuItem ?
840
- // 判断isDivider参数是否不为false
841
- (
842
- menuItem.isDivider ?
843
- <Menu.Divider /> :
844
- <Menu.Item icon={<AntdIcon icon={menuItem.icon} />}
845
- disabled={menuItem.disabled}
846
- key={menuItem.title}>
847
- <a >{menuItem.title}</a>
848
- </Menu.Item>
849
- ) :
850
- null
824
+ columns[i]['render'] = (menuItems, record) => {
825
+ // 针对空值进行错误处理
826
+ menuItems = menuItems || []
827
+ return (
828
+ <Dropdown
829
+ overlay={
830
+ <Menu onClick={(item, key, keyPath, domEvent) => {
831
+ setTimeout(function () {
832
+ setProps({
833
+ nClicksDropdownItem: nClicksDropdownItem + 1,
834
+ recentlyClickedDropdownItemTitle: item.key,
835
+ recentlyDropdownItemClickedDataIndex: columns[i].dataIndex,
836
+ recentlyDropdownItemClickedRow: record
837
+ })
838
+ }, 200);
839
+ }}>
840
+ {
841
+ menuItems.map(
842
+ menuItem => (
843
+ menuItem ?
844
+ // 判断isDivider参数是否不为false
845
+ (
846
+ menuItem.isDivider ?
847
+ <Menu.Divider /> :
848
+ <Menu.Item icon={<AntdIcon icon={menuItem.icon} />}
849
+ disabled={menuItem.disabled}
850
+ key={menuItem.title}>
851
+ <a >{menuItem.title}</a>
852
+ </Menu.Item>
853
+ ) :
854
+ null
855
+ )
851
856
  )
852
- )
853
- }
854
- </Menu>
855
- }
856
- arrow={columns[i]['renderOptions']?.dropdownProps?.arrow}
857
- disabled={columns[i]['renderOptions']?.dropdownProps?.disabled}
858
- overlayClassName={columns[i]['renderOptions']?.dropdownProps?.overlayClassName}
859
- overlayStyle={columns[i]['renderOptions']?.dropdownProps?.overlayStyle}
860
- placement={columns[i]['renderOptions']?.dropdownProps?.placement}
861
- trigger={
862
- columns[i]['renderOptions']?.dropdownProps?.trigger ?
863
- [columns[i]['renderOptions'].dropdownProps.trigger] : ['hover']
864
- }
865
- getPopupContainer={containerId ? () => (document.getElementById(containerId) ? document.getElementById(containerId) : document.body) : undefined}>
866
- <a className="ant-dropdown-link"
867
- onClick={e => e.preventDefault()}>
868
- {columns[i]['renderOptions']?.dropdownProps?.title} <DownOutlined />
869
- </a>
870
- </Dropdown>
871
- )
857
+ }
858
+ </Menu>
859
+ }
860
+ arrow={columns[i]['renderOptions']?.dropdownProps?.arrow}
861
+ disabled={columns[i]['renderOptions']?.dropdownProps?.disabled || menuItems.length === 0}
862
+ overlayClassName={columns[i]['renderOptions']?.dropdownProps?.overlayClassName}
863
+ overlayStyle={columns[i]['renderOptions']?.dropdownProps?.overlayStyle}
864
+ placement={columns[i]['renderOptions']?.dropdownProps?.placement}
865
+ trigger={
866
+ columns[i]['renderOptions']?.dropdownProps?.trigger ?
867
+ [columns[i]['renderOptions'].dropdownProps.trigger] : ['hover']
868
+ }
869
+ getPopupContainer={containerId ? () => (document.getElementById(containerId) ? document.getElementById(containerId) : document.body) : undefined}>
870
+ <a className="ant-dropdown-link"
871
+ onClick={e => e.preventDefault()}>
872
+ {columns[i]['renderOptions']?.dropdownProps?.title} <DownOutlined />
873
+ </a>
874
+ </Dropdown>
875
+ );
876
+ }
872
877
  }
873
878
  // dropdown-links模式
874
879
  else if (columns[i]['renderOptions']['renderType'] === 'dropdown-links') {
875
- columns[i]['render'] = menuItems => (
876
- <Dropdown
877
- overlay={
878
- <Menu>
879
- {
880
- menuItems.map(
881
- menuItem => (
882
- menuItem ?
883
- // 判断isDivider参数是否不为false
884
- (
885
- menuItem.isDivider ?
886
- <Menu.Divider /> :
887
- <Menu.Item icon={<AntdIcon icon={menuItem.icon} />}
888
- disabled={menuItem.disabled}
889
- key={menuItem.title}>
890
- <a href={menuItem.href}
891
- target={'_blank'}>
892
- {menuItem.title}
893
- </a>
894
- </Menu.Item>
895
- ) :
896
- null
880
+ columns[i]['render'] = menuItems => {
881
+ // 针对空值进行错误处理
882
+ menuItems = menuItems || []
883
+ return (
884
+ <Dropdown
885
+ overlay={
886
+ <Menu>
887
+ {
888
+ menuItems.map(
889
+ menuItem => (
890
+ menuItem ?
891
+ // 判断isDivider参数是否不为false
892
+ (
893
+ menuItem.isDivider ?
894
+ <Menu.Divider /> :
895
+ <Menu.Item icon={<AntdIcon icon={menuItem.icon} />}
896
+ disabled={menuItem.disabled}
897
+ key={menuItem.title}>
898
+ <a href={menuItem.href}
899
+ target={'_blank'}>
900
+ {menuItem.title}
901
+ </a>
902
+ </Menu.Item>
903
+ ) :
904
+ null
905
+ )
897
906
  )
898
- )
899
- }
900
- </Menu>
901
- }
902
- arrow={columns[i]['renderOptions']?.dropdownProps?.arrow}
903
- disabled={columns[i]['renderOptions']?.dropdownProps?.disabled}
904
- overlayClassName={columns[i]['renderOptions']?.dropdownProps?.overlayClassName}
905
- overlayStyle={columns[i]['renderOptions']?.dropdownProps?.overlayStyle}
906
- placement={columns[i]['renderOptions']?.dropdownProps?.placement}
907
- trigger={
908
- columns[i]['renderOptions']?.dropdownProps?.trigger ?
909
- [columns[i]['renderOptions'].dropdownProps.trigger] : ['hover']
910
- }
911
- getPopupContainer={containerId ? () => (document.getElementById(containerId) ? document.getElementById(containerId) : document.body) : undefined}>
912
- <a className="ant-dropdown-link"
913
- onClick={e => e.preventDefault()}>
914
- {columns[i]['renderOptions']?.dropdownProps?.title} <DownOutlined />
915
- </a>
916
- </Dropdown>
917
- )
907
+ }
908
+ </Menu>
909
+ }
910
+ arrow={columns[i]['renderOptions']?.dropdownProps?.arrow}
911
+ disabled={columns[i]['renderOptions']?.dropdownProps?.disabled || menuItems.length === 0}
912
+ overlayClassName={columns[i]['renderOptions']?.dropdownProps?.overlayClassName}
913
+ overlayStyle={columns[i]['renderOptions']?.dropdownProps?.overlayStyle}
914
+ placement={columns[i]['renderOptions']?.dropdownProps?.placement}
915
+ trigger={
916
+ columns[i]['renderOptions']?.dropdownProps?.trigger ?
917
+ [columns[i]['renderOptions'].dropdownProps.trigger] : ['hover']
918
+ }
919
+ getPopupContainer={containerId ? () => (document.getElementById(containerId) ? document.getElementById(containerId) : document.body) : undefined}>
920
+ <a className="ant-dropdown-link"
921
+ onClick={e => e.preventDefault()}>
922
+ {columns[i]['renderOptions']?.dropdownProps?.title} <DownOutlined />
923
+ </a>
924
+ </Dropdown>
925
+ );
926
+ }
918
927
  }
919
928
  // ellipsis-copyable模式
920
929
  else if (columns[i]['renderOptions']['renderType'] === 'ellipsis-copyable') {
@@ -1040,7 +1049,7 @@ class AntdTable extends Component {
1040
1049
  else if (columns[i]['renderOptions']['renderType'] === 'select') {
1041
1050
  columns[i]['render'] = (content, record) => {
1042
1051
  const currentDataIndex = columns[i]['dataIndex']
1043
- // 防止未定义错误
1052
+ // 针对空值进行错误处理
1044
1053
  content = content || {}
1045
1054
  return (
1046
1055
  <Select
@@ -1405,6 +1414,13 @@ class AntdTable extends Component {
1405
1414
  recentlyCellClickRecord: e,
1406
1415
  nClicksCell: nClicksCell + 1
1407
1416
  })
1417
+ },
1418
+ onDoubleClick: event => {
1419
+ setProps({
1420
+ recentlyCellDoubleClickColumn: currentDataIndex,
1421
+ recentlyCellDoubleClickRecord: e,
1422
+ nDoubleClicksCell: nDoubleClicksCell + 1
1423
+ })
1408
1424
  }
1409
1425
  };
1410
1426
  }
@@ -1723,6 +1739,9 @@ AntdTable.propTypes = {
1723
1739
  data: PropTypes.arrayOf(
1724
1740
  PropTypes.objectOf(
1725
1741
  PropTypes.oneOfType([
1742
+ // 针对向下嵌套children的兼容处理
1743
+ PropTypes.arrayOf(PropTypes.any),
1744
+
1726
1745
  // 常规模式、ellipsis模式、copyable模式、custom-format模式、ellipsis-copyable模式
1727
1746
  PropTypes.string,
1728
1747
 
@@ -1970,7 +1989,10 @@ AntdTable.propTypes = {
1970
1989
  // 设置选项内容
1971
1990
  label: PropTypes.string,
1972
1991
  // 设置选项内容的值
1973
- value: PropTypes.string
1992
+ value: PropTypes.oneOfType([
1993
+ PropTypes.string,
1994
+ PropTypes.number
1995
+ ])
1974
1996
  })
1975
1997
  ),
1976
1998
  // 设置下拉选择菜单像素高度,默认为256
@@ -2269,6 +2291,7 @@ AntdTable.propTypes = {
2269
2291
  ),
2270
2292
 
2271
2293
  // 记录单元格点击事件
2294
+ // 单击事件
2272
2295
  // 记录单元格点击事件对应的字段dataIndex信息
2273
2296
  recentlyCellClickColumn: PropTypes.string,
2274
2297
 
@@ -2278,6 +2301,16 @@ AntdTable.propTypes = {
2278
2301
  // 记录单元格单击事件发生的总次数
2279
2302
  nClicksCell: PropTypes.number,
2280
2303
 
2304
+ // 双击事件
2305
+ // 记录单元格点击事件对应的字段dataIndex信息
2306
+ recentlyCellDoubleClickColumn: PropTypes.string,
2307
+
2308
+ // 记录单元格点击事件对应的行记录信息
2309
+ recentlyCellDoubleClickRecord: PropTypes.object,
2310
+
2311
+ // 记录单元格单击事件发生的总次数
2312
+ nDoubleClicksCell: PropTypes.number,
2313
+
2281
2314
  // 自定义空数据状态内容
2282
2315
  emptyContent: PropTypes.node,
2283
2316
 
@@ -2413,6 +2446,7 @@ AntdTable.defaultProps = {
2413
2446
  expandRowByClick: false,
2414
2447
  enableCellClickListenColumns: [],
2415
2448
  nClicksCell: 0,
2449
+ nDoubleClicksCell: 0,
2416
2450
  cellUpdateOptimize: false,
2417
2451
  summaryRowFixed: false,
2418
2452
  conditionalStyleFuncs: {},
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Tree, Tooltip } from 'antd';
3
+ import { Tree, Tooltip, Dropdown } from 'antd';
4
4
  import AntdIcon from './AntdIcon.react';
5
5
  import { omitBy, isUndefined, isString, isObject, isArray, cloneDeep } from 'lodash';
6
6
  import { flatToTree } from './utils';
@@ -65,21 +65,18 @@ const AntdTree = (props) => {
65
65
  const add_leaf_node_icon = (inputTreeData) => {
66
66
  if (isObject(inputTreeData)) {
67
67
  // 为节点添加tooltip相关参数
68
- if (inputTreeData.tooltipProps) {
68
+ if (inputTreeData.tooltipProps && isString(inputTreeData.title)) {
69
69
  inputTreeData.title = (<Tooltip {...inputTreeData.tooltipProps}>
70
70
  {inputTreeData.title}
71
71
  </Tooltip>)
72
72
  }
73
-
74
73
  if (inputTreeData.children) {
75
74
  if (isString(inputTreeData.icon)) {
76
75
  inputTreeData.icon = <AntdIcon icon={inputTreeData.icon} />
77
76
  }
78
-
79
77
  for (let i = 0; i < inputTreeData.children.length; i++) {
80
78
  inputTreeData.children[i] = add_leaf_node_icon(inputTreeData.children[i])
81
79
  }
82
-
83
80
  } else {
84
81
  if (isString(inputTreeData.icon)) {
85
82
  inputTreeData.icon = <AntdIcon icon={inputTreeData.icon} />
@@ -97,6 +94,7 @@ const AntdTree = (props) => {
97
94
  }
98
95
 
99
96
  const listenSelect = (e) => {
97
+ console.log('节点选择发生', e)
100
98
  setProps({ selectedKeys: e })
101
99
  }
102
100
 
@@ -217,10 +215,41 @@ const AntdTree = (props) => {
217
215
  height={height}
218
216
  titleRender={(nodeData) => {
219
217
  return (
220
- <span className={nodeData.className ? `ant-tree-title ${nodeData.className}` : "ant-tree-title"}
221
- style={nodeData.style}>
222
- {nodeData.title}
223
- </span>
218
+ nodeData.contextMenu ?
219
+ <Dropdown
220
+ menu={{
221
+ items: nodeData.contextMenu.map(
222
+ itemProps => {
223
+ return {
224
+ ...itemProps,
225
+ icon: <AntdIcon icon={itemProps.icon} />
226
+ }
227
+ }
228
+ ),
229
+ // 右键菜单事件监听
230
+ onClick: (e) => {
231
+ // 阻止事件蔓延
232
+ e.domEvent.stopPropagation()
233
+ // 更新相关事件信息
234
+ setProps({
235
+ clickedContextMenu: {
236
+ nodeKey: nodeData.key,
237
+ menuKey: e.key
238
+ }
239
+ })
240
+ }
241
+ }}
242
+ trigger={['contextMenu']}
243
+ >
244
+ <span className={nodeData.className ? `ant-tree-title ${nodeData.className}` : "ant-tree-title"}
245
+ style={nodeData.style}>
246
+ {nodeData.title}
247
+ </span>
248
+ </Dropdown> :
249
+ <span className={nodeData.className ? `ant-tree-title ${nodeData.className}` : "ant-tree-title"}
250
+ style={nodeData.style}>
251
+ {nodeData.title}
252
+ </span>
224
253
  );
225
254
  }}
226
255
  showLeafIcon={false}
@@ -278,7 +307,19 @@ const PropTreeNodeShape = {
278
307
  'top', 'left', 'right', 'bottom', 'topLeft',
279
308
  'topRight', 'bottomLeft', 'bottomRight'
280
309
  ])
281
- })
310
+ }),
311
+
312
+ // 为当前节点设置右键菜单相关参数
313
+ contextMenu: PropTypes.arrayOf(
314
+ PropTypes.exact({
315
+ // 为当前右键菜单选项设置唯一key值
316
+ key: PropTypes.string,
317
+ // 为当前右键菜单项设置标题内容
318
+ label: PropTypes.string,
319
+ // 为当前选项设置前缀图标,同AntdIcon中的icon参数
320
+ icon: PropTypes.string
321
+ })
322
+ )
282
323
  };
283
324
 
284
325
  const PropTreeNode = PropTypes.shape(PropTreeNodeShape);
@@ -326,7 +367,19 @@ const PropFlatNodeShape = {
326
367
  'top', 'left', 'right', 'bottom', 'topLeft',
327
368
  'topRight', 'bottomLeft', 'bottomRight'
328
369
  ])
329
- })
370
+ }),
371
+
372
+ // 为当前节点设置右键菜单相关参数
373
+ contextMenu: PropTypes.arrayOf(
374
+ PropTypes.exact({
375
+ // 为当前右键菜单选项设置唯一key值
376
+ key: PropTypes.string,
377
+ // 为当前右键菜单项设置标题内容
378
+ label: PropTypes.string,
379
+ // 为当前选项设置前缀图标,同AntdIcon中的icon参数
380
+ icon: PropTypes.string
381
+ })
382
+ )
330
383
  };
331
384
 
332
385
  // 定义参数或属性
@@ -416,6 +469,14 @@ AntdTree.propTypes = {
416
469
  // 当节点被拖拽时,监听该节点的key值信息
417
470
  draggedNodeKey: PropTypes.string,
418
471
 
472
+ // 当有节点的右键菜单选项被点击时,监听相关的事件信息
473
+ clickedContextMenu: PropTypes.exact({
474
+ // 记录对应的树节点key值
475
+ nodeKey: PropTypes.string,
476
+ // 记录对应的右键菜单选项key值
477
+ menuKey: PropTypes.string
478
+ }),
479
+
419
480
  loading_state: PropTypes.shape({
420
481
  /**
421
482
  * Determines if the component is loading or not
@@ -84,7 +84,11 @@ const AntdDraggerUpload = (props) => {
84
84
  useEffect(() => {
85
85
  // 初始化uploadId
86
86
  if (!uploadId) {
87
- setProps({ uploadId: uuidv4() })
87
+ if (defaultFileList && defaultFileList.length > 0) {
88
+ setProps({ uploadId: defaultFileList[0].taskId || uuidv4() })
89
+ } else {
90
+ setProps({ uploadId: uuidv4() })
91
+ }
88
92
  }
89
93
  }, [])
90
94
 
@@ -93,7 +97,8 @@ const AntdDraggerUpload = (props) => {
93
97
  name: item.fileName,
94
98
  status: item.taskStatus,
95
99
  uid: item.uid,
96
- url: item.url
100
+ url: item.url,
101
+ fileSize: item.fileSize
97
102
  };
98
103
  }));
99
104
 
@@ -605,7 +610,13 @@ AntdDraggerUpload.propTypes = {
605
610
  uid: PropTypes.any,
606
611
 
607
612
  // 可选,用于渲染当前文件的下载链接
608
- url: PropTypes.string
613
+ url: PropTypes.string,
614
+
615
+ // 标识当前任务的taskId,若设置,则默认会被作为当前组件的uploadId使用
616
+ taskId: PropTypes.string,
617
+
618
+ // 可选,记录文件大小
619
+ fileSize: PropTypes.number
609
620
  })
610
621
  ),
611
622
 
@@ -89,7 +89,11 @@ const AntdPictureUpload = (props) => {
89
89
  useEffect(() => {
90
90
  // 初始化uploadId
91
91
  if (!uploadId) {
92
- setProps({ uploadId: uuidv4() })
92
+ if (defaultFileList && defaultFileList.length > 0) {
93
+ setProps({ uploadId: defaultFileList[0].taskId || uuidv4() })
94
+ } else {
95
+ setProps({ uploadId: uuidv4() })
96
+ }
93
97
  }
94
98
  }, [])
95
99
 
@@ -98,7 +102,8 @@ const AntdPictureUpload = (props) => {
98
102
  name: item.fileName,
99
103
  status: item.taskStatus,
100
104
  uid: item.uid,
101
- url: item.url
105
+ url: item.url,
106
+ fileSize: item.fileSize
102
107
  };
103
108
  }));
104
109
  const [previewVisible, setPreviewVisible] = useState(false);
@@ -633,7 +638,13 @@ AntdPictureUpload.propTypes = {
633
638
  uid: PropTypes.any,
634
639
 
635
640
  // 可选,用于渲染当前文件的下载链接
636
- url: PropTypes.string
641
+ url: PropTypes.string,
642
+
643
+ // 标识当前任务的taskId,若设置,则默认会被作为当前组件的uploadId使用
644
+ taskId: PropTypes.string,
645
+
646
+ // 可选,记录文件大小
647
+ fileSize: PropTypes.number
637
648
  })
638
649
  ),
639
650
 
@@ -79,7 +79,11 @@ const AntdUpload = (props) => {
79
79
  useEffect(() => {
80
80
  // 初始化uploadId
81
81
  if (!uploadId) {
82
- setProps({ uploadId: uuidv4() })
82
+ if (defaultFileList && defaultFileList.length > 0) {
83
+ setProps({ uploadId: defaultFileList[0].taskId || uuidv4() })
84
+ } else {
85
+ setProps({ uploadId: uuidv4() })
86
+ }
83
87
  }
84
88
  }, [])
85
89
 
@@ -88,7 +92,8 @@ const AntdUpload = (props) => {
88
92
  name: item.fileName,
89
93
  status: item.taskStatus,
90
94
  uid: item.uid,
91
- url: item.url
95
+ url: item.url,
96
+ fileSize: item.fileSize
92
97
  };
93
98
  }));
94
99
 
@@ -552,7 +557,13 @@ AntdUpload.propTypes = {
552
557
  uid: PropTypes.any,
553
558
 
554
559
  // 可选,用于渲染当前文件的下载链接
555
- url: PropTypes.string
560
+ url: PropTypes.string,
561
+
562
+ // 标识当前任务的taskId,若设置,则默认会被作为当前组件的uploadId使用
563
+ taskId: PropTypes.string,
564
+
565
+ // 可选,记录文件大小
566
+ fileSize: PropTypes.number
556
567
  })
557
568
  ),
558
569