import React, { useState, useEffect } from 'react'; import { Form, Button, Modal, Input, Switch, Select } from 'antd'; import styles from './style.less'; import { message } from 'antd'; import { formLayout } from '@/components/FormHelper/utils'; import FormItemTitle from '@/components/FormHelper/FormItemTitle'; import { createModel, updateModel, getDimensionList } from '../service'; import { ISemantic } from '../data'; const FormItem = Form.Item; export type ModelCreateFormModalProps = { domainId: number; basicInfo: any; onCancel: () => void; onSubmit: (values: any) => void; }; const ModelCreateFormModal: React.FC = (props) => { const { basicInfo, domainId, onCancel, onSubmit } = props; const [formVals, setFormVals] = useState(basicInfo); const [saveLoading, setSaveLoading] = useState(false); const [form] = Form.useForm(); const [dimensionOptions, setDimensionOptions] = useState<{ label: string; value: number }[]>([]); useEffect(() => { if (basicInfo?.id) { queryDimensionList(); } }, []); const queryDimensionList = async () => { const { code, data, msg } = await getDimensionList({ modelId: basicInfo.id }); if (code === 200 && Array.isArray(data?.list)) { setDimensionOptions( data.list.map((item: ISemantic.IDimensionItem) => { return { label: item.name, value: item.id, }; }), ); } else { message.error(msg); } }; useEffect(() => { form.setFieldsValue({ ...basicInfo, alias: basicInfo?.alias && basicInfo.alias.trim() ? basicInfo.alias.split(',') : [], drillDownDimensionsIds: Array.isArray(basicInfo?.drillDownDimensions) ? basicInfo.drillDownDimensions.map( (item: ISemantic.IDrillDownDimensionItem) => item.dimensionId, ) : [], }); }, [basicInfo]); const handleConfirm = async () => { const fieldsValue = await form.validateFields(); const columnsValue = { ...fieldsValue, isUnique: 1, domainId }; const submitData: ISemantic.IModelItem = { ...formVals, ...columnsValue, alias: Array.isArray(fieldsValue.alias) ? fieldsValue.alias.join(',') : '', drillDownDimensions: Array.isArray(fieldsValue.drillDownDimensionsIds) ? fieldsValue.drillDownDimensionsIds.map((id: number) => { return { dimensionId: id, }; }) : [], }; setFormVals(submitData); setSaveLoading(true); const { code, msg } = await (!submitData.id ? createModel : updateModel)(submitData); setSaveLoading(false); if (code === 200) { onSubmit?.(submitData); } else { message.error(msg); } }; const footer = ( <> ); return (
); }; export default ModelCreateFormModal;