/* * Author: 黎永顺 * name: 薪资核算-底部合计行 * Description: * Date: 2023/9/18 */ import React, { FunctionComponent, useCallback, useEffect, useMemo, useState } from "react"; import { Spin, Table, Typography } from "antd"; import { ColumnType } from "antd/lib/table"; import API from "@/api"; const { Text } = Typography; interface OwnProps { columns: ColumnType[]; dataSourceUrl: string; payload: any; } type Props = OwnProps; const calcFixedTotal: FunctionComponent = (props) => { const [sumRow, setSumRow] = useState>({});//薪资核算总计行数据 const [loading, setLoading] = useState(false); const flattenFn = (source: ColumnType[]) => { let res: ColumnType[] = []; source.forEach((el: any) => { _.isEmpty(el.children) && res.push(el); el.children && res.push(...flattenFn(el.children)); }); return res; }; const columns = useMemo(() => { return !_.isEmpty(props.columns) ? flattenFn(props.columns) : []; }, [props.columns]); const dataSourceUrl = useCallback((payload) => { return API.CalculateService.getAcctResultsum(payload); }, [props.dataSourceUrl]); useEffect(() => { if (!_.isEmpty(props.payload)) { setLoading(true); dataSourceUrl(props.payload).then(({ data }) => { setLoading(false); const { data: result, status } = data; if (status) setSumRow(result.sumRow || {}); }); } }, [props.payload]); return (<> { _.map(columns, (item: any, index) => { return { loading ? : {sumRow[item.dataIndex] || "-"} } ; }) } ); }; export default calcFixedTotal;