diff --git a/src/pages/atdTable/components/index.less b/src/pages/atdTable/components/index.less index d9929ba..6dce0f2 100644 --- a/src/pages/atdTable/components/index.less +++ b/src/pages/atdTable/components/index.less @@ -53,397 +53,400 @@ } :global { - span.anticon { + span.anticon-lock, span.anticon-question-circle { color: #5d9cec; - cursor: pointer; - } - span.anticon-lock { - margin-left: 4px; + span.anticon { + color: #5d9cec; + cursor: pointer; + } } } - } - .titleWrapper:hover { - & > span.titleIcon { - display: block; + .titleWrapper:hover { + & > span.titleIcon { + display: block; + } } - } - .optWrapper { - .mr10 { - margin-right: 10px; + .optWrapper { + .mr10 { + margin-right: 10px; + } } - } - .customSpan { - display: flex; - align-items: center; - width: 100%; - justify-content: space-between; + .customSpan { + display: flex; + align-items: center; + width: 100%; + justify-content: space-between; - span.title { - flex: 1; - margin-right: 4px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } + span.title { + flex: 1; + margin-right: 4px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } - :global { - .ant-tag { - margin-right: 0; + :global { + .ant-tag { + margin-right: 0; + } } } - } - .danger { - font-size: var(--data-size); - color: rgb(217, 0, 27) + .feedbackBg { + background: #FF0; } - .expand-th:hover { - .toogle-lock-tool { - display: flex; + .danger { + font-size: var(--data-size); + color: rgb(217, 0, 27) } - } - - th.td_odd { - background: #fffaf0 !important; - } - .expand-th { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; + .expand-th:hover { + .toogle-lock-tool { + display: flex; + } + } - .title-text { - flex: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: pointer; + th.td_odd { + background: #fffaf0 !important; } - .toogle-lock-tool { - display: none; - overflow: hidden; - height: 100%; - justify-content: center; + .expand-th { + display: flex; align-items: center; + justify-content: center; + width: 100%; + height: 100%; - & > :not(:last-child) { - margin-right: 4px; + .title-text { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; } - :global { - .anticon { - color: #5d9cec; - cursor: pointer; - font-size: 14px; + .toogle-lock-tool { + display: none; + overflow: hidden; + height: 100%; + justify-content: center; + align-items: center; + + & > :not(:last-child) { + margin-right: 4px; + } + + :global { + .anticon { + color: #5d9cec; + cursor: pointer; + font-size: 14px; + } } } } - } - .explain-icon-area { - display: flex; - justify-content: flex-start; - align-items: center; - - .icon-item { + .explain-icon-area { display: flex; + justify-content: flex-start; align-items: center; - margin-right: 12px; - color: #5d9cec; - font-size: var(--data-size); - :global { - .anticon { - font-size: var(--data-size); - margin-right: 4px; + .icon-item { + display: flex; + align-items: center; + 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 { - color: #ff4d4f; - } - } + .comparison-column-item-container { + cursor: pointer; - tr:hover .editable-cell { - padding: 4px 11px; - border: 1px solid #d9d9d9; - border-radius: 2px; - } + .comparison-single-row { + margin: 4px 0; + } - :global { - .ant-btn-link { - height: inherit !important; + .danger { + color: #ff4d4f; + } } - .ant-btn-link, .ant-dropdown-trigger { - padding: 0; - font-size: var(--data-size); - color: #333; + tr:hover .editable-cell { + padding: 4px 11px; + border: 1px solid #d9d9d9; + border-radius: 2px; } - .ant-btn-link:hover { - color: #00a9ff; + :global { + .ant-btn-link { + height: inherit !important; + } - span { - text-decoration: underline; + .ant-btn-link, .ant-dropdown-trigger { + padding: 0; + font-size: var(--data-size); + color: #333; } - } - .ant-table-tbody > tr.ant-table-row:hover > td { - background: #e9f7ff; - } + .ant-btn-link:hover { + color: #00a9ff; - .anticon-more { - font-size: 16px; - cursor: pointer; - } + span { + text-decoration: underline; + } + } - .ant-spin-container { - .ant-pagination { - font-size: var(--data-size); - align-items: center; - margin-right: 8px; + .ant-table-tbody > tr.ant-table-row:hover > td { + background: #e9f7ff; + } + + .anticon-more { + font-size: 16px; + cursor: pointer; + } - .ant-pagination-item, .ant-pagination-prev, .ant-pagination-next { - min-width: 28px; - height: 28px; - line-height: 28px; - border-radius: 6px; + .ant-spin-container { + .ant-pagination { + font-size: var(--data-size); + align-items: center; + margin-right: 8px; - & > button { + .ant-pagination-item, .ant-pagination-prev, .ant-pagination-next { + min-width: 28px; + height: 28px; + line-height: 28px; border-radius: 6px; + + & > button { + border-radius: 6px; + } } - } - .ant-pagination-item-active { - background: var(--ant-primary-color); - border: none; + .ant-pagination-item-active { + background: var(--ant-primary-color); + border: none; - & > a { - color: #FFF; + & > a { + color: #FFF; + } } - } - .ant-pagination-options { - .ant-select { - font-size: var(--data-size); + .ant-pagination-options { + .ant-select { + font-size: var(--data-size); - .ant-select-selector { - height: 28px; - border-radius: 6px; + .ant-select-selector { + height: 28px; + border-radius: 6px; - .ant-select-selection-search-input { - height: 26px; - line-height: 26px; + .ant-select-selection-search-input { + height: 26px; + line-height: 26px; + } + + .ant-select-selection-item { + line-height: 26px; + } } - .ant-select-selection-item { - line-height: 26px; + .ant-select-item { + font-size: var(--data-size); } } - .ant-select-item { - font-size: var(--data-size); - } - } - - .ant-pagination-options-quick-jumper { - height: 28px; - line-height: 28px; - - & > input { - border-radius: 6px; + .ant-pagination-options-quick-jumper { height: 28px; + line-height: 28px; + + & > input { + border-radius: 6px; + height: 28px; + } } } } } - } - .ant-table-thead > tr > th { - background-color: #f7fbfe; - } + .ant-table-thead > tr > th { + background-color: #f7fbfe; + } - th, td { - font-size: var(--data-size); + th, td { + font-size: var(--data-size); - .ant-form-item { - margin-bottom: 0; + .ant-form-item { + margin-bottom: 0; - .ant-input-number { - width: 100%; + .ant-input-number { + width: 100%; + } } } - } - .ant-typography { - margin-bottom: 0 !important; - font-size: var(--data-size) !important; - } + .ant-typography { + margin-bottom: 0 !important; + font-size: var(--data-size) !important; + } - .ant-checkbox-inner { - width: 14px; - height: 14px; - } + .ant-checkbox-inner { + width: 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 { - width: 5px !important; + width: 8px !important; } } .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 { - color: #00a9ff; - - span { - text-decoration: underline; - } - } - - .ant-dropdown-menu-title-content { - a { + .moreIconWrapper { + :global { + .ant-btn-link { font-size: var(--data-size); color: #333; } - a:hover { + .ant-btn-link:hover { color: #00a9ff; - text-decoration: underline; + + span { + text-decoration: underline; + } } - } - .ant-popover-inner { - min-width: 106px - } + .ant-dropdown-menu-title-content { + 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 { - padding: 0; + .ant-popover-inner-content { + padding: 0; + } } } -} -:global { - .ant-dropdown-placement-bottomRight { - .ant-dropdown-menu { - max-height: inherit !important; + :global { + .ant-dropdown-placement-bottomRight { + .ant-dropdown-menu { + max-height: inherit !important; + } + } + + .ant-dropdown-menu-item { + font-size: var(--data-size); + color: #333; } - } - .ant-dropdown-menu-item { - font-size: var(--data-size); - color: #333; - } + .rankMapWrapper { + .ant-table-thead > tr > th { + background: #ED7D31; + } + } - .rankMapWrapper { - .ant-table-thead > tr > th { - background: #ED7D31; + .bg_1_Cols { + background: #ED7D31 !important; } - } - .bg_1_Cols { - background: #ED7D31 !important; - } + th.bg_1_Cols { + height: 48px; + line-height: 48px; + } - th.bg_1_Cols { - height: 48px; - line-height: 48px; + .bg_2_Cols { + background: #DEE0E3 !important; + } } - .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 { - padding: 0; + //右键菜单样式 + .contextMenu { + min-width: 120px; - .ant-dropdown-menu-item:hover { - background-color: #57c5f7; - color: #fff; + :global { + .ant-dropdown-menu { + padding: 0; - .ant-dropdown-menu-item-icon { + .ant-dropdown-menu-item:hover { background-color: #57c5f7; color: #fff; - } - } - .ant-dropdown-menu-item { - height: 30px; - line-height: 30px; - padding: 0 5px 0 0; - overflow: hidden; - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - color: #333; + .ant-dropdown-menu-item-icon { + background-color: #57c5f7; + color: #fff; + } + } - .ant-dropdown-menu-item-icon { - display: flex; - justify-content: center; - width: 36px; - height: 100%; - margin-right: 6px; - text-align: center; - background: #f2f5f7; + .ant-dropdown-menu-item { + height: 30px; + line-height: 30px; + padding: 0 5px 0 0; + overflow: hidden; + white-space: nowrap; + -o-text-overflow: ellipsis; + 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; + } } } } } -} diff --git a/src/pages/calcTable/calcExplainFooter.tsx b/src/pages/calcTable/calcExplainFooter.tsx index b2cd8ee..24ff0f6 100644 --- a/src/pages/calcTable/calcExplainFooter.tsx +++ b/src/pages/calcTable/calcExplainFooter.tsx @@ -1,6 +1,6 @@ import React, { FunctionComponent } from "react"; 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"; interface OwnProps { @@ -14,22 +14,29 @@ const CalcExplainFooter: FunctionComponent = (props) => { return (
- + {i18n["批量锁定"]}
- + {i18n["批量解锁"]}
- + {i18n["当前状态锁定,右击解锁"]}
- + {i18n["当前状态未锁定,右击锁定"]}
+ {(i18n["反馈信息,右击删除反馈信息"] || i18n["反馈信息,右击设置反馈信息"]) && ( +
+ + {i18n["反馈信息,右击删除反馈信息"] || i18n["反馈信息,右击设置反馈信息"]} +
+ )}
+ {i18n["查看拓扑图"]}
diff --git a/src/pages/calcTable/index.tsx b/src/pages/calcTable/index.tsx index 91c003a..8d8a5d1 100644 --- a/src/pages/calcTable/index.tsx +++ b/src/pages/calcTable/index.tsx @@ -6,8 +6,8 @@ */ import React, { FunctionComponent, useEffect, useState } from "react"; import type { MenuProps } from "antd"; -import { Button, Dropdown, Space, Table, Typography } from "antd"; -import { LockOutlined, UnlockOutlined } from "@ant-design/icons"; +import { Button, Dropdown, Space, Table, Tooltip, Typography } from "antd"; +import { DeleteOutlined, LockOutlined, QuestionCircleOutlined, SettingOutlined, UnlockOutlined } from "@ant-design/icons"; import CustomTableTitle from "@/pages/calcTable/customTableTitle"; import CalcExplainFooter from "@/pages/calcTable/calcExplainFooter"; import CaclFixedTotal from "./calcFixedTotal"; @@ -131,43 +131,81 @@ const index: FunctionComponent = (props) => { className: styles["td_odd"], i18n: item.i18n, onCell: (record: any) => ({ + className: !_.isEmpty(record[`${item.dataIndex}_feedback`]) && styles["feedbackBg"], onContextMenu: (e: any) => { - !item.calcDetail && e.preventDefault(); + (!item.calcDetail || item.rightClickType) && e.preventDefault(); } }), render: (text: string, record: any) => { - const items: MenuProps["items"] = [ - { - label: item.i18n["锁定"], - key: "LOCK", - icon: , - onClick: () => - handleLockEmp({ - lockStatus: "LOCK", - acctEmpId: record?.id, - salaryItemId: item?.dataIndex - }) - }, - { - label: item.i18n["解锁"], - key: "UNLOCK", - icon: , - onClick: () => - handleLockEmp({ - lockStatus: "UNLOCK", - acctEmpId: record?.id, - salaryItemId: item?.dataIndex - }) - } - ]; + let items: MenuProps["items"] = !item.calcDetail + ? [ + { + label: item.i18n["锁定"], + key: "LOCK", + icon: , + onClick: () => + handleLockEmp({ + lockStatus: "LOCK", + acctEmpId: record?.id, + salaryItemId: item?.dataIndex + }) + }, + { + label: item.i18n["解锁"], + key: "UNLOCK", + icon: , + onClick: () => + handleLockEmp({ + lockStatus: "UNLOCK", + acctEmpId: record?.id, + salaryItemId: item?.dataIndex + }) + } + ] + : []; + item.rightClickType && + item.rightClickType.includes("DELFEEDBACK") && + (items = [ + ...items, + { + label: item.i18n["删除反馈"], + key: "DELFEEDBACK", + icon: , + onClick: () => + handleDelFeedback({ + acctEmpId: record?.id, + salaryItemId: item?.dataIndex + }) + } + ]); + item.rightClickType && + item.rightClickType.includes("SETFEEDBACK") && + (items = [ + ...items, + { + label: item.i18n["设置反馈"], + key: "SETFEEDBACK", + icon: , + onClick: () => + handleSetFeedback({ + acctEmpId: record?.id, + salaryItemId: item?.dataIndex + }) + } + ]); return ( - + {text} handleDiagramTd(item?.dataIndex, record?.id)} /> {record.lockItems && record.lockItems.includes(item.dataIndex) ? : null} + {!_.isEmpty(record[`${item.dataIndex}_feedback`]) ? ( + + + + ) : null} ); @@ -188,6 +226,13 @@ const index: FunctionComponent = (props) => { const handleLockEmp = (params: any) => { 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 onChange = (pageobj: IPage) => { setPageInfo(() => {