1654 lines
68 KiB
TypeScript
1654 lines
68 KiB
TypeScript
import React, { useRef } from "react";
|
||
import type { CurrentUser } from "umi";
|
||
import { connect } from "umi";
|
||
import numeral from 'numeral';
|
||
import type { ConnectState } from "@/models/connect";
|
||
import { useState } from "react";
|
||
import ProCard from "@ant-design/pro-card";
|
||
import { MenuFoldOutlined } from "@ant-design/icons";
|
||
import type { FormInstance } from "antd";
|
||
import { Modal, Popconfirm } from "antd";
|
||
import { Button, Drawer, message, Spin, Tree, Typography, Tooltip } from "antd";
|
||
import { getMoney, getServerpartTree, handleFormatNumber } from "@/services/options";
|
||
import useRequest from "@ahooksjs/use-request";
|
||
import ReactHTMLTableToExcel from "react-html-table-to-excel";
|
||
import moment from "moment";
|
||
import type { ActionType } from "@ant-design/pro-table";
|
||
import ProTable from "@ant-design/pro-table";
|
||
import { contractType } from "@/pages/contract/emun";
|
||
import session from "@/utils/session";
|
||
import { handleGetTableRevenueRecognition, handleGetTableRevenueRecognitionOtherData } from "@/pages/reports/ShopExpenseDetail/service";
|
||
import ProjectDetail from "@/pages/BussinessProject/detail";
|
||
import type { BusinessProjectModel } from "@/pages/BussinessProject/data";
|
||
import RevenueSecondList from "./components/RevenueSecondList";
|
||
import './style.less'
|
||
import { getProjectDetail } from "@/pages/reports/accountTable/service";
|
||
import RevenueList from "@/pages/BussinessProject/components/RevenueList";
|
||
import CompareList from "@/pages/reports/revenueConfirmation/components/compareList";
|
||
import { handleGetProjectPeriodIncome, handleStorageMonthProjectAccount } from "./components/service";
|
||
import { wrapTreeNode } from "@/utils/format";
|
||
import { handleGetSERVERPARTCRTList } from "@/pages/basicManage/costing/service";
|
||
import { handleHighPrecision } from "@/utils/utils";
|
||
import LeftSelectTree from "../settlementAccount/component/leftSelectTree";
|
||
|
||
const revenueConfirmation: React.FC<{ currentUser: CurrentUser }> = (props) => {
|
||
const { currentUser } = props
|
||
const actionRef = useRef<ActionType>();
|
||
const formRef = useRef<FormInstance>();
|
||
const downloadBtnRef = useRef<any>()
|
||
const { confirm } = Modal;
|
||
const [reqDetailList, setReqDetailList] = useState<any>(); // 合计项数据源
|
||
const [printOut, setPrintOut] = useState<any>(); // 打印数据的内容
|
||
// 树相关的属性和方法
|
||
// 选择的服务区
|
||
const [selectedId, setSelectedId] = useState<string>()
|
||
// 选择的片区
|
||
const [selectedAreaId, setSelectAreaId] = useState<string>()
|
||
const [collapsible, setCollapsible] = useState<boolean>(false)
|
||
const [treeView, setTreeView] = useState<any>()
|
||
// 是否显示打印的表格
|
||
const [showExportTable, setShowExportTable] = useState<boolean>(false)
|
||
// 统计月份
|
||
const [searchMonth, setSearchMonth] = useState<any>()
|
||
const [exportDate, setExportDate] = useState<any>()
|
||
const [currentRow, setCurrentRow] = useState<BusinessProjectModel | any>(undefined) // 选中的当前行
|
||
const [showDetail, setShowDetail] = useState<boolean>(false) // 是否显示详情
|
||
const [showMonthDetail, setShowMonthDetail] = useState<boolean>(false) // 是否显示详情
|
||
const [showMonthSecondDetail, setShowMonthSecondDetail] = useState<boolean>(false)
|
||
// 查询表格接口的时间
|
||
const [monthTime, setMonthTime] = useState<any>()
|
||
// 累计应确认收入 累计已确认收入 本月应确认 点击进入表格带上的时间
|
||
const [drawerSearchTime, setDrawerSearchTime] = useState<any>()
|
||
// 加载服务区树
|
||
const { loading: treeLoading, data: treeViews } = useRequest(async () => {
|
||
const data = await getServerpartTree(currentUser?.ProvinceCode, currentUser?.CityAuthority, true, true, true)
|
||
setTreeView(data)
|
||
return data
|
||
})
|
||
// 最近固化时间
|
||
const [otherData, setOtherData] = useState<any>()
|
||
const [columnsStateMap, setColumnsStateMap] = useState<any>({
|
||
CurMonthRevenue: { show: false }
|
||
})
|
||
// 导出的加载效果
|
||
const [showLoading, setShowLoading] = useState<boolean>(false)
|
||
|
||
const SETTLEMENT_MODESList = session.get('SETTLEMENT_MODESList')
|
||
const SETTLEMENT_MODESObj = session.get('SETTLEMENT_MODESObj')
|
||
const BUSINESSTYPEObj = session.get('BUSINESSTYPEObj')
|
||
// 导出表格的数据
|
||
const [exportTableData, setExportTableData] = useState<any>()
|
||
// 累计营业额和自然日报表对比的抽屉数据
|
||
const [compareCurrent, setCompareCurrent] = useState<any>()
|
||
// 累计营业额和自然日报表的抽屉是否显示
|
||
const [showCompareDrawer, setShowCompareDrawer] = useState<boolean>(false)
|
||
// 搜索参数
|
||
const [searchParams, setSearchParams] = useState<any>()
|
||
// 拿到列表最初始的数据 用户固化数据
|
||
const [defaultTableData, setDefaultTableData] = useState<any>()
|
||
// 判断是否有不一样的税率
|
||
const [differentRate, setDifferentRate] = useState<any>()
|
||
|
||
const columns: any = [
|
||
// {
|
||
// title:<div style={{textAlign:'center'}}>{'序号'}</div>,
|
||
// hideInSearch: true,
|
||
// dataIndex: 'index',
|
||
// width: 90,
|
||
// fixed:'left',
|
||
// align:'center',
|
||
// render:(_,record)=>{
|
||
// return record.index?record.index:''
|
||
// }
|
||
// },
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'门店名称'}</div>,
|
||
dataIndex: 'Name',
|
||
hideInSearch: true,
|
||
width: 280,
|
||
ellipsis: true,
|
||
fixed: 'left',
|
||
align: 'left',
|
||
render: (_, record) => {
|
||
return <a style={{ width: '200px', display: 'block', whiteSpace: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden', color: record?.BUSINESSPROJECT_ID ? '#1890ff' : '#000000', cursor: record?.BUSINESSPROJECT_ID ? 'pointer' : '' }} onClick={() => {
|
||
if (record?.BUSINESSPROJECT_ID) {
|
||
setCurrentRow(record)
|
||
setShowDetail(true)
|
||
}
|
||
}}>{record.Name}</a>
|
||
}
|
||
},
|
||
{
|
||
title: '统计时间',
|
||
dataIndex: 'search_months',
|
||
valueType: 'date',
|
||
initialValue: moment().subtract(1, 'months').format('YYYY-MM'),
|
||
search: {
|
||
transform: (value) => {
|
||
return {
|
||
MonthDate: moment(value).startOf("month").format('YYYY-MM'),
|
||
};
|
||
},
|
||
},
|
||
hideInTable: true,
|
||
fieldProps: {
|
||
picker: "month",
|
||
format: 'YYYY-MM',
|
||
}
|
||
},
|
||
{
|
||
title: '结算模式',
|
||
dataIndex: 'SettlementModes',
|
||
hideInTable: true,
|
||
hideInDescriptions: true,
|
||
valueType: 'select',
|
||
fieldProps: {
|
||
mode: 'multiple'
|
||
},
|
||
valueEnum: SETTLEMENT_MODESObj
|
||
// request: ()=>{
|
||
// return SETTLEMENT_MODESList
|
||
// }
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'经营商户'}</div>,
|
||
dataIndex: 'MERCHANTS_NAME',
|
||
align: 'left',
|
||
width: 200,
|
||
ellipsis: true,
|
||
},
|
||
{
|
||
title: "历史项目",
|
||
dataIndex: 'ShowHisProject',
|
||
valueType: "select",
|
||
valueEnum: {
|
||
"true": "包含",
|
||
"false": "不含",
|
||
},
|
||
initialValue: 'false',
|
||
hideInTable: true
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'合同起止日期'}</div>,
|
||
dataIndex: 'COMPACT_DATE',
|
||
align: 'left',
|
||
width: 200,
|
||
hideInSearch: true,
|
||
ellipsis: true,
|
||
render: (_, record) => {
|
||
return `${record?.COMPACT_STARTDATE ? moment(record?.COMPACT_STARTDATE).format('YYYY/MM/DD') : ''}${record?.COMPACT_ENDDATE ? `-${moment(record?.COMPACT_ENDDATE).format('YYYY/MM/DD')}` : ''}`
|
||
}
|
||
},
|
||
// {
|
||
// title:<div style={{textAlign:'center'}}>{'租金类别'}</div>,
|
||
// dataIndex: 'BusinessType',
|
||
// align:'left',
|
||
// hideInSearch: true,
|
||
// valueType: 'select',
|
||
// width: 90,
|
||
// valueEnum: BUSINESSTYPEObj
|
||
// },
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'结算模式'}</div>,
|
||
dataIndex: 'SettlementModes',
|
||
align: 'left',
|
||
hideInSearch: true,
|
||
valueType: 'select',
|
||
width: 90,
|
||
valueEnum: SETTLEMENT_MODESObj
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>切换日期</div>,
|
||
dataIndex: 'SwitchDate',
|
||
width: 110,
|
||
align: 'center',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.SwitchDate ? moment(record?.SwitchDate).format('YYYY-MM-DD') : '-'
|
||
}
|
||
},
|
||
{
|
||
title: '当年基础信息',
|
||
dataIndex: '',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'期数'}</div>,
|
||
dataIndex: 'IndexStr',
|
||
width: 90,
|
||
align: 'left',
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'履约保证金'}</div>,
|
||
dataIndex: 'SECURITYDEPOSIT',
|
||
width: 90,
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.SECURITYDEPOSIT ? numeral(record?.SECURITYDEPOSIT).format('0,0') : '-'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'期限'}</div>,
|
||
dataIndex: 'IndexDesc',
|
||
align: 'left',
|
||
width: 200,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'装修期'}</div>,
|
||
dataIndex: 'DecorateDesc',
|
||
align: 'left',
|
||
width: 180,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'保底/固定租金'}</div>,
|
||
dataIndex: 'RENTFEE',
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
width: 120,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'提成比例'}</div>,
|
||
dataIndex: 'GUARANTEERATIO',
|
||
align: 'right',
|
||
width: 100,
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record.GUARANTEERATIO ? `${record.GUARANTEERATIO}%` : '-'
|
||
}
|
||
},
|
||
]
|
||
},
|
||
{
|
||
title: '保底租金应确认收入',
|
||
dataIndex: '',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'税率'}</div>,
|
||
dataIndex: 'TaxRate',
|
||
align: 'right',
|
||
width: 100,
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const rightTaxRate = record?.errorTaxRate ? `${record?.errorTaxRate}%` : ''
|
||
return <div>
|
||
{
|
||
record?.isErrorTaxRate ?
|
||
<Tooltip title={rightTaxRate}>
|
||
<span style={{ color: 'red', marginRight: '4px' }}>!</span>
|
||
</Tooltip>
|
||
:
|
||
''
|
||
}
|
||
{record?.TaxRate ? `${record?.TaxRate}%` : '-'}
|
||
</div>
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'期收入'}</div>,
|
||
dataIndex: 'MINTURNOVER',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
width: 110,
|
||
valueType: 'digit',
|
||
render: (_, record) => {
|
||
const title: string = record?.RENTFEE ? `${record?.RENTFEE}(保底租金) /(1 ${record?.TaxRate ? `+${record?.TaxRate}%(税率)` : ''})` : ''
|
||
return record?.MINTURNOVER ?
|
||
<Tooltip title={title}>
|
||
<span>{numeral(record?.MINTURNOVER).format('0,0.00')}</span>
|
||
</Tooltip> : '-'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'月收入'}</div>,
|
||
dataIndex: 'MonthlyIncome',
|
||
align: 'right',
|
||
width: 100,
|
||
valueType: 'digit',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
// const title: string = `${record?.MINTURNOVER}(期收入) /12/(1 ${record?.TaxRate?`+${record?.TaxRate}%(税率)`:''})`
|
||
const title: string = `${record?.MINTURNOVER}(期收入) /12`
|
||
return record?.MonthlyIncome ? <Tooltip title={title}>
|
||
<span>{numeral(record?.MonthlyIncome).format('0,0.00')}</span>
|
||
</Tooltip> : '-'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计月数'}</div>,
|
||
dataIndex: 'MonthlyCount',
|
||
align: 'right',
|
||
width: 100,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计应确认收入(保底租金)'}</div>,
|
||
dataIndex: 'MonthlyTotalIncome',
|
||
align: 'right',
|
||
width: 200,
|
||
valueType: 'digit',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
// const title: string = `${record?.MonthlyIncome}(月收入) * ${record?.MonthlyCount}(累计月数)`
|
||
const title: string = `${record?.Remark}`
|
||
return record?.MonthlyTotalIncome && record?.BUSINESSPROJECT_ID ? <Tooltip title={title}>
|
||
<span>{record?.MonthlyTotalIncome ? numeral(record?.MonthlyTotalIncome).format('0,0.00') : '-'}</span>
|
||
</Tooltip> : record?.MonthlyTotalIncome ? numeral(record?.MonthlyTotalIncome).format('0,0.00') : '-'
|
||
}
|
||
},
|
||
]
|
||
},
|
||
{
|
||
title: '浮动提成应确认收入',
|
||
dataIndex: '',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'当月分润营业额'}</div>,
|
||
dataIndex: 'CurMonthRevenue',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计营业额'}</div>,
|
||
dataIndex: 'REVENUEDAILY_AMOUNTTotal',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.REVENUEDAILY_AMOUNTTotal ?
|
||
record?.BUSINESSPROJECT_ID ?
|
||
<a onClick={() => {
|
||
const obj: any = {
|
||
...record,
|
||
BUSINESSAPPROVAL_ID: record?.BusinessApprovalId
|
||
}
|
||
|
||
let [monthStartTime, monthEndTime] = record?.IndexDesc.split('-')
|
||
monthStartTime = moment(monthStartTime).format('YYYY-MM-DD')
|
||
monthEndTime = moment(monthEndTime).format('YYYY-MM-DD')
|
||
const startDate: any = moment(monthTime).startOf('months').format('YYYY-MM-DD')
|
||
const endDate: any = moment(monthTime).endOf('months').format('YYYY-MM-DD')
|
||
|
||
obj.startTime = monthStartTime
|
||
|
||
if (new Date(monthEndTime).getTime() < new Date(endDate).getTime()) {
|
||
obj.endTime = monthEndTime
|
||
} else {
|
||
obj.endTime = endDate
|
||
}
|
||
console.log('obj', obj)
|
||
setCompareCurrent(obj)
|
||
setShowCompareDrawer(true)
|
||
}}>{numeral(record?.REVENUEDAILY_AMOUNTTotal).format('0,0.00')}</a> : <span>{numeral(record?.REVENUEDAILY_AMOUNTTotal).format('0,0.00')}</span>
|
||
:
|
||
'-'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'自然日营收'}</div>,
|
||
dataIndex: 'DailyRevenueAmount',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return numeral(record?.DailyRevenueAmount).format('0,0.00')
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'营收差额'}</div>,
|
||
dataIndex: 'DiffRevenueAmount',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return numeral(record?.DiffRevenueAmount).format('0,0.00')
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'提成金额'}</div>,
|
||
dataIndex: 'GUARANTEERATIOAMOUNT',
|
||
width: 120,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = `分润营业额(${record.REVENUEDAILY_AMOUNTTotal}) * 提成比例(${record.GUARANTEERATIO ? `${record.GUARANTEERATIO}%` : ''})`
|
||
return record.GUARANTEERATIO ? <Tooltip title={title}>
|
||
<span>{numeral(record?.GUARANTEERATIOAMOUNT).format('0,0.00')}</span>
|
||
</Tooltip> : <span>{numeral(record?.GUARANTEERATIOAMOUNT).format('0,0.00')}</span>
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'提成收入'}</div>,
|
||
dataIndex: 'GUARANTEERATIOINCOME',
|
||
width: 120,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = `提成金额(${record.GUARANTEERATIOAMOUNT}) / 税(1 + ${numeral(record.TaxRate / 100).format('0.00')})`
|
||
return record.TaxRate ? <Tooltip title={title}>
|
||
<span>{numeral(record?.GUARANTEERATIOINCOME).format('0,0.00')}</span>
|
||
</Tooltip> : <span>{numeral(record?.GUARANTEERATIOINCOME).format('0,0.00')}</span>
|
||
}
|
||
},
|
||
]
|
||
},
|
||
{
|
||
title: '本月确认收入',
|
||
dataIndex: '',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计应确认收入'}</div>,
|
||
dataIndex: 'ROYALTYTHEORYMUST',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = record?.GUARANTEERATIOINCOME > record?.MonthlyTotalIncome ?
|
||
`${record?.GUARANTEERATIOINCOME}(提成收入)>${record?.MonthlyTotalIncome}(累计应确认收入)=${record?.GUARANTEERATIOINCOME}(提成收入)` :
|
||
`${record?.MonthlyTotalIncome}(累计应确认收入)>${record?.GUARANTEERATIOINCOME}(提成收入)=${record?.MonthlyTotalIncome}(累计应确认收入)`
|
||
return record?.ROYALTYTHEORYMUST && record?.BUSINESSPROJECT_ID ?
|
||
<Tooltip title={title}>
|
||
<a style={{ color: record?.BUSINESSPROJECT_ID ? '#1890ff' : '#000000' }} onClick={async () => {
|
||
if (record?.BUSINESSPROJECT_ID) {
|
||
const req = {
|
||
BusinessProjectId: record?.BUSINESSPROJECT_ID
|
||
}
|
||
const data = await getProjectDetail(req)
|
||
const obj: any = {
|
||
...record,
|
||
endTime: moment(monthTime).endOf('month').format('YYYY-MM-DD'),
|
||
startTime: '',
|
||
...data
|
||
}
|
||
setCurrentRow(obj);
|
||
setDrawerSearchTime(moment(monthTime).format('YYYYMM'))
|
||
// setShowMonthDetail(true);
|
||
setShowMonthSecondDetail(true);
|
||
}
|
||
}}>{record?.ROYALTYTHEORYMUST ? numeral(record?.ROYALTYTHEORYMUST).format('0,0.00') : '-'}</a>
|
||
</Tooltip>
|
||
: record?.ROYALTYTHEORYMUST ? numeral(record?.ROYALTYTHEORYMUST).format('0,0.00') : '-'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计已确认收入'}</div>,
|
||
dataIndex: 'ROYALTYTHEORYOK',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return <a style={{ color: record?.BUSINESSPROJECT_ID ? '#1890ff' : '#000000' }} onClick={async () => {
|
||
if (record?.BUSINESSPROJECT_ID) {
|
||
const req = {
|
||
BusinessProjectId: record?.BUSINESSPROJECT_ID
|
||
}
|
||
const data = await getProjectDetail(req)
|
||
const nowDay: any = moment(monthTime).endOf('month').format('YYYY-MM-DD')
|
||
const obj: any = {
|
||
...record,
|
||
endTime: moment(nowDay).subtract(1, 'months').endOf('month').format('YYYY-MM-DD'),
|
||
startTime: '',
|
||
...data
|
||
}
|
||
setCurrentRow(obj);
|
||
setDrawerSearchTime(moment(monthTime).subtract(1, 'months').format('YYYYMM'))
|
||
setShowMonthSecondDetail(true);
|
||
}
|
||
}}>{record?.ROYALTYTHEORYOK ? numeral(record?.ROYALTYTHEORYOK).format('0,0.00') : '-'}</a>
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'本月应确认'}</div>,
|
||
dataIndex: 'ROYALTYTHEORYMONTHLYMUST',
|
||
width: 110,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = `累计应确认收入(${record.ROYALTYTHEORYMUST}) - 累计已确认收入(${numeral(record?.ROYALTYTHEORYOK).format('0.00')})`
|
||
return <Tooltip title={title}><a style={{ color: record?.BUSINESSPROJECT_ID ? '#1890ff' : '#000000' }} onClick={async () => {
|
||
if (record?.BUSINESSPROJECT_ID) {
|
||
const req = {
|
||
BusinessProjectId: record?.BUSINESSPROJECT_ID
|
||
}
|
||
const data = await getProjectDetail(req)
|
||
const obj: any = {
|
||
...record,
|
||
endTime: moment(monthTime).endOf('month').format('YYYY-MM-DD'),
|
||
startTime: moment(monthTime).startOf('month').format('YYYY-MM-DD'),
|
||
...data
|
||
}
|
||
setCurrentRow(obj);
|
||
setDrawerSearchTime(moment(monthTime).format('YYYYMM'))
|
||
// setShowMonthDetail(true);
|
||
setShowMonthSecondDetail(true);
|
||
}
|
||
}}>{record?.ROYALTYTHEORYMONTHLYMUST ? numeral(record?.ROYALTYTHEORYMONTHLYMUST).format('0,0.00') : '-'}</a></Tooltip>
|
||
}
|
||
},
|
||
]
|
||
},
|
||
]
|
||
|
||
// 导出表格的columns
|
||
const exportColumns: any = [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'序号'}</div>,
|
||
hideInSearch: true,
|
||
dataIndex: 'index',
|
||
width: 90,
|
||
fixed: 'left',
|
||
align: 'center',
|
||
render: (_, record) => {
|
||
return record.index ? record.index : ''
|
||
}
|
||
},
|
||
{
|
||
title: '管理中心',
|
||
dataIndex: 'SPRegionType_Name',
|
||
hideInSearch: true,
|
||
align: 'center',
|
||
// render: (text, record, index) => {
|
||
// const obj = {
|
||
// children: text !== null ? text : '',
|
||
// props: {},
|
||
// };
|
||
// if (undefined !== text && '' !== text && text === '合计') {
|
||
// obj.props.colSpan = 8;
|
||
// }
|
||
// return obj;
|
||
// },
|
||
},
|
||
{
|
||
title: '服务区',
|
||
align: 'center',
|
||
dataIndex: 'Serverpart_Name',
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: '门店名称',
|
||
dataIndex: 'Name',
|
||
align: 'center',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.Name || record?.someName || '-'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'经营商户'}</div>,
|
||
dataIndex: 'MERCHANTS_NAME',
|
||
align: 'left',
|
||
width: 200,
|
||
ellipsis: true,
|
||
render: (_, record) => {
|
||
return record?.MERCHANTS_NAME || record?.sameMERCHANTS_NAME || '-'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'合同起止日期'}</div>,
|
||
dataIndex: 'COMPACT_DATE',
|
||
align: 'center',
|
||
width: 200,
|
||
hideInSearch: true,
|
||
ellipsis: true,
|
||
render: (_, record) => {
|
||
return `${record?.COMPACT_STARTDATE ? moment(record?.COMPACT_STARTDATE).format('YYYY/MM/DD') : ''}${record?.COMPACT_ENDDATE ? `-${moment(record?.COMPACT_ENDDATE).format('YYYY/MM/DD')}` : ''}`
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'结算模式'}</div>,
|
||
dataIndex: 'SettlementModes',
|
||
align: 'center',
|
||
hideInSearch: true,
|
||
valueType: 'select',
|
||
width: 90,
|
||
valueEnum: SETTLEMENT_MODESObj
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>切换日期</div>,
|
||
dataIndex: 'SwitchDate',
|
||
width: 110,
|
||
align: 'center',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.SwitchDate ? moment(record?.SwitchDate).format('YYYY-MM-DD') : '-'
|
||
}
|
||
},
|
||
{
|
||
title: '当年基础信息',
|
||
dataIndex: '',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'期数'}</div>,
|
||
dataIndex: 'IndexStr',
|
||
width: 90,
|
||
align: 'center',
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'履约保证金'}</div>,
|
||
dataIndex: 'SECURITYDEPOSIT',
|
||
width: 90,
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
// return record?.SECURITYDEPOSIT ? numeral(record?.SECURITYDEPOSIT).format('0,0') : '0'
|
||
return record?.SECURITYDEPOSIT ? handleFormatNumber(record?.SECURITYDEPOSIT) : '0.00'
|
||
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'期限'}</div>,
|
||
dataIndex: 'IndexDesc',
|
||
align: 'center',
|
||
width: 200,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'装修期'}</div>,
|
||
dataIndex: 'DecorateDesc',
|
||
align: 'center',
|
||
width: 180,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'保底/固定租金'}</div>,
|
||
dataIndex: 'RENTFEE',
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
width: 120,
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.RENTFEE ? handleFormatNumber(record?.RENTFEE) : '0.00'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'提成比例'}</div>,
|
||
dataIndex: 'GUARANTEERATIO',
|
||
align: 'center',
|
||
width: 100,
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record.GUARANTEERATIO ? `${record.GUARANTEERATIO}%` : '0'
|
||
}
|
||
},
|
||
]
|
||
},
|
||
{
|
||
title: '保底租金应确认收入',
|
||
dataIndex: '',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'税率'}</div>,
|
||
dataIndex: 'TaxRate',
|
||
align: 'center',
|
||
width: 100,
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return <span>{record?.TaxRate ? `${record?.TaxRate}%` : '-'}</span>
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'期收入'}</div>,
|
||
dataIndex: 'MINTURNOVER',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
width: 110,
|
||
valueType: 'digit',
|
||
render: (_, record) => {
|
||
return record?.MINTURNOVER ? handleFormatNumber(record?.MINTURNOVER) : '0.00'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'月收入'}</div>,
|
||
dataIndex: 'MonthlyIncome',
|
||
align: 'right',
|
||
width: 100,
|
||
valueType: 'digit',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
// const title: string = `${record?.MINTURNOVER}(期收入) /12/(1 ${record?.TaxRate?`+${record?.TaxRate}%(税率)`:''})`
|
||
const title: string = `${record?.MINTURNOVER}(期收入) /12`
|
||
return record?.MonthlyIncome ? <Tooltip title={title}>
|
||
{/* <span>{numeral(record?.MonthlyIncome).format('0,0.00')}</span> */}
|
||
<span>{record?.MonthlyIncome ? handleFormatNumber(record?.MonthlyIncome) : '0.00'}</span>
|
||
</Tooltip> : '0'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计月数'}</div>,
|
||
dataIndex: 'MonthlyCount',
|
||
align: 'right',
|
||
width: 100,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计应确认收入(保底租金)'}</div>,
|
||
dataIndex: 'MonthlyTotalIncome',
|
||
align: 'right',
|
||
width: 200,
|
||
valueType: 'digit',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
// const title: string = `${record?.MonthlyIncome}(月收入) * ${record?.MonthlyCount}(累计月数)`
|
||
const title: string = `${record?.Remark}`
|
||
return record?.MonthlyTotalIncome && record?.BUSINESSPROJECT_ID ? <Tooltip title={title}>
|
||
{/* <span>{numeral(record?.MonthlyTotalIncome).format('0,0.00')}</span> */}
|
||
<span>{record?.MonthlyTotalIncome ? handleFormatNumber(record?.MonthlyTotalIncome) : '0.00'}</span>
|
||
</Tooltip> : record?.MonthlyTotalIncome ?
|
||
<span>{record?.MonthlyTotalIncome ? handleFormatNumber(record?.MonthlyTotalIncome) : '0.00'}</span>
|
||
: '0'
|
||
}
|
||
},
|
||
]
|
||
},
|
||
{
|
||
title: '浮动提成应确认收入',
|
||
dataIndex: '',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'当月分润营业额'}</div>,
|
||
dataIndex: 'CurMonthRevenue',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.CurMonthRevenue ? handleFormatNumber(record?.CurMonthRevenue) : '0.00'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计营业额'}</div>,
|
||
dataIndex: 'REVENUEDAILY_AMOUNTTotal',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.REVENUEDAILY_AMOUNTTotal ? handleFormatNumber(record?.REVENUEDAILY_AMOUNTTotal) : '0.00'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'自然日营收'}</div>,
|
||
dataIndex: 'DailyRevenueAmount',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.DailyRevenueAmount ? handleFormatNumber(record?.DailyRevenueAmount) : '0.00'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'营收差额'}</div>,
|
||
dataIndex: 'DiffRevenueAmount',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.DiffRevenueAmount ? handleFormatNumber(record?.DiffRevenueAmount) : '0.00'
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'提成金额'}</div>,
|
||
dataIndex: 'GUARANTEERATIOAMOUNT',
|
||
width: 120,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = `分润营业额(${record.REVENUEDAILY_AMOUNTTotal}) * 提成比例(${record.GUARANTEERATIO ? `${record.GUARANTEERATIO}%` : ''})`
|
||
return record.GUARANTEERATIO ? <Tooltip title={title}>
|
||
<span>
|
||
{/* {numeral(record?.GUARANTEERATIOAMOUNT).format('0,0.00')} */}
|
||
{record?.GUARANTEERATIOAMOUNT ? handleFormatNumber(record?.GUARANTEERATIOAMOUNT) : '0.00'}
|
||
</span>
|
||
</Tooltip> : <span>
|
||
{/* {numeral(record?.GUARANTEERATIOAMOUNT).format('0,0.00')} */}
|
||
{record?.GUARANTEERATIOAMOUNT ? handleFormatNumber(record?.GUARANTEERATIOAMOUNT) : '0.00'}
|
||
</span>
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'提成收入'}</div>,
|
||
dataIndex: 'GUARANTEERATIOINCOME',
|
||
width: 120,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = `提成金额(${record.GUARANTEERATIOAMOUNT}) / 税(1 + ${numeral(record.TaxRate / 100).format('0.00')})`
|
||
return record.TaxRate ? <Tooltip title={title}>
|
||
<span>
|
||
{/* {numeral(record?.GUARANTEERATIOINCOME).format('0,0.00')} */}
|
||
{record?.GUARANTEERATIOINCOME ? handleFormatNumber(record?.GUARANTEERATIOINCOME) : '0.00'}
|
||
</span>
|
||
</Tooltip> : <span>
|
||
{/* {numeral(record?.GUARANTEERATIOINCOME).format('0,0.00')} */}
|
||
{record?.GUARANTEERATIOINCOME ? handleFormatNumber(record?.GUARANTEERATIOINCOME) : '0.00'}
|
||
</span>
|
||
}
|
||
},
|
||
]
|
||
},
|
||
{
|
||
title: '本月确认收入',
|
||
dataIndex: '',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
children: [
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计应确认收入'}</div>,
|
||
dataIndex: 'ROYALTYTHEORYMUST',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = record?.GUARANTEERATIOINCOME > record?.MonthlyTotalIncome ?
|
||
`${record?.GUARANTEERATIOINCOME}(提成收入)>${record?.MonthlyTotalIncome}(累计应确认收入)=${record?.GUARANTEERATIOINCOME}(提成收入)` :
|
||
`${record?.MonthlyTotalIncome}(累计应确认收入)>${record?.GUARANTEERATIOINCOME}(提成收入)=${record?.MonthlyTotalIncome}(累计应确认收入)`
|
||
return record?.ROYALTYTHEORYMUST && record?.BUSINESSPROJECT_ID ?
|
||
<Tooltip title={title}>
|
||
<a style={{ color: record?.BUSINESSPROJECT_ID ? '#1890ff' : '#000000' }} onClick={async () => {
|
||
if (record?.BUSINESSPROJECT_ID) {
|
||
const req = {
|
||
BusinessProjectId: record?.BUSINESSPROJECT_ID
|
||
}
|
||
const data = await getProjectDetail(req)
|
||
const obj: any = {
|
||
...record,
|
||
endTime: moment(monthTime).endOf('month').format('YYYY-MM-DD'),
|
||
startTime: '',
|
||
...data
|
||
}
|
||
setCurrentRow(obj);
|
||
setDrawerSearchTime(moment(monthTime).format('YYYYMM'))
|
||
// setShowMonthDetail(true);
|
||
setShowMonthSecondDetail(true);
|
||
}
|
||
}}>
|
||
{/* {record?.ROYALTYTHEORYMUST ? numeral(record?.ROYALTYTHEORYMUST).format('0,0.00') : '0'} */}
|
||
{record?.ROYALTYTHEORYMUST ? handleFormatNumber(record?.ROYALTYTHEORYMUST) : '0.00'}
|
||
</a>
|
||
</Tooltip>
|
||
:
|
||
record?.ROYALTYTHEORYMUST ? handleFormatNumber(record?.ROYALTYTHEORYMUST) : '0.00'
|
||
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'累计已确认收入'}</div>,
|
||
dataIndex: 'ROYALTYTHEORYOK',
|
||
width: 130,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return <a style={{ color: record?.BUSINESSPROJECT_ID ? '#1890ff' : '#000000' }} onClick={async () => {
|
||
if (record?.BUSINESSPROJECT_ID) {
|
||
const req = {
|
||
BusinessProjectId: record?.BUSINESSPROJECT_ID
|
||
}
|
||
const data = await getProjectDetail(req)
|
||
const nowDay: any = moment(monthTime).endOf('month').format('YYYY-MM-DD')
|
||
const obj: any = {
|
||
...record,
|
||
endTime: moment(nowDay).subtract(1, 'months').endOf('month').format('YYYY-MM-DD'),
|
||
startTime: '',
|
||
...data
|
||
}
|
||
setCurrentRow(obj);
|
||
setDrawerSearchTime(moment(monthTime).subtract(1, 'months').format('YYYYMM'))
|
||
setShowMonthSecondDetail(true);
|
||
}
|
||
}}>
|
||
{/* {record?.ROYALTYTHEORYOK ? numeral(record?.ROYALTYTHEORYOK).format('0,0.00') : '0'} */}
|
||
{record?.ROYALTYTHEORYOK ? handleFormatNumber(record?.ROYALTYTHEORYOK) : '0.00'}
|
||
</a>
|
||
}
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>{'本月应确认'}</div>,
|
||
dataIndex: 'ROYALTYTHEORYMONTHLYMUST',
|
||
width: 110,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
fixed: 'right',
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
const title: string = `累计应确认收入(${record.ROYALTYTHEORYMUST}) - 累计已确认收入(${numeral(record?.ROYALTYTHEORYOK).format('0.00')})`
|
||
return <Tooltip title={title}><a style={{ color: record?.BUSINESSPROJECT_ID ? '#1890ff' : '#000000' }} onClick={async () => {
|
||
if (record?.BUSINESSPROJECT_ID) {
|
||
const req = {
|
||
BusinessProjectId: record?.BUSINESSPROJECT_ID
|
||
}
|
||
const data = await getProjectDetail(req)
|
||
const obj: any = {
|
||
...record,
|
||
endTime: moment(monthTime).endOf('month').format('YYYY-MM-DD'),
|
||
startTime: moment(monthTime).startOf('month').format('YYYY-MM-DD'),
|
||
...data
|
||
}
|
||
setCurrentRow(obj);
|
||
setDrawerSearchTime(moment(monthTime).format('YYYYMM'))
|
||
// setShowMonthDetail(true);
|
||
setShowMonthSecondDetail(true);
|
||
}
|
||
}}>
|
||
{/* {record?.ROYALTYTHEORYMONTHLYMUST ? numeral(record?.ROYALTYTHEORYMONTHLYMUST).format('0,0.00') : '0'} */}
|
||
{record?.ROYALTYTHEORYMONTHLYMUST ? handleFormatNumber(record?.ROYALTYTHEORYMONTHLYMUST) : '0.00'}
|
||
</a></Tooltip>
|
||
}
|
||
},
|
||
]
|
||
},
|
||
]
|
||
|
||
// 导出excel方法
|
||
const exportTable = (e) => {
|
||
e.stopPropagation(); // 防止Collapse组件收起
|
||
const main = document.getElementsByClassName('revenueConfirmHideBox')[0]
|
||
const thead = main.querySelector('thead').cloneNode(true); // 深克隆DOM节点
|
||
const tbody = main.querySelector('tbody').cloneNode(true); // 深克隆DOM节点
|
||
const container = document.querySelector('#hiddenBox');
|
||
|
||
// 加个标题
|
||
const tableTop = document.createElement('div')
|
||
tableTop.innerText = `${searchParams?.MonthDate ? moment(searchParams?.MonthDate).format('YYYY年MM月') : ''}收入确认表`
|
||
tableTop.setAttribute('style', 'font-size:20px;font-weight:600;display:flex;width:100%;justify-content: center;text-align: center;');
|
||
|
||
const tempTable = document.createElement('table');
|
||
tempTable.appendChild(tableTop)
|
||
tempTable.appendChild(thead);
|
||
tempTable.appendChild(tbody);
|
||
|
||
tempTable.setAttribute('id', 'table-to-xls-revenueConfirm'); // 给table添加id,值与按钮上的table字段对应
|
||
|
||
container.appendChild(tempTable); // 把创建的节点添加到页面容器中
|
||
|
||
setShowLoading(false)
|
||
console.log('downloadBtnRef', downloadBtnRef);
|
||
|
||
downloadBtnRef.current.handleDownload();
|
||
setShowExportTable(false)
|
||
tempTable.remove() // 防止重复打印一个内容
|
||
}
|
||
|
||
// 重新刷新调用表格数据
|
||
const handleGetRefreshTableData = () => {
|
||
actionRef.current?.reload()
|
||
}
|
||
|
||
// compareList组件跳转月份的方法
|
||
const handleGetNewMonth = async (obj: any, time: any) => {
|
||
setShowCompareDrawer(false)
|
||
console.log('obj', obj);
|
||
console.log('time', time);
|
||
const req = {
|
||
BusinessProjectId: obj?.BUSINESSPROJECT_ID,
|
||
StatisticsMonth: moment(time).format('YYYYMM'),
|
||
ShopRoyaltyId: obj?.ShopRoyaltyId,
|
||
}
|
||
const data = await handleGetProjectPeriodIncome(req)
|
||
console.log('data', data);
|
||
if (data && data.length > 0) {
|
||
let obj: any = {}
|
||
data.forEach((item: any) => {
|
||
if (item.SHOPROYALTY_ID === obj?.ShopRoyaltyId) {
|
||
obj = item
|
||
}
|
||
})
|
||
let [monthStartTime, monthEndTime] = obj?.IndexDesc.split('-')
|
||
monthStartTime = moment(monthStartTime).format('YYYY-MM-DD')
|
||
monthEndTime = moment(monthEndTime).format('YYYY-MM-DD')
|
||
const startDate: any = moment(monthTime).startOf('months').format('YYYY-MM-DD')
|
||
const endDate: any = moment(monthTime).endOf('months').format('YYYY-MM-DD')
|
||
|
||
obj.startTime = monthStartTime
|
||
obj.STATISTICS_MONTH = time
|
||
if (new Date(monthEndTime).getTime() < new Date(endDate).getTime()) {
|
||
obj.endTime = monthEndTime
|
||
} else {
|
||
obj.endTime = endDate
|
||
}
|
||
setCompareCurrent(obj)
|
||
}
|
||
setShowCompareDrawer(true)
|
||
}
|
||
|
||
return (
|
||
<div ref={(el) => {
|
||
// 打印报表
|
||
if (!reqDetailList || reqDetailList.length === 0) return;
|
||
setPrintOut(el);
|
||
}}>
|
||
{
|
||
showLoading ?
|
||
<div
|
||
style={{
|
||
width: '100%',
|
||
height: '100%',
|
||
background: 'rgba(0,0,0,0.1)',
|
||
position: 'fixed',
|
||
zIndex: 5,
|
||
display: 'flex',
|
||
alignItems: 'center',
|
||
justifyContent: 'center'
|
||
}}
|
||
>
|
||
<div style={{
|
||
display: 'flex',
|
||
alignItems: 'center',
|
||
justifyContent: 'center',
|
||
padding: '15px 20px 10px',
|
||
background: '#fff',
|
||
borderRadius: '8px',
|
||
width: '200px'
|
||
}}>
|
||
<Spin />
|
||
<span style={{ marginLeft: '5px' }}>数据加载中...</span>
|
||
</div>
|
||
</div> : ''
|
||
}
|
||
|
||
<div className={'revenueConfirmHideBox'} style={{ position: 'fixed', zIndex: -1, top: 0, left: 0 }}>
|
||
{
|
||
showExportTable && exportTableData && exportTableData.length > 0 ?
|
||
<ProTable
|
||
columns={exportColumns}
|
||
dataSource={exportTableData}
|
||
pagination={false}
|
||
expandable={{
|
||
defaultExpandAllRows: true
|
||
}}
|
||
columnsState={{
|
||
value: columnsStateMap,
|
||
onChange: setColumnsStateMap,
|
||
}}
|
||
/> : ''
|
||
}
|
||
</div>
|
||
<div id='hiddenBox' style={{ position: 'fixed', zIndex: -1, top: 0, left: 0 }} />
|
||
<div style={{ backgroundColor: '#fff', display: 'flex' }}>
|
||
{/* <ProCard
|
||
style={{ width: !collapsible ? "300px" : "60px" }}
|
||
className="pageTable-leftnav"
|
||
bodyStyle={{ padding: 0, paddingTop: 20, paddingLeft: 20, width: !collapsible ? "300px" : "60px" }}
|
||
extra={<MenuFoldOutlined onClick={() => {
|
||
setCollapsible(!collapsible)
|
||
}} />}
|
||
colSpan={!collapsible ? "300px" : "60px"}
|
||
title={!collapsible ? "请选择服务区" : ""}
|
||
headerBordered
|
||
collapsed={collapsible}
|
||
>
|
||
{treeView && treeView.length > 0 ? <Tree
|
||
checkable
|
||
treeData={[{
|
||
label: '全部',
|
||
value: 0,
|
||
key: '0-0',
|
||
children: treeView
|
||
}]}
|
||
fieldNames={{
|
||
title: "label",
|
||
key: "key"
|
||
}}
|
||
blockNode
|
||
defaultExpandedKeys={['0-0']}
|
||
onCheck={(checkedKeys: React.Key[] | any, info) => {
|
||
|
||
const selectedIds = info.checkedNodes.filter(n => n?.type === 1)
|
||
const selectedAreaIds = info.checkedNodes.filter(n => n?.type === 0)
|
||
setSelectedId(selectedIds.map(n => n?.value)?.toString() || '')
|
||
console.log('selectedAreaIds', selectedAreaIds.map(n => n?.value)?.toString() || '');
|
||
setSelectAreaId(selectedAreaIds.map(n => n?.value)?.toString() || '')
|
||
// actionRef?.current?.reload()
|
||
// getData(selectedIds.map(n => n?.value)?.toString() || '')
|
||
}}
|
||
// switcherIcon={<PlusOutlined />}
|
||
/> : ''}
|
||
</ProCard> */}
|
||
<LeftSelectTree setSelectedId={setSelectedId} setCollapsible={setCollapsible} collapsible={collapsible} otherFun={(info: any) => {
|
||
const selectedIds = info.checkedNodes.filter(n => n?.type === 1)
|
||
const selectedAreaIds = info.checkedNodes.filter(n => n?.type === 0)
|
||
setSelectedId(selectedIds.map(n => n?.value)?.toString() || '')
|
||
setSelectAreaId(selectedAreaIds.map(n => n?.value)?.toString() || '')
|
||
}} />
|
||
|
||
<div style={{
|
||
width: !collapsible ? 'calc(100% - 300px)' : 'calc(100% - 60px)',
|
||
paddingTop: 0,
|
||
paddingBottom: 0,
|
||
paddingRight: 0
|
||
}}>
|
||
<ProTable
|
||
actionRef={actionRef}
|
||
formRef={formRef}
|
||
columns={columns}
|
||
bordered
|
||
rowKey={(record) => record?.Name + record?.Id + record?.IndexStr + record?.IndexDesc}
|
||
search={{ span: 6 }}
|
||
pagination={false}
|
||
scroll={{ x: 'max-content', y: 'calc(100vh - 470px)' }}
|
||
request={async (params: any) => {
|
||
if (!selectedId) {
|
||
setReqDetailList([])
|
||
return []
|
||
}
|
||
|
||
if (params.MonthDate) {
|
||
const date = new Date(params.MonthDate)
|
||
const y = date.getFullYear()
|
||
const m = date.getMonth() + 1
|
||
setSearchMonth(m)
|
||
setExportDate(`${y}年${m < 10 ? `0${m}` : m}月`)
|
||
setMonthTime(params.MonthDate)
|
||
}
|
||
console.log('params', params);
|
||
|
||
setSearchParams(params)
|
||
// let SETTLEMENT_MODESSTR: string = ''
|
||
// if (params.SETTLEMENT_MODES && params.SETTLEMENT_MODES.length > 0) {
|
||
// params.SETTLEMENT_MODES.forEach((item: any) => {
|
||
// if (SETTLEMENT_MODESSTR) {
|
||
// SETTLEMENT_MODESSTR += `,${item}`
|
||
// } else {
|
||
// SETTLEMENT_MODESSTR = item
|
||
// }
|
||
// })
|
||
// }
|
||
|
||
// 是否只选择了一个服务区
|
||
let isOneServerPart: boolean = false
|
||
// 是否只选择了一个片区
|
||
let isOneArea: boolean = false
|
||
|
||
|
||
if (selectedId.indexOf(',') === -1) {
|
||
isOneServerPart = true
|
||
}
|
||
console.log('selectedAreaId', selectedAreaId);
|
||
|
||
if (selectedAreaId && selectedAreaId.indexOf(',') === -1) {
|
||
isOneArea = true
|
||
}
|
||
|
||
|
||
const req = {
|
||
ServerpartIds: selectedId,
|
||
SETTLEMENT_MODES: params?.SettlementModes && params?.SettlementModes.length > 0 ? params?.SettlementModes.toString() : "",
|
||
startDate: params.MonthDate ? moment(params.MonthDate).format('YYYYMM') : '',
|
||
endDate: params.MonthDate ? moment(params.MonthDate).format('YYYYMM') : '',
|
||
keyword: params.MERCHANTS_NAME,
|
||
SolidType: true,
|
||
ShowHisProject: params?.ShowHisProject === 'true' ? true : params?.ShowHisProject === 'false' ? false : ''
|
||
}
|
||
const res = await handleGetTableRevenueRecognitionOtherData(req)
|
||
console.log('res', res)
|
||
setOtherData(res.OtherData)
|
||
const data = res.List
|
||
setDefaultTableData(data)
|
||
if (data && data.length > 0) {
|
||
// 拿到所有服务区的税率
|
||
const taxRate: any = await handleGetSERVERPARTCRTList({
|
||
SearchParameter: {
|
||
},
|
||
PageIndex: 1,
|
||
PageSize: 999999
|
||
})
|
||
|
||
console.log('taxRate', taxRate);
|
||
const taxRateObj: any = {}
|
||
if (taxRate && taxRate.length > 0) {
|
||
taxRate.forEach((item: any) => {
|
||
taxRateObj[item.SERVERPART_ID] = item.ACCOUNTTAX
|
||
})
|
||
}
|
||
const list: any = JSON.parse(JSON.stringify(wrapTreeNode(data)))
|
||
console.log('list', list);
|
||
console.log('taxRateObj', taxRateObj);
|
||
|
||
// 下面处理的各种东西太多了 把判断税率是否正确 放在上面 多遍历一遍
|
||
list.forEach((item: any) => {
|
||
if (item.children && item.children.length > 0) {
|
||
item.children.forEach((subItem: any) => {
|
||
if (subItem.children && subItem.children.length > 0) {
|
||
subItem.children.forEach((thirdItem: any) => {
|
||
if (taxRateObj[Number(thirdItem.SERVERPART_ID)]) {
|
||
// 正确的税率值
|
||
const right: any = taxRateObj[Number(thirdItem.SERVERPART_ID)]
|
||
thirdItem.isErrorTaxRate = Number(thirdItem.TaxRate) !== Number(right)
|
||
thirdItem.errorTaxRate = Number(right)
|
||
if (thirdItem.isErrorTaxRate) {
|
||
item.isErrorTaxRate = true
|
||
subItem.isErrorTaxRate = true
|
||
setDifferentRate(true)
|
||
}
|
||
subItem.TaxRate = Number(right)
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
})
|
||
|
||
// 当一行数据和上一行的数据 是同一个项目时 省略不显示重复的数据
|
||
list.forEach((item: any) => {
|
||
if (item.children && item.children.length > 0) {
|
||
item.children.forEach((subItem: any) => {
|
||
if (subItem.children && subItem.children.length > 0) {
|
||
// 当一行数据和上一行的数据 是同一个项目时 省略不显示重复的数据
|
||
for (let i = 0; i <= subItem.children.length; i++) {
|
||
if (i >= 1) {
|
||
if (subItem.children[i] && subItem.children[i - 1]) {
|
||
if (subItem.children[i].BUSINESSPROJECT_ID === subItem.children[i - 1].BUSINESSPROJECT_ID) {
|
||
subItem.children[i].someName = subItem.children[i].Name
|
||
subItem.children[i].Name = ''
|
||
subItem.children[i].sameMERCHANTS_NAME = subItem.children[i].MERCHANTS_NAME
|
||
subItem.children[i].MERCHANTS_NAME = ''
|
||
subItem.children[i].BusinessType = ''
|
||
subItem.children[i].indexFlag = true
|
||
if (subItem.children[i].SECURITYDEPOSIT === subItem.children[i - 1].SECURITYDEPOSIT) {
|
||
subItem.children[i].SECURITYDEPOSIT = ''
|
||
}
|
||
if (subItem.children[i].RENTFEE === subItem.children[i - 1].RENTFEE) {
|
||
subItem.children[i].RENTFEE = ''
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
let index: number = 1
|
||
// 加序号 同一个项目算一个
|
||
subItem.children.forEach((thirdItem: any) => {
|
||
if (!thirdItem.indexFlag) {
|
||
thirdItem.SERVERPART_ID = subItem.Id
|
||
thirdItem.index = index++
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
})
|
||
|
||
setReqDetailList(list)
|
||
|
||
const exportList: any = []
|
||
if (list && list.length > 0) {
|
||
let index: number = 1
|
||
list.forEach((item: any) => {
|
||
if (item.children && item.children.length > 0) {
|
||
item.children.forEach((subItem: any) => {
|
||
if (subItem.children && subItem.children.length > 0) {
|
||
subItem.children.forEach((thirdItem: any) => {
|
||
thirdItem.SPRegionType_Name = item.Name
|
||
thirdItem.Serverpart_Name = subItem.Name
|
||
thirdItem.index = index
|
||
exportList.push(thirdItem)
|
||
index++
|
||
})
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
console.log('exportList', exportList);
|
||
if (exportList && exportList.length > 0) {
|
||
const exportRes: any = JSON.parse(JSON.stringify(exportList))
|
||
// 期收入
|
||
let MINTURNOVERSUM: number = 0
|
||
// 月收入
|
||
let MonthlyIncomeSum: number = 0
|
||
// 累计应确认收入(保底租金)
|
||
let MonthlyTotalIncomeSUM: number = 0
|
||
// 累计营业额
|
||
let REVENUEDAILY_AMOUNTTotalSUM: number = 0
|
||
// 提成金额
|
||
let GUARANTEERATIOAMOUNTSUM: number = 0
|
||
// 提成收入
|
||
let GUARANTEERATIOINCOMESUM: number = 0
|
||
// 累计应确认收入
|
||
let ROYALTYTHEORYMUSTSUM: number = 0
|
||
// 累计已确认收入
|
||
let ROYALTYTHEORYOKSUM: number = 0
|
||
// 本月应确认
|
||
let ROYALTYTHEORYMONTHLYMUSTSUM: number = 0
|
||
// 自然日营收合计
|
||
let DailyRevenueAmountSum: number = 0
|
||
// 营收差额合计
|
||
let DiffRevenueAmountSum: number = 0
|
||
exportList.forEach((item: any) => {
|
||
MINTURNOVERSUM += item.MINTURNOVER * 100
|
||
MonthlyTotalIncomeSUM += item.MonthlyTotalIncome * 100
|
||
REVENUEDAILY_AMOUNTTotalSUM += item.REVENUEDAILY_AMOUNTTotal * 100
|
||
GUARANTEERATIOAMOUNTSUM += item.GUARANTEERATIOAMOUNT * 100
|
||
GUARANTEERATIOINCOMESUM += item.GUARANTEERATIOINCOME * 100
|
||
ROYALTYTHEORYMUSTSUM += item.ROYALTYTHEORYMUST * 100
|
||
ROYALTYTHEORYOKSUM += item.ROYALTYTHEORYOK * 100
|
||
ROYALTYTHEORYMONTHLYMUSTSUM += item.ROYALTYTHEORYMONTHLYMUST * 100
|
||
DailyRevenueAmountSum += item.DailyRevenueAmount * 100
|
||
DiffRevenueAmountSum += item.DiffRevenueAmount * 100
|
||
MonthlyIncomeSum += item.MonthlyIncome * 100
|
||
})
|
||
|
||
exportRes.forEach((item: any) => {
|
||
item.SPRegionType_Name = item.SPRegionType_Name.split('管理中心')[0]
|
||
item.Serverpart_Name = item.Serverpart_Name.split('服务区')[0]
|
||
})
|
||
|
||
exportRes.push({
|
||
SPRegionType_Name: '合计',
|
||
MINTURNOVER: handleHighPrecision(MINTURNOVERSUM),
|
||
MonthlyTotalIncome: handleHighPrecision(MonthlyTotalIncomeSUM),
|
||
REVENUEDAILY_AMOUNTTotal: handleHighPrecision(REVENUEDAILY_AMOUNTTotalSUM),
|
||
GUARANTEERATIOAMOUNT: handleHighPrecision(GUARANTEERATIOAMOUNTSUM),
|
||
GUARANTEERATIOINCOME: handleHighPrecision(GUARANTEERATIOINCOMESUM),
|
||
ROYALTYTHEORYMUST: handleHighPrecision(ROYALTYTHEORYMUSTSUM),
|
||
ROYALTYTHEORYOK: handleHighPrecision(ROYALTYTHEORYOKSUM),
|
||
ROYALTYTHEORYMONTHLYMUST: handleHighPrecision(ROYALTYTHEORYMONTHLYMUSTSUM),
|
||
DailyRevenueAmount: handleHighPrecision(DailyRevenueAmountSum),
|
||
DiffRevenueAmount: handleHighPrecision(DiffRevenueAmountSum),
|
||
MonthlyIncome: handleHighPrecision(MonthlyIncomeSum)
|
||
})
|
||
console.log('exportRes', exportRes);
|
||
|
||
setExportTableData(exportRes)
|
||
} else {
|
||
setExportTableData([])
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
console.log('isOneServerPart', isOneServerPart);
|
||
console.log('isOneArea', isOneArea);
|
||
const res: any = []
|
||
if (isOneServerPart) {
|
||
list.forEach((item: any) => {
|
||
if (item.children && item.children.length > 0) {
|
||
item.children.forEach((subItem: any) => {
|
||
res.push(subItem)
|
||
})
|
||
}
|
||
})
|
||
console.log('setExportTableData1', res);
|
||
|
||
return { data: res, success: true }
|
||
}
|
||
if (!isOneArea) {
|
||
console.log('list', list);
|
||
if (list && list.length > 0) {
|
||
// 期收入
|
||
let MINTURNOVERSUM: number = 0
|
||
// 累计应确认收入(保底租金)
|
||
let MonthlyTotalIncomeSUM: number = 0
|
||
// 累计营业额
|
||
let REVENUEDAILY_AMOUNTTotalSUM: number = 0
|
||
// 提成金额
|
||
let GUARANTEERATIOAMOUNTSUM: number = 0
|
||
// 提成收入
|
||
let GUARANTEERATIOINCOMESUM: number = 0
|
||
// 累计应确认收入
|
||
let ROYALTYTHEORYMUSTSUM: number = 0
|
||
// 累计已确认收入
|
||
let ROYALTYTHEORYOKSUM: number = 0
|
||
// 本月应确认
|
||
let ROYALTYTHEORYMONTHLYMUSTSUM: number = 0
|
||
// 自然日营收合计
|
||
let DailyRevenueAmountSum: number = 0
|
||
// 营收差额合计
|
||
let DiffRevenueAmountSum: number = 0
|
||
list.forEach((item: any) => {
|
||
MINTURNOVERSUM += item.MINTURNOVER * 100
|
||
MonthlyTotalIncomeSUM += item.MonthlyTotalIncome * 100
|
||
REVENUEDAILY_AMOUNTTotalSUM += item.REVENUEDAILY_AMOUNTTotal * 100
|
||
GUARANTEERATIOAMOUNTSUM += item.GUARANTEERATIOAMOUNT * 100
|
||
GUARANTEERATIOINCOMESUM += item.GUARANTEERATIOINCOME * 100
|
||
ROYALTYTHEORYMUSTSUM += item.ROYALTYTHEORYMUST * 100
|
||
ROYALTYTHEORYOKSUM += item.ROYALTYTHEORYOK * 100
|
||
ROYALTYTHEORYMONTHLYMUSTSUM += item.ROYALTYTHEORYMONTHLYMUST * 100
|
||
DailyRevenueAmountSum += item.DailyRevenueAmount * 100
|
||
DiffRevenueAmountSum += item.DiffRevenueAmount * 100
|
||
})
|
||
list.unshift({
|
||
Name: '合计',
|
||
MINTURNOVER: handleHighPrecision(MINTURNOVERSUM),
|
||
MonthlyTotalIncome: handleHighPrecision(MonthlyTotalIncomeSUM),
|
||
REVENUEDAILY_AMOUNTTotal: handleHighPrecision(REVENUEDAILY_AMOUNTTotalSUM),
|
||
GUARANTEERATIOAMOUNT: handleHighPrecision(GUARANTEERATIOAMOUNTSUM),
|
||
GUARANTEERATIOINCOME: handleHighPrecision(GUARANTEERATIOINCOMESUM),
|
||
ROYALTYTHEORYMUST: handleHighPrecision(ROYALTYTHEORYMUSTSUM),
|
||
ROYALTYTHEORYOK: handleHighPrecision(ROYALTYTHEORYOKSUM),
|
||
ROYALTYTHEORYMONTHLYMUST: handleHighPrecision(ROYALTYTHEORYMONTHLYMUSTSUM),
|
||
DailyRevenueAmount: handleHighPrecision(DailyRevenueAmountSum),
|
||
DiffRevenueAmount: handleHighPrecision(DiffRevenueAmountSum)
|
||
})
|
||
console.log('setExportTableData2', list);
|
||
return { data: list, success: true }
|
||
}
|
||
}
|
||
|
||
console.log('setExportTableData3', list);
|
||
|
||
return { data: list, success: true }
|
||
}
|
||
|
||
// 都没数据 那导出也没数据
|
||
setExportTableData([])
|
||
return { data: [], success: true }
|
||
}}
|
||
headerTitle={<span style={{ color: "#1890ff", fontSize: 14, fontWeight: 600 }}>{`分账收银收入确认表(${searchMonth || '-'}月)`}</span>} // 列表表头
|
||
columnsState={{
|
||
value: columnsStateMap,
|
||
onChange: setColumnsStateMap,
|
||
}}
|
||
toolbar={{
|
||
actions: [
|
||
<span style={{ visibility: 'hidden' }}>
|
||
<ReactHTMLTableToExcel
|
||
buttonText={'导出excel'}
|
||
ref={downloadBtnRef}
|
||
table="table-to-xls-revenueConfirm"
|
||
filename={`分账收银收入确认表(${searchMonth || '-'}月)_${moment().format('YYYY_MM_DD')}`}
|
||
sheet="sheet1"
|
||
/>
|
||
</span>,
|
||
<Typography.Text type="secondary">单位:元</Typography.Text>,
|
||
<>
|
||
{
|
||
otherData ?
|
||
<Typography.Text type="secondary" > 固化时间:{moment(otherData).format('YYYY-MM-DD')} </Typography.Text>
|
||
: ''
|
||
}
|
||
</>,
|
||
|
||
<>
|
||
{/* 只八月显示 */}
|
||
{
|
||
moment(searchParams?.MonthDate || '').format('YYYYMM') === moment().subtract(1, 'day').subtract(1, 'm').format('YYYYMM') ?
|
||
<Popconfirm title={'确认要固化数据?'} onConfirm={async () => {
|
||
if (differentRate) {
|
||
confirm({
|
||
width: 500,
|
||
content: '请检查税率是否一致',
|
||
onOk: async () => {
|
||
if (defaultTableData && defaultTableData.length > 0) {
|
||
const req: any = defaultTableData
|
||
setShowLoading(true)
|
||
const data = await handleStorageMonthProjectAccount(req)
|
||
if (data.Result_Code == 100) {
|
||
message.success(data.Result_Desc)
|
||
} else {
|
||
message.error(data.Result_Desc)
|
||
}
|
||
setShowLoading(false)
|
||
} else {
|
||
message.error('请先查询数据需要固化的数据!')
|
||
}
|
||
}
|
||
})
|
||
} else {
|
||
if (defaultTableData && defaultTableData.length > 0) {
|
||
const req: any = defaultTableData
|
||
setShowLoading(true)
|
||
const data = await handleStorageMonthProjectAccount(req)
|
||
if (data.Result_Code == 100) {
|
||
message.success(data.Result_Desc)
|
||
} else {
|
||
message.error(data.Result_Desc)
|
||
}
|
||
setShowLoading(false)
|
||
} else {
|
||
message.error('请先查询数据需要固化的数据!')
|
||
}
|
||
}
|
||
|
||
|
||
}}>
|
||
<Button type="primary">固化数据</Button>
|
||
</Popconfirm> : ''
|
||
}
|
||
|
||
</>
|
||
,
|
||
<Button
|
||
key="new"
|
||
type="primary"
|
||
onClick={(e) => {
|
||
if (exportTableData && exportTableData.length > 0) {
|
||
setShowLoading(true)
|
||
setTimeout(() => {
|
||
setShowExportTable(true)
|
||
setTimeout(() => {
|
||
exportTable(e)
|
||
}, 100)
|
||
}, 100)
|
||
} else {
|
||
message.error('暂无数据可导出!')
|
||
}
|
||
}}
|
||
>
|
||
导出excel
|
||
</Button>
|
||
]
|
||
}}
|
||
>
|
||
</ProTable>
|
||
</div>
|
||
</div >
|
||
{/* 查看项目详情 右侧弹出的抽屉 */}
|
||
< Drawer
|
||
width="80%"
|
||
className="project-drawer"
|
||
visible={showDetail} // 抽屉弹框是否显示状态
|
||
onClose={() => { // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭
|
||
setCurrentRow(undefined);
|
||
setShowDetail(false);
|
||
}}
|
||
bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }}
|
||
closable={false}
|
||
>
|
||
{/* 抽屉打开时 加载项目详情组件 */}
|
||
{showDetail && <ProjectDetail id={currentRow?.BUSINESSPROJECT_ID} showType={'edit'}></ProjectDetail>}
|
||
</Drawer >
|
||
|
||
{/* 月度信息抽屉 */}
|
||
< Drawer
|
||
width="80%"
|
||
className="project-drawer"
|
||
visible={showMonthDetail} // 抽屉弹框是否显示状态
|
||
onClose={() => { // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭
|
||
setCurrentRow(undefined);
|
||
setShowMonthDetail(false);
|
||
}}
|
||
bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }}
|
||
closable={false}
|
||
>
|
||
{/* 抽屉打开时 加载项目详情组件 */}
|
||
{
|
||
showMonthDetail && <RevenueList BusinessProjectId={currentRow.BUSINESSPROJECT_ID} propsBP={currentRow} propsRC={currentRow}
|
||
ShopRoyaltyId={currentRow?.ShopRoyaltyId ? currentRow?.ShopRoyaltyId : 0}
|
||
ShopIds={currentRow?.SERVERPARTSHOP_ID ? currentRow?.SERVERPARTSHOP_ID : ''}
|
||
StartDate={currentRow?.startTime ? moment(currentRow?.startTime).format('YYYY-MM-DD') : ''}
|
||
EndDate={moment(currentRow?.endTime).format('YYYY-MM-DD')}
|
||
isComeRevenueConfirm={Boolean(currentRow?.TaxRate)}></RevenueList>
|
||
}
|
||
</Drawer >
|
||
|
||
{/* 月度信息抽屉 */}
|
||
< Drawer
|
||
width="80%"
|
||
className="project-drawer"
|
||
visible={showMonthSecondDetail} // 抽屉弹框是否显示状态
|
||
onClose={() => { // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭
|
||
setCurrentRow(undefined);
|
||
setDrawerSearchTime(undefined)
|
||
setShowMonthSecondDetail(false);
|
||
}}
|
||
bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }}
|
||
closable={false}
|
||
>
|
||
{/* 抽屉打开时 加载项目详情组件 */}
|
||
{
|
||
showMonthSecondDetail && <RevenueSecondList BusinessProjectId={currentRow.BUSINESSPROJECT_ID} propsBP={currentRow} propsRC={currentRow}
|
||
ShopRoyaltyId={currentRow?.ShopRoyaltyId ? currentRow?.ShopRoyaltyId : 0}
|
||
ShopIds={currentRow?.SERVERPARTSHOP_ID ? currentRow?.SERVERPARTSHOP_ID : ''}
|
||
StartDate={currentRow?.startTime ? moment(currentRow?.startTime).format('YYYY-MM-DD') : ''}
|
||
EndDate={moment(currentRow?.endTime).format('YYYY-MM-DD')}
|
||
isComeRevenueConfirm={Boolean(currentRow?.TaxRate)} monthTime={drawerSearchTime}
|
||
isHideDescriptions={true}></RevenueSecondList>
|
||
}
|
||
</Drawer >
|
||
|
||
|
||
{/* 营业额和自然日报表的对比抽屉 */}
|
||
< Drawer
|
||
width="80%"
|
||
className="project-drawer"
|
||
visible={showCompareDrawer} // 抽屉弹框是否显示状态
|
||
onClose={() => { // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭
|
||
setCompareCurrent(undefined)
|
||
setShowCompareDrawer(false);
|
||
}}
|
||
bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }}
|
||
closable={false}
|
||
>
|
||
{showCompareDrawer && <CompareList type={'revenueConfirmation'} handleGetNewMonth={handleGetNewMonth} setShowCompareDrawer={setShowCompareDrawer} fatherActionRef={actionRef} showCompareDrawer={showCompareDrawer} compareCurrent={compareCurrent} onlyRead={compareCurrent?.Approvalstate > 0} monthTime={monthTime} handleGetRefreshTableData={handleGetRefreshTableData} />}
|
||
</Drawer >
|
||
</div >
|
||
)
|
||
}
|
||
|
||
export default connect(({ user }: ConnectState) => ({
|
||
currentUser: user.currentUser
|
||
}))(revenueConfirmation);
|