|
@@ -4,7 +4,7 @@
|
|
* @Author: code4eat awesomedema@gmail.com
|
|
* @Author: code4eat awesomedema@gmail.com
|
|
* @Date: 2022-12-16 09:42:52
|
|
* @Date: 2022-12-16 09:42:52
|
|
* @LastEditors: code4eat awesomedema@gmail.com
|
|
* @LastEditors: code4eat awesomedema@gmail.com
|
|
- * @LastEditTime: 2023-05-10 14:33:11
|
|
|
|
|
|
+ * @LastEditTime: 2023-05-11 12:01:54
|
|
* @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
|
|
* @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
|
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
*/
|
|
*/
|
|
@@ -13,28 +13,29 @@
|
|
|
|
|
|
import BMSPagecontainer from '@/components/BMSPageContainer';
|
|
import BMSPagecontainer from '@/components/BMSPageContainer';
|
|
|
|
|
|
-import { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
|
|
|
|
+import { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
import './style.less';
|
|
import './style.less';
|
|
|
|
|
|
-import { Tree, TreeProps, Tabs, Input, Modal, Transfer, Popconfirm, message, Popover } from 'antd';
|
|
|
|
|
|
+import { TreeProps, Input, Modal, Transfer, Popconfirm, message, Popover } from 'antd';
|
|
import { DataNode } from 'antd/es/tree';
|
|
import { DataNode } from 'antd/es/tree';
|
|
|
|
|
|
import expandedIcon from '../../../../static/treenode_open.png';
|
|
import expandedIcon from '../../../../static/treenode_open.png';
|
|
import closeIcon from '../../../../static/treenode_collapse.png';
|
|
import closeIcon from '../../../../static/treenode_collapse.png';
|
|
import { BMSTable } from '@/components/BMSTable';
|
|
import { BMSTable } from '@/components/BMSTable';
|
|
-import { ActionType, ProColumns, ProColumnType } from '@ant-design/pro-components';
|
|
|
|
|
|
+import { ActionType, ProColumns } from '@ant-design/pro-components';
|
|
import { createFromIconfontCN } from '@ant-design/icons';
|
|
import { createFromIconfontCN } from '@ant-design/icons';
|
|
-import { checkRequest, delPersonRequest, generateDataRequest, getDepInfoTableData, getPersonInfoTableData, getProjectInfoTableData, getTotalEmps, getTreeData, getTreeDataRespType, PersonInfoTableDataType, saveEmpsRequest } from './service';
|
|
|
|
-import { TransferDirection } from 'antd/es/transfer';
|
|
|
|
|
|
+import { commitRequest, delPersonRequest, generateDataRequest, getCurrentCommitStatusReq, getPersonInfoTableData, getTotalEmps, getTreeData, getTreeDataRespType, saveEmpsRequest } from './service';
|
|
|
|
+import { TransferItem, TransferProps } from 'antd/es/transfer';
|
|
import { getComputeDate } from '@/pages/Home/service';
|
|
import { getComputeDate } from '@/pages/Home/service';
|
|
|
|
|
|
|
|
|
|
import 'dayjs/locale/zh-cn';
|
|
import 'dayjs/locale/zh-cn';
|
|
-import locale from 'antd/es/date-picker/locale/zh_CN';
|
|
|
|
-import { getCurrentCheckStatus } from '@/services/auth';
|
|
|
|
import React from 'react';
|
|
import React from 'react';
|
|
import DirectoryTree from 'antd/es/tree/DirectoryTree';
|
|
import DirectoryTree from 'antd/es/tree/DirectoryTree';
|
|
import { getDeepestTreeData } from '@/utils/tooljs';
|
|
import { getDeepestTreeData } from '@/utils/tooljs';
|
|
|
|
+import { ColumnsType } from 'antd/es/table';
|
|
|
|
+import { TableRowSelection } from 'antd/es/table/interface';
|
|
|
|
+import { difference } from 'lodash';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -54,30 +55,22 @@ export type TableListItem = {
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
-const MonthlyInfoCheck: React.FC = () => {
|
|
|
|
|
|
+const EmployeeInfoCheck: React.FC = () => {
|
|
|
|
|
|
const [treeData, set_treeData] = useState<getTreeDataRespType[]>([]);
|
|
const [treeData, set_treeData] = useState<getTreeDataRespType[]>([]);
|
|
const [tableColumn, set_tableColumn] = useState<ProColumns[]>([]);
|
|
const [tableColumn, set_tableColumn] = useState<ProColumns[]>([]);
|
|
const [currentSelectedTreeNode, set_currentSelectedTreeNode] = useState<any | undefined>();
|
|
const [currentSelectedTreeNode, set_currentSelectedTreeNode] = useState<any | undefined>();
|
|
- const [currentSelectedTabKey, set_currentSelectedTabKey] = useState<string>('1');
|
|
|
|
|
|
+
|
|
const [currentComputeDate, set_currentComputeDate] = useState<string | undefined>();
|
|
const [currentComputeDate, set_currentComputeDate] = useState<string | undefined>();
|
|
|
|
|
|
const [ifShowTip, set_ifShowTip] = useState(false);
|
|
const [ifShowTip, set_ifShowTip] = useState(false);
|
|
|
|
|
|
- const [auditType, set_auditType] = useState('0');
|
|
|
|
|
|
+ const [commitStatus, set_commitStatus] = useState('0');
|
|
|
|
|
|
const [empInfoSearchKeywords, set_empInfoSearchKeywords] = useState('');
|
|
const [empInfoSearchKeywords, set_empInfoSearchKeywords] = useState('');
|
|
|
|
|
|
const [empFilterParams, set_empFilterParams] = useState<any | undefined>(undefined);
|
|
const [empFilterParams, set_empFilterParams] = useState<any | undefined>(undefined);
|
|
|
|
|
|
- const [depInfoSearchKeywords, set_depInfoSearchKeywords] = useState('');
|
|
|
|
-
|
|
|
|
- const [depFilterParams, set_depFilterParams] = useState<any | undefined>(undefined);
|
|
|
|
-
|
|
|
|
- const [itemInfoSearchKeywords, set_itemInfoSearchKeywords] = useState('');
|
|
|
|
-
|
|
|
|
- const [itemFilterParams, set_itemFilterParams] = useState<any | undefined>(undefined);
|
|
|
|
-
|
|
|
|
const [expandedKeys, setExpandedKeys] = useState<React.Key[]>([]);
|
|
const [expandedKeys, setExpandedKeys] = useState<React.Key[]>([]);
|
|
const [searchValue, setSearchValue] = useState('');
|
|
const [searchValue, setSearchValue] = useState('');
|
|
const [autoExpandParent, setAutoExpandParent] = useState(true);
|
|
const [autoExpandParent, setAutoExpandParent] = useState(true);
|
|
@@ -101,13 +94,17 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
|
|
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- title: '岗位层级',
|
|
|
|
- dataIndex: 'positionLevelName',
|
|
|
|
- key: 'positionLevelName',
|
|
|
|
|
|
+ title: '职务',
|
|
|
|
+ dataIndex: 'jobTitleName',
|
|
|
|
+ key: 'jobTitleName',
|
|
|
|
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- title: '职务',
|
|
|
|
|
|
+ title: '职称',
|
|
|
|
+ dataIndex: 'titleName',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '岗位',
|
|
dataIndex: 'jobTitleName',
|
|
dataIndex: 'jobTitleName',
|
|
key: 'jobTitleName',
|
|
key: 'jobTitleName',
|
|
|
|
|
|
@@ -135,7 +132,8 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
if (currentComputeDateResp) {
|
|
if (currentComputeDateResp) {
|
|
const resp = await delPersonRequest({
|
|
const resp = await delPersonRequest({
|
|
computeDate: currentComputeDateResp,
|
|
computeDate: currentComputeDateResp,
|
|
- id: id
|
|
|
|
|
|
+ id: id,
|
|
|
|
+ unitCode: currentSelectedTreeNode.code
|
|
});
|
|
});
|
|
if (resp) {
|
|
if (resp) {
|
|
tableRef.current?.reload();
|
|
tableRef.current?.reload();
|
|
@@ -157,14 +155,16 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
set_currentComputeDate(resp);
|
|
set_currentComputeDate(resp);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
- const onTabChange = (activeKey: string) => {
|
|
|
|
- set_currentSelectedTabKey(activeKey);
|
|
|
|
|
|
+ const getCurrentCommitStatus = async () => {
|
|
|
|
+ if (currentSelectedTreeNode) {
|
|
|
|
+ const resp = await getCurrentCommitStatusReq({
|
|
|
|
+ computeDate: currentComputeDate as string,
|
|
|
|
+ unitCode: currentSelectedTreeNode.code
|
|
|
|
+ });
|
|
|
|
+ set_commitStatus(`${resp}`);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
const getTableData = async (type: 'PERSON' | 'DEP' | 'CHARGE', params: any, sort: any, filter: any) => {
|
|
const getTableData = async (type: 'PERSON' | 'DEP' | 'CHARGE', params: any, sort: any, filter: any) => {
|
|
// console.log({ currentSelectedTreeNode });
|
|
// console.log({ currentSelectedTreeNode });
|
|
// console.log({ params, sort, filter });
|
|
// console.log({ params, sort, filter });
|
|
@@ -190,47 +190,6 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
success: true
|
|
success: true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (type == 'DEP') {
|
|
|
|
- const resp = await getDepInfoTableData({
|
|
|
|
- computeDate: currentComputeDate,
|
|
|
|
- unitCode: currentSelectedTreeNode.code,
|
|
|
|
- ...params
|
|
|
|
- });
|
|
|
|
- if (resp) {
|
|
|
|
- return {
|
|
|
|
- data: resp.list,
|
|
|
|
- success: true,
|
|
|
|
- total: resp.totalCount,
|
|
|
|
- pageSize: resp.pageSize,
|
|
|
|
- totalPage: resp.totalPage,
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return {
|
|
|
|
- data: [],
|
|
|
|
- success: true
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (type == 'CHARGE') {
|
|
|
|
- const resp = await getProjectInfoTableData({
|
|
|
|
- computeDate: currentComputeDate,
|
|
|
|
- unitCode: currentSelectedTreeNode.code,
|
|
|
|
- ...params
|
|
|
|
- });
|
|
|
|
- if (resp) {
|
|
|
|
-
|
|
|
|
- return {
|
|
|
|
- data: resp.list,
|
|
|
|
- success: true,
|
|
|
|
- total: resp.totalCount,
|
|
|
|
- pageSize: resp.pageSize,
|
|
|
|
- totalPage: resp.totalPage,
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return {
|
|
|
|
- data: [],
|
|
|
|
- success: true
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
return []
|
|
return []
|
|
@@ -238,37 +197,53 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- const TransferNode = React.forwardRef((props, ref) => {
|
|
|
|
- const [_data, _set_data] = useState<any>();
|
|
|
|
- const [targetKeys, setTargetKeys] = useState<string[]>(['admin']);
|
|
|
|
- const [datasource, set_datasource] = useState<any[]>([]);
|
|
|
|
- const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
|
|
|
|
|
|
+ interface TableTransferProps extends TransferProps<TransferItem> {
|
|
|
|
+ leftColumns: ColumnsType<any>;
|
|
|
|
+ rightColumns: ColumnsType<any>;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
- useImperativeHandle(ref, () => ({
|
|
|
|
- save: async () => {
|
|
|
|
- const items = datasource.filter(a => targetKeys.includes(a.empNo));
|
|
|
|
- const resp = await saveEmpsRequest(items);
|
|
|
|
- if (resp) {
|
|
|
|
- tableRef.current?.reload();
|
|
|
|
- }
|
|
|
|
|
|
+ const transferTableColumn = [
|
|
|
|
+ {
|
|
|
|
+ title: '工号',
|
|
|
|
+ dataIndex: 'empNo',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '姓名',
|
|
|
|
+ dataIndex: 'name',
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+ const addPersonFunc = () => {
|
|
|
|
+ const ref = React.createRef<{ save: any }>();
|
|
|
|
+ Modal.confirm({
|
|
|
|
+ title: '添加人员',
|
|
|
|
+ icon: <></>,
|
|
|
|
+ width: 800,
|
|
|
|
+ okText: '确定',
|
|
|
|
+ cancelText: '取消',
|
|
|
|
+ content: <TableTransfer
|
|
|
|
+ ref={ref}
|
|
|
|
+ leftColumns={transferTableColumn}
|
|
|
|
+ rightColumns={transferTableColumn}
|
|
|
|
+ ></TableTransfer>,
|
|
|
|
+ onOk: () => {
|
|
|
|
+ return ref.current && ref.current.save();
|
|
}
|
|
}
|
|
- }));
|
|
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
|
|
- const onChange = (nextTargetKeys: string[], direction: TransferDirection, moveKeys: string[]) => {
|
|
|
|
- // console.log('targetKeys:', nextTargetKeys);
|
|
|
|
- // console.log('direction:', direction);
|
|
|
|
- // console.log('moveKeys:', moveKeys);
|
|
|
|
- setTargetKeys(nextTargetKeys);
|
|
|
|
- };
|
|
|
|
|
|
+ const TableTransfer = React.forwardRef(({ leftColumns, rightColumns, ...restProps }: TableTransferProps, ref) => {
|
|
|
|
|
|
- const onSelectChange = (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => {
|
|
|
|
- // console.log('sourceSelectedKeys:', sourceSelectedKeys);
|
|
|
|
- // console.log('targetSelectedKeys:', targetSelectedKeys);
|
|
|
|
- setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]);
|
|
|
|
- };
|
|
|
|
|
|
+ const [_data, _set_data] = useState<any>();
|
|
|
|
+ const [targetKeys, setTargetKeys] = useState<string[]>([]);
|
|
|
|
+ const [datasource, set_datasource] = useState<any[]>([]);
|
|
|
|
+ const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
|
|
|
|
+
|
|
|
|
+ //获取单元
|
|
|
|
+ const getFuncList = async () => {
|
|
|
|
|
|
- const getData = async () => {
|
|
|
|
const resp = await getTotalEmps({
|
|
const resp = await getTotalEmps({
|
|
computeDate: currentComputeDate as string,
|
|
computeDate: currentComputeDate as string,
|
|
unitCode: currentSelectedTreeNode.code
|
|
unitCode: currentSelectedTreeNode.code
|
|
@@ -282,52 +257,104 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ const onChange = (nextTargetKeys: string[]) => {
|
|
|
|
+ setTargetKeys(nextTargetKeys);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const onSelectChange = (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => {
|
|
|
|
+ //console.log('sourceSelectedKeys:', sourceSelectedKeys,'targetSelectedKeys:',targetSelectedKeys);
|
|
|
|
+ setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]);
|
|
|
|
+ };
|
|
|
|
|
|
|
|
+ useImperativeHandle(ref, () => ({
|
|
|
|
+ save: async () => {
|
|
|
|
+ const items = datasource.filter(a => targetKeys.includes(a.empNo));
|
|
|
|
+ const resp = await saveEmpsRequest(items);
|
|
|
|
+ if (resp) {
|
|
|
|
+ tableRef.current?.reload();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
- getData();
|
|
|
|
|
|
+ getFuncList();
|
|
}, [])
|
|
}, [])
|
|
|
|
|
|
return (
|
|
return (
|
|
- <Transfer
|
|
|
|
|
|
+ <Transfer className='TableTransfer' showSearch
|
|
|
|
+ titles={['待选项', '已选项']}
|
|
|
|
+ locale={{
|
|
|
|
+ itemUnit: '项',
|
|
|
|
+ itemsUnit: '项',
|
|
|
|
+ searchPlaceholder: '请输入',
|
|
|
|
+ }}
|
|
|
|
+ oneWay={true}
|
|
|
|
+ onChange={onChange}
|
|
|
|
+ onSelectChange={onSelectChange}
|
|
dataSource={datasource}
|
|
dataSource={datasource}
|
|
- titles={['未添加人员', '已添加人员']}
|
|
|
|
|
|
+ rowKey={record => record.empNo}
|
|
targetKeys={targetKeys}
|
|
targetKeys={targetKeys}
|
|
selectedKeys={selectedKeys}
|
|
selectedKeys={selectedKeys}
|
|
- onChange={onChange}
|
|
|
|
- listStyle={{
|
|
|
|
- width: '45%'
|
|
|
|
|
|
+ filterOption={(inputValue, item) => {
|
|
|
|
+ return item.name!.indexOf(inputValue) !== -1
|
|
|
|
+
|
|
}}
|
|
}}
|
|
- locale={{
|
|
|
|
- itemUnit: '人',
|
|
|
|
- itemsUnit: '人',
|
|
|
|
- searchPlaceholder: '请输入姓名'
|
|
|
|
|
|
+ >
|
|
|
|
+ {({
|
|
|
|
+ direction,
|
|
|
|
+ filteredItems,
|
|
|
|
+ onItemSelectAll,
|
|
|
|
+ onItemSelect,
|
|
|
|
+ selectedKeys: listSelectedKeys,
|
|
|
|
+ disabled: listDisabled,
|
|
|
|
+ }) => {
|
|
|
|
+
|
|
|
|
+ // console.log({ filteredItems, listSelectedKeys,direction });
|
|
|
|
+ const columns = direction === 'left' ? leftColumns : rightColumns;
|
|
|
|
+
|
|
|
|
+ const rowSelection: TableRowSelection<TransferItem> = {
|
|
|
|
+ getCheckboxProps: (item) => ({ disabled: listDisabled || item.disabled }),
|
|
|
|
+ onSelectAll(selected, selectedRows) {
|
|
|
|
+ const treeSelectedKeys = selectedRows.map(({ empNo }) => empNo);
|
|
|
|
+ const diffKeys = selected
|
|
|
|
+ ? difference(treeSelectedKeys, listSelectedKeys)
|
|
|
|
+ : difference(listSelectedKeys, treeSelectedKeys);
|
|
|
|
+ onItemSelectAll(diffKeys as string[], selected);
|
|
|
|
+ },
|
|
|
|
+ onSelect({ empNo }, selected) {
|
|
|
|
+ onItemSelect(empNo as string, selected);
|
|
|
|
+ },
|
|
|
|
+ selectedRowKeys: listSelectedKeys,
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ return (
|
|
|
|
+ <BMSTable
|
|
|
|
+ rowSelection={rowSelection}
|
|
|
|
+ columns={columns as TransferItem[]}
|
|
|
|
+ dataSource={filteredItems}
|
|
|
|
+ size="small"
|
|
|
|
+ bordered={false}
|
|
|
|
+ rowKey={'empNo'}
|
|
|
|
+ pagination={{ showTitle: false, pageSize: 10, showLessItems: false, simple: true }}
|
|
|
|
+ tableAlertRender={false}
|
|
|
|
+ style={{ pointerEvents: listDisabled ? 'none' : undefined }}
|
|
|
|
+ onRow={({ empNo, disabled: itemDisabled }) => ({
|
|
|
|
+ onClick: () => {
|
|
|
|
+ if (itemDisabled || listDisabled) return;
|
|
|
|
+ onItemSelect(empNo as string, !listSelectedKeys.includes(empNo as string));
|
|
|
|
+ },
|
|
|
|
+ })}
|
|
|
|
+ />
|
|
|
|
+ );
|
|
}}
|
|
}}
|
|
- rowKey={record => record.empNo}
|
|
|
|
- showSearch
|
|
|
|
- pagination
|
|
|
|
- onSelectChange={onSelectChange}
|
|
|
|
- render={(item) => item.name}
|
|
|
|
- />
|
|
|
|
|
|
+ </Transfer>
|
|
)
|
|
)
|
|
})
|
|
})
|
|
|
|
|
|
- const addPersonFunc = () => {
|
|
|
|
- const ref = React.createRef<{ save: any }>();
|
|
|
|
- Modal.confirm({
|
|
|
|
- title: '添加人员',
|
|
|
|
- width: 800,
|
|
|
|
- content: <TransferNode ref={ref}></TransferNode>,
|
|
|
|
- onOk: () => {
|
|
|
|
- return ref.current && ref.current.save();
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const confirmGenerateHandle = async (type: number) => {
|
|
|
|
|
|
+ const confirmGenerateHandle = async () => {
|
|
const resp = await generateDataRequest({
|
|
const resp = await generateDataRequest({
|
|
computeDate: currentComputeDate as string,
|
|
computeDate: currentComputeDate as string,
|
|
- generateType: type
|
|
|
|
|
|
+ unitCode: currentSelectedTreeNode.code
|
|
});
|
|
});
|
|
if (resp) {
|
|
if (resp) {
|
|
message.success('生成数据成功');
|
|
message.success('生成数据成功');
|
|
@@ -337,19 +364,36 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- const generateFunc = (type: number) => {
|
|
|
|
-
|
|
|
|
- let msg = '';
|
|
|
|
|
|
+ const generateFunc = () => {
|
|
|
|
|
|
- if (type == 1) msg = '生成操作会根据基础设定的单元人员对照信息重新生成数据,手动调整的人员信息将会丢失,确定继续生成操作?';
|
|
|
|
- if (type == 2) msg = '生成操作会覆盖现有的科室数据,确定继续生成操作?';
|
|
|
|
- if (type == 3) msg = '生成操作会覆盖现有的收费项目数据,确定继续生成操作?';
|
|
|
|
|
|
+ let msg = '生成操作会覆盖已有的数据,是否继续?';
|
|
|
|
+ Modal.confirm({
|
|
|
|
+ title: '注意',
|
|
|
|
+ okText: '确定',
|
|
|
|
+ cancelText: '取消',
|
|
|
|
+ content: msg,
|
|
|
|
+ onOk: () => confirmGenerateHandle()
|
|
|
|
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ const commitBtnhandle = () => {
|
|
Modal.confirm({
|
|
Modal.confirm({
|
|
title: '注意',
|
|
title: '注意',
|
|
- content: msg,
|
|
|
|
- onOk: () => confirmGenerateHandle(type)
|
|
|
|
|
|
+ okText: '确定',
|
|
|
|
+ cancelText: '取消',
|
|
|
|
+ content: '提交当前选择的核算单元的数据?',
|
|
|
|
+ onOk: async () => {
|
|
|
|
+ const resp = await commitRequest({
|
|
|
|
+ computeDate: currentComputeDate as string,
|
|
|
|
+ unitCode: currentSelectedTreeNode.code,
|
|
|
|
+ type: commitStatus == '1' ? '0' : '1', //1 提交 0 取消
|
|
|
|
+ });
|
|
|
|
+ if (resp) {
|
|
|
|
+ message.success('提交成功!');
|
|
|
|
+ getCurrentCommitStatus();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -361,43 +405,6 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
// tableRef.current?.reload();
|
|
// tableRef.current?.reload();
|
|
}
|
|
}
|
|
|
|
|
|
- const searchDepHandle = () => {
|
|
|
|
- set_depFilterParams({
|
|
|
|
- deptName: depInfoSearchKeywords
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const searchItemHandle = () => {
|
|
|
|
- set_itemFilterParams({
|
|
|
|
- itemName: itemInfoSearchKeywords
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const checkHandle = async (type: string) => {
|
|
|
|
-
|
|
|
|
- const resp = await checkRequest({
|
|
|
|
- computeDate: currentComputeDate as string,
|
|
|
|
- auditType: type == '0' ? '1' : '0', //审核类型 1审核 0取消审核
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- if (resp) {
|
|
|
|
- if (type == '0') {
|
|
|
|
- message.success('审核提交成功!');
|
|
|
|
- set_auditType('1');
|
|
|
|
- }
|
|
|
|
- if (type == '1') {
|
|
|
|
- message.success('取消审核提交成功!');
|
|
|
|
- set_auditType('0');
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const getCheckStatus = async (computeDate: string) => {
|
|
|
|
- const resp = await getCurrentCheckStatus(computeDate);
|
|
|
|
- if (resp) {
|
|
|
|
- set_auditType(`${resp}`); //0 未审核 1 已审核
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
const dataList: any[] = [];
|
|
const dataList: any[] = [];
|
|
|
|
|
|
@@ -463,15 +470,18 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
|
|
|
|
if (currentComputeDate) {
|
|
if (currentComputeDate) {
|
|
getTreeReqFunc(currentComputeDate);
|
|
getTreeReqFunc(currentComputeDate);
|
|
- getCheckStatus(currentComputeDate);
|
|
|
|
}
|
|
}
|
|
}, [currentComputeDate]);
|
|
}, [currentComputeDate]);
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
tableRef.current?.reload();
|
|
tableRef.current?.reload();
|
|
- }, [currentSelectedTreeNode]);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
+ if (currentComputeDate && currentSelectedTreeNode) {
|
|
|
|
+ getCurrentCommitStatus();
|
|
|
|
+ }
|
|
|
|
+ }, [currentSelectedTreeNode, currentComputeDate]);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
@@ -484,6 +494,7 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
|
|
|
|
set_currentSelectedTreeNode(node);
|
|
set_currentSelectedTreeNode(node);
|
|
setExpandedKeys([nodeParent.code]);
|
|
setExpandedKeys([nodeParent.code]);
|
|
|
|
+ getCurrentCommitStatus();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, [treeData]);
|
|
}, [treeData]);
|
|
@@ -499,7 +510,7 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
- <div className='MonthlyInfoCheck'>
|
|
|
|
|
|
+ <div className='EmployeeInfoCheck'>
|
|
<div className='leftTree'>
|
|
<div className='leftTree'>
|
|
<div className='search'>
|
|
<div className='search'>
|
|
<Input
|
|
<Input
|
|
@@ -553,7 +564,10 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
textOverflow: 'ellipsis',
|
|
textOverflow: 'ellipsis',
|
|
whiteSpace: 'nowrap'
|
|
whiteSpace: 'nowrap'
|
|
|
|
|
|
- }}>{title}</div>
|
|
|
|
|
|
+ }}>
|
|
|
|
+ {title}
|
|
|
|
+ {!nodeData.map&&<span className={nodeData.unitType?'point lastChild':'point'}></span>}
|
|
|
|
+ </div>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
defaultSelectedKeys={[treeData[0].child[0].code]}
|
|
defaultSelectedKeys={[treeData[0].child[0].code]}
|
|
@@ -586,19 +600,22 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
<IconFont type="iconsousuo" onClick={() => searchEmpHandle()} />
|
|
<IconFont type="iconsousuo" onClick={() => searchEmpHandle()} />
|
|
} />
|
|
} />
|
|
</div>
|
|
</div>
|
|
- <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} >
|
|
|
|
- <div className={auditType != '0' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
|
- onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
|
- onMouseLeave={() => set_ifShowTip(false)}
|
|
|
|
- >
|
|
|
|
- {/* <span key="1">调整</span> */}
|
|
|
|
- <span key="2" onClick={auditType == '0' ? () => generateFunc(1) : () => { }}>生成</span>
|
|
|
|
- <span key="3" onClick={auditType == '0' ? () => addPersonFunc() : () => { }}>添加</span>
|
|
|
|
- </div>
|
|
|
|
- </Popover>
|
|
|
|
|
|
+
|
|
|
|
+ <div className='btnGroupWrap'>
|
|
|
|
+ <Popover open={ifShowTip} content={'当前处于提交中,无法操作!'} >
|
|
|
|
+ <div className={commitStatus != '0' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
|
+ onMouseEnter={() => commitStatus == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
|
+ onMouseLeave={() => set_ifShowTip(false)}
|
|
|
|
+ >
|
|
|
|
+ <span key="2" onClick={commitStatus == '0' ? () => generateFunc() : () => { }}>生成</span>
|
|
|
|
+ <span key="3" onClick={commitStatus == '0' ? () => addPersonFunc() : () => { }}>添加</span>
|
|
|
|
+ </div>
|
|
|
|
+ </Popover>
|
|
|
|
+ <div key="4" className='commit' onClick={() => commitBtnhandle()}>{commitStatus == '1' ? '取消提交' : '提交'}</div>
|
|
|
|
+ </div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
- {currentSelectedTreeNode && <BMSTable params={empFilterParams} actionRef={tableRef} rowKey='empNo' columns={auditType == '0' ? [...tableColumn, {
|
|
|
|
|
|
+ {currentSelectedTreeNode && <BMSTable params={empFilterParams} actionRef={tableRef} rowKey='empNo' columns={commitStatus == '0' ? [...tableColumn, {
|
|
title: '操作',
|
|
title: '操作',
|
|
key: 'option',
|
|
key: 'option',
|
|
valueType: 'option',
|
|
valueType: 'option',
|
|
@@ -611,10 +628,10 @@ const MonthlyInfoCheck: React.FC = () => {
|
|
},] : [...tableColumn]} request={(params, sort, filter) => getTableData('PERSON', params, sort, filter)} />}
|
|
},] : [...tableColumn]} request={(params, sort, filter) => getTableData('PERSON', params, sort, filter)} />}
|
|
</div>
|
|
</div>
|
|
</BMSPagecontainer>
|
|
</BMSPagecontainer>
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ </div >
|
|
|
|
+ </div >
|
|
);
|
|
);
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
-export default MonthlyInfoCheck;
|
|
|
|
|
|
+export default EmployeeInfoCheck;
|