index.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import { Input, InputNumber, Select, DatePicker, Rate } from 'antd';
  2. import TableField from './TableField';
  3. import PhoneField from './PhoneField';
  4. import InnerContactField from './InnerContactField';
  5. import DepartmentField from './DepartmentField';
  6. import DDMultiSelectField from './DDMultiSelectField';
  7. import NumberField from './NumberField';
  8. import DDPhotoField from './DDPhotoField';
  9. import DDSelectField from './DDSelectField';
  10. import DDDateField from './DDDateField';
  11. import DDDateRangeField from './DDDateRangeField';
  12. const { Option } = Select;
  13. const { RangePicker } = DatePicker;
  14. export default function DDComponents(props) {
  15. const { item, onChange } = props;
  16. const {
  17. id,
  18. label,
  19. bizAlias,
  20. required,
  21. placeholder,
  22. options,
  23. align,
  24. statField,
  25. hideLabel,
  26. objOptions,
  27. format,
  28. pushToAttendance,
  29. labelEditableFreeze,
  30. requiredEditableFreeze,
  31. unit,
  32. extract,
  33. link,
  34. payEnable,
  35. bizType,
  36. childFieldVisible,
  37. notPrint,
  38. verticalPrint,
  39. hiddenInApprovalDetail,
  40. disabled,
  41. notUpper,
  42. children, // 子控件
  43. } = item.props;
  44. let component = null;
  45. switch (item.componentName) {
  46. case 'TextField': //单行输入
  47. component = (
  48. <Input
  49. disabled={disabled}
  50. placeholder={placeholder}
  51. onChange={e => onChange?.(e.target.value)}
  52. />
  53. );
  54. break;
  55. case 'TextareaField': //多行输入
  56. component = (
  57. <Input.TextArea
  58. disabled={disabled}
  59. placeholder={placeholder}
  60. onChange={e => onChange?.(e.target.value)}
  61. />
  62. );
  63. break;
  64. case 'NumberField': //数字输入
  65. component = <NumberField disabled={disabled} unit={unit} onChange={onChange} />;
  66. break;
  67. case 'DDSelectField': //单选框
  68. component = <DDSelectField options={options} onChange={onChange} disabled={disabled} />;
  69. break;
  70. case 'DDMultiSelectField': //多选框
  71. component = <DDMultiSelectField disabled={disabled} options={options} onChange={onChange} />;
  72. break;
  73. case 'DDDateField': //日期控件
  74. component = <DDDateField format={format} disabled={disabled} onChange={onChange} />;
  75. break;
  76. case 'DDDateRangeField': //时间区间控件
  77. component = <DDDateRangeField format={format} disabled={disabled} onChange={onChange} />;
  78. break;
  79. case 'TextNote': //文本说明控件
  80. console.info('文本说明控件!');
  81. console.log(item);
  82. break;
  83. case 'PhoneField': //电话控件
  84. component = <PhoneField onChange={onChange} />;
  85. break;
  86. case 'DDPhotoField': //图片控件
  87. component = <DDPhotoField />;
  88. break;
  89. case 'MoneyField': //金额控件
  90. component = <Input placeholder={placeholder} onChange={onChange} />;
  91. break;
  92. case 'TableField': //明细控件
  93. component = <TableField item={item} />;
  94. break;
  95. case 'DDAttachment': //附件
  96. // component = (
  97. // <Upload>
  98. // <Button icon={<PlusOutlined />}>添加附件</Button>
  99. // </Upload>
  100. // );
  101. console.info('附件控件未渲染!');
  102. console.log(item);
  103. break;
  104. case 'InnerContactField': //联系人控件
  105. component = <InnerContactField onChange={onChange}></InnerContactField>;
  106. break;
  107. case 'DepartmentField': //部门控件
  108. component = <DepartmentField onChange={onChange} />;
  109. break;
  110. case 'RelateField': //关联审批单
  111. console.info('关联审批单控件未渲染!');
  112. console.log(item);
  113. break;
  114. case 'AddressField': //省市区控件
  115. console.info('省市区控件未渲染!');
  116. console.log(item);
  117. break;
  118. case 'StarRatingField': //评分控件
  119. console.info('评分控件未渲染!');
  120. console.log(item);
  121. break;
  122. case 'FormRelateField': //关联控件
  123. console.info('关联控件未渲染!');
  124. console.log(item);
  125. break;
  126. }
  127. return component;
  128. }