Merge branch 'master' into feature/V2-系统多语言

# Conflicts:
#	src/pages/payrollFilesTable/index.tsx
#	src/pages/reportTable/index.tsx
feature/V2-系统多语言
黎永顺 2 years ago
commit fb8acee257

@ -21,11 +21,10 @@
}, },
"dependencies": { "dependencies": {
"@ant-design/pro-layout": "6.32.1", "@ant-design/pro-layout": "6.32.1",
"@formily/antd": "^2.0.6",
"@types/lodash": "^4.14.172", "@types/lodash": "^4.14.172",
"@ztree/ztree_v3": "^3.5.42", "@ztree/ztree_v3": "^3.5.42",
"ahooks": "^3.1.3", "ahooks": "^3.1.3",
"antd": "^4.17.3", "antd": "^4.24.10",
"axios": "^0.22.0", "axios": "^0.22.0",
"fbemitter": "^3.0.0", "fbemitter": "^3.0.0",
"js-base64": "^3.6.1", "js-base64": "^3.6.1",
@ -57,7 +56,6 @@
"@types/react": "^17.0.2", "@types/react": "^17.0.2",
"@types/react-dom": "^17.0.2", "@types/react-dom": "^17.0.2",
"@umijs/plugin-access": "2.4.2", "@umijs/plugin-access": "2.4.2",
"umi-plugin-authorize": "^2.8.12",
"@umijs/plugin-dva": "^0.13.0", "@umijs/plugin-dva": "^0.13.0",
"@umijs/plugin-initial-state": "^2.4.0", "@umijs/plugin-initial-state": "^2.4.0",
"@umijs/plugin-locale": "^0.15.0", "@umijs/plugin-locale": "^0.15.0",
@ -70,6 +68,7 @@
"prettier": "^2.2.0", "prettier": "^2.2.0",
"typescript": "^4.3.5", "typescript": "^4.3.5",
"umi": "^3.5.20", "umi": "^3.5.20",
"umi-plugin-authorize": "^2.8.12",
"yorkie": "^2.0.0" "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 { .ant-popover-inner {
min-width: 106px min-width: 106px
} }
@ -194,16 +206,6 @@
.ant-popover-inner-content { .ant-popover-inner-content {
padding: 0; 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 React, { FC, useEffect, useState } from "react";
import { Button, Dropdown, Menu, Space, Spin, Table, Typography } from "antd"; import { Button, Dropdown, Space, Spin, Table, Typography } from "antd";
import { DownOutlined } from "@ant-design/icons"; import { MoreOutlined } from "@ant-design/icons";
import { exceptStr, paginationFun } from "@/utils/common"; import { convertColumns, exceptStr, paginationFun } from "@/utils/common";
import styles from "@/pages/atdTable/components/index.less"; import styles from "@/pages/atdTable/components/index.less";
import { defaultPage, IPage } from "@/common/types"; import { defaultPage, IPage } from "@/common/types";
import cs from "classnames"; import cs from "classnames";
@ -35,6 +35,7 @@ const payrollFilesTable: FC = (props) => {
showOperateBtn, showOperateBtn,
selectedKey, selectedKey,
selectedRowKeys, selectedRowKeys,
salaryArchiveDelete,
i18n i18n
} = data; } = data;
const { current: pageNum, pageSize: size, total } = pageInfo; const { current: pageNum, pageSize: size, total } = pageInfo;
@ -72,27 +73,38 @@ const payrollFilesTable: FC = (props) => {
> >
{i18n["编辑"]} {i18n["编辑"]}
</Button> </Button>
<Dropdown <Button type="link" style={{ padding: "0" }}
overlayClassName={styles.moreIconWrapper}
overlay={
<Menu>
<Menu.Item key="payroll">
<Button type="link" style={{ padding: "0", fontSize: 12 }}
onClick={() => handleMenuClick({ key: "payroll" }, r?.id)} onClick={() => handleMenuClick({ key: "payroll" }, r?.id)}
> >
{i18n["设为发薪人员"]} {i18n["设为发薪人员"]}
</Button> </Button>
</Menu.Item> <Dropdown
<Menu.Item key="deletePendingTodo"> menu={{
<Button type="link" style={{ padding: "0", fontSize: 12 }} items: salaryArchiveDelete === "1" ? [
onClick={() => handleMenuClick({ key: "deletePendingTodo" }, r?.id)}> {
key: "deletePendingTodo",
label: <a onClick={() => handleMenuClick({ key: "deletePendingTodo" }, r?.id)}>
{i18n["删除待办"]} {i18n["删除待办"]}
</Button> </a>
</Menu.Item> },
</Menu> {
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}
> >
<a>{i18n["更多"]}<DownOutlined/></a> <MoreOutlined style={{ fontSize: 16 }}/>
</Dropdown> </Dropdown>
</Space>; </Space>;
} else if (selectedKey === "fixed") { } else if (selectedKey === "fixed") {
@ -116,27 +128,25 @@ const payrollFilesTable: FC = (props) => {
)}> )}>
{i18n["编辑"]} {i18n["编辑"]}
</Button> </Button>
<Dropdown
overlayClassName={styles.moreIconWrapper}
overlay={
<Menu>
<Menu.Item key="payroll">
<Button type="link" style={{ padding: "0", fontSize: 12 }} <Button type="link" style={{ padding: "0", fontSize: 12 }}
onClick={() => handleMenuClick({ key: "stopSalary" }, r?.id)} onClick={() => handleMenuClick({ key: "stopSalary" }, r?.id)}
> >
{i18n["停薪"]} {i18n["停薪"]}
</Button> </Button>
</Menu.Item> <Dropdown
<Menu.Item key="deletePendingTodo"> menu={{
<Button type="link" style={{ padding: "0", fontSize: 12 }} items: [
onClick={() => handleMenuClick({ key: "deleteSuspendTodo" }, r?.id)}> {
key: "deleteSuspendTodo",
label: <a onClick={() => handleMenuClick({ key: "deleteSuspendTodo" }, r?.id)}>
{i18n["删除待办"]} {i18n["删除待办"]}
</Button> </a>
</Menu.Item>
</Menu>
} }
]
}} placement="bottomRight"
overlayClassName={styles.moreIconWrapper}
> >
<a>{i18n["更多"]}<DownOutlined/></a> <MoreOutlined style={{ fontSize: 16 }}/>
</Dropdown> </Dropdown>
</Space>; </Space>;
} else { } else {
@ -154,6 +164,23 @@ const payrollFilesTable: FC = (props) => {
onClick={() => handleMenuClick({ key: "view" }, r as string)}> onClick={() => handleMenuClick({ key: "view" }, r as string)}>
{i18n["查看"]} {i18n["查看"]}
</Button> </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>; </Space>;
} }
} }
@ -161,7 +188,7 @@ const payrollFilesTable: FC = (props) => {
} }
}; };
} }
return { ...item }; return _.omitBy({ ...item }, item => !item);
})); }));
setShowSumrow(showSum); setShowSumrow(showSum);
setSumRow(_.isEmpty(countResult) ? { [new Date().getTime()]: new Date().getTime() } : countResult); setSumRow(_.isEmpty(countResult) ? { [new Date().getTime()]: new Date().getTime() } : countResult);
@ -205,13 +232,14 @@ const payrollFilesTable: FC = (props) => {
); );
} }
}; };
return <Table return <Table
rowKey="id" rowKey="id"
className={cs({ className={cs({
[styles.tableWrapper]: true, [styles.tableWrapper]: true,
[styles.tableTotalWrapper]: true [styles.tableTotalWrapper]: true
})} })}
columns={columns} columns={!_.isEmpty(columns) && convertColumns(columns, _.findIndex(columns, ["dataIndex", "operate"]), Object.keys(columns).length)}
dataSource={dataSource} dataSource={dataSource}
size="small" size="small"
rowSelection={rowSelection} rowSelection={rowSelection}

@ -1,5 +1,5 @@
import React, { FC, useEffect, useState } from "react"; import React, { FC, useEffect, useState } from "react";
import { Table, Typography } from "antd"; import { Button, Table, Typography } from "antd";
import { exceptStr } from "@/utils/common"; import { exceptStr } from "@/utils/common";
import styles from "@/pages/atdTable/components/index.less"; import styles from "@/pages/atdTable/components/index.less";
@ -23,10 +23,30 @@ const ReportTable: FC = (props) => {
if (!_.isEmpty(data)) { if (!_.isEmpty(data)) {
const { columns, dataSource, countResult, showSum, i18n } = data; const { columns, dataSource, countResult, showSum, i18n } = data;
setDataSource(dataSource); setDataSource(dataSource);
setColumns(columns);
setShowSumrow(showSum); setShowSumrow(showSum);
setSumRow(countResult); setSumRow(countResult);
setI18n(i18n); 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 return <Table

@ -49,6 +49,15 @@ export const getPicSuffix = () => {
return config.get("picSuffix"); return config.get("picSuffix");
}; };
/**
* 数组中某项移至数组末尾
* @returns {array}
*/
export const convertColumns = (array, fromIndex, toIndex) => {
array.splice(toIndex, 1, array.splice(fromIndex, 1)[0]);
return array;
};
/** /**
* 判断是否为JSON字符串 * 判断是否为JSON字符串
* @returns {string} * @returns {string}

Loading…
Cancel
Save