import React, { useState, useEffect } from 'react' import { Form, Select, Input, message } from 'antd' import { getTableNamesList, getAilabList, getLakeTable } from '../services' export default function StepOne({ drawDataForm, dataSourceList, updateTableStruct, updateDrawAilabStruct, updateDrawLakeStruct, }) { const [datasourceType, setDatasourceType] = useState(null) const [datasources, setDatasources] = useState() const [tableList, setTableList] = useState([]) const [dsType, setDsType] = useState(null) // 获取数据源列表 useEffect(() => { if (dataSourceList.length !== 0) { setDatasources( dataSourceList.map(item => { return { label: item.datasource_name, value: item.key, } }) ) } }, [dataSourceList]) // 初始化表单类型 useEffect(() => { const ds_id = drawDataForm.getFieldValue('datasource_name') const table_name = drawDataForm.getFieldValue('datasource_table') setDsType(drawDataForm.getFieldValue('datasource_type')) if (ds_id) { const type = dataSourceList.find(item => item.key === ds_id).datasource setDatasourceType(type) selectDatasource(ds_id) drawDataForm.setFieldValue('datasource_table', table_name) } }, []) // 选择数据源 const selectDatasource = async val => { drawDataForm.setFieldValue('datasource_table', null) const type = dataSourceList.find(item => item.key === val)?.datasource setDatasourceType(type) const { data } = await getTableNamesList(val) if (data.code === 200) { const list = data.data.map(item => ({ label: item, value: item, })) setTableList(list) } else { message.error('数据表加载失败') } } const selectAilab = async () => { const { data } = await getAilabList() if (data.code === 200) { const list = data.data.map((item, index) => { return { key: index, label: item, value: item, } }) setTableList(list) } else { message.error(data.msg) } } const selectLake = async () => { const { data } = await getLakeTable() if (data.code === 200) { const list = data.data.map((item, index) => { return { key: index, label: item.table_name, value: item.table_name, table_path: item.table_path, } }) setTableList(list) } else { message.error(data.msg) } } // 选择表 const selectTable = val => { const currentTable = drawDataForm.getFieldValue('datasource_table') switch (dsType) { case 'datasource': const ds_id = drawDataForm.getFieldValue('datasource_name') updateTableStruct(ds_id, val) break case 'datalake': updateDrawLakeStruct(currentTable) drawDataForm.setFieldValue( 'reader_path', tableList.find(item => (item.value = currentTable)?.table_path) ) break default: updateDrawAilabStruct(currentTable) break } } const selectDsType = val => { setDsType(val) switch (val) { case 'datasource': selectDatasource(drawDataForm.getFieldValue('datasource_name')) break case 'datalake': setDatasourceType('hive') selectLake() break default: setDatasourceType('hive') selectAilab() break } } return ( <>

配置提取源

)} ) : ( <> )}
) }