import React, { createElement, memo, useRef, useState } from 'react';
import {
ProForm,
ProFormDependency,
ProFormSelect,
ProFormText,
ProFormGroup,
ProFormList,
ProCard,
} from '@ant-design/pro-components';
import moment, { defaultFormat } from 'moment';
import { doFetch } from '@/utils/doFetch';
import styles from './index.less';
import FormItems from './FormItems';
import ExtendField from '@/components/ExtendField';
import { Input, Col } from 'antd';
import { useDebounceFn } from 'ahooks';
import ColumnsTrans from './ColumnsTrans';
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 (item?.valueType == 'nosubmit') {
return (
);
}
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,
colProps: colProps,
key: item.dataIndex,
formRef: proformRef,
})}
>
);
}
})}
>
);
});
function InitForm(props) {
let {
formRef,
onFinish = (vals) => {
//console.log(vals);
},
formKey,
params = {},
detailpath = '',
defaultFormValue = {},
detailFormat,
submitter,
fields,
extendField = '',
colProps = { xs: 24, sm: 24, md: 12, lg: 12, xl: 12, xxl: 12 },
onValuesChange = (changedValues, allValues) => {
//console.log(changedValues, allValues);
},
val,
style = {},
} = props;
const { run } = useDebounceFn(onFinish, { wait: 400 });
let proformRef = useRef();
proformRef = formRef ?? proformRef;
return fields?.length == 0 ? (
) : (
{
if (detailpath && val != 'add') {
let res = await doFetch({ url: detailpath, params });
if (extendField) {
let obj = {};
res?.data?.data[extendField]?.forEach?.((it) => {
obj[it?.fieldId] = it?.fieldRealValue;
});
// console.log({
// ...obj,
// ...defaultFormValue,
// ...(res?.data?.data ?? {}),
// });
return {
...obj,
...defaultFormValue,
...(res?.data?.data ?? {}),
...relationSupplierList,
};
}
//反填参数 格式化
const relationSupplierList = res?.data?.data?.relationSupplierList
? {
relationSupplierList: res?.data?.data?.relationSupplierList?.map?.((it, i) => {
return {
...it,
id: it?.supplierId,
};
}),
}
: {};
const supplierList = res?.data?.data?.supplierList
? {
supplierList: res?.data?.data?.supplierList?.map?.((it, i) => {
return {
...it,
id: it?.supplierId,
};
}),
}
: {};
let result = res?.data?.data;
if (result?.nrList) {
result.nrList = result?.nrList?.map((it) => {
it.sort = it.sort - 1;
return it;
});
}
return {
...defaultFormValue,
...(result ?? {}),
...relationSupplierList,
...supplierList,
};
} else {
// console.log({
// ...defaultFormValue,
// });
return {
...defaultFormValue,
};
}
}}
autoFocusFirstInput
onValuesChange={(changedValues, allValues) => {
onValuesChange?.(changedValues, allValues);
}}
>
it.valueType != 'option')}
colProps={colProps}
proformRef={proformRef}
/>
);
}
export default InitForm;