import { doFetch } from "@/utils/doFetch"; import { ProForm, ProFormDependency } from "@ant-design/pro-components"; import { Button } from "@mui/material"; import { createElement, memo, useRef } from "react"; import FormItems from "./FormItems"; import "./index.less"; function upperCase(str) { const newStr = str.slice(0, 1).toUpperCase() + str.slice(1); return newStr; } let FormRender = memo(({ fields = [], colProps, proformRef }) => { return ( <> {fields .filter((it) => it.hideInForm !== true) .map((item, index) => { let key = item?.valueType ? upperCase(item?.valueType) : "Input"; let { hideInForm } = item; item.formItemProps = item.formItemProps ?? { rules: [] }; if (item.valueType == "split") { return (
{item.title}
); } if (hideInForm && Object.keys(hideInForm)) { return ( {(params) => { let ifs = true; let res = Object.keys(hideInForm).map((its) => { if (Array.isArray(hideInForm[its])) { return !hideInForm[its].includes(params[its]); } else { let vals = hideInForm[its].reverse; //取反 即不存在当前数组中的 return vals.indexOf(params[its]) != -1; } }); ifs = res.includes(false); if (ifs) { return; } else { return ( <> {createElement(FormItems[key], { item: item, colProps: colProps, key: item.dataIndex, formRef: proformRef, })} ); } }} ); } else { return ( <> {createElement(FormItems[key], { item: { ...item, fieldProps: { ...item.fieldProps, size: "large", }, }, colProps: colProps, key: item.dataIndex, formRef: proformRef, })} ); } })} ); }); function InitForm({ formRef, onFinish = (vals, extra) => { //console.log(vals, extra); }, formKey, params = {}, style = {}, detailpath = "", defaultFormValue = {}, submitter, fields, colProps = { xs: 24, sm: 24, md: 12, lg: 12, xl: 12, xxl: 12 }, onValuesChange = (changedValues, allValues) => { //console.log(changedValues, allValues); }, disabled }) { let proformRef = useRef(); proformRef = formRef ?? proformRef; return ( { return [ , , ]; }, } } grid={true} rowProps={{ gutter: 12, }} request={async (params) => { if (detailpath) { let res = await doFetch({ url: detailpath, params }); return { ...defaultFormValue, ...(res?.data?.data ?? {}), }; } else { return { ...defaultFormValue, }; } }} autoFocusFirstInput onValuesChange={(changedValues, allValues) => { onValuesChange?.(changedValues, allValues,proformRef); }} > it.valueType != "option")} colProps={colProps} proformRef={proformRef} /> ); } export default InitForm;