editableForm.jsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React from 'react'
  2. import { Row } from 'antd'
  3. import EditableFormItem from './editableFormItem'
  4. import { isNullOrUnDef } from '@/utils/is'
  5. const EditableForm = ({ dataSource, columns, type, tartgetUrl, editable }) => {
  6. const newColumns = columns.map(item => {
  7. const newItem = { ...item }
  8. // 控制col span
  9. if (isNullOrUnDef(item.span)) {
  10. newItem.span = 24
  11. }
  12. // 默认取用全局-editable
  13. if (!isNullOrUnDef(editable)) {
  14. newItem.editable = editable
  15. } else if (isNullOrUnDef(item.editable)) {
  16. // 采用布局-editable 默认为true
  17. newItem.editable = true
  18. }
  19. // 默认组件
  20. if (isNullOrUnDef(item.editCellType)) {
  21. newItem.editCellType = 'input'
  22. }
  23. return newItem
  24. })
  25. return (
  26. <Row>
  27. {newColumns.map(column => {
  28. return (
  29. <EditableFormItem
  30. type={type}
  31. key={column.dataIndex}
  32. label={column.label}
  33. dataSource={dataSource}
  34. editable={column.editable}
  35. disable={column.disable}
  36. dataIndex={column.dataIndex}
  37. span={column.span}
  38. editCellType={column.editCellType}
  39. customCell={column.customCell}
  40. requestUrl={tartgetUrl}
  41. />
  42. )
  43. })}
  44. </Row>
  45. )
  46. }
  47. export default EditableForm