import { connect } from "umi"; import type { ConnectState } from "@/models/connect"; import type { ActionType } from "@ant-design/pro-table"; import ProTable from "@ant-design/pro-table"; import { useEffect, useImperativeHandle, useRef, useState } from "react"; import type { FormInstance } from "antd"; import { Col, Popconfirm, Row, Space, Typography } from "antd"; import { Button, Drawer, message, Modal, Spin, Tooltip, Image } from "antd"; import moment from 'moment' import { handleGetGetBUSINESSAPPROVALDetail, handleGetProjectPeriodAccount, handleGetTableMonthlyReconciliation } from "../../ShopExpenseDetail/service"; import { handleNewPrint, handlePrintImg, wrapTreeNode } from "@/utils/format"; import numeral from 'numeral' import ReactHTMLTableToExcel from "react-html-table-to-excel"; import MonthSettlement from "../../revenueConfirmation/components/monthSettlement"; import RevenueList from "@/pages/BussinessProject/components/RevenueList"; import { formatNumber, formatToTwoDecimalPlaces, getMoney, handleFormatNumber } from "@/services/options"; import './YearExamineDetailTable.less' import ProForm, { ProFormDateRangePicker, ProFormDigit, ProFormList, ProFormUploadButton } from "@ant-design/pro-form"; import { handleGetPictureList, handleRebuildClosedPeriod, handleRebuildReductionPeriod } from "../service"; import { ExclamationCircleOutlined, MinusCircleOutlined, PlusOutlined } from "@ant-design/icons"; import { deletePicture, uploadPicture } from "@/services/picture"; import PrintContent from "./printContent"; import { handleHighPrecision } from "@/utils/utils"; import HistoricalProjects from "./HistoricalProjects"; import { getProjectDetail } from "@/pages/BussinessProject/service"; const { confirm } = Modal; type DetailProps = { parentRow: any currentApprovalstate: any onRef: any setIsShowMonthBtn?: any// 是否显示月度结算按钮 setIsYearAllowSettlement?: any // 是否可以进行年度结算 handleShowSettlementDetail?: any // 点击小计显示的抽屉 currentUser?: any isChangeFile?: any // 是否可以删除上传的附件 isYear?: any // 判断是不是年度传参进来 } const YearExamineDetailTable = ({ parentRow, currentApprovalstate, onRef, setIsShowMonthBtn, setIsYearAllowSettlement, handleShowSettlementDetail, currentUser, isChangeFile, isYear }: DetailProps) => { const actionRef = useRef(); const tableRef = useRef(null); const formRef = useRef(); const uploadFormDescRef = useRef(); // 租金减免的表单 const rentReductionFormRef = useRef(); const downloadBtnRef = useRef() const downloadBtnRef1 = useRef() const MonthSettlementRef = useRef() let exportType: number = 0 const [showExportTable, setShowExportTable] = useState(false) // 表格加载效果 const [tableLoading, setTableLoading] = useState(false) // 表格数据 const [reqDetailListDetail, setReqDetailListDetail] = useState() // 导出的合计行数据 const [exportSumRow, setExportSumRow] = useState() // 表格的整个数据 const [tableAllData, setTableAllData] = useState() // 导出的合计对象 const [exportData2Obj, setExportData2Obj] = useState() // 导出的数据 const [exportData2, setExportData2] = useState() // 明细表的打印数据 const [printDetailData, setPrintDetailData] = useState() // 导出的数据 const [exportData, setExportData] = useState() // 格式化之后导出的数据 const formatExportData = useRef() // 行号的选择 const [selectRowKey, setSelectRowKey] = useState() const [selectDetailList, setSelectDetailList] = useState() // 默认选中行 const [defaultSelectRow, setDefaultSelectRow] = useState() // 表格的隐藏字段 const [columnsStateMap, setColumnsStateMap] = useState({ BreachPenalty: { show: false }, // OtherFee: { show: false }, PaidFee_9010: { show: false }, PaidFee_9020: { show: false }, PaidFee_9030: { show: false }, PaidFee_9050: { show: false }, PaidFee_9090: { show: false }, PaidFee_9099: { show: false }, }) // 应缴费用明细表抽屉 const [payableDrawer, setPayableDrawer] = useState(false) const [otherData, setOtherData] = useState();// 显示表格上方内容 // 点击日期 显示的抽屉 const [showDetail, setShowDetail] = useState(false) // 点击的行详情数据 const [currentDetailRow, setCurrentDetailRow] = useState() // 签名数据 const [signature, setSignatureObj] = useState() // 进度流畅的详情信息 const [progressDetail, setProgressDetail] = useState() // 流程进度的当前状态 const [progressState, setProgressState] = useState(0) // 预览图片 const [imagePreviewVisible, setImagePreviewVisible] = useState(false) // 预览的索引 const [previewIndex, setPreviewIndex] = useState(0) // 上传附件的悬浮框 const [showUpLoadFile, setShowUpLoadFile] = useState(false) // 附件 const [fileList, setFileList] = useState() // 预览的附件 const [showImgList, setShowImgList] = useState() // 拿到当次请求的表格数据 如果有撤场结算的话 需要把这个list 给撤场结算的接口 const [closeReqTableData, setCloseReqTableData] = useState() // 存一个马上能拿到值的 const closeReqTableDataRef = useRef() // 撤场结算按钮点击之后返回的数据 // const [afterCloseData, setAfterCloseData] = useState() const afterCloseData = useRef() // 撤场结算按钮是否显示的判断 // const [isShowClosebtn, setIsShowClosebtn] = useState(false) const isShowClosebtn = useRef(false) // 判断是不是第一次进入到页面 // const [isFirst, setIsFirst] = useState(true) const isFirst = useRef(true) // 判断是否显示撤场结算按钮 如果是撤场的询问框 点击了确定 就不显示 点击了取消就显示 const [showCloseBtn, setShowCloseBtn] = useState(false) // 判断是否在进行打印 const [isPrinting, setIsPrinting] = useState(false) // 拿到导出结算明细表的数据 const [exportDetailTableData, setExportDetailTableData] = useState() // 打印结算明细表的数据 无合计 const [printDetailTableData, setPrintDetailTableData] = useState() // 显示租金减免的悬浮框 const [showRentReduction, setShowRentReduction] = useState(false) // 悬浮框的加载效果 const [rentReductionLoading, setRentReductionLoading] = useState(false) // 项目详情 const [dataProjectDetail, setDataProjectDetail] = useState() const columns: any = [ { title:
期限
, dataIndex: 'PeriodDesc', align: 'left', width: 250, fixed: 'left', hideInSearch: true, render: (_, record) => { return record?.PeriodDesc === '合计' ? 合计 : record?.level === 1 ? {`${record?.PeriodDesc}`} : <> { console.log('record', record); console.log('parentRow', parentRow); setCurrentDetailRow(record) setShowDetail(true) }}> {`${record?.StartDate}-${record?.EndDate}`} { record?.EarlySettlement ? 【提前结算】 : '' } } }, { title:
结算状态
, dataIndex: 'IsApplySuccess', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { return record?.PeriodDesc === '合计' ? '' : record?.level === 1 ? currentApprovalstate === 0 ? {'待结算'} : currentApprovalstate === 1 ? {'审批中'} : currentApprovalstate === 9 ? {'已结算'} : '' : record?.IsApplySuccess ? {"已结算"} : record?.BusinessApprovalId ? 结算中 : 待结算 } // render: (_, record) => { // return record?.PeriodDesc === '合计' ? '' : record?.level === 1 ? // currentApprovalstate === 0 ? {'待结算'} : // currentApprovalstate === 1 ? {'审批中'} : // currentApprovalstate === 9 ? {'已结算'} : '' // : record?.IsApplySuccess ? // // 子级跳进去 // { // console.log('currentRow', currentRow); // console.log('record', record); // setShowStateCurrentRow({ // ...currentRow, // startTime: record?.StartDate ? moment(record?.StartDate).format('YYYY-MM-DD') : '', // endTime: record?.EndDate ? moment(record?.EndDate).format('YYYY-MM-DD') : '', // ShopRoyaltyId: record?.ShopRoyalty_Id, // // BUSINESSPROJECT_ID: currentRow?.BUSINESSPROJECT_ID, // Id: currentRow?.SERVERPARTSHOP_ID, // SERVERPART_ID: currentRow?.SERVERPART_ID, // BUSINESSAPPROVAL_ID: record?.BusinessApprovalId, // STATISTICS_MONTH: record?.EndDate ? moment(record?.EndDate).format('YYYYMM') : '', // Approvalstate: record?.IsApplySuccess ? 9 : record?.BusinessApprovalId ? 1 : 0 // }) // setShowStateDrawer(true) // }}>{'已结算'} // : // record?.BusinessApprovalId ? // { // console.log('结算中', record); // setShowStateCurrentRow({ // ...currentRow, // startTime: record?.StartDate ? moment(record?.StartDate).format('YYYY-MM-DD') : '', // endTime: record?.EndDate ? moment(record?.EndDate).format('YYYY-MM-DD') : '', // ShopRoyaltyId: record?.ShopRoyalty_Id, // // BUSINESSPROJECT_ID: currentRow?.BUSINESSPROJECT_ID, // Id: currentRow?.SERVERPARTSHOP_ID, // SERVERPART_ID: currentRow?.SERVERPART_ID, // BusinessApprovalId: record?.BusinessApprovalId, // BUSINESSAPPROVAL_ID: record?.BusinessApprovalId, // STATISTICS_MONTH: record?.EndDate ? moment(record?.EndDate).format('YYYYMM') : '', // Approvalstate: 1, // PEND_STATE: -1 // }) // setShowStateDrawer(true) // }}>结算中 : // { // console.log('currentRow', currentRow); // console.log('record', record); // setShowStateCurrentRow({ // ...currentRow, // startTime: record?.StartDate ? moment(record?.StartDate).format('YYYY-MM-DD') : '', // endTime: record?.EndDate ? moment(record?.EndDate).format('YYYY-MM-DD') : '', // ShopRoyaltyId: record?.ShopRoyalty_Id, // // BUSINESSPROJECT_ID: currentRow?.BUSINESSPROJECT_ID, // Id: currentRow?.SERVERPARTSHOP_ID, // SERVERPART_ID: currentRow?.SERVERPART_ID, // STATISTICS_MONTH: record?.EndDate ? moment(record?.EndDate).format('YYYYMM') : '', // Approvalstate: 0 // }) // setShowStateDrawer(true) // }}>{'待结算'} // } }, { title: '租金信息', dataIndex: '', hideInSearch: true, children: [ { title:
保底/固定租金
, dataIndex: 'MinturnOver', valueType: 'digit', align: 'right', width: 130, hideInSearch: true, render: (_, record) => { const str: string = record?.Remark return record?.MinturnOver ? {handleFormatNumber(record?.MinturnOver)} : record?.MinturnOver === 0 ? '0.00' : '-' } }, { title:
提成比率
, dataIndex: 'GuaranteeRatio', hideInSearch: true, align: 'right', width: 100, render: (_, record) => { return record?.GuaranteeRatio ? `${record?.GuaranteeRatio}%` : '' } } ] }, { title: '营业额', dataIndex: '', hideInSearch: true, children: [ { title:
现金
, dataIndex: 'CashAmount', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.CashAmount ? `${handleFormatNumber(record?.CashAmount)}${record?.CashCorrect ? `(${record?.CashCorrect > 0 ? '+' : record?.CashCorrect < 0 ? '' : ''}${record?.CashCorrect})` : ''}` : record?.CashAmount === 0 ? '0.00' : '-' } }, { title:
微支付
, dataIndex: 'MobilePayAmount', valueType: 'digit', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { return record?.MobilePayAmount ? `${handleFormatNumber(record?.MobilePayAmount)}${record?.MobilePayCorrect ? `(${record?.MobilePayCorrect > 0 ? '+' : record?.MobilePayCorrect < 0 ? '' : ''}${record?.MobilePayCorrect})` : ''}` : record?.MobilePayAmount === 0 ? '0.00' : '-' } }, { title:
小计
, dataIndex: 'RevenueAmount', valueType: 'digit', align: 'right', width: 150, hideInSearch: true, // render: (_, record) => { // return {record?.RevenueAmount ? `${numeral(record?.RevenueAmount).format('0,0.00')}${record?.addRevenueMoney ? `(${record?.addRevenueMoney > 0 ? '+' : record?.addRevenueMoney < 0 ? '-' : ''}${record?.addRevenueMoney})` : ''}` : '0'} // } render: (_, record) => { return record?.level === 1 ? { if (currentApprovalstate < 1) { return } handleShowSettlementDetail() }}> {record?.RevenueAmount ? `${handleFormatNumber(record?.RevenueAmount)}${record?.addRevenueMoney ? `(${record?.addRevenueMoney > 0 ? '+' : record?.addRevenueMoney < 0 ? '' : ''}${record?.addRevenueMoney})` : ''}` : '0'} : {record?.RevenueAmount ? `${handleFormatNumber(record?.RevenueAmount)}` : ''} } // render: (_, record) => { // return showSettlementDrawer ? {record?.RevenueAmount ? `${numeral(record?.RevenueAmount).format('0,0.00')}${record?.addRevenueMoney ? `(${record?.addRevenueMoney > 0 ? '+' : record?.addRevenueMoney < 0 ? '-' : ''}${record?.addRevenueMoney})` : ''}` : '0'} : record.level === 1 ? { // if (currentApprovalstate < 1) { // return // } // let before: number = 0 // 项目开始前 // let first: number = 0 // 第一期 // let firstObj: any = {} // 第一个不能点击 // if (reqDetailListDetail && reqDetailListDetail.length > 0) { // reqDetailListDetail.forEach((item: any, index: number) => { // // 水电物业 // const totalFee: number = item.WaterCharge + item.ElectricityCharge + item.PropertyFee + item.HouseRent + item.BreachPenalty + item.OtherFee // // 提成金额 // const amount: number = item.RevenueAmount * (item.GuaranteeRatio / 100) // // 项目租金 // const guaranteedRent: number = amount > item.MinturnOver ? amount : item.MinturnOver // if (item.PeriodIndexStr === '项目开始前' || item.PeriodIndexStr === "装修期") { // before = item.RoyaltyAmount - (totalFee + guaranteedRent) // } else { // first = item.RoyaltyAmount - (totalFee + guaranteedRent) // } // if (item.PeriodIndex <= 0 && item.PeriodDesc !== '合计') { // firstObj = item // } // }) // } // if (moment(firstObj?.EndDate).format('YYYY-MM-DD') === moment(record?.EndDate).format('YYYY-MM-DD') && moment(firstObj?.StartDate).format('YYYY-MM-DD') === moment(record?.StartDate).format('YYYY-MM-DD')) { // setReadOnlyRowDetail(reqDetailListDetail[reqDetailListDetail.length - 1]) // } else { // console.log('record', record); // setReadOnlyRowDetail(record) // } // setYearSettlementOnlyRead(true) // setMoneyFirstBefore([before, first]) // // setDrawerTableData(JSON.parse(JSON.stringify(reqDetailListDetail))) // setSettlementYearTableData(JSON.parse(JSON.stringify(reqDetailListDetail))) // setShowSettlementDrawer(true) // }}>{record?.RevenueAmount ? `${numeral(record?.RevenueAmount).format('0,0.00')}${record?.CORRECT_AMOUNT ? `(${record?.CORRECT_AMOUNT > 0 ? '+' : record?.CORRECT_AMOUNT < 0 ? '' : ''}${record?.CORRECT_AMOUNT})` : ''}` : '0'} : // showToExamineModal ? // {record?.RevenueAmount ? `${numeral(record?.RevenueAmount).format('0,0.00')}${record?.CORRECT_AMOUNT ? `(${record?.CORRECT_AMOUNT > 0 ? '+' : record?.CORRECT_AMOUNT < 0 ? '' : ''}${record?.CORRECT_AMOUNT})` : ''}` : '0'} : // {record?.RevenueAmount ? numeral(record?.RevenueAmount).format('0,0.00') : '0'} // } } ] }, { title:
业主收款
, dataIndex: 'RoyaltyAmount', valueType: 'digit', width: 100, align: 'right', hideInSearch: true, render: (_, record) => { return record?.RoyaltyAmount ? handleFormatNumber(record?.RoyaltyAmount) : record?.RoyaltyAmount === 0 ? '0.00' : '-' } }, { title: '应收费用', dataIndex: '', hideInSearch: true, children: [ { title:
合计
, dataIndex: 'ReceivableAmount', valueType: 'digit', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { const str: string = `租金(${numeral(record?.GuaranteeFee).format('0.00')}) + 物业费(${numeral(record?.PropertyFee).format('0.00')}) + 房租(${numeral(record?.HouseRent).format('0.00')}) + 罚款(${numeral(record?.BreachPenalty).format('0.00')}) + 电费(${numeral(record?.ElectricityCharge).format('0.00')}) + 水费(${numeral(record?.WaterCharge).format('0.00')}) + 其他(${numeral(record?.OtherFee).format('0.00')})` return record?.ReceivableAmount ? {handleFormatNumber(record?.ReceivableAmount)} : '' } }, { title:
租金
, dataIndex: 'GuaranteeFee', valueType: 'digit', align: 'right', width: 120, hideInSearch: true, render: (_, record) => { const str: string = `租金(${numeral(record?.MinturnOver).format('0.00')}) ${record?.MinturnOver > (record?.RevenueAmount * (record?.GuaranteeRatio) / 100) ? '>' : '<'} 营业额(${record?.RevenueAmount || 0}) * 提成比率(${record?.GuaranteeRatio ? `${record?.GuaranteeRatio}%` : ''})` return record?.GuaranteeFee ? {handleFormatNumber(record?.GuaranteeFee)} : '' } }, { title:
物业费
, dataIndex: 'PropertyFee', valueType: 'digit', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { return record?.PropertyFee ? handleFormatNumber(record?.PropertyFee) : record?.PropertyFee === 0 ? 0.00 : '' } }, { title:
住宿费
, dataIndex: 'HouseRent', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.HouseRent ? handleFormatNumber(record?.HouseRent) : record?.HouseRent === 0 ? '0.00' : '-' } }, { title:
罚款
, dataIndex: 'BreachPenalty', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.BreachPenalty ? handleFormatNumber(record?.BreachPenalty) : record?.BreachPenalty === 0 ? '0.00' : '-' } }, { title:
电费
, dataIndex: 'ElectricityCharge', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.ElectricityCharge ? handleFormatNumber(record?.ElectricityCharge) : record?.ElectricityCharge === 0 ? 0.00 : '' } }, { title:
水费
, dataIndex: 'WaterCharge', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.WaterCharge ? handleFormatNumber(record?.WaterCharge) : record?.WaterCharge === 0 ? 0.00 : '' } }, { title:
其他
, dataIndex: 'OtherFee', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.OtherFee ? handleFormatNumber(record?.OtherFee) : record?.OtherFee === 0 ? '0.00' : '-' } } ] }, { title: '已缴费用', dataIndex: '', align: 'center', hideInSearch: true, children: [ { title:
合计
, dataIndex: 'PaidFee', valueType: 'digit', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { const str: string = `水费(${numeral(record?.PaidFee_9010).format('0.00')}) + 电费(${numeral(record?.PaidFee_9020).format('0.00')}) + 房租(${numeral(record?.PaidFee_9030).format('0.00')}) + 物业费(${numeral(record?.PaidFee_9050).format('0.00')})+ 租金(${numeral(record?.PaidFee_9090).format('0.00')})+ 其他(${numeral(record?.PaidFee_9099).format('0.00')})` return record?.PaidFee ? {handleFormatNumber(record?.PaidFee)} : '0.00' } }, { title:
水费
, dataIndex: 'PaidFee_9010', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.PaidFee_9010 ? handleFormatNumber(record?.PaidFee_9010) : record?.PaidFee_9010 === 0 ? 0.00 : '' } }, { title:
电费
, dataIndex: 'PaidFee_9020', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.PaidFee_9020 ? handleFormatNumber(record?.PaidFee_9020) : record?.PaidFee_9020 === 0 ? 0.00 : '' } }, { title:
住宿费
, dataIndex: 'PaidFee_9030', valueType: 'digit', align: 'right', width: 80, hideInSearch: true, render: (_, record) => { return record?.PaidFee_9030 ? handleFormatNumber(record?.PaidFee_9030) : record?.PaidFee_9030 === 0 ? 0.00 : '' } }, { title:
物业费
, dataIndex: 'PaidFee_9050', valueType: 'digit', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { return record?.PaidFee_9050 ? handleFormatNumber(record?.PaidFee_9050) : record?.PaidFee_9050 === 0 ? 0.00 : '' } }, { title:
租金
, dataIndex: 'PaidFee_9090', valueType: 'digit', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { return record?.PaidFee_9090 ? handleFormatNumber(record?.PaidFee_9090) : record?.PaidFee_9090 === 0 ? 0.00 : '' } }, { title:
其他
, dataIndex: 'PaidFee_9099', valueType: 'digit', align: 'right', width: 100, hideInSearch: true, render: (_, record) => { return record?.PaidFee_9099 ? handleFormatNumber(record?.PaidFee_9099) : record?.PaidFee_9099 === 0 ? 0.00 : '' } } ] }, { title:
核减租金
, dataIndex: 'ReductionAmount', valueType: 'digit', align: 'right', // fixed: 'right', width: 120, hideInSearch: true, }, { title:
退补款
, dataIndex: 'RefundSupplement', valueType: 'digit', align: 'right', fixed: 'right', width: 100, hideInSearch: true, render: (_, record) => { const str: string = `业主收款(${record?.RoyaltyAmount || 0}) - 应收费用(${record?.ReceivableAmount || 0}) + 已缴费用(${record?.PaidFee || 0})` return record?.RefundSupplement ? {handleFormatNumber(record?.RefundSupplement)} : '' } }, ] // 导出excel的columns const exportColumns: any = [ { title:
期限
, dataIndex: 'PeriodDescBig', children: [ { dataIndex: 'PeriodIndexStr', title:
期数
, align: 'center', hideInSearch: true }, { title:
期限
, dataIndex: 'PeriodDesc', align: 'left', hideInSearch: true, render: (_, record) => { return record?.PeriodDesc !== '合计' && record?.PeriodDesc === '精算数据' ? {`${record?.StartDate}-${record?.EndDate}`} : {`${record?.PeriodDesc}`} } } ] }, { title:
租金信息
, dataIndex: 'PeriodDescBig', hideInSearch: true, children: [ { title:
保底/固定租金
, dataIndex: 'MinturnOver', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.MinturnOver ? handleFormatNumber(record?.MinturnOver) : '0.00'} } }, { title:
提成比率
, dataIndex: 'GuaranteeRatio', hideInSearch: true, align: 'right', render: (_, record) => { return record?.GuaranteeRatio ? `${record?.GuaranteeRatio}%` : '' } } ] }, { title:
营业额
, dataIndex: 'turnover', hideInSearch: true, children: [ { title:
现金
, dataIndex: 'CashAmount', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.CashAmount ? handleFormatNumber(record?.CashAmount) : '0.00'} } }, { title:
微支付
, dataIndex: 'MobilePayAmount', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.MobilePayAmount ? handleFormatNumber(record?.MobilePayAmount) : '0.00'} } }, { title:
小计
, dataIndex: 'RevenueAmount', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.RevenueAmount ? handleFormatNumber(record?.RevenueAmount) : '0.00'} } }, { title:
提成金额
, dataIndex: 'amount', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.amount ? handleFormatNumber(record?.amount) : '0.00'} } // render: (_, record) => { // return record.RevenueAmount * (record.GuaranteeRatio / 100) // } }, ] }, { title:
业主收款
, dataIndex: 'RoyaltyAmount', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.RoyaltyAmount ? handleFormatNumber(record?.RoyaltyAmount) : '0.00'} } }, { title:
应收租金
, dataIndex: 'GuaranteeFee', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.GuaranteeFee ? handleFormatNumber(record?.GuaranteeFee) : '0.00'} } }, { title:
应收费用
, dataIndex: 'accountsReceivable', valueType: 'digit', hideInTable: exportType === 2, align: 'right', hideInSearch: true, // render: (_, record) => { // return {record?.ReceivableAmount ? handleFormatNumber(record?.ReceivableAmount) : '0.00'} // } render: (_, record) => { return {record?.TotalFee ? handleFormatNumber(record?.TotalFee) : '0.00'} } // render: (_, record) => { // return record?.ReceivableAmount - record?.GuaranteeFee // } }, // { // title:
应收费用
, // dataIndex: 'accountsReceivable', // valueType: 'digit', // align: 'right', // hideInTable: exportType === 1, // hideInSearch: true, // // render: (_, record) => { // // return {record?.ReceivableAmount ? handleFormatNumber(record?.ReceivableAmount) : '0.00'} // // } // render: (_, record) => { // return {record?.TotalFee ? handleFormatNumber(record?.TotalFee) : '0.00'} // } // // render: (_, record) => { // // return record?.ReceivableAmount - record?.GuaranteeFee // // } // }, { title:
已缴费用
, dataIndex: 'paidFees', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return record?.PaidFee ? handleFormatNumber(record?.PaidFee) : '0.00' }, // children: [ // { // title:
合计
, // dataIndex: 'PaidFee', // valueType: 'digit', // align: 'right', // hideInSearch: true, // render: (_, record) => { // return record?.PaidFee ? numeral(getMoney(record?.PaidFee)).format('0,0.00') : '0' // } // }, // { // title:
水费
, // dataIndex: 'PaidFee_9010', // valueType: 'digit', // align: 'right', // hideInSearch: true, // render: (_, record) => { // return record?.PaidFee_9010 ? // numeral(getMoney(record?.PaidFee_9010)).format('0,0.00') // : record?.PaidFee_9010 === 0 ? 0 : '' // } // }, // { // title:
电费
, // dataIndex: 'PaidFee_9020', // valueType: 'digit', // align: 'right', // hideInSearch: true, // render: (_, record) => { // return record?.PaidFee_9020 ? // numeral(getMoney(record?.PaidFee_9020)).format('0,0.00') // : record?.PaidFee_9020 === 0 ? 0 : '' // } // }, // { // title:
住宿费
, // dataIndex: 'PaidFee_9030', // valueType: 'digit', // align: 'right', // hideInSearch: true, // }, // { // title:
物业费
, // dataIndex: 'PaidFee_9050', // valueType: 'digit', // align: 'right', // hideInSearch: true, // render: (_, record) => { // return record?.PaidFee_9050 ? // numeral(getMoney(record?.PaidFee_9050)).format('0,0.00') // : record?.PaidFee_9050 === 0 ? 0 : '' // } // }, // { // title:
租金
, // dataIndex: 'PaidFee_9090', // valueType: 'digit', // align: 'right', // hideInSearch: true, // hideInTable: isPrinting, // render: (_, record) => { // return record?.PaidFee_9090 ? // numeral(getMoney(record?.PaidFee_9090)).format('0,0.00') // : record?.PaidFee_9090 === 0 ? 0 : '' // } // }, // { // title:
其他
, // dataIndex: 'PaidFee_9099', // valueType: 'digit', // align: 'right', // hideInSearch: true, // hideInTable: isPrinting, // render: (_, record) => { // return record?.PaidFee_9099 ? // numeral(getMoney(record?.PaidFee_9099)).format('0,0.00') // : record?.PaidFee_9099 === 0 ? 0 : '' // } // } // ] }, { title:
核减租金
, dataIndex: 'ReductionAmount', valueType: 'digit', align: 'right', // fixed: 'right', width: 120, hideInSearch: true, }, { title:
退补款
, dataIndex: 'RefundSupplement', valueType: 'digit', align: 'right', hideInSearch: true, render: (_, record) => { return {record?.RefundSupplement ? handleFormatNumber(record?.RefundSupplement) : '0.00'} } }, { title:
备注
, width: 100, dataIndex: 'desc', align: 'left', hideInSearch: true, } ] // 流程进度的数组 const [progressList, setProgressList] = useState([ { title: '商户确认', desc: '' }, { title: '经理审核', desc: '' }, { title: '中心审核', desc: '' }, { title: '经发审核', desc: '' }, { title: '财务审核', desc: '' }, { title: '已审结', desc: '' }, ]) const handleGetTableData = async (id?: any, SHOPROYALTY_ID?: any, obj?: any, newObj?: any) => { setReqDetailListDetail([]) if (setIsShowMonthBtn) { setIsShowMonthBtn(false) } if (!id) { return } setTableLoading(true) let nowState: number = 0 if (parentRow?.BUSINESSAPPROVAL_ID) { nowState = await handleGetProcessProgress(parentRow?.BUSINESSAPPROVAL_ID) } let data: any = {} const req = { BUSINESSPROJECT_ID: id, SHOPROYALTY_ID } if (newObj) { data = newObj } else { console.log('obj321312', obj); // 结算中调用新的接口 if (obj?.BUSINESSAPPROVAL_ID && nowState !== 1000) { const newReq: any = { BUSINESSPROJECT_ID: id, SHOPROYALTY_ID, BUSINESSAPPROVAL_ID: obj?.BUSINESSAPPROVAL_ID } const newData = await handleGetProjectPeriodAccount(newReq) const newObj: any = { OtherData: newData.ProjectModel, List: [ { ...newData.ProjectModel, ProjectPeriodList: newData.ProjectPeriodList } ] } console.log('newObj', newObj); data = newObj } else { data = await handleGetTableMonthlyReconciliation(req) } } setCloseReqTableData(data) closeReqTableDataRef.current = data console.log('1', data); setOtherData({ ...data.OtherData, Dates: `${moment(data?.OtherData?.PROJECT_STARTDATE).format('YYYY/MM/DD')}-${moment(data?.OtherData?.PROJECT_ENDDATE).format('YYYY/MM/DD')}` }) let res: any = {} let list: any = [] let otherMessage: any = {} let isYearList: any = {} if (data.List && data.List.length > 0) { res = data.List[0] setTableAllData(res) if (data.List[0].ProjectPeriodList) { otherMessage = data.List[0].ProjectPeriodList.node const resObj: any = data.List[0].ProjectPeriodList if (obj?.BUSINESSAPPROVAL_ID && nowState !== 1000) { list = wrapTreeNode(data.List[0].ProjectPeriodList) isYearList = wrapTreeNode(data.List[0].ProjectPeriodList) } else { isYearList = wrapTreeNode([data.List[0].ProjectPeriodList])[0] if (resObj.children && resObj.children.length > 0) { list = wrapTreeNode(resObj.children) } } } } console.log('2', list); if (list && list.length > 0) { list.forEach((item: any) => { item.level = 1 if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { subItem.level = 2 }) } }) } console.log('33333', isYearList); let isContinue: boolean = true if (isYearList.AllowApply === false) { isContinue = false } let isShowClose: boolean = false if (isYearList.IsApplySuccess) { isShowClose = true } isShowClosebtn.current = isShowClose // setIsShowClosebtn(isShowClose) if (setIsYearAllowSettlement) { setIsYearAllowSettlement(isContinue) } console.log('4', obj); // 判断是否已经审核了 let isOverList: any = [] // 判断是不是重新申请 重新申请应该走的是else 2024-08-30 if (obj?.SETTLEMENT_STATE >= 1 && !obj?.APPLY_PROCCESS) { const detailReq = { BUSINESSPROJECT_ID: id, SHOPROYALTY_ID, BUSINESSAPPROVAL_ID: obj?.BUSINESSAPPROVAL_ID } const detailData = await handleGetProjectPeriodAccount(detailReq) console.log('detailData', detailData); if (detailData.ProjectPeriodList && detailData.ProjectPeriodList.length > 0) { const res: any = wrapTreeNode(detailData.ProjectPeriodList) isOverList = JSON.parse(JSON.stringify(wrapTreeNode(detailData.ProjectPeriodList))) console.log('exportData2', res); setExportData2(JSON.parse(JSON.stringify(isOverList))) if (res && res.length > 0) { let CashAmountSum: number = 0 let MobilePayAmountSum: number = 0 let RevenueAmountSum: number = 0 let RoyaltyAmountSum: number = 0 let ReceivableAmountSum: number = 0 let GuaranteeFeeSum: number = 0 let PropertyFeeSum: number = 0 let HouseRentSum: number = 0 let BreachPenaltySum: number = 0 let ElectricityChargeSum: number = 0 let WaterChargeSum: number = 0 let OtherFeeSum: number = 0 let PaidFeeSum: number = 0 let PaidFee_9010Sum: number = 0 let PaidFee_9020Sum: number = 0 let PaidFee_9030Sum: number = 0 let PaidFee_9050Sum: number = 0 let PaidFee_9090Sum: number = 0 let PaidFee_9099Sum: number = 0 let RefundSupplementSum: number = 0 let GuaranteeRatioStr: string = '' let MinturnOverSum: number = 0 let addRevenueMoneyStr: any res.forEach((item: any) => { item.level = 1 item.CORRECT_AMOUNT = item.CorrectAmount item.addRevenueMoney = item.CorrectAmount if (item.CorrectAmount) { addRevenueMoneyStr = item.CorrectAmount } if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { subItem.level = 2 }) } if (res.length > 1) { CashAmountSum += item.CashAmount * 100 MobilePayAmountSum += item.MobilePayAmount * 100 RevenueAmountSum += item.RevenueAmount * 100 RoyaltyAmountSum += item.RoyaltyAmount * 100 ReceivableAmountSum += item.ReceivableAmount * 100 GuaranteeFeeSum += item.GuaranteeFee * 100 PropertyFeeSum += item.PropertyFee * 100 HouseRentSum += item.HouseRent * 100 BreachPenaltySum += item.BreachPenalty * 100 ElectricityChargeSum += item.ElectricityCharge * 100 WaterChargeSum += item.WaterCharge * 100 OtherFeeSum += item.OtherFee * 100 PaidFeeSum += item.PaidFee * 100 PaidFee_9010Sum += item.PaidFee_9010 * 100 PaidFee_9020Sum += item.PaidFee_9020 * 100 PaidFee_9030Sum += item.PaidFee_9030 * 100 PaidFee_9050Sum += item.PaidFee_9050 * 100 PaidFee_9090Sum += item.PaidFee_9090 * 100 PaidFee_9099Sum += item.PaidFee_9099 * 100 RefundSupplementSum += item.RefundSupplement * 100 GuaranteeRatioStr = item.GuaranteeRatio MinturnOverSum += item.MinturnOver * 100 } }) // 拿到没有合计行的导出数据 if (res.length > 1) { const obj: any = { PeriodDesc: '合计', level: 0, CashAmount: handleHighPrecision(CashAmountSum), MobilePayAmount: handleHighPrecision(MobilePayAmountSum), RevenueAmount: handleHighPrecision(RevenueAmountSum), RoyaltyAmount: handleHighPrecision(RoyaltyAmountSum), ReceivableAmount: handleHighPrecision(ReceivableAmountSum), GuaranteeFee: handleHighPrecision(GuaranteeFeeSum), PropertyFee: handleHighPrecision(PropertyFeeSum), HouseRent: handleHighPrecision(HouseRentSum), BreachPenalty: handleHighPrecision(BreachPenaltySum), ElectricityCharge: handleHighPrecision(ElectricityChargeSum), WaterCharge: handleHighPrecision(WaterChargeSum), OtherFee: handleHighPrecision(OtherFeeSum), PaidFee: handleHighPrecision(PaidFeeSum), PaidFee_9010: handleHighPrecision(PaidFee_9010Sum), PaidFee_9020: handleHighPrecision(PaidFee_9020Sum), PaidFee_9030: handleHighPrecision(PaidFee_9030Sum), PaidFee_9050: handleHighPrecision(PaidFee_9050Sum), PaidFee_9090: handleHighPrecision(PaidFee_9090Sum), PaidFee_9099: handleHighPrecision(PaidFee_9099Sum), RefundSupplement: handleHighPrecision(RefundSupplementSum), GuaranteeRatio: GuaranteeRatioStr, MinturnOver: handleHighPrecision(MinturnOverSum) } res.unshift(obj) setExportData2Obj(obj) } } console.log('resfdfsdafasd', res); setReqDetailListDetail(res) setTableLoading(false) if ((list && list.length > 0) || (isOverList && isOverList.length > 0)) { // 导出的数据 const exportList: any = obj?.SETTLEMENT_STATE >= 1 ? JSON.parse(JSON.stringify(isOverList)) : JSON.parse(JSON.stringify(list)) console.log('exportList', exportList); const exportRes: any = [] const exportRes2: any = [] const printList: any = [] // 保底/固定租金合计 let MinturnOverSum: number = 0 // 现金 let CashAmountSum: number = 0 // 微支付 let MobilePayAmountSum: number = 0 // 小计 let RevenueAmountSum: number = 0 // 提成金额 let amountSum: number = 0 let TotalFeeSum: number = 0 // 业主收款 let RoyaltyAmountSum: number = 0 // 应收租金 let GuaranteeFeeSum: number = 0 // 应收费用 let accountsReceivableSum: number = 0 let PaidFeeSum: number = 0 let PaidFee_9010Sum: number = 0 let PaidFee_9020Sum: number = 0 let PaidFee_9030Sum: number = 0 let PaidFee_9050Sum: number = 0 let PaidFee_9090Sum: number = 0 let PaidFee_9099Sum: number = 0 // 物业费 let PropertyFeeSum: number = 0 // 住宿费 let HouseRentSum: number = 0 // 罚款 let BreachPenaltySum: number = 0 // 电费 let ElectricityChargeSum: number = 0 // WaterCharge let WaterChargeSum: number = 0 // 减免租金的合计 let ReductionAmountSum: number = 0 // 其他 let OtherFeeSum: number = 0 // 退补款 let RefundSupplementSum: number = 0 let GuaranteeRatioStr: any let ReceivableAmountSum: number = 0 let addRevenueMoneyStr: any exportList.forEach((item: any, index: number) => { if (item.CorrectAmount) { addRevenueMoneyStr = item.CorrectAmount } if (item.PeriodDesc !== '合计') { if (item.PeriodIndexStr === "项目开始前") { item.PeriodIndexStr = '装修期' } item.accountsReceivable = item.ReceivableAmount - item.GuaranteeFee item.amount = (item.RevenueAmount * (item.GuaranteeRatio / 100)).toFixed(2) console.log('item.amount', item.amount); accountsReceivableSum += item.accountsReceivable * 100 amountSum += item.amount * 100 RoyaltyAmountSum += item.RoyaltyAmount * 100 MinturnOverSum += item.MinturnOver * 100 CashAmountSum += item.CashAmount * 100 MobilePayAmountSum += item.MobilePayAmount * 100 RevenueAmountSum += item.RevenueAmount * 100 GuaranteeFeeSum += item.GuaranteeFee * 100 RefundSupplementSum += item.RefundSupplement * 100 TotalFeeSum += item.TotalFee * 100 PaidFeeSum += item.PaidFee * 100 PaidFee_9010Sum += item.PaidFee_9010 * 100 PaidFee_9020Sum += item.PaidFee_9020 * 100 PaidFee_9030Sum += item.PaidFee_9030 * 100 PaidFee_9050Sum += item.PaidFee_9050 * 100 PaidFee_9090Sum += item.PaidFee_9090 * 100 PaidFee_9099Sum += item.PaidFee_9099 * 100 PropertyFeeSum += item.PropertyFee * 100 ReceivableAmountSum += item.ReceivableAmount * 100 HouseRentSum += item.HouseRent * 100 BreachPenaltySum += item.BreachPenalty * 100 ElectricityChargeSum += item.ElectricityCharge * 100 WaterChargeSum += item.WaterCharge * 100 ReductionAmountSum += item.ReductionAmount * 100 OtherFeeSum += item.OtherFee * 100 if (item.GuaranteeRatio) { GuaranteeRatioStr = item.GuaranteeRatio } if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { subItem.accountsReceivable = subItem.ReceivableAmount - subItem.GuaranteeFee subItem.amount = (subItem.RevenueAmount * (subItem.GuaranteeRatio / 100)).toFixed(2) printList.push(subItem) }) } if (index + 1 === exportList.length) { item.desc = obj.BusinessProcess_Desc } exportRes2.push(JSON.parse(JSON.stringify(item))) item.children = null exportRes.push(item) } }) console.log('exportResewsdas', exportRes); console.log('exportRes2', exportRes2); console.log('printList', printList); setExportData(exportRes) setExportData2(printList) setPrintDetailData(exportRes2) const sumObj: any = { MinturnOver: handleHighPrecision(MinturnOverSum), CashAmount: handleHighPrecision(CashAmountSum), MobilePayAmount: handleHighPrecision(MobilePayAmountSum), RevenueAmount: handleHighPrecision(RevenueAmountSum), GuaranteeFee: handleHighPrecision(GuaranteeFeeSum), RefundSupplement: handleHighPrecision(RefundSupplementSum), accountsReceivable: handleHighPrecision(accountsReceivableSum), amount: handleHighPrecision(amountSum), RoyaltyAmount: handleHighPrecision(RoyaltyAmountSum), TotalFee: handleHighPrecision(TotalFeeSum), PaidFee: handleHighPrecision(PaidFeeSum), PaidFee_9010: handleHighPrecision(PaidFee_9010Sum), PaidFee_9020: handleHighPrecision(PaidFee_9020Sum), PaidFee_9030: handleHighPrecision(PaidFee_9030Sum), PaidFee_9050: handleHighPrecision(PaidFee_9050Sum), PaidFee_9090: handleHighPrecision(PaidFee_9090Sum), PaidFee_9099: handleHighPrecision(PaidFee_9099Sum), PeriodIndexStr: '合计', PropertyFee: handleHighPrecision(PropertyFeeSum), HouseRent: handleHighPrecision(HouseRentSum), BreachPenalty: handleHighPrecision(BreachPenaltySum), ElectricityCharge: handleHighPrecision(ElectricityChargeSum), WaterCharge: handleHighPrecision(WaterChargeSum), OtherFee: handleHighPrecision(OtherFeeSum), ReceivableAmount: handleHighPrecision(ReceivableAmountSum), ReductionAmount: handleHighPrecision(ReductionAmountSum), desc: '不含装修期', addRevenueMoney: addRevenueMoneyStr } console.log('sumObj', sumObj); sumObj.GuaranteeRatio = GuaranteeRatioStr setExportSumRow(sumObj) } // 现在需要审核中或已审结的时候也会出现未选择的数据 2024-09-29 if (list && list.length > 0) { const newList: any = JSON.parse(JSON.stringify(list)) console.log('list', list); console.log('res232', res); // 其实就是 在老的里面 把已经申请了的 给替换成新的 const resList: any = [] newList.forEach((item: any) => { if (res && res.length > 0) { let isHave: boolean = false let thisItem: any = {} res.forEach((subItem: any) => { if (item.PeriodIndex === subItem.PeriodIndex) { // item = JSON.parse(JSON.stringify(subItem)) isHave = true thisItem = subItem } }) if (isHave) { resList.push({ ...thisItem, isInitiated: true // 表示已经申请过的 }) } else { resList.push(item) } } else { resList.push(item) } }) console.log('resList', resList); return resList } // 一般情况都会被上面resList这个截停 return res } setTableLoading(false) return [] } let isTrue: boolean = true if (list && list.length > 0) { let CashAmountSum: number = 0 let MobilePayAmountSum: number = 0 let RevenueAmountSum: number = 0 let RoyaltyAmountSum: number = 0 let ReceivableAmountSum: number = 0 let GuaranteeFeeSum: number = 0 let PropertyFeeSum: number = 0 let HouseRentSum: number = 0 let BreachPenaltySum: number = 0 let ElectricityChargeSum: number = 0 let MinturnOverSum: number = 0 let WaterChargeSum: number = 0 let OtherFeeSum: number = 0 let PaidFeeSum: number = 0 let PaidFee_9010Sum: number = 0 let PaidFee_9020Sum: number = 0 let PaidFee_9030Sum: number = 0 let PaidFee_9050Sum: number = 0 let PaidFee_9090Sum: number = 0 let PaidFee_9099Sum: number = 0 let RefundSupplementSum: number = 0 let GuaranteeRatioStr: string = '' list.forEach((item: any) => { if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { if (!subItem.IsApplySuccess) { isTrue = false } }) } if (list.length > 1) { CashAmountSum += item.CashAmount * 100 MobilePayAmountSum += item.MobilePayAmount * 100 RevenueAmountSum += item.RevenueAmount * 100 RoyaltyAmountSum += item.RoyaltyAmount * 100 ReceivableAmountSum += item.ReceivableAmount * 100 GuaranteeFeeSum += item.GuaranteeFee * 100 PropertyFeeSum += item.PropertyFee * 100 HouseRentSum += item.HouseRent * 100 BreachPenaltySum += item.BreachPenalty * 100 ElectricityChargeSum += item.ElectricityCharge * 100 WaterChargeSum += item.WaterCharge * 100 OtherFeeSum += item.OtherFee * 100 PaidFeeSum += item.PaidFee * 100 PaidFee_9010Sum += item.PaidFee_9010 * 100 PaidFee_9020Sum += item.PaidFee_9020 * 100 PaidFee_9030Sum += item.PaidFee_9030 * 100 PaidFee_9050Sum += item.PaidFee_9050 * 100 PaidFee_9090Sum += item.PaidFee_9090 * 100 PaidFee_9099Sum += item.PaidFee_9099 * 100 RefundSupplementSum += item.RefundSupplement * 100 GuaranteeRatioStr = item.GuaranteeRatio MinturnOverSum += item.MinturnOver * 100 } }) if (list.length > 1) { const obj: any = { level: 0, PeriodDesc: '合计', CashAmount: handleHighPrecision(CashAmountSum), MobilePayAmount: handleHighPrecision(MobilePayAmountSum), RevenueAmount: handleHighPrecision(RevenueAmountSum), RoyaltyAmount: handleHighPrecision(RoyaltyAmountSum), ReceivableAmount: handleHighPrecision(ReceivableAmountSum), GuaranteeFee: handleHighPrecision(GuaranteeFeeSum), PropertyFee: handleHighPrecision(PropertyFeeSum), HouseRent: handleHighPrecision(HouseRentSum), BreachPenalty: handleHighPrecision(BreachPenaltySum), ElectricityCharge: handleHighPrecision(ElectricityChargeSum), WaterCharge: handleHighPrecision(WaterChargeSum), OtherFee: handleHighPrecision(OtherFeeSum), PaidFee: handleHighPrecision(PaidFeeSum), PaidFee_9010: handleHighPrecision(PaidFee_9010Sum), PaidFee_9020: handleHighPrecision(PaidFee_9020Sum), PaidFee_9030: handleHighPrecision(PaidFee_9030Sum), PaidFee_9050: handleHighPrecision(PaidFee_9050Sum), PaidFee_9090: handleHighPrecision(PaidFee_9090Sum), PaidFee_9099: handleHighPrecision(PaidFee_9099Sum), RefundSupplement: handleHighPrecision(RefundSupplementSum), GuaranteeRatio: GuaranteeRatioStr, MinturnOver: handleHighPrecision(MinturnOverSum) } list.unshift(obj) setExportData2Obj(obj) } } if (setIsShowMonthBtn) { setIsShowMonthBtn(isTrue) } console.log('list321312312', list); // setExportData2(list) setTableLoading(false) setReqDetailListDetail(list) if ((list && list.length > 0) || (isOverList && isOverList.length > 0)) { // 导出的数据 let exportList: any = obj?.SETTLEMENT_STATE >= 1 ? JSON.parse(JSON.stringify(isOverList)) : JSON.parse(JSON.stringify(list)) console.log('exportList', exportList); if (exportList && exportList.length > 0) { } else { exportList = JSON.parse(JSON.stringify(list)) } const exportRes: any = [] const exportRes2: any = [] // 保底/固定租金合计 let MinturnOverSum: number = 0 // 现金 let CashAmountSum: number = 0 // 微支付 let MobilePayAmountSum: number = 0 // 小计 let RevenueAmountSum: number = 0 // 提成金额 let amountSum: number = 0 let TotalFeeSum: number = 0 // 业主收款 let RoyaltyAmountSum: number = 0 // 应收租金 let GuaranteeFeeSum: number = 0 // 应收费用 let accountsReceivableSum: number = 0 let PaidFeeSum: number = 0 let PaidFee_9010Sum: number = 0 let PaidFee_9020Sum: number = 0 let PaidFee_9030Sum: number = 0 let PaidFee_9050Sum: number = 0 let PaidFee_9090Sum: number = 0 let PaidFee_9099Sum: number = 0 // 物业费 let PropertyFeeSum: number = 0 // 住宿费 let HouseRentSum: number = 0 // 罚款 let BreachPenaltySum: number = 0 // 电费 let ElectricityChargeSum: number = 0 // WaterCharge let WaterChargeSum: number = 0 // 减免金额合计 let ReductionAmountSum: number = 0 // 其他 let OtherFeeSum: number = 0 // 退补款 let RefundSupplementSum: number = 0 let ReceivableAmountSum: number = 0 let GuaranteeRatioStr: any let addRevenueMoneyStr: any exportList.forEach((item: any, index: number) => { if (item.PeriodDesc !== '合计') { if (item.addRevenueMoney) { addRevenueMoneyStr = item.CorrectAmount } if (item.PeriodIndexStr === "项目开始前") { item.PeriodIndexStr = '装修期' } item.accountsReceivable = item.ReceivableAmount - item.GuaranteeFee item.amount = (item.RevenueAmount * (item.GuaranteeRatio / 100)).toFixed(2) accountsReceivableSum += item.accountsReceivable * 100 amountSum += item.amount * 100 RoyaltyAmountSum += item.RoyaltyAmount * 100 MinturnOverSum += item.MinturnOver * 100 CashAmountSum += item.CashAmount * 100 MobilePayAmountSum += item.MobilePayAmount * 100 RevenueAmountSum += item.RevenueAmount * 100 GuaranteeFeeSum += item.GuaranteeFee * 100 RefundSupplementSum += item.RefundSupplement * 100 TotalFeeSum += item.TotalFee * 100 PaidFeeSum += item.PaidFee * 100 PaidFee_9010Sum += item.PaidFee_9010 * 100 PaidFee_9020Sum += item.PaidFee_9020 * 100 PaidFee_9030Sum += item.PaidFee_9030 * 100 PaidFee_9050Sum += item.PaidFee_9050 * 100 PaidFee_9090Sum += item.PaidFee_9090 * 100 PaidFee_9099Sum += item.PaidFee_9099 * 100 ReceivableAmountSum += item.ReceivableAmount * 100 PropertyFeeSum += item.PropertyFee * 100 HouseRentSum += item.HouseRent * 100 BreachPenaltySum += item.BreachPenalty * 100 ElectricityChargeSum += item.ElectricityCharge * 100 ReductionAmountSum += item.ReductionAmount * 100 WaterChargeSum += item.WaterCharge * 100 OtherFeeSum += item.OtherFee * 100 if (item.GuaranteeRatio) { GuaranteeRatioStr = item.GuaranteeRatio } if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { subItem.accountsReceivable = subItem.ReceivableAmount - subItem.GuaranteeFee subItem.amount = (subItem.RevenueAmount * (subItem.GuaranteeRatio / 100)).toFixed(2) }) } if (index + 1 === exportList.length) { item.desc = obj.BusinessProcess_Desc } exportRes2.push(JSON.parse(JSON.stringify(item))) item.children = null exportRes.push(item) } }) console.log('exportResewsdas2', exportRes); console.log('exportRes2222222', exportRes2); setExportData(exportRes) setExportData2(exportRes2) const sumObj: any = { MinturnOver: handleHighPrecision(MinturnOverSum), CashAmount: handleHighPrecision(CashAmountSum), MobilePayAmount: handleHighPrecision(MobilePayAmountSum), RevenueAmount: handleHighPrecision(RevenueAmountSum), GuaranteeFee: handleHighPrecision(GuaranteeFeeSum), RefundSupplement: handleHighPrecision(RefundSupplementSum), accountsReceivable: handleHighPrecision(accountsReceivableSum), amount: handleHighPrecision(amountSum), TotalFee: handleHighPrecision(TotalFeeSum), RoyaltyAmount: handleHighPrecision(RoyaltyAmountSum), PaidFee: handleHighPrecision(PaidFeeSum), PaidFee_9010: handleHighPrecision(PaidFee_9010Sum), PaidFee_9020: handleHighPrecision(PaidFee_9020Sum), PaidFee_9030: handleHighPrecision(PaidFee_9030Sum), PaidFee_9050: handleHighPrecision(PaidFee_9050Sum), PaidFee_9090: handleHighPrecision(PaidFee_9090Sum), PaidFee_9099: handleHighPrecision(PaidFee_9099Sum), PeriodIndexStr: '合计', HouseRent: handleHighPrecision(HouseRentSum), BreachPenalty: handleHighPrecision(HouseRentSum), ElectricityCharge: handleHighPrecision(HouseRentSum), WaterCharge: handleHighPrecision(HouseRentSum), OtherFee: handleHighPrecision(HouseRentSum), ReductionAmount: handleHighPrecision(ReductionAmountSum), ReceivableAmount: handleHighPrecision(ReceivableAmountSum), desc: '不含装修期', addRevenueMoney: addRevenueMoneyStr } sumObj.GuaranteeRatio = GuaranteeRatioStr console.log('sumObj', sumObj); setExportSumRow(sumObj) } return list } // 计算表格的合计值 const handleGetTableSum = (newList: any, list: any) => { // newList实际数据 // list 已经勾选的行数组 if (newList && newList.length > 0) { let CashAmountSum: number = 0 let MobilePayAmountSum: number = 0 let RevenueAmountSum: number = 0 let RoyaltyAmountSum: number = 0 let MinturnOverSum: number = 0 let ReceivableAmountSum: number = 0 let GuaranteeFeeSum: number = 0 let PropertyFeeSum: number = 0 let HouseRentSum: number = 0 let BreachPenaltySum: number = 0 let ElectricityChargeSum: number = 0 let WaterChargeSum: number = 0 let OtherFeeSum: number = 0 let PaidFeeSum: number = 0 let PaidFee_9010Sum: number = 0 let PaidFee_9020Sum: number = 0 let PaidFee_9030Sum: number = 0 let PaidFee_9050Sum: number = 0 let PaidFee_9090Sum: number = 0 let PaidFee_9099Sum: number = 0 let RefundSupplementSum: number = 0 let GuaranteeRatioStr: string = '' newList.forEach((item: any) => { // 拿到已经勾选的行 if (list.indexOf(`${item?.ShopRoyalty_Id}-${item?.PeriodIndexStr}-${item?.StartDate}-${item?.EndDate}-${item?.level}`) !== -1) { CashAmountSum += item.CashAmount * 100 MobilePayAmountSum += item.MobilePayAmount * 100 RevenueAmountSum += item.RevenueAmount * 100 RoyaltyAmountSum += item.RoyaltyAmount * 100 ReceivableAmountSum += item.ReceivableAmount * 100 GuaranteeFeeSum += item.GuaranteeFee * 100 PropertyFeeSum += item.PropertyFee * 100 HouseRentSum += item.HouseRent * 100 BreachPenaltySum += item.BreachPenalty * 100 ElectricityChargeSum += item.ElectricityCharge * 100 WaterChargeSum += item.WaterCharge * 100 OtherFeeSum += item.OtherFee * 100 PaidFeeSum += item.PaidFee * 100 PaidFee_9010Sum += item.PaidFee_9010 * 100 PaidFee_9020Sum += item.PaidFee_9020 * 100 PaidFee_9030Sum += item.PaidFee_9030 * 100 PaidFee_9050Sum += item.PaidFee_9050 * 100 PaidFee_9090Sum += item.PaidFee_9090 * 100 PaidFee_9099Sum += item.PaidFee_9099 * 100 RefundSupplementSum += item.RefundSupplement * 100 GuaranteeRatioStr = item.GuaranteeRatio MinturnOverSum += item.MinturnOver * 100 } }) const obj: any = { PeriodDesc: '合计', level: 0, noSelect: true, CashAmount: handleHighPrecision(CashAmountSum), MobilePayAmount: handleHighPrecision(MobilePayAmountSum), RevenueAmount: handleHighPrecision(RevenueAmountSum), RoyaltyAmount: handleHighPrecision(RoyaltyAmountSum), ReceivableAmount: handleHighPrecision(ReceivableAmountSum), GuaranteeFee: handleHighPrecision(GuaranteeFeeSum), PropertyFee: handleHighPrecision(PropertyFeeSum), HouseRent: handleHighPrecision(HouseRentSum), BreachPenalty: handleHighPrecision(BreachPenaltySum), ElectricityCharge: handleHighPrecision(ElectricityChargeSum), WaterCharge: handleHighPrecision(WaterChargeSum), OtherFee: handleHighPrecision(OtherFeeSum), PaidFee: handleHighPrecision(PaidFeeSum), PaidFee_9010: handleHighPrecision(PaidFee_9010Sum), PaidFee_9020: handleHighPrecision(PaidFee_9020Sum), PaidFee_9030: handleHighPrecision(PaidFee_9030Sum), PaidFee_9050: handleHighPrecision(PaidFee_9050Sum), PaidFee_9090: handleHighPrecision(PaidFee_9090Sum), PaidFee_9099: handleHighPrecision(PaidFee_9099Sum), RefundSupplement: handleHighPrecision(RefundSupplementSum), GuaranteeRatio: GuaranteeRatioStr, MinturnOver: handleHighPrecision(MinturnOverSum) } newList.unshift(obj) } return newList } const modalRowSelection: any = { // defaultSelectedRowKeys: defaultSelectRow, selectedRowKeys: selectRowKey, onChange: (selectedRowKeys: any, selectedRows: any) => { confirm({ width: 500, content:
{`是否确认不计提装修期费用`}
, onOk: async () => { console.log('selectedRowKeys', selectedRowKeys); console.log('selectedRows', selectedRows); // 因为直接点击加入装修期之后 装修期会在正常期的后面 肯定不行的 所以按时间排一下 const list: any = JSON.parse(JSON.stringify(selectedRows)) const len: number = list.length; for (let i = 0; i < len - 1; i++) { for (let j = 0; j < len - 1 - i; j++) { if (new Date(moment(list[j].StartDate).format('YYYY-MM-DD')).getTime() > new Date(moment(list[j + 1].StartDate).format('YYYY-MM-DD')).getTime()) { // 相邻元素两两对比 const temp = list[j + 1]; // 元素交换 list[j + 1] = list[j]; list[j] = temp; } } } console.log('list', list); setSelectRowKey(selectedRowKeys) setSelectDetailList(list) let newList: any = [] if (reqDetailListDetail && reqDetailListDetail.length > 0) { reqDetailListDetail.forEach((item: any) => { if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { newList.push(subItem) }) } // if (item.PeriodDesc !== '合计') { // newList.push(item) // } }) } console.log('reqDetailListDetail', reqDetailListDetail); console.log('selectedRowKeys', selectedRowKeys); console.log('newList', newList); newList = handleGetTableSum(newList, selectedRowKeys) // console.log('newList', newList); // setReqDetailListDetail(newList) } }); }, getCheckboxProps: (record: any) => ({ disabled: record?.noSelect, }), } const exportTable = (e) => { e.stopPropagation(); const bigMain = document.getElementsByClassName('settlementAccountHideBox')[0] const main = bigMain.getElementsByClassName('export2')[0] console.log('formatExportData.current', formatExportData.current); const thead = main.querySelector('thead').cloneNode(true); // 深克隆DOM节点 const tbody = main.querySelector('tbody').cloneNode(true); // 深克隆DOM节点 const tfoot = main.querySelector('tfoot').cloneNode(true); // 深克隆DOM节点 const tableTitle = document.createElement('div'); tableTitle.innerText = `合作经营商户合同期结算明细表` tableTitle.setAttribute('style', 'width:100%;text-align:center;font-size:20px;font-weight: 600;') const header = document.createElement('div'); const SPREGIONTYPE_NAME = document.createElement('span'); SPREGIONTYPE_NAME.innerText = `中心:${otherData?.SPREGIONTYPE_NAME || ''}` const SERVERPART_NAME = document.createElement('span'); SERVERPART_NAME.innerText = `   服务区:${otherData?.SERVERPART_NAME || ''}` const SERVERPARTSHOP_NAME = document.createElement('span'); SERVERPARTSHOP_NAME.innerText = `   门店名称:${otherData?.SERVERPARTSHOP_NAME || ''}` const MERCHANTS_NAME = document.createElement('span'); MERCHANTS_NAME.innerText = `   经营商户名称:${otherData?.MERCHANTS_NAME || ''}` const projectDate = document.createElement('span'); projectDate.innerText = `   合同期:${otherData?.PROJECT_STARTDATE ? moment(otherData?.PROJECT_STARTDATE).format('YYYY.MM.DD') : ''}-${otherData?.PROJECT_ENDDATE ? moment(otherData?.PROJECT_ENDDATE).format('YYYY.MM.DD') : ''}` header.appendChild(SPREGIONTYPE_NAME) header.appendChild(SERVERPART_NAME) header.appendChild(SERVERPARTSHOP_NAME) header.appendChild(MERCHANTS_NAME) header.appendChild(projectDate) header.setAttribute('style', 'width:100%;font-size:14px;font-weight: 600;') const container = document.querySelector('#hiddenBox'); const tempTable = document.createElement('table'); tempTable.appendChild(tableTitle); tempTable.appendChild(header); tempTable.appendChild(thead); tempTable.appendChild(tbody); tempTable.appendChild(tfoot); tempTable.setAttribute('id', 'table-to-xls-settlementAccount'); // 给table添加id,值与按钮上的table字段对应 container.appendChild(tempTable); // 把创建的节点添加到页面容器中 downloadBtnRef.current.handleDownload(); setShowExportTable(false) tempTable.remove() // 防止重复打印一个内容 exportType = 0 } const exportExcel = (e) => { e.stopPropagation(); // 防止Collapse组件收起 const bigMain = document.getElementsByClassName('settlementAccountHideBox')[0] const main = bigMain.getElementsByClassName('export1')[0] const thead = main.querySelector('thead').cloneNode(true); // 深克隆DOM节点 const tbody = main.querySelector('tbody').cloneNode(true); // 深克隆DOM节点 const tfoot = main.querySelector('tfoot').cloneNode(true); // 深克隆DOM节点 const tableTitle = document.createElement('div'); tableTitle.innerText = `${parentRow?.BUSINESSPROJECT_NAME}项目结算明细表` tableTitle.setAttribute('style', 'width:100%;text-align:center;font-size:20px;font-weight: 600;') const container = document.querySelector('#hiddenBox'); const tempTable = document.createElement('table'); tempTable.appendChild(tableTitle); tempTable.appendChild(thead); tempTable.appendChild(tbody); tempTable.appendChild(tfoot); tempTable.setAttribute('id', 'table-to-xls-settlementAccount1'); // 给table添加id,值与按钮上的table字段对应 container.appendChild(tempTable); // 把创建的节点添加到页面容器中 downloadBtnRef1.current.handleDownload(); setShowExportTable(false) tempTable.remove() // 防止重复打印一个内容 exportType = 0 } // 拿到流程进度的数据 const handleGetProcessProgress = async (id: any) => { const req: any = { BUSINESSAPPROVALId: id || parentRow?.BUSINESSAPPROVAL_ID } const data = await handleGetGetBUSINESSAPPROVALDetail(req) console.log('datahandleGetProcessProgress', data); // 给导出弄签字 const obj: any = { financeName: '',// 财务部签名 financeRealName: '',// 财务部签名(只有人名) developmentName: '',// 经发部签名 developmentRealName: '',// 经发部签名(只有人名) directorName: '',// 中心主任签名 directorRealName: '',// 中心主任签名(只有人名) centralFinanceName: '',// 中心财务签名 centralFinanceRealName: '',// 中心财务签名(只有人名) operationsSuperName: '',// 中心经营主管签名 operationsSuperRealName: '',// 中心经营主管签名(只有人名) areaManagerName: '',// 服务区经理签名 areaManagerRealName: '',// 服务区经理签名(只有人名) confirmationName: '',// 商户确认签名 confirmationRealName: '',// 商户确认签名(只有人名) developManagerName: data.STAFF_NAME,// 经发人签名 developManagerRealName: `${data.STAFF_NAME.split('【')[0]} ${data.BUSINESS_STARTDATE}`,// 经发人签名(只有人名) } if (data.approveList && data.approveList.length > 0) { data.approveList.forEach((item: any) => { // if (item.APPLYAPPROVE_TYPE === 1000) { // obj.developManagerName = item.STAFF_NAME // obj.developManagerRealName = item.STAFF_NAME.split('【')[0] + ` ${item.APPLYAPPROVE_DATE}` // } else if (item.APPLYAPPROVE_TYPE === 2000) { obj.confirmationName = item.STAFF_NAME obj.confirmationRealName = `${item.STAFF_NAME.split('【')[0]} ${item.APPLYAPPROVE_DATE}` } else if (item.APPLYAPPROVE_TYPE === 2010) { obj.areaManagerName = item.STAFF_NAME obj.areaManagerRealName = `${item.STAFF_NAME.split('【')[0]} ${item.APPLYAPPROVE_DATE}` } else if (item.APPLYAPPROVE_TYPE === 2020) { obj.operationsSuperName = item.STAFF_NAME obj.operationsSuperRealName = `${item.STAFF_NAME.split('【')[0]} ${item.APPLYAPPROVE_DATE}` } else if (item.APPLYAPPROVE_TYPE === 2030) { obj.centralFinanceName = item.STAFF_NAME obj.centralFinanceRealName = `${item.STAFF_NAME.split('【')[0]} ${item.APPLYAPPROVE_DATE}` } else if (item.APPLYAPPROVE_TYPE === 2040) { obj.directorName = item.STAFF_NAME obj.directorRealName = `${item.STAFF_NAME.split('【')[0]} ${item.APPLYAPPROVE_DATE}` } else if (item.APPLYAPPROVE_TYPE === 2050) { obj.developmentName = item.STAFF_NAME obj.developmentRealName = `${item.STAFF_NAME.split('【')[0]} ${item.APPLYAPPROVE_DATE}` } else if (item.APPLYAPPROVE_TYPE === 2060) { obj.financeName = item.STAFF_NAME obj.financeRealName = `${item.STAFF_NAME.split('【')[0]} ${item.APPLYAPPROVE_DATE}` } }) } setSignatureObj(obj) // 拿到一共有多少个审批流程 setProgressDetail(data) if (data.BUSINESSAPPROVAL_STATE === 2000) { setProgressState(1) } else if (data.BUSINESSAPPROVAL_STATE === 2010) { setProgressState(2) } else if (data.BUSINESSAPPROVAL_STATE === 2020) { setProgressState(3) } else if (data.BUSINESSAPPROVAL_STATE === 2030) { setProgressState(4) } else if (data.BUSINESSAPPROVAL_STATE === 2040) { setProgressState(5) } else if (data.BUSINESSAPPROVAL_STATE === 9000) { setProgressState(6) } if (data.approveList && data.approveList.length > 0) { const progress: any = JSON.parse(JSON.stringify(progressList)) data.approveList.forEach((item: any, index: number) => { if (progress[index]) { progress[index].desc = item } }) setProgressList(progress) } return data.BUSINESSAPPROVAL_STATE } // 预览上传后的图片 const handlePreview = async () => { setFileList(fileList) setImagePreviewVisible(true) }; // 拿到附件列表 const handleGetFile = async () => { if (!parentRow?.BUSINESSAPPROVAL_ID) { return } const req: any = { TableId: parentRow?.BUSINESSAPPROVAL_ID, TableType: 1130, } const data = await handleGetPictureList(req) console.log('data', data); const list: any = data.Result_Data.List const res: any = [] if (list && list.length > 0) { list.forEach((item: any) => { res.push({ uid: `${item.ImageId}`, // 注意,这个uid一定不能少,否则上传失败 name: item.ImageName, status: 'done', url: item.ImageUrl, // url 是展示在页面上的绝对链接 imgUrl: item.ImagePath, // + success.ImageUrl, IsImg: item.IsImg }) }) } console.log('res', res); setFileList(res) } // 退场结算 const handleCloseSettlement = async (obj: any) => { console.log('obj', obj); const req: any = obj.List[0] setTableLoading(true) const data = await handleRebuildClosedPeriod(req) if (data.Result_Code === 100) { message.success(data.Result_Desc) const oldObj: any = JSON.parse(JSON.stringify(obj)) const oldList: any = oldObj.List oldList[0].ProjectPeriodList = data.Result_Data // setAfterCloseData(oldObj) afterCloseData.current = oldObj actionRef.current?.reload() } else { console.log('datadsadasd', data); message.error(data.Result_Desc) } setTableLoading(false) } // 对数据一个对象数据进行格式化 const handleFormatObj = (obj: any, str: string) => { if (str) { const list: any = str.split(',') if (list && list.length > 0) { const newObj: any = JSON.parse(JSON.stringify(obj)) list.forEach((item: any) => { newObj[item] = formatToTwoDecimalPlaces(newObj[item]) }) return newObj } } } useImperativeHandle(onRef, () => ({ reqDetailListDetail, handleGetTableData, selectDetailList, afterCloseData // 如果点击过撤场结算 就会有数据 })); return (
{ showExportTable ?
数据导出中...
: '' }
{ showExportTable && reqDetailListDetail && reqDetailListDetail.length > 0 ? { return <> 合计 {exportSumRow?.MinturnOver ? handleFormatNumber(exportSumRow?.MinturnOver) : '0'} {exportSumRow?.GuaranteeRatio ? `${exportSumRow?.GuaranteeRatio}%` : ''} {exportSumRow?.CashAmount ? handleFormatNumber(exportSumRow?.CashAmount) : '0'} {exportSumRow?.MobilePayAmount ? handleFormatNumber(exportSumRow?.MobilePayAmount) : '0'} {exportSumRow?.RevenueAmount ? handleFormatNumber(exportSumRow?.RevenueAmount) : '0'} {exportSumRow?.RoyaltyAmount ? handleFormatNumber(exportSumRow?.RoyaltyAmount) : '0'} {exportSumRow?.ReceivableAmount ? handleFormatNumber(exportSumRow?.ReceivableAmount) : '0'} {exportSumRow?.GuaranteeFee ? handleFormatNumber(exportSumRow?.GuaranteeFee) : '0'} {exportSumRow?.PropertyFee ? handleFormatNumber(exportSumRow?.PropertyFee) : '0'} {exportSumRow?.HouseRent ? handleFormatNumber(exportSumRow?.HouseRent) : '0'} {exportSumRow?.BreachPenalty ? handleFormatNumber(exportSumRow?.BreachPenalty) : '0'} {exportSumRow?.ElectricityCharge ? handleFormatNumber(exportSumRow?.ElectricityCharge) : '0'} {exportSumRow?.WaterCharge ? handleFormatNumber(exportSumRow?.WaterCharge) : '0'} {exportSumRow?.OtherFee ? handleFormatNumber(exportSumRow?.OtherFee) : '0'} {exportSumRow?.PaidFee ? handleFormatNumber(exportSumRow?.PaidFee) : '0'} {exportSumRow?.PaidFee_9010 ? handleFormatNumber(exportSumRow?.PaidFee_9010) : '0'} {exportSumRow?.PaidFee_9020 ? handleFormatNumber(exportSumRow?.PaidFee_9020) : '0'} {exportSumRow?.PaidFee_9030 ? handleFormatNumber(exportSumRow?.PaidFee_9030) : '0'} {exportSumRow?.PaidFee_9050 ? handleFormatNumber(exportSumRow?.PaidFee_9050) : '0'} {exportSumRow?.PaidFee_9090 ? handleFormatNumber(exportSumRow?.PaidFee_9090) : '0'} {exportSumRow?.PaidFee_9099 ? handleFormatNumber(exportSumRow?.PaidFee_9099) : '0'} {exportSumRow?.ReductionAmount ? handleFormatNumber(exportSumRow?.ReductionAmount) : '0'} {exportSumRow?.RefundSupplement ? handleFormatNumber(exportSumRow?.RefundSupplement) : '0'} {exportSumRow?.addRevenueMoney ? `备注:营收冲正${(exportSumRow?.addRevenueMoney)}元` : ''} }} /> : '' }
{ showExportTable && exportData && exportData.length > 0 ? { return <> {exportSumRow?.PeriodIndexStr}1 {exportSumRow?.MinturnOver ? handleFormatNumber(exportSumRow?.MinturnOver) : '0'} {exportSumRow?.CashAmount ? handleFormatNumber(exportSumRow?.CashAmount) : '0'} {exportSumRow?.MobilePayAmount ? handleFormatNumber(exportSumRow?.MobilePayAmount) : '0'} {exportSumRow?.RevenueAmount ? handleFormatNumber(exportSumRow?.RevenueAmount) : '0'} {exportSumRow?.amount ? handleFormatNumber(exportSumRow?.amount) : '0'} {exportSumRow?.RoyaltyAmount ? handleFormatNumber(exportSumRow?.RoyaltyAmount) : '0'} {exportSumRow?.GuaranteeFee ? handleFormatNumber(exportSumRow?.GuaranteeFee) : '0'} {/* {exportSumRow?.ReceivableAmount ? handleFormatNumber(exportSumRow?.ReceivableAmount) : '0'} */} {exportSumRow?.TotalFee ? handleFormatNumber(exportSumRow?.TotalFee) : '0'} {exportSumRow?.PaidFee ? handleFormatNumber(exportSumRow?.PaidFee) : '0'} {/* {exportSumRow?.PaidFee_9010 ? numeral(exportSumRow?.PaidFee_9010).format('0,0.00') : ''} {exportSumRow?.PaidFee_9020 ? numeral(exportSumRow?.PaidFee_9020).format('0,0.00') : ''} {exportSumRow?.PaidFee_9030 ? numeral(exportSumRow?.PaidFee_9030).format('0,0.00') : ''} {exportSumRow?.PaidFee_9050 ? numeral(exportSumRow?.PaidFee_9050).format('0,0.00') : ''} {exportSumRow?.PaidFee_9090 ? numeral(exportSumRow?.PaidFee_9090).format('0,0.00') : ''} {exportSumRow?.PaidFee_9099 ? numeral(exportSumRow?.PaidFee_9099).format('0,0.00') : ''} */} {exportSumRow?.ReductionAmount ? handleFormatNumber(exportSumRow?.ReductionAmount) : '0'} {exportSumRow?.RefundSupplement ? handleFormatNumber(exportSumRow?.RefundSupplement) : '0'} {exportSumRow?.desc} {`${new Date(parentRow?.CLOSED_DATE || parentRow?.ENDDATE).getTime() > new Date('2025-04-01 00:00:00').getTime() ? '运营管理子公司' : ''}财务部:`} {signature?.financeName || ''} {`${new Date(parentRow?.CLOSED_DATE || parentRow?.ENDDATE).getTime() > new Date('2025-04-01 00:00:00').getTime() ? '运营管理子公司运营服务部:' : '经发部:'}`} {signature?.developmentName || ''} {'中心主任:'} {signature?.directorName || ''} {'中心财务:'} {signature?.centralFinanceName || ''} {'中心经营主管:'} {signature?.operationsSuperName || ''} {'服务区经理:'} {signature?.areaManagerName || ''} {'商户确认:'} {signature?.confirmationName || ''} {'发起人:'} {signature?.developManagerName || ''} }} /> : '' }
{/*
{ return <> 结算期应扣费用 {deductibleData ? numeral(getMoney(deductibleData)).format('0,0.00') : ''} }} />
*/}
{ return `${record?.ShopRoyalty_Id}-${record?.PeriodIndexStr}-${record?.StartDate}-${record?.EndDate}-${record?.level}` }} ref={tableRef} actionRef={actionRef} formRef={formRef} columns={columns} bordered search={false} className={'detailTable'} rowClassName={(record) => { return currentApprovalstate >= 1 && record.garyRow ? 'garyRow' : '' }} loading={tableLoading} request={async (params: any) => { console.log('parentRow222222', parentRow); const resultList: any = await handleGetTableData(parentRow?.BUSINESSPROJECT_ID, parentRow?.SHOPROYALTY_ID, parentRow, afterCloseData.current) // const firstData: any = await handleGetTableData(parentRow?.BUSINESSPROJECT_ID, parentRow?.SHOPROYALTY_ID, parentRow) // console.log('firstData', firstData); // let req: any = {} // if (firstData.isShowClose) { // req = await handleCloseSettlement(firstData.data) // } else { // req = firstData.data // } // const resultList: any = await handleGetTableData(parentRow?.BUSINESSPROJECT_ID, parentRow?.SHOPROYALTY_ID, parentRow, req) // console.log('reqDetailListDetail222222', resultList); console.log('resultList3213123', resultList); if (resultList && resultList.length > 0) { // 现在变成表格数据的合计项必须是勾选了的才计算合计 那么从这开始计算的时候必须要给表格赋值新的值 let newList: any = [] // 用来算合计的实际勾选数据 const list: string[] = [] const res: any = [] // 导出结算明细表的数据 2024-11-04 const exportDetailList: any = [] // 当前状态 let currentState: any = '' // 需要先拿流程状态 if (parentRow?.BUSINESSAPPROVAL_ID) { const req: any = { BUSINESSAPPROVALId: parentRow?.BUSINESSAPPROVAL_ID } const BUSINESSAPPROVALData = await handleGetGetBUSINESSAPPROVALDetail(req) currentState = BUSINESSAPPROVALData?.BUSINESSAPPROVAL_STATE } resultList.forEach((item: any) => { console.log('item', item); if (item.PeriodDesc === '合计') { item.noSelect = true } else { if ((item.RefundSupplement === 0 || !item.RefundSupplement)) { let sum: number = 0 if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { sum += subItem.RefundSupplement }) } item.RefundSupplement = sum } newList.push(item) } // 如果是重新申请 即使有BUSINESSAPPROVAL_ID 也不能把装修期他们算进去 if (parentRow?.BUSINESSAPPROVAL_ID) { if (item.PeriodDesc !== '合计') { if (currentState === 1000) { // 默认选中 list.push(`${item?.ShopRoyalty_Id}-${item?.PeriodIndexStr}-${item?.StartDate}-${item?.EndDate}-${item?.level}`) res.push(item) if (item.PeriodIndex > 0) { item.noSelect = true } } else { if (item.isInitiated) { list.push(`${item?.ShopRoyalty_Id}-${item?.PeriodIndexStr}-${item?.StartDate}-${item?.EndDate}-${item?.level}`) res.push(item) item.noSelect = true } else { item.garyRow = true if (item.children && item.children.length > 0) { item.children.forEach((childrenItem: any) => { childrenItem.garyRow = true }) } item.noSelect = true } } } } else { // 默认选中 list.push(`${item?.ShopRoyalty_Id}-${item?.PeriodIndexStr}-${item?.StartDate}-${item?.EndDate}-${item?.level}`) res.push(item) if (item.PeriodIndex > 0) { item.noSelect = true } } if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { // 拿到结算明细excel的数据 只要子级的数据 2024-11-04 exportDetailList.push(subItem) subItem.noSelect = true // list.push(`${subItem?.ShopRoyalty_Id}-${subItem?.PeriodIndexStr}-${subItem?.StartDate}-${subItem?.EndDate}-${subItem?.level}`) }) } }) console.log('newList', newList); // 给表格添加新的合计项 但是需要已经勾选表格数据大于一条 if (list && list.length > 0) { newList = handleGetTableSum(newList, list) } console.log('newListnewListnewListnewList', newList); console.log('listdasdasda', list); console.log('resresresres', res); // 默认展开的有子级的数据 if (newList && newList.length > 0) { const defaultList: any = [] newList.forEach((item: any) => { if (item.PeriodDesc !== '合计') { defaultList.push(`${item?.ShopRoyalty_Id}-${item?.PeriodIndexStr}-${item?.StartDate}-${item?.EndDate}-${item?.level}`) } }) // 默认不展开 2024-11-05 // setDefaultSelectRow(defaultList) } console.log('newList', newList); setReqDetailListDetail(newList) // 默认选中行的具体数据 setSelectDetailList(res) setSelectRowKey(list) // 导出结算明细 的每一项数据 和计算合计 if (exportDetailList && exportDetailList.length > 0) { const printList: any = [] // 保底/固定租金合计 let MinturnOverSum: number = 0 // 现金 let CashAmountSum: number = 0 // 微支付 let MobilePayAmountSum: number = 0 // 小计 let RevenueAmountSum: number = 0 // 提成金额 let amountSum: number = 0 // 业主收款 let RoyaltyAmountSum: number = 0 // 应收租金 let GuaranteeFeeSum: number = 0 // 应收费用 let accountsReceivableSum: number = 0 let PaidFeeSum: number = 0 let PaidFee_9010Sum: number = 0 let PaidFee_9020Sum: number = 0 let PaidFee_9030Sum: number = 0 let PaidFee_9050Sum: number = 0 let PaidFee_9090Sum: number = 0 let PaidFee_9099Sum: number = 0 // 退补款 let RefundSupplementSum: number = 0 let ReceivableAmountSum: number = 0 let PropertyFeeSum: number = 0 let HouseRentSum: number = 0 let BreachPenaltySum: number = 0 let ElectricityChargeSum: number = 0 let WaterChargeSum: number = 0 let OtherFeeSum: number = 0 exportDetailList.forEach((item: any) => { ReceivableAmountSum += item.ReceivableAmount item.accountsReceivable = item.ReceivableAmount - item.GuaranteeFee item.amount = getMoney(item.RevenueAmount * (item.GuaranteeRatio / 100)) accountsReceivableSum += item.accountsReceivable amountSum += item.amount RoyaltyAmountSum += item.RoyaltyAmount MinturnOverSum += item.MinturnOver CashAmountSum += item.CashAmount MobilePayAmountSum += item.MobilePayAmount RevenueAmountSum += item.RevenueAmount GuaranteeFeeSum += item.GuaranteeFee RefundSupplementSum += item.RefundSupplement PaidFeeSum += item.PaidFee PaidFee_9010Sum += item.PaidFee_9010 PaidFee_9020Sum += item.PaidFee_9020 PaidFee_9030Sum += item.PaidFee_9030 PaidFee_9050Sum += item.PaidFee_9050 PaidFee_9090Sum += item.PaidFee_9090 PaidFee_9099Sum += item.PaidFee_9099 PropertyFeeSum += item.PropertyFee HouseRentSum += item.HouseRent BreachPenaltySum += item.BreachPenalty ElectricityChargeSum += item.ElectricityCharge WaterChargeSum += item.WaterCharge OtherFeeSum += item.OtherFee }) const sumObj: any = { MinturnOver: MinturnOverSum, CashAmount: CashAmountSum, MobilePayAmount: MobilePayAmountSum, RevenueAmount: RevenueAmountSum, GuaranteeFee: GuaranteeFeeSum, RefundSupplement: RefundSupplementSum, accountsReceivable: accountsReceivableSum, amount: amountSum, RoyaltyAmount: RoyaltyAmountSum, PaidFee: PaidFeeSum, PaidFee_9010: PaidFee_9010Sum, PaidFee_9020: PaidFee_9020Sum, PaidFee_9030: PaidFee_9030Sum, PaidFee_9050: PaidFee_9050Sum, PaidFee_9090: PaidFee_9090Sum, PaidFee_9099: PaidFee_9099Sum, PeriodDesc: '合计', desc: '不含装修期', PropertyFee: PropertyFeeSum, HouseRent: HouseRentSum, BreachPenalty: BreachPenaltySum, ElectricityCharge: ElectricityChargeSum, WaterCharge: WaterChargeSum, OtherFee: OtherFeeSum, ReceivableAmount: ReceivableAmountSum, } setPrintDetailTableData(exportDetailList) // exportDetailList.push(sumObj) setExportDetailTableData(exportDetailList) } } // 如果是第一次进入到页面 再判断是不是退场项目 是的话 就弹出询问的内容问它要不要进行退场结算 if (isFirst.current) { isFirst.current = false if (isYear && isShowClosebtn.current && parentRow?.PeriodClosed) { handleCloseSettlement(closeReqTableDataRef.current) } else if (isShowClosebtn.current && parentRow?.CLOSED_DATE && !isYear && parentRow?.PeriodClosed) { confirm({ title: '该项目为提前撤场项目,是否进行撤场结算?', icon: , async onOk() { handleCloseSettlement(closeReqTableDataRef.current) }, onCancel() { setShowCloseBtn(true) }, }); } // if (isShowClosebtn.current && parentRow?.PeriodClosed) { // // CLOSED_DATE // // 直接执行 不提示 // if (parentRow?.PeriodClosed) // handleCloseSettlement(closeReqTableDataRef.current) // // confirm({ // // title: '该项目为提前撤场项目,是否进行撤场结算?', // // icon: , // // async onOk() { // // console.log('isFirst', isFirst.current); // // console.log('closeReqTableDataRef', closeReqTableDataRef.current); // // handleCloseSettlement(closeReqTableDataRef.current) // // }, // // onCancel() { // // setShowCloseBtn(true) // // }, // // }); // } } const dataProject = await getProjectDetail(parentRow?.BUSINESSPROJECT_ID) setDataProjectDetail(dataProject) // if (parentRow?.BUSINESSAPPROVAL_ID) { // handleGetProcessProgress(parentRow?.BUSINESSAPPROVAL_ID) // } }} expandable={{ expandedRowKeys: defaultSelectRow, onExpand: (expanded, record) => { if (expanded) { if (defaultSelectRow && defaultSelectRow.length > 0) { setDefaultSelectRow([...defaultSelectRow, `${record?.ShopRoyalty_Id}-${record?.PeriodIndexStr}-${record?.StartDate}-${record?.EndDate}-${record?.level}`]); } else { setDefaultSelectRow([`${record?.ShopRoyalty_Id}-${record?.PeriodIndexStr}-${record?.StartDate}-${record?.EndDate}-${record?.level}`]); } } else { if (defaultSelectRow && defaultSelectRow.length > 0) { const nowData = defaultSelectRow?.reduce((p, c) => { if (c !== `${record?.ShopRoyalty_Id}-${record?.PeriodIndexStr}-${record?.StartDate}-${record?.EndDate}-${record?.level}`) { p.push(c); } return p; }, []); setDefaultSelectRow(nowData || []); } } } // defaultExpandAllRows: true, // defaultExpandedRowKeys: defaultSelectRow }} scroll={{ x: 'max-content' }} headerTitle={{`${parentRow?.MERCHANTS_NAME}-${parentRow?.SETTLEMENT_DATE ? `${moment(parentRow?.SETTLEMENT_DATE).format('YYYY')}年度` : ''}结算明细表`}} // 列表表头 dataSource={reqDetailListDetail} pagination={false} columnsState={{ value: columnsStateMap, onChange: setColumnsStateMap, }} toolbar={{ actions: [ , , <> { parentRow?.CLOSED_DATE || dataProjectDetail?.CLOSED_DATE ? 撤场时间:{parentRow?.CLOSED_DATE || dataProjectDetail?.CLOSED_DATE} : '' } { showCloseBtn ? { handleCloseSettlement(closeReqTableData) }} > : '' } , <> , <> {/* { parentRow?.BUSINESSAPPROVAL_ID && (progressDetail?.STAFF_ID === currentUser?.ID) ? : '' } */} , , , , <> { currentApprovalstate === 9 ? <> : '' } ] }} rowSelection={{ type: 'checkbox', ...modalRowSelection, }} > {/* 判断当期项目 是不是最后一期 是最后一期的话 就显示 历史期的数据 */} {/* */} { parentRow?.PROJECT_ENDDATE && parentRow?.ENDDATE && moment(parentRow?.PROJECT_ENDDATE).format('YYYY-MM-DD') === moment(parentRow?.ENDDATE).format('YYYY-MM-DD') && parentRow?.BUSINESSAPPROVAL_ID > 0 ? : "" } {/* 导出结算表 */} {/* 导出结算明细表 */} {/* { return <> {exportSumRow?.PeriodIndexStr} {exportSumRow?.MinturnOver ? numeral(exportSumRow?.MinturnOver).format('0,0') : ''} {exportSumRow?.CashAmount ? numeral(exportSumRow?.CashAmount).format('0,0.00') : ''} {exportSumRow?.MobilePayAmount ? numeral(exportSumRow?.MobilePayAmount).format('0,0.00') : ''} {exportSumRow?.RevenueAmount ? numeral(exportSumRow?.RevenueAmount).format('0,0.00') : ''} {exportSumRow?.amount ? numeral(exportSumRow?.amount).format('0,0.00') : ''} {exportSumRow?.RoyaltyAmount ? numeral(exportSumRow?.RoyaltyAmount).format('0,0.00') : ''} {exportSumRow?.GuaranteeFee ? numeral(exportSumRow?.GuaranteeFee).format('0,0.00') : ''} {exportSumRow?.accountsReceivable ? numeral(exportSumRow?.accountsReceivable).format('0,0.00') : ''} {exportSumRow?.PaidFee ? numeral(exportSumRow?.PaidFee).format('0,0.00') : ''} {exportSumRow?.PaidFee_9010 ? numeral(exportSumRow?.PaidFee_9010).format('0,0.00') : ''} {exportSumRow?.PaidFee_9020 ? numeral(exportSumRow?.PaidFee_9020).format('0,0.00') : ''} {exportSumRow?.PaidFee_9030 ? numeral(exportSumRow?.PaidFee_9030).format('0,0.00') : ''} {exportSumRow?.PaidFee_9050 ? numeral(exportSumRow?.PaidFee_9050).format('0,0.00') : ''} {exportSumRow?.PaidFee_9090 ? numeral(exportSumRow?.PaidFee_9090).format('0,0.00') : ''} {exportSumRow?.PaidFee_9099 ? numeral(exportSumRow?.PaidFee_9099).format('0,0.00') : ''} {exportSumRow?.RefundSupplement ? numeral(exportSumRow?.RefundSupplement).format('0,0.00') : ''} {exportSumRow?.desc} {/* {'财务部:'} {signature?.financeName || ''} {'经发部:'} {signature?.developmentName || ''} {'中心主任:'} {signature?.directorName || ''} {'中心财务:'} {signature?.centralFinanceName || ''} {'中心经营主管:'} {signature?.operationsSuperName || ''} {'服务区经理:'} {signature?.areaManagerName || ''} {'商户确认:'} {signature?.confirmationName || ''} {'发起人:'} {signature?.developManagerName || ''} */} {/* }} /> */} {/* 应缴费用明细表的抽屉 */} { // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭 setPayableDrawer(false); }} bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }} closable={false} destroyOnClose > {/* ...payableParams */} {/* 点击期限显示的分润报表 */} { // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭 setCurrentDetailRow(undefined); setShowDetail(false); }} bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }} closable={false} > {/* 抽屉打开时 加载项目详情组件 */} {showDetail && } {/* 上传附件的悬浮框 */} { showImgList && showImgList.length > 0 &&
{ setImagePreviewVisible(vis) }, current: previewIndex }}> { showImgList.map((n) => ) }
} { }} footer={false} destroyOnClose onCancel={() => { setShowUpLoadFile(false) }} > { await handleGetFile() return {} }} > { console.log('file', file); if (file.url.indexOf('.png') === -1 && file.url.indexOf('.jpg') === -1 && file.url.indexOf('.jpeg') === -1 && file.url.indexOf('.PNH') === -1 && file.url.indexOf('.JPG') === -1 && file.url.indexOf('.JPEG') === -1) { window.open(file.url); } else { if (fileList && fileList.length > 0) { const showFileList: any = [] fileList.forEach((item: any) => { if (item.url.indexOf('.png') !== -1 || item.url.indexOf('.jpg') !== -1 || item.url.indexOf('.jpeg') !== -1 || item.url.indexOf('.PNG') !== -1 || item.url.indexOf('.JPG') !== -1 || item.url.indexOf('.JPEG') !== -1) { showFileList.push(item) } }) console.log('showFileList', showFileList); let previewIndex: number = 0 if (showFileList && showFileList.length > 0) { showFileList.forEach((item: any, index: number) => { if (file.url === item.url) { previewIndex = index } }) } setPreviewIndex(previewIndex) setShowImgList(showFileList) setImagePreviewVisible(true) } } }, onChange: async (info: any) => { console.log('info', info); console.log('fileList', fileList); // 检查文件类型是否为图片 if (info.file.type && !info.file.type.startsWith("image/")) { message.error("只能上传图片文件!"); return; // 如果不是图片,直接返回,避免继续执行 } if (info.file.status === 'removed') { // 如果在待上传列表中找到,则说明当前图片没有上传服务器,可直接删除 const index = fileList.findIndex(n => n.uid === info.file.uid); // if (info.file?.status === "removed" && ) { // const newFileList = fileList.slice(); // newFileList.splice(index, 1); // setFileList(newFileList) // return // } confirm({ title: '确认删除该文件吗?', icon: , async onOk() { const deleteLoading = message.loading('正在删除...') const success = await deletePicture(info.file?.deletepath, info.file?.uid, '', '3000') deleteLoading() if (success) { const files = [...fileList] files.splice(index, 1) setFileList(files) } else { message.error("删除失败") } }, onCancel() { }, }); } else { if (info.fileList && info.fileList.length > 0) { const formData = new FormData(); info.fileList.forEach((item: any) => { if (item.status !== "done") { console.log('item', item); formData.append('files[]', item.originFileObj); // formData.append('ImageName', item.name); } }) formData.append('TableType', '1130'); formData.append('TableId', parentRow?.BUSINESSAPPROVAL_ID); const success = await uploadPicture(formData) console.log('success', success); if (success) { message.success("上传成功!") } await handleGetFile() } } } }} disabled={isChangeFile ? false : !((parentRow?.BUSINESSAPPROVAL_ID && progressDetail?.STAFF_ID === currentUser?.ID && currentApprovalstate !== 9))} buttonProps={{ style: { display: parentRow?.BUSINESSAPPROVAL_ID && (progressDetail?.STAFF_ID === currentUser?.ID) && currentApprovalstate !== 9 ? '' : 'none' } }} title={"上传年度结算单"} />
{ fileList && fileList.length > 0 ? fileList.map((item: any) => { return
{ item.IsImg ? : '' }
}) : '' }
{ fileList && fileList.length > 0 ? '' :
未有上传附件,需发起人进行附件上传,请联系{progressDetail?.STAFF_NAME}上传附件!
}
{/* 租金减免 */} { rentReductionFormRef.current?.validateFields().then(async (res: any) => { setTableLoading(true) console.log('res', res); setRentReductionLoading(true) const dateRanges: any = (res.dateRanges || []) .map((item) => item?.range) .filter(Boolean); console.log('最终未营业日期数组', dateRanges); const dateList: any = [] if (dateRanges && dateRanges.length > 0) { dateRanges.forEach((item: any) => { dateList.push({ StartDate: moment(item[0]._d).format('YYYY-MM-DD'), EndDate: moment(item[1]._d).format('YYYY-MM-DD'), ReductionType: 0 }) }) } const obj: any = closeReqTableDataRef.current.List[0] const req = { ...obj, ReductionList: dateList, ReductionAmount: res.ReductionAmount } console.log('req', req); const data = await handleRebuildReductionPeriod(req) setTableLoading(false) if (data.Result_Code === 100) { message.success(data.Result_Desc) setShowRentReduction(false) setRentReductionLoading(false) const result: any = wrapTreeNode([data.Result_Data]) result[0].PeriodDesc = '合计' console.log('resresresres31312', result); const resultList: any = [] const newDefaultSelectRow: string[] = [] const selectRow: string[] = [] if (result && result.length > 0) { result.forEach((item: any) => { item.level = 0 item.noSelect = true resultList.push(item) newDefaultSelectRow.push(`${item?.ShopRoyalty_Id}-${item?.PeriodIndexStr}-${item?.StartDate}-${item?.EndDate}-${item?.level}`) if (item.children && item.children.length > 0) { item.children.forEach((subItem: any) => { subItem.level = 1 selectRow.push(`${subItem?.ShopRoyalty_Id}-${subItem?.PeriodIndexStr}-${subItem?.StartDate}-${subItem?.EndDate}-${subItem?.level}`) resultList.push(subItem) }) } }) } console.log('resultList321321', resultList); console.log('parentRow', parentRow); console.log('defaultSelectRow', defaultSelectRow); console.log('newDefaultSelectRow', newDefaultSelectRow); setDefaultSelectRow([...newDefaultSelectRow]); setSelectRowKey([...selectRow]) setReqDetailListDetail(result) setSelectDetailList(result) // actionRef.current?.reload() } else { console.log('datadsadasd', data); message.error(data.Result_Desc) } }) }} confirmLoading={rentReductionLoading} destroyOnClose onCancel={() => { setShowRentReduction(false) setRentReductionLoading(false) }} > , }} copyIconProps={false} // 禁用复制按钮 deleteIconProps={false} actionGuard={{ beforeRemoveRow: async (index) => { if (index === 0) { return false; // 禁止删除第一条 } return true; }, }} > {(field, index, action) => ( {/* 时间范围选择器 */} ({ range: value })} /> {/* 删除按钮(只有非第一条时才显示) */} {index !== 0 && ( // 修改为 index !== 0 更符合语义 action.remove(index)} style={{ color: 'red', marginLeft: 8 }} rev={undefined} /> )} )} {/* */}
) } export default connect(({ user, }: ConnectState) => ({ currentUser: user.currentUser, }))(YearExamineDetailTable);