master-新增年终奖计税

feature/V2-系统多语言^2
黎永顺 1 year ago
parent e56123201f
commit 174d36ffa2

@ -102,6 +102,11 @@ const Index: FunctionComponent<Props> = (props) => {
label: i18n["删除待办"], label: i18n["删除待办"],
onClick: () => handleSalaryFileOperate("DEL-PENDITNG-TO-DO", record, [record?.id]) onClick: () => handleSalaryFileOperate("DEL-PENDITNG-TO-DO", record, [record?.id])
}, },
{
key: "Log",
label: i18n["操作日志"],
onClick: () => handleSalaryFileOperate("log", record)
},
{ {
key: "DeleteFiles", key: "DeleteFiles",
label: i18n["删除档案"], label: i18n["删除档案"],
@ -125,8 +130,13 @@ const Index: FunctionComponent<Props> = (props) => {
opts = { opts = {
...opts, ...opts,
render: (__: any, record: any) => ( render: (__: any, record: any) => (
<Button type="link" <Space>
onClick={() => handleSalaryFileOperate("CHANGE-SALARY", record)}>{i18n["调薪"]}</Button>) <Button type="link"
onClick={() => handleSalaryFileOperate("CHANGE-SALARY", record)}>{i18n["调薪"]}</Button>
<Button type="link"
onClick={() => handleSalaryFileOperate("log", record)}>{i18n["操作日志"]}</Button>
</Space>
)
}; };
break; break;
case "suspend": case "suspend":
@ -138,6 +148,11 @@ const Index: FunctionComponent<Props> = (props) => {
key: "DeleteTodoList", key: "DeleteTodoList",
label: i18n["删除待办"], label: i18n["删除待办"],
onClick: () => handleSalaryFileOperate("DEL-SUSPEND-TO-DO", record, [record?.id]) onClick: () => handleSalaryFileOperate("DEL-SUSPEND-TO-DO", record, [record?.id])
},
{
key: "Log",
label: i18n["操作日志"],
onClick: () => handleSalaryFileOperate("log", record)
} }
]; ];
return (<Space> return (<Space>
@ -156,6 +171,11 @@ const Index: FunctionComponent<Props> = (props) => {
...opts, ...opts,
render: (__: any, record: any) => { render: (__: any, record: any) => {
let stopItems: MenuProps["items"] = [ let stopItems: MenuProps["items"] = [
{
key: "Log",
label: i18n["操作日志"],
onClick: () => handleSalaryFileOperate("log", record)
},
{ {
key: "CancelSuspension", key: "CancelSuspension",
label: i18n["删除档案"], label: i18n["删除档案"],
@ -184,7 +204,11 @@ const Index: FunctionComponent<Props> = (props) => {
[..._.filter(columns, o => o.dataIndex !== "operate"), { [..._.filter(columns, o => o.dataIndex !== "operate"), {
...opts, ...opts,
render: (__: any, record: any) => ( render: (__: any, record: any) => (
<Button type="link" onClick={() => handleSalaryFileOperate("VIEW", record)}>{i18n["查看"]}</Button>) <Space>
<Button type="link" onClick={() => handleSalaryFileOperate("VIEW", record)}>{i18n["查看"]}</Button>
<Button type="link" onClick={() => handleSalaryFileOperate("log", record)}>{i18n["操作日志"]}</Button>
</Space>
)
}]; }];
} else { } else {
return []; return [];

@ -5,14 +5,20 @@ import { exceptStr, paginationAction } from "@/utils/common";
import { renderCols } from "@/pages/unitTable/renderColsOpts"; import { renderCols } from "@/pages/unitTable/renderColsOpts";
import styles from "./index.less"; import styles from "./index.less";
export type extraType = {
selectedKey: string;
selectedRowKeys: string[] | number[];
permission: boolean;
scrollHeight: number;
rowKey: string
}
const UnitTable: FC = (props) => { const UnitTable: FC = (props) => {
const [unitTableType, setUnitTableType] = useState<string>(""); const [unitTableType, setUnitTableType] = useState<string>("");
const [columns, setColumns] = useState<Array<any>>([]); const [columns, setColumns] = useState<Array<any>>([]);
const [dataSource, setDataSource] = useState<Array<any>>([]); const [dataSource, setDataSource] = useState<Array<any>>([]);
const [pageInfo, setPageInfo] = useState<Partial<PaginationData>>({}); const [pageInfo, setPageInfo] = useState<Partial<PaginationData>>({});
const [i18n, setI18n] = useState<any>({}); const [i18n, setI18n] = useState<any>({});
const [permission, setPermission] = useState<boolean>(false); const [extraParams, setExtraParams] = useState<Partial<extraType>>({});//额外参数
const [scrollHeight, setScrollHeight] = useState<number | undefined>(undefined);
useEffect(() => { useEffect(() => {
window.parent.postMessage({ type: "init" }, "*"); window.parent.postMessage({ type: "init" }, "*");
@ -25,16 +31,15 @@ const UnitTable: FC = (props) => {
const data: any = exceptStr(event.data); const data: any = exceptStr(event.data);
if (!_.isEmpty(data)) { if (!_.isEmpty(data)) {
const { const {
columns, dataSource, pageInfo, scrollHeight, i18n, columns, dataSource, pageInfo, scrollHeight, i18n, showOperateBtn: permission, unitTableType = "welfareRecord",
showOperateBtn, unitTableType = "welfareRecord" selectedRowKeys, selectedKey, rowKey
} = data; } = data;
setI18n(i18n); setI18n(i18n);
setScrollHeight(scrollHeight);
setUnitTableType(unitTableType);
setColumns(columns); setColumns(columns);
setDataSource(dataSource); setDataSource(dataSource);
setPageInfo(pageInfo); setPageInfo(pageInfo);
setPermission(showOperateBtn); setUnitTableType(unitTableType);
setExtraParams({ selectedKey, selectedRowKeys, scrollHeight, permission, rowKey });
} }
}; };
const onChange = (current: number, pageSize: number) => { const onChange = (current: number, pageSize: number) => {
@ -50,9 +55,21 @@ const UnitTable: FC = (props) => {
return { ...pageInfo, current: size === pageSize ? current : 1, pageSize }; return { ...pageInfo, current: size === pageSize ? current : 1, pageSize };
}); });
}; };
return <Table rowKey="id" className={styles.multi_fun_table} dataSource={dataSource} size="middle" const rowSelection = {
columns={renderCols(columns, unitTableType, i18n, permission)} columnWidth: 60,
scroll={{ x: 1200, y: `calc(100vh - ${scrollHeight || 109}px)` }} selectedRowKeys: extraParams.selectedRowKeys,
onChange: (selectedRowKeys: React.Key[]) => {
// @ts-ignore
setExtraParams({ ...extraParams, selectedRowKeys: selectedRowKeys });
window.parent.postMessage(
{ type: "turn", payload: { id: "CHECKBOX", params: { selectedRowKeys } } }, "*"
);
}
};
return <Table rowKey={extraParams.rowKey || "id"} className={styles.multi_fun_table} dataSource={dataSource}
size="middle" columns={renderCols(columns, unitTableType, i18n, extraParams)}
scroll={{ x: 1200, y: `calc(100vh - ${extraParams?.scrollHeight || 109}px)` }}
rowSelection={!_.isNil(extraParams?.selectedRowKeys) ? rowSelection : undefined}
pagination={!_.isNil(pageInfo) ? { pagination={!_.isNil(pageInfo) ? {
...paginationAction(pageInfo, i18n, onChange), ...paginationAction(pageInfo, i18n, onChange),
size: "default" size: "default"

@ -1,6 +1,7 @@
import React from "react"; import React from "react";
import { Button, Dropdown, MenuProps, Space, Tooltip, Typography } from "antd"; import { Button, Dropdown, MenuProps, Space, Tooltip, Typography } from "antd";
import { MoreOutlined, QuestionCircleFilled } from "@ant-design/icons"; import { MoreOutlined, QuestionCircleFilled } from "@ant-design/icons";
import { extraType } from "@/pages/unitTable/index";
const { Text } = Typography; const { Text } = Typography;
@ -10,7 +11,7 @@ const { Text } = Typography;
* Params: * Params:
* Date: 2024/1/23 * Date: 2024/1/23
*/ */
export function renderCols(initialState: any[], type: string, i18n?: AnyObject, permission?: boolean) { export function renderCols(initialState: any[], type: string, i18n?: AnyObject, extraParams?: Partial<extraType>) {
return React.useMemo(() => { return React.useMemo(() => {
if (type === "welfareRecord") { if (type === "welfareRecord") {
return [..._.map(_.filter(initialState, o => o.dataIndex !== "id"), g => { return [..._.map(_.filter(initialState, o => o.dataIndex !== "id"), g => {
@ -61,13 +62,21 @@ export function renderCols(initialState: any[], type: string, i18n?: AnyObject,
key: "DeleteList", key: "DeleteList",
label: i18n?.["删除"], label: i18n?.["删除"],
onClick: () => postMessageToParent("DELRC", record) onClick: () => postMessageToParent("DELRC", record)
},
{
key: "Log",
label: i18n?.["操作日志"],
onClick: () => postMessageToParent("log", record)
} }
]; ];
return ( return (
<Space> <Space>
{ {
!permission ? !extraParams?.permission ?
<Button type="link" onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看"]}</Button> : <Space>
<Button type="link" onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看"]}</Button>
<Button type="link" onClick={() => postMessageToParent("log", record)}>{i18n?.["操作日志"]}</Button>
</Space> :
<> <>
{ {
billStatus === "0" && billStatus === "0" &&
@ -88,6 +97,17 @@ export function renderCols(initialState: any[], type: string, i18n?: AnyObject,
onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看"]}</Button> onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看"]}</Button>
<Button type="link" <Button type="link"
onClick={() => postMessageToParent("RECALC", record)}>{i18n?.["重新核算"]}</Button> onClick={() => postMessageToParent("RECALC", record)}>{i18n?.["重新核算"]}</Button>
<Dropdown menu={{
items: [
{
key: "Log",
label: i18n?.["操作日志"],
onClick: () => postMessageToParent("log", record)
}
]
}} placement="bottomRight">
<Button type="link" icon={<MoreOutlined/>}/>
</Dropdown>
</> </>
} }
</> </>
@ -146,14 +166,23 @@ export function renderCols(initialState: any[], type: string, i18n?: AnyObject,
key: "DeleteList", key: "DeleteList",
label: i18n?.["删除"], label: i18n?.["删除"],
onClick: () => postMessageToParent("DEL", record) onClick: () => postMessageToParent("DEL", record)
},
{
key: "Log",
label: i18n?.["操作日志"],
onClick: () => postMessageToParent("log", record)
} }
]; ];
return ( return (
<Space> <Space>
{ {
!permission ? !extraParams?.permission ?
<Button type="link" <Space>
onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看详情"]}</Button> : <Button type="link"
onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看详情"]}</Button>
<Button type="link"
onClick={() => postMessageToParent("log", record)}>{i18n?.["操作日志"]}</Button>
</Space> :
<> <>
<Button type="link" <Button type="link"
onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看详情"]}</Button> onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看详情"]}</Button>
@ -168,9 +197,79 @@ export function renderCols(initialState: any[], type: string, i18n?: AnyObject,
); );
} }
}]; }];
} else if (type === "bonusStrategy") {
const { selectedKey } = extraParams as { selectedKey: string };
return [..._.map(initialState, g => {
let col = { ...g, ellipsis: true, fixed: false, width: 120 };
switch (g.dataIndex) {
case "username":
col = { ...col, fixed: "left" };
break;
case "taxAgentName":
col = { ...col, width: 200, fixed: "left" };
break;
case "idNo":
col = { ...col, width: 150 };
break;
default:
col = { ...col };
break;
}
return col;
}), {
dataIndex: "operate", title: i18n?.["操作"], width: 185, fixed: "right",
render: (__: string, record: any) => {
let items: MenuProps["items"] = [
{
key: "DeleteList",
label: i18n?.["删除"],
onClick: () => postMessageToParent("DEL", record)
},
{
key: "Log",
label: i18n?.["操作日志"],
onClick: () => postMessageToParent("log", record)
}
];
selectedKey === "getAnnualbonusaddupList" && items.shift();
return (
<Space>
{
!extraParams?.permission ?
<Space>
{
selectedKey === "getAnnualbonusstrategyList" &&
<Button type="link"
onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看详情"]}</Button>
}
<Button type="link"
onClick={() => postMessageToParent("log", record)}>{i18n?.["操作日志"]}</Button>
</Space> :
<>
<Button type="link"
onClick={() => postMessageToParent("EDIT", record)}>{i18n?.["编辑"]}</Button>
{
selectedKey === "getAnnualbonusstrategyList" &&
<Button type="link"
onClick={() => postMessageToParent("VIEW", record)}>{i18n?.["查看详情"]}</Button>
}
{
selectedKey === "getAnnualbonusaddupList" &&
<Button type="link"
onClick={() => postMessageToParent("DEL", record)}>{i18n?.["删除"]}</Button>
}
<Dropdown menu={{ items }} placement="bottomRight">
<Button type="link" icon={<MoreOutlined/>}/>
</Dropdown>
</>
}
</Space>
);
}
}];
} }
return []; return [];
}, [initialState, type, i18n, permission]); }, [initialState, type, i18n, extraParams]);
} }
const postMessageToParent = (type: string, params: any) => { const postMessageToParent = (type: string, params: any) => {

@ -104,6 +104,11 @@ const Index: FunctionComponent<Props> = (props) => {
key: "DeleteTodoList", key: "DeleteTodoList",
label: i18n["删除待办"], label: i18n["删除待办"],
onClick: () => handleWelfareOperate("DEL-TO-DO", record, { runStatus: "4" }) onClick: () => handleWelfareOperate("DEL-TO-DO", record, { runStatus: "4" })
},
{
key: "Log",
label: i18n["操作日志"],
onClick: () => handleWelfareOperate("log", record)
} }
]; ];
return (<Space> return (<Space>
@ -121,7 +126,10 @@ const Index: FunctionComponent<Props> = (props) => {
opts = { opts = {
...opts, ...opts,
render: (__: any, record: any) => ( render: (__: any, record: any) => (
<Button type="link" onClick={() => handleWelfareOperate("EDIT", record)}>{i18n["编辑"]}</Button>) <Space>
<Button type="link" onClick={() => handleWelfareOperate("EDIT", record)}>{i18n["编辑"]}</Button>
<Button type="link" onClick={() => handleWelfareOperate("log", record)}>{i18n["操作日志"]}</Button>
</Space>)
}; };
break; break;
case "3": case "3":
@ -133,6 +141,11 @@ const Index: FunctionComponent<Props> = (props) => {
key: "DeleteTodoList", key: "DeleteTodoList",
label: i18n["删除待办"], label: i18n["删除待办"],
onClick: () => handleWelfareOperate("DEL-TO-DO-STAY", record, { runStatus: "3" }) onClick: () => handleWelfareOperate("DEL-TO-DO-STAY", record, { runStatus: "3" })
},
{
key: "Log",
label: i18n["操作日志"],
onClick: () => handleWelfareOperate("log", record)
} }
]; ];
return (<Space> return (<Space>
@ -155,6 +168,11 @@ const Index: FunctionComponent<Props> = (props) => {
key: "CancelSuspension", key: "CancelSuspension",
label: i18n["取消停缴"], label: i18n["取消停缴"],
onClick: () => handleWelfareOperate("CANCEL-STOP", record) onClick: () => handleWelfareOperate("CANCEL-STOP", record)
},
{
key: "Log",
label: i18n["操作日志"],
onClick: () => handleWelfareOperate("log", record)
} }
]; ];
return (<Space> return (<Space>
@ -174,7 +192,11 @@ const Index: FunctionComponent<Props> = (props) => {
return showOperateBtn ? [...columns, opts] : [...columns, { return showOperateBtn ? [...columns, opts] : [...columns, {
...opts, ...opts,
render: (__: any, record: any) => ( render: (__: any, record: any) => (
<Button type="link" onClick={() => handleWelfareOperate("VIEW", record)}>{i18n["查看"]}</Button>) <Space>
<Button type="link" onClick={() => handleWelfareOperate("VIEW", record)}>{i18n["查看"]}</Button>
<Button type="link" onClick={() => handleWelfareOperate("log", record)}>{i18n["操作日志"]}</Button>
</Space>
)
}]; }];
}, [columns, runStatuses, i18n, showOperateBtn]); }, [columns, runStatuses, i18n, showOperateBtn]);
return (<Table return (<Table

Loading…
Cancel
Save