import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; import { Modal, Input, Form, Tabs, Avatar, Checkbox, Button, Select } from 'antd'; import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons'; const { TabPane } = Tabs; const { TextArea } = Input; const CheckboxGroup = Checkbox.Group; const ReleaseModal = ({ actions, dispatch, onConfirm, onCancel, editData = {} }) => { const { metadataManagement } = actions; const [activeKey, setActiveKeyl] = useState("field") const [fieldList, setFiedList] = useState([]) const [fieldData, setFiedData] = useState([]) const [database, setDatabase] = useState({}) const [fieldValue, setFiedValue] = useState([]) const [indeterminate, setIndeterminate] = useState(false) const [fromData, setFromData] = useState([{ value1: '', value2: '', value3: '' }]) const [sql, setSql] = useState() const [form] = Form.useForm(); useEffect(() => { dispatch(metadataManagement.listStructuredData({ id: editData?.id, parent: editData?.parent })).then(res => { if (res.success) { setFiedData(res.payload.data?.field || []) setFiedList(res.payload.data?.field?.map(v => v.code) || []) setDatabase(res.payload.data?.database || {}) } }) }, []); let operator = [{ value: '=', label: '=' }, { value: '!=', label: '!=' }, { value: '>', label: '>' }, { value: '<', label: '<' }, { value: '>=', label: '>=' }, { value: '<=', label: '<=' }, { value: 'BETWEEN', label: 'BETWEEN' }, { value: 'LIKE', label: 'LIKE' }, { value: 'IN', label: 'IN' }] return ( handleOk(null)} onCancel={onCancel} footer={null} >
{[{ name: '选择字段', key: "field" }, { name: '配置条件', key: "condition" }, { name: '预览SQL', key: "SQL" }, { name: '服务发布', key: "release" }].map((v, index) => { let title = [] if (index > 0) { title.push(
) } title.push(
{v.name}
) return title })}
{ setActiveKeyl(v) }} >
选择字段
{/*
*/} { setFiedValue(e.target.checked ? fieldList : []); setIndeterminate(e.target.checked); }}> 全选
字段:
{ setFiedValue(v) if (v?.length == fieldList?.length) { setIndeterminate(true) } else { setIndeterminate(false) } }} />
配置条件:
{fromData?.map((f, index) => { return
{ fromData?.splice(index, 1, { value1: f.value1, value2: v, value3: f.value3 }) setFromData([...fromData]) }} options={operator} allowClear /> { fromData?.splice(index, 1, { value1: f.value1, value2: f.value2, value3: v?.target?.value }) setFromData([...fromData]) }} allowClear /> {index == 0 ? { fromData?.splice(index, 0, { value1: '', value2: '', value3: '' }) setFromData([...fromData]) }} /> : { fromData?.splice(index, 1) setFromData([...fromData]) }} /> }
})}
预览SQL: