import React, { FC, useEffect, useState } from "react"; import { Table, Typography } from "antd"; import { PaginationData } from "rc-pagination"; import { exceptStr, paginationAction } from "@/utils/common"; import { renderCols } from "@/pages/unitTable/renderColsOpts"; import CaclFixedTotal from "@/pages/calcTable/calcFixedTotal"; import styles from "./index.less"; const { Text } = Typography; export type extraType = { selectedKey: string; selectedRowKeys: string[] | number[]; permission: boolean; scrollHeight: number; rowKey: string; showTotalCell: boolean } const UnitTable: FC = (props) => { const [unitTableType, setUnitTableType] = useState(""); const [columns, setColumns] = useState>([]); const [dataSource, setDataSource] = useState>([]); const [pageInfo, setPageInfo] = useState>({}); const [sumRow, setSumRow] = useState>({});//总计行数据 const [i18n, setI18n] = useState({}); const [extraParams, setExtraParams] = useState>({});//额外参数 useEffect(() => { window.parent.postMessage({ type: "init" }, "*"); window.addEventListener("message", receiveMessageFromIndex, false); return () => { window.removeEventListener("message", receiveMessageFromIndex, false); }; }, []); const receiveMessageFromIndex = (event: any) => { const data: any = exceptStr(event.data); if (!_.isEmpty(data)) { const { columns, dataSource, pageInfo, scrollHeight, i18n, showOperateBtn: permission, unitTableType = "welfareRecord", selectedRowKeys, selectedKey, rowKey, showTotalCell = false, sumDataSource = {} } = data; setI18n(i18n); setColumns(columns); setDataSource(dataSource); setPageInfo(pageInfo); setUnitTableType(unitTableType); setSumRow(sumDataSource); setExtraParams({ selectedKey, selectedRowKeys, scrollHeight, permission, rowKey, showTotalCell }); } }; const onChange = (current: number, pageSize: number) => { setPageInfo((prevState) => { const { pageSize: size } = prevState; window.parent.postMessage( { type: "turn", payload: { id: "PAGEINFO", params: { ...pageInfo, current: size === pageSize ? current : 1, pageSize } } }, "*" ); return { ...pageInfo, current: size === pageSize ? current : 1, pageSize }; }); }; const rowSelection = { columnWidth: 60, selectedRowKeys: extraParams.selectedRowKeys, onChange: (selectedRowKeys: React.Key[]) => { // @ts-ignore setExtraParams({ ...extraParams, selectedRowKeys: selectedRowKeys }); window.parent.postMessage( { type: "turn", payload: { id: "CHECKBOX", params: { selectedRowKeys } } }, "*" ); } }; return k.children)} rowSelection={!_.isNil(extraParams?.selectedRowKeys) ? rowSelection : undefined} pagination={!_.isNil(pageInfo) ? { ...paginationAction(pageInfo, i18n, onChange), size: "default" } : false} summary={() => ( !extraParams.showTotalCell ? <> : {i18n["总计"]} )} />; }; export default UnitTable;