import React from 'react'; import { Descriptions, Input, Form } from 'kts-components-antd-x3'; import { FormComponentProps } from 'kts-components-antd-x3/lib/form'; import { decorator } from 'grey-react-box'; import Invoice from '../../..'; import { IFormItem } from '../../../InvoiceController/InvoiceControllerState/BuyerState'; import './index.less'; const { TextArea } = Input; export interface ISellerProps { /** 默认备注 */ defaultsellerRemarks?: string; /** 表单项配置 */ formItem?: IFormItem[]; /** 表单渲染方法 */ formRender?: Map React.ReactNode>; } export default class Buyer extends React.Component { render = () =>
; } const Main = decorator(Form.create())((props) => { const { form } = props; const { getFieldDecorator } = form; /** 控制器 */ const controller = Invoice.useInvoiceController(); /** 控制器 */ const model = controller.useMemo(s => s.model, []); /** 注册 form 对象 */ controller.useForm('seller', form); /** 表单项配置 */ const formItem = React.useMemo(() => { if (props.formItem) { return props.formItem; } else { return [ { id: 'sellerName', label: '销售方名称', node: , options: { rules: [{ required: true, message: '不能为空' }] } }, { id: 'sellerNo', label: '销售方纳税人识别号', node: , options: { rules: [{ required: true, message: '不能为空' }] } }, { id: 'sellerAddress', label: '销售方地址及电话', node: , options: { rules: [{ required: true, message: '不能为空' }] } }, { id: 'sellerBank', label: '销售方开户行及账号', node: , options: { rules: [{ required: true, message: '不能为空' }] } }, ] } }, [props.formItem, model]) /** 创建表单 */ const createFormItem = React.useCallback((e: IFormItem) => { const render = props.formRender?.get(e.id); if (render) { return getFieldDecorator(e.id, e.options)(render(e)); } else { return getFieldDecorator(e.id, e.options)(e.node); } }, [props.formRender]) return (
{formItem.map((e, i) => ( {createFormItem(e)} ))}
{getFieldDecorator('remarks', { initialValue: props.defaultsellerRemarks, })(