import { BizContainer, BizValueType, DealerPaymentAccountList, DealerSelect, ModeType, ProFormUploadMaterial, ReconciliationSelect, } from '@/components'; import { business } from '@/services'; import { formatCurrency } from '@/utils/format'; import { useIntl } from '@@/exports'; import { ProColumns, ProFormDatePicker, ProFormDependency, ProFormMoney, ProFormSelect, } from '@ant-design/pro-components'; import { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; import dayjs from 'dayjs'; import React from 'react'; interface IReconciliationInvoiceListProps { ghost?: boolean; reconciliationId?: BusinessAPI.ReconciliationInvoiceVO['reconciliationId']; dealerId?: BusinessAPI.ReconciliationInvoiceVO['dealerId']; search?: boolean; onValueChange?: () => void; mode?: ModeType; trigger?: () => React.ReactNode; } export default function ReconciliationInvoiceList( props: IReconciliationInvoiceListProps, ) { const { ghost = false, reconciliationId, dealerId, search = true, mode = 'page', trigger, onValueChange, } = props; const intl = useIntl(); const intlPrefix = 'reconciliationInvoice'; // 定义表格列 const columns: ProColumns< BusinessAPI.ReconciliationInvoiceVO, BizValueType >[] = [ { title: intl.formatMessage({ id: intlPrefix + '.column.invoiceSn' }), dataIndex: 'invoiceSn', key: 'invoiceSn', }, { title: intl.formatMessage({ id: intlPrefix + '.column.dealer' }), dataIndex: 'dealerVO', key: 'dealerId', valueType: 'dealer', hidden: !!dealerId, }, { title: intl.formatMessage({ id: intlPrefix + '.column.account' }), dataIndex: 'dealerPaymentAccountVO', key: 'accountId', render: (_, record) => { const { dealerPaymentAccountVO } = record; return ( dealerPaymentAccountVO && ( { return {dealerPaymentAccountVO.companyName}; }} /> ) ); }, }, { title: intl.formatMessage({ id: intlPrefix + '.column.company' }), dataIndex: 'companyVO', key: 'companyId', valueType: 'company', }, { title: intl.formatMessage({ id: intlPrefix + '.column.invoiceAmount' }), dataIndex: 'invoiceAmount', key: 'invoiceAmount', valueType: 'money', search: false, render: (_, record) => ( ¥{formatCurrency(record.invoiceAmount)} ), }, { title: intl.formatMessage({ id: intlPrefix + '.column.invoiceDate' }), dataIndex: 'invoiceDate', key: 'invoiceDate', valueType: 'dateRange', render: (_, record) => ( {record.invoiceDate && dayjs(record.invoiceDate).format('YYYY-MM-DD')} ), }, ]; const formContext = [ , {({ dealerId }, form) => { return ( dealerId && ( <> { const reconciliation = reconciliationVOList[0]; form.setFieldsValue({ pendingAmount: reconciliation?.reconciliationAmount, }); }} /> { const { data } = await business.dealerPaymentAccount.listDealerPaymentAccount( { dealerPaymentAccountListQry: { ...params, }, }, ); return ( data?.map((item) => ({ label: item.companyName, value: item.accountId, })) || [] ); }} /> ) ); }} , , {({ pendingAmount }) => ( )} , { const { data } = await business.company.listCompany({ companyListQry: { ...params, }, }); return ( data?.map((item) => ({ label: item.fullName, value: item.companyId, })) || [] ); }} />, , { console.log('fileList', fileList); return { invoiceImgList: fileList, invoiceImg: fileList.map((item: BusinessAPI.MaterialVO) => { // const itemInfo = await getImageInfo(item.url); return { /** 文件名 */ fileName: item.name, /** 文件路径 */ filePath: item.url, /** 文件类型 */ fileType: item.url.split('.').pop(), /** 文件大小 */ fileSize: 0, }; }), }; }} name={'invoiceFile'} fieldProps={{ maxCount: 9, }} />, ]; const detailColumns: ProDescriptionsItemProps< BusinessAPI.ReconciliationInvoiceVO, BizValueType >[] = columns as ProDescriptionsItemProps< BusinessAPI.ReconciliationInvoiceVO, BizValueType >[]; return ( rowKey={'reconciliationInvoiceId'} permission={'operation-reconciliation-invoice'} func={business.reconciliationInvoice} method={'reconciliationInvoice'} methodUpper={'ReconciliationInvoice'} intlPrefix={intlPrefix} modeType={mode} onValueChange={onValueChange} container={{ ghost }} remark={{ mode: 'editor' }} status={false} page={{ fieldProps: { bordered: true, ghost, //@ts-ignore search, //@ts-ignore params: { ...(reconciliationId && { reconciliationId }), ...(dealerId && { dealerId }), }, }, columns, options: () => [], }} create={{ formType: 'drawer', formContext, trigger, }} update={false} destroy={false} detail={{ rowId: reconciliationId, formType: 'drawer', columns: detailColumns, trigger, }} /> ); }