import { useEffect } from 'react'; import { Form, Input, Row, Col, Select, DatePicker, Space, Button, Checkbox } from 'antd'; import { objectMapper, at } from '@/utils/commons'; import { DATE_FORMAT, SMALL_DATETIME_FORMAT } from '@/config'; import useFormStore from '@/stores/Form'; import { useDatePresets } from '@/hooks/useDatePresets'; import { useProductsTypes } from '@/hooks/useProductsSets'; import { useTranslation } from 'react-i18next'; import { fetchJSON } from '@/utils/request'; import { HT_HOST } from '@/config'; import SearchInput from './SearchInput'; import AuditStateSelector from './AuditStateSelector'; import DeptSelector from './DeptSelector'; //供应商列表 export const fetchVendorList = async (q) => { const { errcode, result } = await fetchJSON(`${HT_HOST}/Service_BaseInfoWeb/VendorList`, { q }) return errcode !== 0 ? [] : result } const { RangePicker } = DatePicker; export const SelectProductsTypes = ({...props}) => { const productsTypes = useProductsTypes(); const { t } = useTranslation(); return ( <> > ); }; const SearchForm = ({ initialValue, onSubmit, onReset, confirmText, formName, formLayout, loading, ...props }) => { const { t } = useTranslation(); const presets = useDatePresets(); const [formValues, setFormValues] = useFormStore((state) => [state.formValues, state.setFormValues]); const [formValuesToSub, setFormValuesToSub] = useFormStore((state) => [state.formValuesToSub, state.setFormValuesToSub]); const [form] = Form.useForm(); const { sort, hides, shows, fieldProps, fieldComProps } = { sort: '', // initialValue: '', fieldProps: '', fieldComProps: '', hides: [], shows: [], ...props.fieldsConfig, }; const readValues = { ...initialValue, ...formValues }; const formValuesMapper = (values) => { const destinationObject = { 'keyword': { key: 'keyword', transform: (value) => value || '' }, 'referenceNo': { key: 'referenceNo', transform: (value) => value || '' }, 'dates': [ { key: 'startdate', transform: (arrVal) => (arrVal ? arrVal[0].format(DATE_FORMAT) : '') }, { key: 'enddate', transform: (arrVal) => (arrVal ? arrVal[1].format(DATE_FORMAT) : '') }, { key: 'starttime', transform: (arrVal) => (arrVal ? arrVal[0].format(DATE_FORMAT) : '') }, { key: 'endtime', transform: (arrVal) => (arrVal ? arrVal[1].format(SMALL_DATETIME_FORMAT) : '') }, ], 'invoiceStatus': { key: 'invoiceStatus', transform: (value) => value?.value || value?.key || '', default: '' }, 'audit_state': { key: 'audit_state', transform: (value) => value?.value || value?.key || '', default: '' }, 'agency': { key: 'agency', transform: (value) => { return Array.isArray(value) ? value.map((ele) => ele.key).join(',') : value ? value.value : ''; }, }, 'year': [ { key: 'year', transform: (arrVal) => (arrVal ? arrVal.format('YYYY') : '') }, ], 'products_types': { key: 'products_types', transform: (value) => { return Array.isArray(value) ? value.map((ele) => ele.key).join(',') : value ? value.value : ''; }, }, 'dept': { key: 'dept', transform: (value) => { console.log(value); return Array.isArray(value) ? value.map((ele) => ele.key).join(',') : value ? value.value : ''; }, }, }; let dest = {}; const { dates, ...omittedValue } = values; dest = { ...omittedValue, ...objectMapper(values, destinationObject) }; for (const key in dest) { if (Object.prototype.hasOwnProperty.call(dest, key)) { dest[key] = typeof dest[key] === 'string' ? (dest[key] || '').trim() : dest[key]; } } // omit empty // Object.keys(dest).forEach((key) => (dest[key] == null || dest[key] === '' || dest[key].length === 0) && delete dest[key]); return dest; }; useEffect(() => { const dest = formValuesMapper(formValues); setFormValuesToSub(dest); return () => {}; }, []); const onFinish = (values) => { console.log('Received values of form, origin form value: \n', values); const dest = formValuesMapper(values); console.log('form value send to onSubmit:\n', dest); const str = new URLSearchParams(dest).toString(); setFormValues(values); setFormValuesToSub(dest); if (typeof onSubmit === 'function') { onSubmit(null, dest, values, str); } }; const handleReset = () => { form.setFieldsValue({ // 'DateType': undefined, }); if (typeof onReset === 'function') { onReset(); } }; const onValuesChange = (changedValues, allValues) => { const dest = formValuesMapper(allValues); setFormValues(allValues); setFormValuesToSub(dest); // console.log('form onValuesChange', Object.keys(changedValues), args); }; const onFinishFailed = ({ values, errorFields }) => { console.log('form validate failed', '\nform values:', values, '\nerrorFields', errorFields); }; return ( <>
> ); }; function getFields(props) { const { fieldProps, fieldComProps, form, presets, t } = props; const bigCol = 4 * 2; const midCol = 6; const layoutProps = { // gutter: { xs: 8, sm: 8, lg: 16 }, lg: { span: 4 }, md: { span: 8 }, sm: { span: 12 }, xs: { span: 24 }, }; const item = (name, sort = 0, render, col) => { const customCol = col || 4; const mdCol = customCol * 2; return { 'key': '', sort, name, render, 'hide': false, 'col': { lg: { span: customCol }, md: { span: mdCol < 8 ? 10 : mdCol }, flex: mdCol < 8 ? '1 0' : '' }, }; }; let baseChildren = []; baseChildren = [ item( 'keyword', 99,