/* * Author: 黎永顺 * name: 薪资档案重构-档案列表 * Description: * Date: 2024/1/8 */ import React, { FunctionComponent, useEffect, useMemo, useState } from "react"; import { ColumnType } from "antd/lib/table"; import { PaginationData } from "rc-pagination"; import styles from "@/pages/atdTable/components/index.less"; import { exceptStr, paginationAction } from "@/utils/common"; import { Button, Dropdown, MenuProps, Space, Table } from "antd"; import { MoreOutlined } from "@ant-design/icons"; interface OwnProps { } type Props = OwnProps; const Index: FunctionComponent = (props) => { const [columns, setColumns] = useState[]>([]); const [dataSource, setDataSource] = useState([]); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [pageInfo, setPageInfo] = useState>({}); const [i18n, setI18n] = useState({}); const [runStatuses, setRunStatuses] = useState(""); const [showOperateBtn, setShowOperateBtn] = useState(false); const [showDelSalaryFileBtn, setShowDelSalaryFileBtn] = useState(false);//待定薪、停薪员工 是否允许删除薪资档案 const [DCChiefPermission, setDCChiefPermission] = useState(undefined);//二开权限(大成) 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, selectedRowKeys, i18n: i18nRes = {}, selectedKey, showOperateBtn, showDelSalaryFileBtn, DCChiefPermission } = data; setShowOperateBtn(showOperateBtn); setRunStatuses(selectedKey); setI18n(i18nRes); setPageInfo(pageInfo); setDataSource(dataSource); setSelectedRowKeys(selectedRowKeys); setColumns(columns); setShowDelSalaryFileBtn(showDelSalaryFileBtn); setDCChiefPermission(DCChiefPermission); } }; 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: selectedRowKeys, onChange: (selectedRowKeys: React.Key[]) => { setSelectedRowKeys(selectedRowKeys); window.parent.postMessage( { type: "turn", payload: { id: "ROWSELECTION", params: { selectedRowKeys } } }, "*" ); } }; const handleSalaryFileOperate = (type: string, record: any, interfaceParams?: any) => { window.parent.postMessage( { type: "turn", payload: { id: type, params: { record, interfaceParams } } }, "*" ); }; const cols: any = useMemo(() => { if (!_.isEmpty(columns)) { let opts: any = _.find(columns, o => o.dataIndex === "operate"); switch (runStatuses) { case "pending": opts = { ...opts, render: (__: any, record: any) => { let items: MenuProps["items"] = [ { key: "DeleteTodoList", label: i18n["删除待办"], onClick: () => handleSalaryFileOperate("DEL-PENDITNG-TO-DO", record, [record?.id]) }, { key: "Log", label: i18n["操作日志"], onClick: () => handleSalaryFileOperate("log", record) }, { key: "DeleteFiles", label: i18n["删除档案"], onClick: () => handleSalaryFileOperate("DEL-SALARY-FILES", record, [record?.id]) } ]; !showDelSalaryFileBtn && (items = _.dropRight(items)); return ( { (_.isNil(DCChiefPermission) || DCChiefPermission) ? : } : } { !_.isEmpty(stopItems) && : } ) }]; } else { return []; } }, [columns, runStatuses, i18n, showOperateBtn, showDelSalaryFileBtn, DCChiefPermission]); return (); }; export default Index;