StepTwo.jsx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import React, { useState, useEffect } from 'react'
  2. import { Form, Select, Input, message } from 'antd'
  3. import { getTableNamesList } from '../services'
  4. export default function LoadFormConfig({ loadDataForm, dataSourceList }) {
  5. const [datasourceType, setDatasourceType] = useState(null)
  6. const [datasources, setDatasources] = useState()
  7. const [tableList, setTableList] = useState([])
  8. // 获取数据源列表
  9. useEffect(() => {
  10. if (dataSourceList.length !== 0) {
  11. setDatasources(
  12. dataSourceList.map(item => {
  13. return {
  14. label: item.datasource_name,
  15. value: item.key,
  16. }
  17. })
  18. )
  19. }
  20. }, [dataSourceList])
  21. // 初始化表单类型
  22. useEffect(() => {
  23. if (loadDataForm.getFieldValue('datasource_name')) {
  24. const type = dataSourceList.find(
  25. item => item.key === loadDataForm.getFieldValue('datasource_name')
  26. ).datasource
  27. setDatasourceType(type)
  28. }
  29. }, [])
  30. // 选择数据源
  31. const selectDatasource = async val => {
  32. loadDataForm.setFieldValue('datasource_table', null)
  33. const type = dataSourceList.find(item => item.key === val).datasource
  34. setDatasourceType(type)
  35. console.log(val)
  36. const { data } = await getTableNamesList(val)
  37. if (data.code === 200) {
  38. const list = data.data.map(item => ({
  39. label: item,
  40. value: item,
  41. }))
  42. setTableList(list)
  43. } else {
  44. message.error('数据表加载失败')
  45. }
  46. }
  47. return (
  48. <>
  49. <p
  50. style={{
  51. fontWeight: 600,
  52. borderLeft: '3px solid #1881DA',
  53. paddingLeft: '12px',
  54. }}>
  55. 配置加载源源
  56. </p>
  57. <Form
  58. name="drawForm"
  59. form={loadDataForm}
  60. labelCol={{
  61. span: 2,
  62. }}
  63. wrapperCol={{
  64. span: 6,
  65. }}>
  66. <Form.Item
  67. label="选择数据源"
  68. name="datasource_name"
  69. rules={[
  70. {
  71. required: true,
  72. message: '请选择数据源!',
  73. },
  74. ]}>
  75. <Select
  76. options={datasources}
  77. onSelect={selectDatasource}
  78. allowClear
  79. />
  80. </Form.Item>
  81. <Form.Item
  82. label="选择表"
  83. name="datasource_table"
  84. rules={[
  85. {
  86. required: true,
  87. message: '请选择表',
  88. },
  89. ]}>
  90. <Select options={tableList} allowClear />
  91. </Form.Item>
  92. {datasourceType === 'mysql' ? (
  93. <>
  94. <Form.Item label="preSql" name="preSql" wrapperCol={{ span: 10 }}>
  95. <Input.TextArea rows={5} />
  96. </Form.Item>
  97. </>
  98. ) : (
  99. <>
  100. <Form.Item
  101. label="选择路径"
  102. name="dataRoute"
  103. wrapperCol={{ span: 10 }}
  104. rules={[
  105. {
  106. required: true,
  107. message: '请选择路径!',
  108. },
  109. ]}>
  110. <Input.TextArea rows={5} />
  111. </Form.Item>
  112. <Form.Item
  113. label="HDFS"
  114. name="datasource_hdfs"
  115. rules={[
  116. {
  117. required: true,
  118. message: '请输入HDFS',
  119. },
  120. ]}>
  121. <Input placeholder="hdfs namenode节点地址" />
  122. </Form.Item>
  123. <Form.Item
  124. label="文件类型"
  125. name="file_type"
  126. rules={[
  127. {
  128. required: true,
  129. message: '请选择文件类型',
  130. },
  131. ]}>
  132. <Select
  133. options={[
  134. { label: 'txt', value: 'txt' },
  135. { label: 'ocr', value: 'ocr' },
  136. ]}
  137. allowClear
  138. placeholder="文件的类型"
  139. />
  140. </Form.Item>
  141. <Form.Item label="分隔符" name="datasource_partition">
  142. <Input placeholder="读取字段的分隔符" />
  143. </Form.Item>
  144. </>
  145. )}
  146. </Form>
  147. </>
  148. )
  149. }