Merge branch 'master' into feature/V2-系统多语言
# Conflicts: # src/pages/payrollFilesTable/index.tsx # src/pages/reportTable/index.tsx
This commit is contained in:
commit
fb8acee257
|
|
@ -21,11 +21,10 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@ant-design/pro-layout": "6.32.1",
|
||||
"@formily/antd": "^2.0.6",
|
||||
"@types/lodash": "^4.14.172",
|
||||
"@ztree/ztree_v3": "^3.5.42",
|
||||
"ahooks": "^3.1.3",
|
||||
"antd": "^4.17.3",
|
||||
"antd": "^4.24.10",
|
||||
"axios": "^0.22.0",
|
||||
"fbemitter": "^3.0.0",
|
||||
"js-base64": "^3.6.1",
|
||||
|
|
@ -57,7 +56,6 @@
|
|||
"@types/react": "^17.0.2",
|
||||
"@types/react-dom": "^17.0.2",
|
||||
"@umijs/plugin-access": "2.4.2",
|
||||
"umi-plugin-authorize": "^2.8.12",
|
||||
"@umijs/plugin-dva": "^0.13.0",
|
||||
"@umijs/plugin-initial-state": "^2.4.0",
|
||||
"@umijs/plugin-locale": "^0.15.0",
|
||||
|
|
@ -70,6 +68,7 @@
|
|||
"prettier": "^2.2.0",
|
||||
"typescript": "^4.3.5",
|
||||
"umi": "^3.5.20",
|
||||
"umi-plugin-authorize": "^2.8.12",
|
||||
"yorkie": "^2.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -187,6 +187,18 @@
|
|||
}
|
||||
}
|
||||
|
||||
.ant-dropdown-menu-title-content {
|
||||
a {
|
||||
font-size: 12px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #00a9ff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-popover-inner {
|
||||
min-width: 106px
|
||||
}
|
||||
|
|
@ -194,16 +206,6 @@
|
|||
.ant-popover-inner-content {
|
||||
padding: 0;
|
||||
|
||||
.ant-menu {
|
||||
.ant-menu-item {
|
||||
border-right: none;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC, useEffect, useState } from "react";
|
||||
import { Button, Dropdown, Menu, Space, Spin, Table, Typography } from "antd";
|
||||
import { DownOutlined } from "@ant-design/icons";
|
||||
import { exceptStr, paginationFun } from "@/utils/common";
|
||||
import { Button, Dropdown, Space, Spin, Table, Typography } from "antd";
|
||||
import { MoreOutlined } from "@ant-design/icons";
|
||||
import { convertColumns, exceptStr, paginationFun } from "@/utils/common";
|
||||
import styles from "@/pages/atdTable/components/index.less";
|
||||
import { defaultPage, IPage } from "@/common/types";
|
||||
import cs from "classnames";
|
||||
|
|
@ -35,6 +35,7 @@ const payrollFilesTable: FC = (props) => {
|
|||
showOperateBtn,
|
||||
selectedKey,
|
||||
selectedRowKeys,
|
||||
salaryArchiveDelete,
|
||||
i18n
|
||||
} = data;
|
||||
const { current: pageNum, pageSize: size, total } = pageInfo;
|
||||
|
|
@ -72,27 +73,38 @@ const payrollFilesTable: FC = (props) => {
|
|||
>
|
||||
{i18n["编辑"]}
|
||||
</Button>
|
||||
<Dropdown
|
||||
overlayClassName={styles.moreIconWrapper}
|
||||
overlay={
|
||||
<Menu>
|
||||
<Menu.Item key="payroll">
|
||||
<Button type="link" style={{ padding: "0", fontSize: 12 }}
|
||||
onClick={() => handleMenuClick({ key: "payroll" }, r?.id)}
|
||||
>
|
||||
{i18n["设为发薪人员"]}
|
||||
</Button>
|
||||
</Menu.Item>
|
||||
<Menu.Item key="deletePendingTodo">
|
||||
<Button type="link" style={{ padding: "0", fontSize: 12 }}
|
||||
onClick={() => handleMenuClick({ key: "deletePendingTodo" }, r?.id)}>
|
||||
{i18n["删除待办"]}
|
||||
</Button>
|
||||
</Menu.Item>
|
||||
</Menu>
|
||||
}
|
||||
<Button type="link" style={{ padding: "0" }}
|
||||
onClick={() => handleMenuClick({ key: "payroll" }, r?.id)}
|
||||
>
|
||||
<a>{i18n["更多"]}<DownOutlined/></a>
|
||||
{i18n["设为发薪人员"]}
|
||||
</Button>
|
||||
<Dropdown
|
||||
menu={{
|
||||
items: salaryArchiveDelete === "1" ? [
|
||||
{
|
||||
key: "deletePendingTodo",
|
||||
label: <a onClick={() => handleMenuClick({ key: "deletePendingTodo" }, r?.id)}>
|
||||
{i18n["删除待办"]}
|
||||
</a>
|
||||
},
|
||||
{
|
||||
key: "deleteAchives",
|
||||
label: <a onClick={() => handleMenuClick({ key: "deleteAchives" }, r?.id)}>
|
||||
删除档案
|
||||
</a>
|
||||
}
|
||||
] : [
|
||||
{
|
||||
key: "deletePendingTodo",
|
||||
label: <a onClick={() => handleMenuClick({ key: "deletePendingTodo" }, r?.id)}>
|
||||
{i18n["删除待办"]}
|
||||
</a>
|
||||
}
|
||||
]
|
||||
}} placement="bottomRight"
|
||||
overlayClassName={styles.moreIconWrapper}
|
||||
>
|
||||
<MoreOutlined style={{ fontSize: 16 }}/>
|
||||
</Dropdown>
|
||||
</Space>;
|
||||
} else if (selectedKey === "fixed") {
|
||||
|
|
@ -116,27 +128,25 @@ const payrollFilesTable: FC = (props) => {
|
|||
)}>
|
||||
{i18n["编辑"]}
|
||||
</Button>
|
||||
<Dropdown
|
||||
overlayClassName={styles.moreIconWrapper}
|
||||
overlay={
|
||||
<Menu>
|
||||
<Menu.Item key="payroll">
|
||||
<Button type="link" style={{ padding: "0", fontSize: 12 }}
|
||||
onClick={() => handleMenuClick({ key: "stopSalary" }, r?.id)}
|
||||
>
|
||||
{i18n["停薪"]}
|
||||
</Button>
|
||||
</Menu.Item>
|
||||
<Menu.Item key="deletePendingTodo">
|
||||
<Button type="link" style={{ padding: "0", fontSize: 12 }}
|
||||
onClick={() => handleMenuClick({ key: "deleteSuspendTodo" }, r?.id)}>
|
||||
{i18n["删除待办"]}
|
||||
</Button>
|
||||
</Menu.Item>
|
||||
</Menu>
|
||||
}
|
||||
<Button type="link" style={{ padding: "0", fontSize: 12 }}
|
||||
onClick={() => handleMenuClick({ key: "stopSalary" }, r?.id)}
|
||||
>
|
||||
<a>{i18n["更多"]}<DownOutlined/></a>
|
||||
{i18n["停薪"]}
|
||||
</Button>
|
||||
<Dropdown
|
||||
menu={{
|
||||
items: [
|
||||
{
|
||||
key: "deleteSuspendTodo",
|
||||
label: <a onClick={() => handleMenuClick({ key: "deleteSuspendTodo" }, r?.id)}>
|
||||
{i18n["删除待办"]}
|
||||
</a>
|
||||
}
|
||||
]
|
||||
}} placement="bottomRight"
|
||||
overlayClassName={styles.moreIconWrapper}
|
||||
>
|
||||
<MoreOutlined style={{ fontSize: 16 }}/>
|
||||
</Dropdown>
|
||||
</Space>;
|
||||
} else {
|
||||
|
|
@ -154,6 +164,23 @@ const payrollFilesTable: FC = (props) => {
|
|||
onClick={() => handleMenuClick({ key: "view" }, r as string)}>
|
||||
{i18n["查看"]}
|
||||
</Button>
|
||||
{
|
||||
salaryArchiveDelete === "1" &&
|
||||
<Dropdown placement="bottomRight" overlayClassName={styles.moreIconWrapper}
|
||||
menu={{
|
||||
items: [
|
||||
{
|
||||
key: "deleteAchives",
|
||||
label: <a onClick={() => handleMenuClick({ key: "deleteAchives" }, r?.id)}>
|
||||
删除档案
|
||||
</a>
|
||||
}
|
||||
]
|
||||
}}
|
||||
>
|
||||
<MoreOutlined style={{ fontSize: 16 }}/>
|
||||
</Dropdown>
|
||||
}
|
||||
</Space>;
|
||||
}
|
||||
}
|
||||
|
|
@ -161,7 +188,7 @@ const payrollFilesTable: FC = (props) => {
|
|||
}
|
||||
};
|
||||
}
|
||||
return { ...item };
|
||||
return _.omitBy({ ...item }, item => !item);
|
||||
}));
|
||||
setShowSumrow(showSum);
|
||||
setSumRow(_.isEmpty(countResult) ? { [new Date().getTime()]: new Date().getTime() } : countResult);
|
||||
|
|
@ -205,13 +232,14 @@ const payrollFilesTable: FC = (props) => {
|
|||
);
|
||||
}
|
||||
};
|
||||
|
||||
return <Table
|
||||
rowKey="id"
|
||||
className={cs({
|
||||
[styles.tableWrapper]: true,
|
||||
[styles.tableTotalWrapper]: true
|
||||
})}
|
||||
columns={columns}
|
||||
columns={!_.isEmpty(columns) && convertColumns(columns, _.findIndex(columns, ["dataIndex", "operate"]), Object.keys(columns).length)}
|
||||
dataSource={dataSource}
|
||||
size="small"
|
||||
rowSelection={rowSelection}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import React, { FC, useEffect, useState } from "react";
|
||||
import { Table, Typography } from "antd";
|
||||
import { Button, Table, Typography } from "antd";
|
||||
import { exceptStr } from "@/utils/common";
|
||||
import styles from "@/pages/atdTable/components/index.less";
|
||||
|
||||
|
|
@ -23,10 +23,30 @@ const ReportTable: FC = (props) => {
|
|||
if (!_.isEmpty(data)) {
|
||||
const { columns, dataSource, countResult, showSum, i18n } = data;
|
||||
setDataSource(dataSource);
|
||||
setColumns(columns);
|
||||
setShowSumrow(showSum);
|
||||
setSumRow(countResult);
|
||||
setI18n(i18n);
|
||||
setColumns(_.map(columns, item => {
|
||||
return {
|
||||
...item,
|
||||
children: _.map(item.children, child => {
|
||||
return {
|
||||
...child,
|
||||
render: (text: string, record: any) => {
|
||||
return <Button type="link" onClick={() => {
|
||||
window.parent.postMessage(
|
||||
{
|
||||
type: "turn",
|
||||
payload: { id: "PIVOTCHART", params: { record } }
|
||||
},
|
||||
"*"
|
||||
);
|
||||
}}>{text}</Button>;
|
||||
}
|
||||
};
|
||||
})
|
||||
};
|
||||
}));
|
||||
}
|
||||
};
|
||||
return <Table
|
||||
|
|
|
|||
|
|
@ -49,6 +49,15 @@ export const getPicSuffix = () => {
|
|||
return config.get("picSuffix");
|
||||
};
|
||||
|
||||
/**
|
||||
* 数组中某项移至数组末尾
|
||||
* @returns {array}
|
||||
*/
|
||||
export const convertColumns = (array, fromIndex, toIndex) => {
|
||||
array.splice(toIndex, 1, array.splice(fromIndex, 1)[0]);
|
||||
return array;
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否为JSON字符串
|
||||
* @returns {string}
|
||||
|
|
|
|||
Loading…
Reference in New Issue