Merge branch 'master' into feature/2.9.42310.01-薪资项目拓扑图

# Conflicts:
#	src/pages/atdTable/components/index.less
#	src/pages/calcTable/calcExplainFooter.tsx
release/2.19.1.2503.01-业务线个税
lys 5 months ago
commit e7f1958694

@ -53,397 +53,400 @@
} }
:global { :global {
span.anticon { span.anticon-lock, span.anticon-question-circle {
color: #5d9cec; color: #5d9cec;
cursor: pointer;
}
span.anticon-lock { span.anticon {
margin-left: 4px; color: #5d9cec;
cursor: pointer;
}
} }
} }
}
.titleWrapper:hover { .titleWrapper:hover {
& > span.titleIcon { & > span.titleIcon {
display: block; display: block;
}
} }
}
.optWrapper { .optWrapper {
.mr10 { .mr10 {
margin-right: 10px; margin-right: 10px;
}
} }
}
.customSpan { .customSpan {
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%; width: 100%;
justify-content: space-between; justify-content: space-between;
span.title { span.title {
flex: 1; flex: 1;
margin-right: 4px; margin-right: 4px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
:global { :global {
.ant-tag { .ant-tag {
margin-right: 0; margin-right: 0;
}
} }
} }
}
.danger { .feedbackBg {
font-size: var(--data-size); background: #FF0;
color: rgb(217, 0, 27)
} }
.expand-th:hover { .danger {
.toogle-lock-tool { font-size: var(--data-size);
display: flex; color: rgb(217, 0, 27)
} }
}
th.td_odd {
background: #fffaf0 !important;
}
.expand-th { .expand-th:hover {
display: flex; .toogle-lock-tool {
align-items: center; display: flex;
justify-content: center; }
width: 100%; }
height: 100%;
.title-text { th.td_odd {
flex: 1; background: #fffaf0 !important;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
} }
.toogle-lock-tool { .expand-th {
display: none; display: flex;
overflow: hidden;
height: 100%;
justify-content: center;
align-items: center; align-items: center;
justify-content: center;
width: 100%;
height: 100%;
& > :not(:last-child) { .title-text {
margin-right: 4px; flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
} }
:global { .toogle-lock-tool {
.anticon { display: none;
color: #5d9cec; overflow: hidden;
cursor: pointer; height: 100%;
font-size: 14px; justify-content: center;
align-items: center;
& > :not(:last-child) {
margin-right: 4px;
}
:global {
.anticon {
color: #5d9cec;
cursor: pointer;
font-size: 14px;
}
} }
} }
} }
}
.explain-icon-area { .explain-icon-area {
display: flex;
justify-content: flex-start;
align-items: center;
.icon-item {
display: flex; display: flex;
justify-content: flex-start;
align-items: center; align-items: center;
margin-right: 12px;
color: #5d9cec;
font-size: var(--data-size);
:global { .icon-item {
.anticon { display: flex;
font-size: var(--data-size); align-items: center;
margin-right: 4px; margin-right: 12px;
color: #5d9cec;
font-size: var(--data-size);
:global {
.anticon {
font-size: var(--data-size);
margin-right: 4px;
}
} }
} }
} }
}
.comparison-column-item-container {
cursor: pointer;
.comparison-single-row {
margin: 4px 0;
}
.danger { .comparison-column-item-container {
color: #ff4d4f; cursor: pointer;
}
}
tr:hover .editable-cell { .comparison-single-row {
padding: 4px 11px; margin: 4px 0;
border: 1px solid #d9d9d9; }
border-radius: 2px;
}
:global { .danger {
.ant-btn-link { color: #ff4d4f;
height: inherit !important; }
} }
.ant-btn-link, .ant-dropdown-trigger { tr:hover .editable-cell {
padding: 0; padding: 4px 11px;
font-size: var(--data-size); border: 1px solid #d9d9d9;
color: #333; border-radius: 2px;
} }
.ant-btn-link:hover { :global {
color: #00a9ff; .ant-btn-link {
height: inherit !important;
}
span { .ant-btn-link, .ant-dropdown-trigger {
text-decoration: underline; padding: 0;
font-size: var(--data-size);
color: #333;
} }
}
.ant-table-tbody > tr.ant-table-row:hover > td { .ant-btn-link:hover {
background: #e9f7ff; color: #00a9ff;
}
.anticon-more { span {
font-size: 16px; text-decoration: underline;
cursor: pointer; }
} }
.ant-spin-container { .ant-table-tbody > tr.ant-table-row:hover > td {
.ant-pagination { background: #e9f7ff;
font-size: var(--data-size); }
align-items: center;
margin-right: 8px; .anticon-more {
font-size: 16px;
cursor: pointer;
}
.ant-pagination-item, .ant-pagination-prev, .ant-pagination-next { .ant-spin-container {
min-width: 28px; .ant-pagination {
height: 28px; font-size: var(--data-size);
line-height: 28px; align-items: center;
border-radius: 6px; margin-right: 8px;
& > button { .ant-pagination-item, .ant-pagination-prev, .ant-pagination-next {
min-width: 28px;
height: 28px;
line-height: 28px;
border-radius: 6px; border-radius: 6px;
& > button {
border-radius: 6px;
}
} }
}
.ant-pagination-item-active { .ant-pagination-item-active {
background: var(--ant-primary-color); background: var(--ant-primary-color);
border: none; border: none;
& > a { & > a {
color: #FFF; color: #FFF;
}
} }
}
.ant-pagination-options { .ant-pagination-options {
.ant-select { .ant-select {
font-size: var(--data-size); font-size: var(--data-size);
.ant-select-selector { .ant-select-selector {
height: 28px; height: 28px;
border-radius: 6px; border-radius: 6px;
.ant-select-selection-search-input { .ant-select-selection-search-input {
height: 26px; height: 26px;
line-height: 26px; line-height: 26px;
}
.ant-select-selection-item {
line-height: 26px;
}
} }
.ant-select-selection-item { .ant-select-item {
line-height: 26px; font-size: var(--data-size);
} }
} }
.ant-select-item { .ant-pagination-options-quick-jumper {
font-size: var(--data-size);
}
}
.ant-pagination-options-quick-jumper {
height: 28px;
line-height: 28px;
& > input {
border-radius: 6px;
height: 28px; height: 28px;
line-height: 28px;
& > input {
border-radius: 6px;
height: 28px;
}
} }
} }
} }
} }
}
.ant-table-thead > tr > th { .ant-table-thead > tr > th {
background-color: #f7fbfe; background-color: #f7fbfe;
} }
th, td { th, td {
font-size: var(--data-size); font-size: var(--data-size);
.ant-form-item { .ant-form-item {
margin-bottom: 0; margin-bottom: 0;
.ant-input-number { .ant-input-number {
width: 100%; width: 100%;
}
} }
} }
}
.ant-typography { .ant-typography {
margin-bottom: 0 !important; margin-bottom: 0 !important;
font-size: var(--data-size) !important; font-size: var(--data-size) !important;
} }
.ant-checkbox-inner { .ant-checkbox-inner {
width: 14px; width: 14px;
height: 14px; height: 14px;
} }
.ant-table-header {
.ant-checkbox-checked {
.ant-checkbox-inner:after {
width: 5px !important;
}
}
.ant-table-header {
.ant-checkbox-checked {
.ant-checkbox-inner:after { .ant-checkbox-inner:after {
width: 5px !important; width: 8px !important;
} }
} }
.ant-checkbox-inner:after { .ant-checkbox-inner:after {
width: 8px !important; width: 5px;
height: 8px;
} }
} }
.ant-checkbox-inner:after {
width: 5px;
height: 8px;
}
} }
}
.moreIconWrapper {
:global {
.ant-btn-link {
font-size: var(--data-size);
color: #333;
}
.ant-btn-link:hover { .moreIconWrapper {
color: #00a9ff; :global {
.ant-btn-link {
span {
text-decoration: underline;
}
}
.ant-dropdown-menu-title-content {
a {
font-size: var(--data-size); font-size: var(--data-size);
color: #333; color: #333;
} }
a:hover { .ant-btn-link:hover {
color: #00a9ff; color: #00a9ff;
text-decoration: underline;
span {
text-decoration: underline;
}
} }
}
.ant-popover-inner { .ant-dropdown-menu-title-content {
min-width: 106px a {
} font-size: var(--data-size);
color: #333;
}
a:hover {
color: #00a9ff;
text-decoration: underline;
}
}
.ant-popover-inner {
min-width: 106px
}
.ant-popover-inner-content { .ant-popover-inner-content {
padding: 0; padding: 0;
}
} }
} }
}
:global { :global {
.ant-dropdown-placement-bottomRight { .ant-dropdown-placement-bottomRight {
.ant-dropdown-menu { .ant-dropdown-menu {
max-height: inherit !important; max-height: inherit !important;
}
}
.ant-dropdown-menu-item {
font-size: var(--data-size);
color: #333;
} }
}
.ant-dropdown-menu-item { .rankMapWrapper {
font-size: var(--data-size); .ant-table-thead > tr > th {
color: #333; background: #ED7D31;
} }
}
.rankMapWrapper { .bg_1_Cols {
.ant-table-thead > tr > th { background: #ED7D31 !important;
background: #ED7D31;
} }
}
.bg_1_Cols { th.bg_1_Cols {
background: #ED7D31 !important; height: 48px;
} line-height: 48px;
}
th.bg_1_Cols { .bg_2_Cols {
height: 48px; background: #DEE0E3 !important;
line-height: 48px; }
} }
.bg_2_Cols { //自适应表格样式
background: #DEE0E3 !important; .resizeTable {
width: 1920px;
height: 100%;
//height: 1080px;
//position: absolute;
//top: 50%;
//left: 50%;
////transform: scale(0.5, 0.5) translate(-50%, -50%);
//transform: translate(-50%, -50%);
//transform-origin: left top;
overflow-y: hidden;
} }
}
//自适应表格样式
.resizeTable {
width: 1920px;
height: 100%;
//height: 1080px;
//position: absolute;
//top: 50%;
//left: 50%;
////transform: scale(0.5, 0.5) translate(-50%, -50%);
//transform: translate(-50%, -50%);
//transform-origin: left top;
overflow-y: hidden;
}
//右键菜单样式
.contextMenu {
min-width: 120px;
:global { //右键菜单样式
.ant-dropdown-menu { .contextMenu {
padding: 0; min-width: 120px;
.ant-dropdown-menu-item:hover { :global {
background-color: #57c5f7; .ant-dropdown-menu {
color: #fff; padding: 0;
.ant-dropdown-menu-item-icon { .ant-dropdown-menu-item:hover {
background-color: #57c5f7; background-color: #57c5f7;
color: #fff; color: #fff;
}
}
.ant-dropdown-menu-item { .ant-dropdown-menu-item-icon {
height: 30px; background-color: #57c5f7;
line-height: 30px; color: #fff;
padding: 0 5px 0 0; }
overflow: hidden; }
white-space: nowrap;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
color: #333;
.ant-dropdown-menu-item-icon { .ant-dropdown-menu-item {
display: flex; height: 30px;
justify-content: center; line-height: 30px;
width: 36px; padding: 0 5px 0 0;
height: 100%; overflow: hidden;
margin-right: 6px; white-space: nowrap;
text-align: center; -o-text-overflow: ellipsis;
background: #f2f5f7; text-overflow: ellipsis;
color: #333;
.ant-dropdown-menu-item-icon {
display: flex;
justify-content: center;
width: 36px;
height: 100%;
margin-right: 6px;
text-align: center;
background: #f2f5f7;
}
} }
} }
} }
} }
}

@ -1,6 +1,6 @@
import React, { FunctionComponent } from "react"; import React, { FunctionComponent } from "react";
import Icon from "@/lib/CustomIcon"; import Icon from "@/lib/CustomIcon";
import { LockOutlined, UnlockOutlined } from "@ant-design/icons"; import { LockOutlined, UnlockOutlined, QuestionCircleOutlined } from "@ant-design/icons";
import styles from "@/pages/atdTable/components/index.less"; import styles from "@/pages/atdTable/components/index.less";
interface OwnProps { interface OwnProps {
@ -14,22 +14,29 @@ const CalcExplainFooter: FunctionComponent<Props> = (props) => {
return ( return (
<div className={styles["explain-icon-area"]}> <div className={styles["explain-icon-area"]}>
<div className={styles["icon-item"]}> <div className={styles["icon-item"]}>
<Icon type="icon-piliangsuoding"/> <Icon type="icon-piliangsuoding" />
<span>{i18n["批量锁定"]}</span> <span>{i18n["批量锁定"]}</span>
</div> </div>
<div className={styles["icon-item"]}> <div className={styles["icon-item"]}>
<Icon type="icon-piliangjiesuo"/> <Icon type="icon-piliangjiesuo" />
<span>{i18n["批量解锁"]}</span> <span>{i18n["批量解锁"]}</span>
</div> </div>
<div className={styles["icon-item"]}> <div className={styles["icon-item"]}>
<LockOutlined/> <LockOutlined />
<span>{i18n["当前状态锁定,右击解锁"]}</span> <span>{i18n["当前状态锁定,右击解锁"]}</span>
</div> </div>
<div className={styles["icon-item"]}> <div className={styles["icon-item"]}>
<UnlockOutlined/> <UnlockOutlined />
<span>{i18n["当前状态未锁定,右击锁定"]}</span> <span>{i18n["当前状态未锁定,右击锁定"]}</span>
</div> </div>
{(i18n["反馈信息,右击删除反馈信息"] || i18n["反馈信息,右击设置反馈信息"]) && (
<div className={styles["icon-item"]}>
<QuestionCircleOutlined />
<span>{i18n["反馈信息,右击删除反馈信息"] || i18n["反馈信息,右击设置反馈信息"]}</span>
</div>
)}
<div className={styles["icon-item"]}> <div className={styles["icon-item"]}>
<Icon type="icon-pilianggengxin" />
<Icon type="icon-piliangfenpei"/> <Icon type="icon-piliangfenpei"/>
<span>{i18n["查看拓扑图"]}</span> <span>{i18n["查看拓扑图"]}</span>
</div> </div>

@ -6,8 +6,8 @@
*/ */
import React, { FunctionComponent, useEffect, useState } from "react"; import React, { FunctionComponent, useEffect, useState } from "react";
import type { MenuProps } from "antd"; import type { MenuProps } from "antd";
import { Button, Dropdown, Space, Table, Typography } from "antd"; import { Button, Dropdown, Space, Table, Tooltip, Typography } from "antd";
import { LockOutlined, UnlockOutlined } from "@ant-design/icons"; import { DeleteOutlined, LockOutlined, QuestionCircleOutlined, SettingOutlined, UnlockOutlined } from "@ant-design/icons";
import CustomTableTitle from "@/pages/calcTable/customTableTitle"; import CustomTableTitle from "@/pages/calcTable/customTableTitle";
import CalcExplainFooter from "@/pages/calcTable/calcExplainFooter"; import CalcExplainFooter from "@/pages/calcTable/calcExplainFooter";
import CaclFixedTotal from "./calcFixedTotal"; import CaclFixedTotal from "./calcFixedTotal";
@ -131,43 +131,81 @@ const index: FunctionComponent<Props> = (props) => {
className: styles["td_odd"], className: styles["td_odd"],
i18n: item.i18n, i18n: item.i18n,
onCell: (record: any) => ({ onCell: (record: any) => ({
className: !_.isEmpty(record[`${item.dataIndex}_feedback`]) && styles["feedbackBg"],
onContextMenu: (e: any) => { onContextMenu: (e: any) => {
!item.calcDetail && e.preventDefault(); (!item.calcDetail || item.rightClickType) && e.preventDefault();
} }
}), }),
render: (text: string, record: any) => { render: (text: string, record: any) => {
const items: MenuProps["items"] = [ let items: MenuProps["items"] = !item.calcDetail
{ ? [
label: item.i18n["锁定"], {
key: "LOCK", label: item.i18n["锁定"],
icon: <LockOutlined />, key: "LOCK",
onClick: () => icon: <LockOutlined />,
handleLockEmp({ onClick: () =>
lockStatus: "LOCK", handleLockEmp({
acctEmpId: record?.id, lockStatus: "LOCK",
salaryItemId: item?.dataIndex acctEmpId: record?.id,
}) salaryItemId: item?.dataIndex
}, })
{ },
label: item.i18n["解锁"], {
key: "UNLOCK", label: item.i18n["解锁"],
icon: <UnlockOutlined />, key: "UNLOCK",
onClick: () => icon: <UnlockOutlined />,
handleLockEmp({ onClick: () =>
lockStatus: "UNLOCK", handleLockEmp({
acctEmpId: record?.id, lockStatus: "UNLOCK",
salaryItemId: item?.dataIndex acctEmpId: record?.id,
}) salaryItemId: item?.dataIndex
} })
]; }
]
: [];
item.rightClickType &&
item.rightClickType.includes("DELFEEDBACK") &&
(items = [
...items,
{
label: item.i18n["删除反馈"],
key: "DELFEEDBACK",
icon: <DeleteOutlined />,
onClick: () =>
handleDelFeedback({
acctEmpId: record?.id,
salaryItemId: item?.dataIndex
})
}
]);
item.rightClickType &&
item.rightClickType.includes("SETFEEDBACK") &&
(items = [
...items,
{
label: item.i18n["设置反馈"],
key: "SETFEEDBACK",
icon: <SettingOutlined />,
onClick: () =>
handleSetFeedback({
acctEmpId: record?.id,
salaryItemId: item?.dataIndex
})
}
]);
return ( return (
<Dropdown menu={{ items: !item.calcDetail ? items : [] }} trigger={["contextMenu"]} overlayClassName={styles.contextMenu} destroyPopupOnHide> <Dropdown menu={{ items: !item.calcDetail || item.rightClickType ? items : [] }} trigger={["contextMenu"]} overlayClassName={styles.contextMenu} destroyPopupOnHide>
<span className={styles.contentSpan}> <span className={styles.contentSpan}>
<span title={text} className={styles.contentTitle} style={{ color: `${record?.[item.dataIndex + "_color"]}` }}> <span title={text} className={styles.contentTitle} style={{ color: `${record?.[item.dataIndex + "_color"]}` }}>
{text} {text}
</span> </span>
<Icon type="icon-piliangfenpei" title={i18n["查看拓扑图"]} className={styles.diagramIcon} onClick={() => handleDiagramTd(item?.dataIndex, record?.id)} /> <Icon type="icon-piliangfenpei" title={i18n["查看拓扑图"]} className={styles.diagramIcon} onClick={() => handleDiagramTd(item?.dataIndex, record?.id)} />
{record.lockItems && record.lockItems.includes(item.dataIndex) ? <LockOutlined title={item.i18n["锁定的项目值"]} /> : null} {record.lockItems && record.lockItems.includes(item.dataIndex) ? <LockOutlined title={item.i18n["锁定的项目值"]} /> : null}
{!_.isEmpty(record[`${item.dataIndex}_feedback`]) ? (
<Tooltip title={record[`${item.dataIndex}_feedback`]}>
<QuestionCircleOutlined />
</Tooltip>
) : null}
</span> </span>
</Dropdown> </Dropdown>
); );
@ -188,6 +226,13 @@ const index: FunctionComponent<Props> = (props) => {
const handleLockEmp = (params: any) => { const handleLockEmp = (params: any) => {
window.parent.postMessage({ type: "turn", payload: { id: "LOCKEMP", params } }, "*"); window.parent.postMessage({ type: "turn", payload: { id: "LOCKEMP", params } }, "*");
}; };
// 复旦大学附属医院二开-薪资核算项添加右击删除反馈的操作
const handleDelFeedback = (params: any) => {
window.parent.postMessage({ type: "turn", payload: { id: "DELFEEDBACK", params } }, "*");
};
const handleSetFeedback = (params: any) => {
window.parent.postMessage({ type: "turn", payload: { id: "SETFEEDBACK", params } }, "*");
};
const sizeChange = (pageobj: IPage) => {}; const sizeChange = (pageobj: IPage) => {};
const onChange = (pageobj: IPage) => { const onChange = (pageobj: IPage) => {
setPageInfo(() => { setPageInfo(() => {

Loading…
Cancel
Save