import React, { useState, useMemo, useRef, useEffect } from 'react'; import DrawerPro from '@/components/DrawerPro'; import AutoTable from '@/components/AutoTable'; import PremButton from '@/components/PremButton'; import getcolumns from './columns'; import { doFetch, exportFetch } from '@/utils/doFetch'; import { useRequest } from 'ahooks'; import { Divider, Tabs, ProDescriptions, message } from 'antd'; import dayjs from 'dayjs'; import Leaseterminformation from './Leaseterminformation'; import { useLocation } from '@umijs/max'; const Costanalysis = () => { const { pathname, state } = useLocation(); let actionRef = useRef(), formRef = useRef(), boxRef = useRef(); const [drawer, setdrawer] = useState({ open: false, }), [extraparams, setextraparams] = useState({}), [activeKey, catk] = useState(''), [searchParams, csearch] = useState({}); const { run, loading, runAsync } = useRequest(doFetch, { manual: true, onSuccess: (res, params) => { if (res?.code == '0000') { actionRef?.current?.reload(); setdrawer((s) => ({ ...s, open: false, })); } }, }); const columns = useMemo(() => { csearch({}); let defcolumn = getcolumns(setdrawer, activeKey)?.filter((it) => it.key == activeKey)?.[0]?.columns ?? []; return defcolumn.concat({ title: '操作', valueType: 'option', width: activeKey == 'item-1' ? 260 : 100, render: (text, row, _, action) => rightExtra(text, row, _, action), }); }, [activeKey]); const tabList = useMemo(() => { return getcolumns(); }, [activeKey]); const rightExtra = (text, row, _, action) => { return [ activeKey == 'item-1' && ( { let res = await doFetch({ url: '/lease/umContractEquipment/queryBeforeCollection', params: { id: row.id }, }); if (res?.data?.data?.waitNum == 0) { message.warning('该设备需回款的租期已全部回款,无需再次回款!'); } else { setdrawer((s) => ({ ...s, open: true, item: { ...row, waitNum: res?.data?.data?.waitNum, isColl: res?.data?.data?.isColl, }, val: 'confirm', title: '回款确认', fields: [ { title: '本期是否回款', dataIndex: 'isColl', key: 'isColl', fieldProps: { disabled: true, }, colProps: { span: 8 }, }, { title: '剩余回款期数', dataIndex: 'waitNum', key: 'waitNum', fieldProps: { disabled: true, }, valueType: 'digit', colProps: { span: 8 }, }, { title: '本次回款期数', dataIndex: 'collNum', key: 'collNum', valueType: 'digit', colProps: { span: 8 }, precision: 0, formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, }, { title: '回款形式', dataIndex: 'collType', key: 'collType', valueType: 'select', options: [ { label: '现金', value: 1 }, { label: '银行承兑', value: 2 }, ], colProps: { span: 8 }, formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, }, ], })); } }, }} > 回款确认 ), activeKey == 'item-1' && ( { setdrawer((s) => ({ ...s, open: true, item: { ...row, reducePrice: null }, val: 'reduction', title: '租金减免', fields: [ { title: '当前减免金额', dataIndex: 'reducePrice', key: 'reducePrice', valueType: 'digit', colProps: { span: 8 }, precision: 0, formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, }, { title: '减免情况说明', dataIndex: 'reduceRemark', key: 'reduceRemark', valueType: 'textarea', colProps: { span: 24 }, }, { title: '附件上传', dataIndex: 'reduceFileList', key: 'reduceFileList', valueType: 'uploadBtn', fieldProps: { limit: 1, }, colProps: { span: 24 }, }, ], })); }, }} > 租金减免 ), { let res = await doFetch({ url: '/lease/umContractEquipment/queryBeforeInvoicing', params: { id: row.id }, }); if (res?.data?.data?.openNum == 0) { message.warning('该设备已无需要开票的租期,无需开票记录!'); } else { setdrawer((s) => ({ ...s, open: true, item: { ...row, openNum: null }, val: 'invoicing', title: '开票记录', fields: [ { title: '开票期数', dataIndex: 'openNum', key: 'openNum', valueType: 'digit', colProps: { span: 8 }, precision: 0, formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, }, ], })); } }, }} > 开票记录 , ]; }; useEffect(() => { if (state) { setdrawer((s) => ({ ...s, open: false, })); catk(state.pageStatus == 1 ? 'item-1' : 'item-2'); setextraparams(state.extraparams); } else { catk('item-1'); setextraparams({}); } }, [state]); return (
租赁营收} columns={columns} extraparams={extraparams} path={ activeKey == 'item-1' ? '/lease/umContractEquipment/queryNoAnalysis' : '/lease/umContractEquipment/queryYesAnalysis' } actionRef={actionRef} resizeable={false} bordered={false} x={3200} onTabChange={(key) => { catk(key); setextraparams({}); }} activeTabKey={activeKey} tabList={tabList} pageextra={'export'} formRef={formRef} dataSourceFieldsChange={(vals) => { csearch(vals); }} exportconfig={{ btn: { type: 'primary', onClick: async () => { message.warning('导出中,请稍后'); await exportFetch({ url: activeKey == 'item-1' ? '/lease/umContractEquipment/exportExcelNoAnalysis' : '/lease/umContractEquipment/exportExcelYesAnalysis', params: { ...extraparams, ...searchParams }, }); }, }, }} options={{ reload: () => { setextraparams({}); } }} /> { setdrawer((s) => ({ ...s, open: false, })); }} onValuesChange={(changedValues, allValues) => { }} onFinish={async (vals) => { let newVals = JSON.parse(JSON.stringify(vals)); if (drawer?.val == 'confirm') { await runAsync({ url: '/lease/umContractEquipment/collection', params: { collNum: newVals.collNum, collType: newVals.collType, id: drawer?.item?.id, }, }); } else if (drawer?.val == 'reduction') { await runAsync({ url: '/lease/umContractEquipment/exemption', params: { ...newVals, id: drawer?.item?.id }, }); } else if (drawer?.val == 'invoicing') { await runAsync({ url: '/lease/umContractEquipment/invoicing', params: { ...newVals, id: drawer?.item?.id }, }); } }} >
); }; export default Costanalysis;