/* * @Author: cclu * @Date: 2022-03-04 10:51:49 * @LastEditTime: 2024-09-30 17:50:35 * @LastEditors: cclu 1106109051@qq.com * @Description: 合作方分润 组件 * @FilePath: \cloud-platform\src\pages\BussinessProject\components\ShareBenefit.tsx */ import { useRef, useState } from 'react'; import { Drawer, message, Space } from 'antd'; import ProTable from '@ant-design/pro-table'; import type { ActionType, ProColumns } from '@ant-design/pro-table'; import type { BusinessProjectModel, RevenueConfirmModel } from '../data'; import { createRevenueAccount, getRevenuenConfirmList, handleAgain, handleGetSplitRes } from '../service' import RevenueList from './RevenueList'; import moment from 'moment'; import { fmoney } from "@/services/options"; import { getDetail } from "@/pages/contract/service"; import Item from 'antd/lib/list/Item'; // 更新回款信息 const handleAddUpdate = async (dataType: 1000 | 2000, fields: number) => { const hide = message.loading('正在提交...'); // dataType 经营模式为合作经营(1000)时 const result = await createRevenueAccount(fields as number); hide(); if (result.Result_Code !== 100) { message.error(`${result.Result_Desc}` || `${result.Result_Code}:提交失败`); return false; } message.success("生成账款记录成功!") return true; }; /** * @description: 合作方分润 * @param {BusinessProjectModel} props 项目详情数据对象 * @return {*} */ const ShareBenefit: React.FC<{ props: BusinessProjectModel, showEdit?: boolean, startDate?: string, endDate?: string, otherDate?: any }> = ( { props, showEdit, startDate, endDate, otherDate, showType, relatedContractsList }: { props: BusinessProjectModel, showEdit?: boolean, startDate?: string, endDate?: string, otherDate?: any, showType?: any, relatedContractsList?: any }) => { // const { SERVERPARTSHOP_ID, SERVERPARTSHOP_NAME } = props const actionRef = useRef() // 表格对应的对象 const [showDetail, setShowDetail] = useState(false) // 是否显示详情 const [currentRow, setCurrentRow] = useState(undefined) // 选中的当前行 const [tableLoading, setTableLoading] = useState(false) // 关联合同需要遍历的表格 const [relateTableData, setRelateTableData] = useState() const revenuenColumns: any = [ { title: '开始日期', dataIndex: 'STARTDATE', valueType: "date", width: 110, align: 'center', sorter: (a, b) => (new Date(a.STARTDATE).getTime() || 0) - (new Date(b.STARTDATE).getTime() || 0), defaultSortOrder: 'descend' }, { title: '结束日期', dataIndex: 'ENDDATE', valueType: "date", width: 110, align: 'center' }, { title: '真实提成', dataIndex: '', valueType: 'digit', align: "center", hideInTable: props.BUSINESS_TYPE === 2000, width: 110, render: (_, record) => { return = record.GUARANTEERATIO ? 'red' : 'green' : '' }}> {record.REVENUE_AMOUNT ? `${((record.ROYALTY_THEORY / record.REVENUE_AMOUNT) * 100).toFixed(2)}%` : '-'} }, }, { title: '实际营业额', dataIndex: 'REVENUE_AMOUNT', valueType: "money", width: 140, align: "right", render: (_, record) => { return { // 点击实际营业额时 打开抽屉 展示每日营收数据 console.log('record', record) setCurrentRow(record) setShowDetail(true) }}>{record.REVENUE_AMOUNT ? fmoney(record.REVENUE_AMOUNT, 2) : '-'} }, }, { title: '合同提成', dataIndex: 'GUARANTEERATIO', valueType: 'digit', align: "center", hideInTable: props.BUSINESS_TYPE === 2000, width: 110, render: (_, record) => { return `${record.GUARANTEERATIO || '-'}%` }, }, { title: '保底租金', dataIndex: 'MINTURNOVER', valueType: "money", width: 140, align: "center", render: (_, record) => { return {record.MINTURNOVER ? `¥${fmoney(record.MINTURNOVER, 2)}` : '合同期外'} } }, { title: '甲方到账', dataIndex: 'ROYALTY_PRICE', valueType: "money", align: "right", width: 140, render: (_, record) => { return {record.ROYALTY_PRICE ? `¥${fmoney(record.ROYALTY_PRICE, 2)}` : '-'} } }, { title: '甲方入账', dataIndex: 'ROYALTY_THEORY', valueType: "money", align: "right", width: 140, render: (_, record) => { return {record.ROYALTY_THEORY ? `¥${fmoney(record.ROYALTY_THEORY, 2)}` : '-'} } }, { title: '乙方入账', dataIndex: 'SUBROYALTY_THEORY', valueType: "money", align: "right", width: 140, render: (_, record) => { return {record.SUBROYALTY_THEORY ? `¥${fmoney(record.SUBROYALTY_THEORY, 2)}` : '-'} } }, // { // title: '丙方入账', // dataIndex: 'PARTYC_SHAREPROFIT', // valueType: "money", // width: 100, // }, { title: '备注说明', dataIndex: 'BIZPSPLITMONTH_DESC', ellipsis: true, hideInTable: !(showEdit === undefined || showEdit), }, // { // title: '商家欠款', // dataIndex: '', // ellipsis: true, // render:(_,record)=>{ // return {record?.SUBROYALTY_PRICE===record?.SUBROYALTY_THEORY?'-':fmoney(record?.SUBROYALTY_PRICE - record?.SUBROYALTY_THEORY,2)} // } // }, { title: '操作', valueType: 'option', width: 80, hideInTable: showType === 'Nooperate' ? true : !(showEdit === undefined || showEdit), render: (_, record) => ( new Date(record?.STARTDATE).getTime() < new Date().getTime() && record.showAgainBtn ? { // const amount1000 = await handleAddUpdate(1000, // record?.SHOPROYALTY_ID ? record?.SHOPROYALTY_ID : 0) // if (amount1000) { // actionRef.current?.reload() // } setTableLoading(true) let req = {} const yesterday = moment().subtract(1, 'day').startOf('day').format('YYYY-MM-DD') if (new Date(yesterday).getTime() < new Date(moment(record.ENDDATE).format('YYYY-MM-DD')).getTime()) { req = { StartDate: moment(record.STARTDATE).format('YYYY-MM-DD'), EndDate: moment(yesterday).format('YYYY-MM-DD'), ProjectId: props.BUSINESSPROJECT_ID, // OutBusinessType:props.BUSINESS_TYPE } } else { req = { StartDate: moment(record.STARTDATE).format('YYYY-MM-DD'), EndDate: moment(record.ENDDATE).format('YYYY-MM-DD'), ProjectId: props.BUSINESSPROJECT_ID, // OutBusinessType:props.BUSINESS_TYPE } } const data = await handleAgain(req) setTableLoading(false) if (data.Result_Code === 100) { actionRef.current?.reload() message.success(data.Result_Desc) } else { message.error(data.Result_Desc) } }} > 重新生成 : '' ), }, ] const relateRevenuenColumns: any = [ ...revenuenColumns.slice(0, 9) ] // 拿到关联合同项目数据 const handleGetRelatedData = async (list: any) => { console.log('list', list); let result: any = [] // 可能存在多个关联项目 for (let i = 0; i <= list.length - 1; i++) { const res = await handleGetSplitRes({ DataType: 2, CompactId: list[i].REGISTERCOMPACT_ID }) result.push({ title: list[i].COMPACT_NAME, time: `${moment(list[i].COMPACT_STARTDATE).format('YYYY-MM-DD')}-${moment(list[i].COMPACT_ENDDATE).format('YYYY-MM-DD')}`, STARTDATE: moment(list[i].COMPACT_STARTDATE).format('YYYY-MM-DD'), ENDDATE: moment(list[i].COMPACT_ENDDATE).format('YYYY-MM-DD'), data: res.data }) // .then(res => { // console.log('312321312312', JSON.parse(JSON.stringify(res))); // result.push({ // title: list[i].COMPACT_NAME, // time: `${moment(list[i].COMPACT_STARTDATE).format('YYYY-MM-DD')}-${moment(list[0].COMPACT_ENDDATE).format('YYYY-MM-DD')}`, // data: res.data // }) // console.log('resultresultresultresult', result); // // for循环不一定会等接口调完 才赋值 所以放在循环里面 最后一次也会拿到最新的 // }) } setRelateTableData(result) return result } return ( <> cardProps={{ // 去除表格内边距 bodyStyle: { padding: 0 } }} rowKey="REVENUECONFIRM_ID" actionRef={actionRef} loading={tableLoading} request={async (pramas, sorter) => { console.log('otherDate', otherDate); setTableLoading(true) const sortstr = Object.keys(sorter).map(n => { const value = sorter[n] return value ? `${n} ${value.replace('end', '')}` : '' }) let req = {} if (new Date(props?.PROJECT_STARTDATE).getTime() > new Date(otherDate).getTime()) { req = { ...pramas, BusinessProjectId: props.BUSINESSPROJECT_ID, DataType: 2, BusinessDate: moment(otherDate).format('YYYY-MM-DD') } } else { req = { ...pramas, BusinessProjectId: props.BUSINESSPROJECT_ID, DataType: 2, } } const data = await handleGetSplitRes(req) console.log('fjajasdaslkd', data); let res: any = [] if (relatedContractsList && relatedContractsList.length > 0) { res = await handleGetRelatedData(relatedContractsList) } console.log('resresresresres', res); if (res && res.length > 0) { res.forEach((item: any) => { if (data.data && data.data.length > 0) { data.data.forEach((subItem: any) => { if (new Date(item.STARTDATE).getTime() < new Date(subItem.ENDDATE).getTime() && new Date(item.ENDDATE).getTime() >= new Date(subItem.ENDDATE).getTime()) { // 如果该行数据(上面的) 已经包括了下面的数据的时间 那么这段就不出现重新生成 } else { subItem.showAgainBtn = true } }) } }) } else { data.data.forEach((subItem: any) => { subItem.showAgainBtn = true }) } setTableLoading(false) return data }} options={false} columns={revenuenColumns} search={false} pagination={false} />
{ relateTableData && relateTableData.length > 0 ? relateTableData.map((item: any) => { return
{item.title ? item.title + ':' : ''}{item.time || ''}
}) : '' }
{/* 查看项目详情 右侧弹出的抽屉 */} { // 关闭抽屉 设置抽屉状态为关闭 setShowDetail(false); }} bodyStyle={{ backgroundColor: "#f9f9f9", padding: 0 }} closable={false} > {/* 抽屉打开时 加载项目详情组件 */} {showDetail && } ); } export default ShareBenefit;