index.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. import React from 'react';
  2. import { Input, InputNumber, Select, DatePicker, Rate } from 'antd';
  3. import TableField from './TableField';
  4. import PhoneField from './PhoneField';
  5. import InnerContactField from './InnerContactField';
  6. import DepartmentField from './DepartmentField';
  7. import CodeField from './CodeFiled';
  8. import DDMultiSelectField from './DDMultiSelectField';
  9. import NumberField from './NumberField';
  10. import DDPhotoField from './DDPhotoField';
  11. import DDSelectField from './DDSelectField';
  12. import DDDateField from './DDDateField';
  13. import DDDateRangeField from './DDDateRangeField';
  14. // import DDAttachment from './DDAttachment';
  15. import FormulaField from './FormulaField';
  16. import DIYTable from './DIYTable/index.tsx';
  17. import TextNode from './TextNote';
  18. import DDProjectField from './ProjectField';
  19. import ManufacturerField from './ManufacturerField';
  20. const { Option } = Select;
  21. const { RangePicker } = DatePicker;
  22. export default function DDComponents(props) {
  23. const { depId = '', evalStr = '', item, onChange } = props;
  24. const {
  25. id,
  26. label,
  27. bizAlias,
  28. required,
  29. placeholder,
  30. options,
  31. align,
  32. statField,
  33. hideLabel,
  34. objOptions,
  35. format,
  36. pushToAttendance,
  37. labelEditableFreeze,
  38. requiredEditableFreeze,
  39. unit,
  40. extract,
  41. link,
  42. payEnable,
  43. bizType,
  44. childFieldVisible,
  45. notPrint,
  46. verticalPrint,
  47. hiddenInApprovalDetail,
  48. defaultValue,
  49. disabled,
  50. notUpper,
  51. children, // 子控件
  52. } = item.props;
  53. let component = null;
  54. switch (item.componentName) {
  55. case 'TextField': // 单行输入
  56. component = (
  57. <Input
  58. defaultValue={defaultValue}
  59. disabled={disabled}
  60. placeholder={placeholder}
  61. onChange={e => onChange?.(e.target.value)}
  62. />
  63. );
  64. break;
  65. case 'TextareaField': // 多行输入
  66. component = (
  67. <Input.TextArea
  68. defaultValue={defaultValue}
  69. disabled={disabled}
  70. placeholder={placeholder}
  71. onChange={e => onChange?.(e.target.value)}
  72. />
  73. );
  74. break;
  75. case 'NumberField': // 数字输入
  76. component = (
  77. <NumberField
  78. defaultValue={defaultValue}
  79. disabled={disabled}
  80. unit={unit}
  81. onChange={onChange}
  82. />
  83. );
  84. break;
  85. case 'DDSelectField': // 单选框
  86. component = (
  87. <DDSelectField
  88. defaultValue={defaultValue}
  89. options={options}
  90. onChange={onChange}
  91. disabled={disabled}
  92. />
  93. );
  94. break;
  95. case 'DDMultiSelectField': // 多选框
  96. component = <DDMultiSelectField disabled={disabled} options={options} onChange={onChange} />;
  97. break;
  98. case 'DDDateField': // 日期控件
  99. component = (
  100. <DDDateField
  101. defaultValue={defaultValue}
  102. format={format}
  103. disabled={disabled}
  104. onChange={onChange}
  105. />
  106. );
  107. break;
  108. case 'DDDateRangeField': // 时间区间控件
  109. component = <DDDateRangeField format={format} disabled={disabled} onChange={onChange} />;
  110. break;
  111. case 'TextNote': // 文本说明控件
  112. component = <TextNode value={placeholder} />;
  113. break;
  114. case 'PhoneField': // 电话控件
  115. component = <PhoneField onChange={onChange} />;
  116. break;
  117. case 'DDPhotoField': // 图片控件
  118. component = <DDPhotoField />;
  119. break;
  120. case 'MoneyField': // 金额控件
  121. component = (
  122. <Input defaultValue={defaultValue} placeholder={placeholder} onChange={onChange} />
  123. );
  124. break;
  125. case 'TableField': // 明细控件
  126. component = <TableField item={item} />;
  127. break;
  128. case 'DDAttachment': // 附件
  129. // component = <DDAttachment />
  130. // component = '附件控件未渲染!'
  131. console.info('附件控件未渲染!');
  132. break;
  133. case 'InnerContactField': // 联系人控件
  134. component = <InnerContactField onChange={onChange} />;
  135. break;
  136. case 'DepartmentField': // 部门控件
  137. component = <DepartmentField defaultValue={defaultValue} onChange={onChange} />;
  138. break;
  139. case 'CodeField': // 合同编号控件
  140. component = <CodeField depId={depId} onChange={onChange} />;
  141. break;
  142. case 'ProjectField': // 项目控件
  143. component = <DDProjectField value={defaultValue} disabled={disabled} onChange={onChange} />;
  144. break;
  145. case 'DIYTable': // 可自定义表格控件
  146. component = <DIYTable table={item} columns={item.columns} onChange={onChange} />;
  147. break;
  148. case 'FormulaField':
  149. component = <FormulaField evalStr={evalStr} onChange={onChange} />;
  150. break;
  151. case 'ManufacturerField':
  152. component = <ManufacturerField defaultValue={defaultValue} onChange={onChange} />;
  153. break;
  154. case 'RelateField': // 关联审批单
  155. component = '关联审批单控件未渲染!';
  156. break;
  157. case 'AddressField': // 省市区控件
  158. component = '省市区控件未渲染!';
  159. break;
  160. case 'StarRatingField': // 评分控件
  161. component = '评分控件未渲染!';
  162. break;
  163. case 'FormRelateField': // 关联控件
  164. component = '关联控件未渲染!';
  165. break;
  166. default:
  167. break;
  168. }
  169. return component;
  170. }