|
@@ -4,7 +4,7 @@
|
|
|
* @Author: code4eat awesomedema@gmail.com
|
|
|
* @Date: 2022-12-16 09:42:52
|
|
|
* @LastEditors: code4eat awesomedema@gmail.com
|
|
|
- * @LastEditTime: 2023-02-17 11:24:35
|
|
|
+ * @LastEditTime: 2023-03-01 16:35:45
|
|
|
* @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
|
|
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
|
*/
|
|
@@ -16,7 +16,7 @@ import BMSPagecontainer from '@/components/BMSPageContainer';
|
|
|
import { useEffect, useRef, useState } from 'react';
|
|
|
import './style.less';
|
|
|
|
|
|
-import { Tree, TreeProps, Tabs, Input, Modal, Transfer, Divider, Select, Popconfirm, message, Button } from 'antd';
|
|
|
+import { Tree, TreeProps, Tabs, Input, Modal, Transfer, Divider, Select, Popconfirm, message, Button, Skeleton, Popover } from 'antd';
|
|
|
import { DataNode } from 'antd/es/tree';
|
|
|
|
|
|
import expandedIcon from '../../../../static/treenode_open.png';
|
|
@@ -36,6 +36,9 @@ import { getTreeData, getTreeDataRespType } from '../monthlyInfoCheck/service';
|
|
|
import DirectoryTree from 'antd/es/tree/DirectoryTree';
|
|
|
import BMSUpload from '@/components/BMSUpload';
|
|
|
import FormItem from 'antd/es/form/FormItem';
|
|
|
+import { getDeepestTreeData } from '@/utils/tooljs';
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
const IconFont = createFromIconfontCN({
|
|
@@ -54,6 +57,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
|
|
|
const [treeData, set_treeData] = useState<getTreeDataRespType[]>([]);
|
|
|
|
|
|
+ const [ifShowTip, set_ifShowTip] = useState(false);
|
|
|
|
|
|
const [expandedKeys, setExpandedKeys] = useState<React.Key[]>([]);
|
|
|
const [searchValue, setSearchValue] = useState('');
|
|
@@ -74,6 +78,8 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
|
|
|
const [editModalVisible, set_editModalVisible] = useState(false);
|
|
|
|
|
|
+ const [loading, set_loading] = useState(false);
|
|
|
+
|
|
|
const [currentEditRecord, set_currentEditRecord] = useState<undefined | any>(undefined);
|
|
|
|
|
|
const [inputSalaryNum, set_inputSalaryNum] = useState(0); //固定工资金额
|
|
@@ -82,6 +88,8 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
|
|
|
const [isTableEdit, set_isTableEdit] = useState(false);
|
|
|
|
|
|
+ const [totalNum, set_totalNum] = useState(0); //收入和成本数据的总和数值
|
|
|
+
|
|
|
const [manaIndexGroups, set_manaIndexGroups] = useState<{ id: number, groupCode: string, groupName: string, hospId: number }[]>([]); //管理指标分组
|
|
|
const [currentSelectedManaGroup, set_currentSelectedManaGroup] = useState<{ id: number, groupCode: string, groupName: string, hospId: number }>();
|
|
|
|
|
@@ -205,7 +213,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
dataIndex: 'itemTypeName',
|
|
|
key: 'itemTypeName',
|
|
|
align: 'center',
|
|
|
-
|
|
|
+
|
|
|
},
|
|
|
{
|
|
|
title: '点值',
|
|
@@ -215,8 +223,6 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
},
|
|
|
];
|
|
|
|
|
|
-
|
|
|
-
|
|
|
const tableColumnFive = [
|
|
|
{
|
|
|
title: '年度',
|
|
@@ -238,45 +244,41 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
},
|
|
|
{
|
|
|
title: '项目类型',
|
|
|
- dataIndex: 'itemType',
|
|
|
- key: 'itemType',
|
|
|
+ dataIndex: 'itemTypeName',
|
|
|
+ key: 'itemTypeName',
|
|
|
align: 'center'
|
|
|
},
|
|
|
{
|
|
|
title: '金额',
|
|
|
- dataIndex: 'income',
|
|
|
- key: 'income',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '操作人',
|
|
|
- dataIndex: 'unitType',
|
|
|
- key: 'unitType',
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '操作时间',
|
|
|
- dataIndex: 'unitType',
|
|
|
- key: 'unitType',
|
|
|
+ dataIndex: 'cost',
|
|
|
+ key: 'cost',
|
|
|
align: 'center'
|
|
|
},
|
|
|
+ // {
|
|
|
+ // title: '操作人',
|
|
|
+ // dataIndex: 'unitType',
|
|
|
+ // key: 'unitType',
|
|
|
+ // align: 'center'
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // title: '操作时间',
|
|
|
+ // dataIndex: 'unitType',
|
|
|
+ // key: 'unitType',
|
|
|
+ // align: 'center'
|
|
|
+ // },
|
|
|
]
|
|
|
|
|
|
-
|
|
|
-
|
|
|
const getCurrentComputeDate = async () => {
|
|
|
const resp = await getComputeDate();
|
|
|
set_currentComputeDate(resp);
|
|
|
}
|
|
|
|
|
|
const onSelectHandle: TreeProps['onSelect'] = (selectedKeys, info) => {
|
|
|
-
|
|
|
+
|
|
|
const { node } = info;
|
|
|
//set_tableDataFilterParams({...tableDataFilterParams,current:1})
|
|
|
set_currentSelectedTreeNode(node);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
};
|
|
|
|
|
|
|
|
@@ -288,13 +290,13 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
|
|
|
//固定金额编辑金额
|
|
|
const editHandle = async (record: any) => {
|
|
|
- const { id, deptCode, salaryType, unitCode,userId } = record;
|
|
|
+ const { id, deptCode, salaryType, unitCode, userId } = record;
|
|
|
if (id == editTableCellId) {
|
|
|
//保存
|
|
|
// console.log({ inputSalaryNum,currentSelectedTreeNode });
|
|
|
|
|
|
if (inputSalaryNum) {
|
|
|
-
|
|
|
+
|
|
|
const resp = await editTableSalaryRequest({
|
|
|
computeDate: currentComputeDate as string,
|
|
|
unitCode,
|
|
@@ -484,7 +486,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
if (resp) {
|
|
|
const columns = resp.title.map((item: any) => (item.children ? {
|
|
|
title: () => {
|
|
|
- return <div>{item.name} <span style={{ fontSize: 14, fontFamily: 'SourceHanSansCN-Medium, SourceHanSansCN', fontWeight: 500, color: item.arrow == 'up' ? '#00BF8F' : '#FF4060' }}>{item.arrow == 'up'?'↑':'↓'}</span></div>
|
|
|
+ return <div>{item.name} <span style={{ fontSize: 14, fontFamily: 'SourceHanSansCN-Medium, SourceHanSansCN', fontWeight: 500, color: item.arrow == 'up' ? '#00BF8F' : '#FF4060' }}>{item.arrow == 'up' ? '↑' : '↓'}</span></div>
|
|
|
},
|
|
|
key: item.code,
|
|
|
dataIndex: item.name,
|
|
@@ -561,12 +563,13 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
...params
|
|
|
});
|
|
|
if (resp) {
|
|
|
+ set_totalNum(resp.sum);
|
|
|
return {
|
|
|
- data: resp.list,
|
|
|
+ data: resp.pageList.list,
|
|
|
success: true,
|
|
|
- total: resp.totalCount,
|
|
|
- pageSize: resp.pageSize,
|
|
|
- totalPage: resp.totalPage,
|
|
|
+ total: resp.pageList.totalCount,
|
|
|
+ pageSize: resp.pageList.pageSize,
|
|
|
+ totalPage: resp.pageList.totalPage,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -576,12 +579,13 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
...params
|
|
|
});
|
|
|
if (resp) {
|
|
|
+ set_totalNum(resp.sum);
|
|
|
return {
|
|
|
- data: resp.list,
|
|
|
+ data: resp.pageList.list,
|
|
|
success: true,
|
|
|
- total: resp.totalCount,
|
|
|
- pageSize: resp.pageSize,
|
|
|
- totalPage: resp.totalPage,
|
|
|
+ total: resp.pageList.totalCount,
|
|
|
+ pageSize: resp.pageList.pageSize,
|
|
|
+ totalPage: resp.pageList.totalPage,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -668,16 +672,6 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
)
|
|
|
}
|
|
|
|
|
|
- const addPersonFunc = () => {
|
|
|
- Modal.confirm({
|
|
|
- title: '注意',
|
|
|
- width: 800,
|
|
|
- content: <TransferNode></TransferNode>,
|
|
|
- onOk: () => {
|
|
|
-
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
|
|
|
//获取核算单元树结构
|
|
|
const getCheckUnitTreeDataFunc = async (computeDate: string) => {
|
|
@@ -689,6 +683,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
const dataList: any[] = [];
|
|
|
|
|
|
const generateList = (data: getTreeDataRespType[]) => {
|
|
@@ -745,6 +740,9 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
computeDate: currentComputeDate as string,
|
|
|
unitCode: others ? currentSelectedTreeNode.code : ''
|
|
|
});
|
|
|
+
|
|
|
+ set_loading(false);
|
|
|
+
|
|
|
if (resp) {
|
|
|
tableRef.current?.reload();
|
|
|
}
|
|
@@ -763,7 +761,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
cancelText: '',
|
|
|
closable: true,
|
|
|
content: others ? '获取单个操作会覆盖上次获取的该核算单元的数据,确定要继续操作?' : '获取所有操作会覆盖所有已获取的数据,确定要继续操作?',
|
|
|
- onOk: () => { confirmGenerateHandle(index, others ? others : false) }
|
|
|
+ onOk: () => { set_loading(true); confirmGenerateHandle(index, others ? others : false) }
|
|
|
})
|
|
|
}
|
|
|
|
|
@@ -902,28 +900,44 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
}
|
|
|
|
|
|
const importData = (index: number, name: string) => {
|
|
|
-
|
|
|
+
|
|
|
return (
|
|
|
<ModalForm
|
|
|
title={`导入${name}数据`}
|
|
|
trigger={
|
|
|
<span key="3">导入</span>
|
|
|
}
|
|
|
+ submitter={{
|
|
|
+ render: (props, defaultDoms) => {
|
|
|
+ const needBtn = defaultDoms.filter((b) => {
|
|
|
+ return b.key != 'rest'
|
|
|
+ })
|
|
|
+ return [
|
|
|
+ <Button
|
|
|
+ key="ok"
|
|
|
+ onClick={auditType == '0' ? () => downloadTemplate(index) : () => { }}
|
|
|
+ >
|
|
|
+ 下载模板
|
|
|
+ </Button>,
|
|
|
+ ...needBtn,
|
|
|
+ ];
|
|
|
+ },
|
|
|
+ }}
|
|
|
onFinish={async (values) => {
|
|
|
-
|
|
|
- const {importFile:{file:{originFileObj}}} = values;
|
|
|
+ // console.log({values});
|
|
|
+ const { importFile: { fileList } } = values;
|
|
|
|
|
|
let formData = new FormData();
|
|
|
- formData.append('file', originFileObj);
|
|
|
+ formData.append('file', fileList[0].originFileObj);
|
|
|
formData.append('computeDate', currentComputeDate as string);
|
|
|
-
|
|
|
- const resp = await importMonthlyperformanceRelaFiles(index,formData);
|
|
|
|
|
|
- if(resp){
|
|
|
- tableRef.current?.reload();
|
|
|
- return true;
|
|
|
+ const resp = await importMonthlyperformanceRelaFiles(index, formData);
|
|
|
+
|
|
|
+ if (resp) {
|
|
|
+ tableRef.current?.reload();
|
|
|
+ return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}}
|
|
|
>
|
|
|
<FormItem name={'importFile'}>
|
|
@@ -961,10 +975,10 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- const downloadTemplate = async (index:number,id?:number)=>{
|
|
|
-
|
|
|
- const resp = await downloadTemplateReq(index,id);
|
|
|
-
|
|
|
+ const downloadTemplate = async (index: number, id?: number) => {
|
|
|
+
|
|
|
+ await downloadTemplateReq(index, id);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -977,7 +991,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
}, [currentSelectedManaGroup])
|
|
|
|
|
|
useEffect(() => {
|
|
|
- tableRef.current?.reloadAndRest&&tableRef.current?.reloadAndRest();
|
|
|
+ tableRef.current?.reloadAndRest && tableRef.current?.reloadAndRest();
|
|
|
}, [currentSelectedTreeNode]);
|
|
|
|
|
|
useEffect(() => {
|
|
@@ -999,14 +1013,6 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
}
|
|
|
if (currentSelectedTabKey == '4') {
|
|
|
getManaIndiGroupRequest(); //获取分组
|
|
|
- // set_tableColumn([{
|
|
|
- // title: '核算单元',
|
|
|
- // dataIndex: 'unitName',
|
|
|
- // key: 'unitName',
|
|
|
- // align: 'center',
|
|
|
- // width: 120,
|
|
|
- // fixed: 'left',
|
|
|
- // }]);
|
|
|
}
|
|
|
if (currentSelectedTabKey == '5') {
|
|
|
set_tableColumn(tableColumnFive as ProColumns[]);
|
|
@@ -1024,8 +1030,9 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
if (treeData?.length > 0) {
|
|
|
|
|
|
if (treeData[0].child && treeData[0].child.length > 0) {
|
|
|
- set_currentSelectedTreeNode(treeData[0].child[0]);
|
|
|
- setExpandedKeys([treeData[0].code]);
|
|
|
+ const [node, nodeParent] = getDeepestTreeData(treeData[0], 'child');
|
|
|
+ set_currentSelectedTreeNode(node);
|
|
|
+ setExpandedKeys([nodeParent.code]);
|
|
|
}
|
|
|
}
|
|
|
}, [treeData]);
|
|
@@ -1090,7 +1097,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
return []
|
|
|
}}
|
|
|
fieldProps={{
|
|
|
-
|
|
|
+ showSearch: true,
|
|
|
onChange: (value) => {
|
|
|
formRef.current?.setFieldValue('unitCode', '');
|
|
|
}
|
|
@@ -1123,7 +1130,7 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
return []
|
|
|
}}
|
|
|
fieldProps={{
|
|
|
-
|
|
|
+ showSearch: true,
|
|
|
onChange: (value) => {
|
|
|
|
|
|
formRef.current?.setFieldValue('targetValue', '');
|
|
@@ -1174,18 +1181,21 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
</ProForm.Group>
|
|
|
<ProForm.Group>
|
|
|
<ProFormDigit label="数值" name="value" colProps={{ span: 12 }} min={-1000000000000000} />
|
|
|
- <ProFormDependency name={['unitCode','distributionTypeName']}>
|
|
|
+ <ProFormDependency name={['unitCode', 'distributionTypeName']}>
|
|
|
{
|
|
|
- ({ unitCode,distributionTypeName }) => {
|
|
|
-
|
|
|
- return (
|
|
|
+ ({ unitCode, distributionTypeName }) => {
|
|
|
+
|
|
|
+ return (
|
|
|
<ProFormSelect
|
|
|
name="userId"
|
|
|
label="人员姓名"
|
|
|
colProps={{ span: 12 }}
|
|
|
placeholder="请选择"
|
|
|
- rules={[{ required:distributionTypeName != '占比'?true:false }]}
|
|
|
+ rules={[{ required: distributionTypeName != '占比' ? true : false }]}
|
|
|
params={unitCode}
|
|
|
+ fieldProps={{
|
|
|
+ showSearch: true,
|
|
|
+ }}
|
|
|
request={async () => {
|
|
|
if (unitCode) {
|
|
|
const resp = await getEmps(unitCode);
|
|
@@ -1222,460 +1232,491 @@ const MonthlyDataCheck: React.FC = () => {
|
|
|
|
|
|
}
|
|
|
|
|
|
- <div className='rightContent'>
|
|
|
- <BMSPagecontainer title={`核算年月:${currentComputeDate}`} ghost>
|
|
|
- <div className='checkBtn' onClick={() => checkHandle(`${auditType}`)}>{auditType == '0' ? '审核' : '取消审核'}</div>
|
|
|
- {/* <div className='midLine'>
|
|
|
- <span>点击检查</span>
|
|
|
- 是否有未对照的人员信息、未对照的科室信息及未设置的收费项目信息
|
|
|
- </div> */}
|
|
|
- <Tabs
|
|
|
- defaultActiveKey="1"
|
|
|
- onChange={onTabChange}
|
|
|
- items={[
|
|
|
- {
|
|
|
- label: `固定工资`,
|
|
|
- key: '1',
|
|
|
- },
|
|
|
- {
|
|
|
- label: `非考核项目`,
|
|
|
- key: '2',
|
|
|
- },
|
|
|
- {
|
|
|
- label: `考核项目`,
|
|
|
- key: '3',
|
|
|
- },
|
|
|
- {
|
|
|
- label: `管理指标`,
|
|
|
- key: '4',
|
|
|
- },
|
|
|
- {
|
|
|
- label: `收入数据`,
|
|
|
- key: '5',
|
|
|
- },
|
|
|
- {
|
|
|
- label: `成本数据`,
|
|
|
- key: '6',
|
|
|
- },
|
|
|
- ]}
|
|
|
- />
|
|
|
-
|
|
|
- {
|
|
|
- currentSelectedTabKey == '1' && (
|
|
|
- <div className='tabContent'>
|
|
|
- <div className='tableToolbar'>
|
|
|
- <div className='filter'>
|
|
|
- <div className='search'>
|
|
|
- <span>科室名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
- set_tableDataSearchKeywords(e.target.value);
|
|
|
- if (e.target.value.length == 0) {
|
|
|
- set_tableDataFilterParams({
|
|
|
- ...tableDataFilterParams,
|
|
|
- deptName: ''
|
|
|
- });
|
|
|
- }
|
|
|
- }} suffix={
|
|
|
- <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('deptName')} />
|
|
|
- } />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}>
|
|
|
- {/* <span key="1">调整</span> */}
|
|
|
- {/* <span key="2" onClick={() => generateFunc()}>获取</span> */}
|
|
|
- <span key="download" onClick={auditType == '0'?() =>downloadTemplate(1):()=>{}}>下载模板</span>
|
|
|
- {importData(1, '固定工资')}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- {currentComputeDate && <BMSTable actionRef={tableRef} params={tableDataFilterParams} rowKey='id'
|
|
|
- columns={auditType == '0' ? [...tableColumn, {
|
|
|
- title: '金额',
|
|
|
- dataIndex: 'salary',
|
|
|
- key: 'salary',
|
|
|
- align: 'center',
|
|
|
- width: '10%',
|
|
|
- render: (text: any, record: any) => {
|
|
|
-
|
|
|
- return (
|
|
|
- <div style={{ display: 'flex', flexDirection: 'row', width: '100%', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
-
|
|
|
- <div style={{ width: '80px', height: 16, display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
- {
|
|
|
- editTableCellId == record.id ? <Input size='small' defaultValue={record.salary} placeholder='请输入' onChange={(e) => { set_inputSalaryNum(Number(e.target.value)) }} style={{ width: '80px' }} /> : <span>{text}</span>
|
|
|
- }
|
|
|
+ <>
|
|
|
+ {
|
|
|
+ (
|
|
|
+ <div className='rightContent'>
|
|
|
+ <BMSPagecontainer title={`核算年月:${currentComputeDate}`} ghost>
|
|
|
+ <div className='checkBtn' onClick={() => checkHandle(`${auditType}`)}>{auditType == '0' ? '审核' : '取消审核'}</div>
|
|
|
+ {/* <div className='midLine'>
|
|
|
+ <span>点击检查</span>
|
|
|
+ 是否有未对照的人员信息、未对照的科室信息及未设置的收费项目信息
|
|
|
+ </div> */}
|
|
|
+ <Tabs
|
|
|
+ defaultActiveKey="1"
|
|
|
+ onChange={onTabChange}
|
|
|
+ items={[
|
|
|
+ {
|
|
|
+ label: `固定工资`,
|
|
|
+ key: '1',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: `非考核项目`,
|
|
|
+ key: '2',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: `考核项目`,
|
|
|
+ key: '3',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: `管理指标`,
|
|
|
+ key: '4',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: `收入数据`,
|
|
|
+ key: '5',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: `成本数据`,
|
|
|
+ key: '6',
|
|
|
+ },
|
|
|
+ ]}
|
|
|
+ />
|
|
|
+
|
|
|
+ {
|
|
|
+ currentSelectedTabKey == '1' && (
|
|
|
+ <div className='tabContent'>
|
|
|
+ <div className='tableToolbar'>
|
|
|
+ <div className='filter'>
|
|
|
+ <div className='search'>
|
|
|
+ <span>科室名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
+ set_tableDataSearchKeywords(e.target.value);
|
|
|
+ if (e.target.value.length == 0) {
|
|
|
+ set_tableDataFilterParams({
|
|
|
+ ...tableDataFilterParams,
|
|
|
+ deptName: ''
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }} suffix={
|
|
|
+ <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('deptName')} />
|
|
|
+ } />
|
|
|
</div>
|
|
|
- {auditType == '0' && <img onClick={() => editHandle(record)} style={{ width: 16, height: 16, cursor: 'pointer', marginLeft: 8 }} src={editTableCellId == record.id ? conformIcon : editIcon} alt="" />}
|
|
|
</div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- {
|
|
|
- title: '操作',
|
|
|
- key: 'option',
|
|
|
- valueType: 'option',
|
|
|
- render: (_: any, record) => [
|
|
|
- <Popconfirm
|
|
|
- key={'del'}
|
|
|
- title="是否确认删除?"
|
|
|
- onConfirm={() => delActionHandle(record, 1)}
|
|
|
- // onCancel={()=>{}}
|
|
|
- okText="是"
|
|
|
- cancelText="否"
|
|
|
- >
|
|
|
- <a >删除</a>
|
|
|
- </Popconfirm>
|
|
|
- ],
|
|
|
- },] : [
|
|
|
-
|
|
|
- ...tableColumn, {
|
|
|
- title: '金额',
|
|
|
- dataIndex: 'salary',
|
|
|
- key: 'salary',
|
|
|
- align: 'center',
|
|
|
- width: '10%',
|
|
|
- // shouldCellUpdate:(record:any, prevRecord:any) => true,
|
|
|
- render: (text: any, record: any) => {
|
|
|
-
|
|
|
- return (
|
|
|
- <div style={{ display: 'flex', flexDirection: 'row', width: '100%', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
-
|
|
|
- <div style={{ width: '80px', height: 16, display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
- {
|
|
|
- editTableCellId == record.id ? <Input size='small' defaultValue={record.salary} placeholder='请输入' onChange={(e) => { set_inputSalaryNum(Number(e.target.value)) }} style={{ width: '80px' }} /> : <span>{text}</span>
|
|
|
- }
|
|
|
- </div>
|
|
|
- {auditType == '0' && <img onClick={() => editHandle(record)} style={{ width: 16, height: 16, cursor: 'pointer', marginLeft: 8 }} src={editTableCellId == record.id ? conformIcon : editIcon} alt="" />}
|
|
|
+ <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} placement='topRight'>
|
|
|
+ <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
+ onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
+ onMouseLeave={() => set_ifShowTip(false)}
|
|
|
+ >
|
|
|
+ {/* <span key="1">调整</span> */}
|
|
|
+ {/* <span key="2" onClick={() => generateFunc()}>获取</span> */}
|
|
|
+ {importData(1, '固定工资')}
|
|
|
</div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- ]} request={(params, sort, filter) => getTableData('1', params, sort, filter)} />}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
+ </Popover>
|
|
|
+ </div>
|
|
|
+ {currentComputeDate && <BMSTable actionRef={tableRef} params={tableDataFilterParams} rowKey='id'
|
|
|
+ columns={auditType == '0' ? [...tableColumn, {
|
|
|
+ title: '金额',
|
|
|
+ dataIndex: 'salary',
|
|
|
+ key: 'salary',
|
|
|
+ align: 'center',
|
|
|
+ width: '10%',
|
|
|
+ render: (text: any, record: any) => {
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div style={{ display: 'flex', flexDirection: 'row', width: '100%', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
+
|
|
|
+ <div style={{ width: '80px', height: 16, display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
+ {
|
|
|
+ editTableCellId == record.id ? <Input size='small' defaultValue={record.salary} placeholder='请输入' onChange={(e) => { set_inputSalaryNum(Number(e.target.value)) }} style={{ width: '80px' }} /> : <span>{text}</span>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ {auditType == '0' && <img onClick={() => editHandle(record)} style={{ width: 16, height: 16, cursor: 'pointer', marginLeft: 8 }} src={editTableCellId == record.id ? conformIcon : editIcon} alt="" />}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ key: 'option',
|
|
|
+ valueType: 'option',
|
|
|
+ render: (_: any, record) => [
|
|
|
+ <Popconfirm
|
|
|
+ key={'del'}
|
|
|
+ title="是否确认删除?"
|
|
|
+ onConfirm={() => delActionHandle(record, 1)}
|
|
|
+ // onCancel={()=>{}}
|
|
|
+ okText="是"
|
|
|
+ cancelText="否"
|
|
|
+ >
|
|
|
+ <a >删除</a>
|
|
|
+ </Popconfirm>
|
|
|
+ ],
|
|
|
+ },] : [
|
|
|
+
|
|
|
+ ...tableColumn, {
|
|
|
+ title: '金额',
|
|
|
+ dataIndex: 'salary',
|
|
|
+ key: 'salary',
|
|
|
+ align: 'center',
|
|
|
+ width: '10%',
|
|
|
+ // shouldCellUpdate:(record:any, prevRecord:any) => true,
|
|
|
+ render: (text: any, record: any) => {
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div style={{ display: 'flex', flexDirection: 'row', width: '100%', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
+
|
|
|
+ <div style={{ width: '80px', height: 16, display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
+ {
|
|
|
+ editTableCellId == record.id ? <Input size='small' defaultValue={record.salary} placeholder='请输入' onChange={(e) => { set_inputSalaryNum(Number(e.target.value)) }} style={{ width: '80px' }} /> : <span>{text}</span>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ {auditType == '0' && <img onClick={() => editHandle(record)} style={{ width: 16, height: 16, cursor: 'pointer', marginLeft: 8 }} src={editTableCellId == record.id ? conformIcon : editIcon} alt="" />}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- currentSelectedTabKey == '2' && (
|
|
|
- <div className='tabContent'>
|
|
|
- <div className='tableToolbar'>
|
|
|
- <div className='filter'>
|
|
|
- <div className='search'>
|
|
|
- <span>科室名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
- set_tableDataSearchKeywords(e.target.value);
|
|
|
- if (e.target.value.length == 0) {
|
|
|
- set_tableDataFilterParams({
|
|
|
- ...tableDataFilterParams,
|
|
|
- deptName: ''
|
|
|
- });
|
|
|
- }
|
|
|
- }} suffix={
|
|
|
- <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('deptName')} />
|
|
|
- } />
|
|
|
+ ]} request={(params, sort, filter) => getTableData('1', params, sort, filter)} />}
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'} >
|
|
|
- {/* <span key="1" onClick={() => generateFunc(2)} >获取</span>
|
|
|
- <span key="2" >导入</span> */}
|
|
|
- <span key="download" onClick={auditType == '0'?() =>downloadTemplate(2):()=>{}}>下载模板</span>
|
|
|
- {importData(2, '非考核项目')}
|
|
|
- <span key="3" onClick={auditType == '0' ? () => tableDataAddHandle() : () => { }}>添加</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- {currentComputeDate && <BMSTable scroll={{ x: 120 * 10, y: 500 }} actionRef={tableRef} rowKey='id' params={tableDataFilterParams}
|
|
|
- columns={auditType == '0' ? [...tableColumn, {
|
|
|
- title: '操作',
|
|
|
- fixed: 'right',
|
|
|
- key: 'option',
|
|
|
- align: 'center',
|
|
|
- width: 130,
|
|
|
- valueType: 'option',
|
|
|
- render: (_: any, record: any) => [
|
|
|
- <a key={'edit'} onClick={() => tableEditActHandle(record)}>编辑</a>,
|
|
|
- <Divider type='vertical' key='line' />,
|
|
|
- <Popconfirm
|
|
|
- key={'del'}
|
|
|
- title="是否确认删除?"
|
|
|
- onConfirm={() => delActionHandle(record, 2)}
|
|
|
- // onCancel={()=>{}}
|
|
|
- okText="是"
|
|
|
- cancelText="否"
|
|
|
- >
|
|
|
- <a >删除</a>
|
|
|
- </Popconfirm>
|
|
|
- ],
|
|
|
- }] : [...tableColumn]} request={(params, sort, filter) => getTableData('2', params, sort, filter)} />}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
+ )
|
|
|
+ }
|
|
|
|
|
|
- {
|
|
|
- currentSelectedTabKey == '3' && (
|
|
|
- <div className='tabContent'>
|
|
|
|
|
|
- <div className='tabContentInner'>
|
|
|
- <div className='leftTree'>
|
|
|
- <div className='search'>
|
|
|
- <Input className='searchInput' allowClear onChange={onTreeSearchKeyChange} placeholder="请输入类目名称" suffix={
|
|
|
- <IconFont type="iconsousuo" />
|
|
|
- } />
|
|
|
- </div>
|
|
|
- <div className='treeWrap'>
|
|
|
- {
|
|
|
- treeData && treeData.length > 0 && (
|
|
|
- <DirectoryTree
|
|
|
- fieldNames={{ title: 'name', key: 'code', children: 'child' }}
|
|
|
- rootStyle={{ height: '100%', paddingBottom: 50, overflowY: 'scroll', overflowX: 'hidden' }}
|
|
|
- onSelect={onSelectHandle}
|
|
|
- onExpand={onExpand}
|
|
|
- expandedKeys={expandedKeys}
|
|
|
- autoExpandParent={autoExpandParent}
|
|
|
- blockNode={true}
|
|
|
- icon={() => null}
|
|
|
- titleRender={
|
|
|
- (nodeData: any) => {
|
|
|
- const strTitle = nodeData.name as string;
|
|
|
- const index = strTitle.indexOf(searchValue);
|
|
|
- const beforeStr = strTitle.substring(0, index);
|
|
|
- const afterStr = strTitle.slice(index + searchValue.length);
|
|
|
- const title =
|
|
|
- index > -1 ? (
|
|
|
- <span>
|
|
|
- {beforeStr}
|
|
|
- <span className="site-tree-search-value" style={{ color: 'red', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{searchValue}</span>
|
|
|
- {afterStr}
|
|
|
- </span>
|
|
|
- ) : (
|
|
|
- <span className='strTitle'>{strTitle}</span>
|
|
|
- );
|
|
|
- return <div style={{
|
|
|
- display: 'flex', flexDirection: 'row',
|
|
|
- width: '100%',
|
|
|
- justifyContent: 'flex-start', alignItems: 'center', height: 32,
|
|
|
- borderRadius: '4px',
|
|
|
- overflow: 'hidden',
|
|
|
- color: '#17181A',
|
|
|
- textOverflow: 'ellipsis',
|
|
|
- whiteSpace: 'nowrap'
|
|
|
-
|
|
|
- }}>{title}</div>
|
|
|
+ {
|
|
|
+ currentSelectedTabKey == '2' && (
|
|
|
+ <div className='tabContent'>
|
|
|
+ <div className='tableToolbar'>
|
|
|
+ <div className='filter'>
|
|
|
+ <div className='search'>
|
|
|
+ <span>科室名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
+ set_tableDataSearchKeywords(e.target.value);
|
|
|
+ if (e.target.value.length == 0) {
|
|
|
+ set_tableDataFilterParams({
|
|
|
+ ...tableDataFilterParams,
|
|
|
+ deptName: ''
|
|
|
+ });
|
|
|
}
|
|
|
- }
|
|
|
- defaultSelectedKeys={[treeData[0].child[0].code]}
|
|
|
- treeData={treeData as unknown as DataNode[]}
|
|
|
- // treeData={treeDataNew}
|
|
|
- switcherIcon={(props: any) => {
|
|
|
- const { expanded } = props;
|
|
|
- return !expanded ? <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={expandedIcon} /> : <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={closeIcon} />
|
|
|
- }}
|
|
|
- />
|
|
|
- )
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div className='rightTable'>
|
|
|
- <div className='tableToolbar'>
|
|
|
- <div className='filter'>
|
|
|
- {/* <div className='search' style={{ marginRight: 24 }}>
|
|
|
- <span>类型:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
- set_tableDataSearchKeywords(e.target.value);
|
|
|
- if (e.target.value.length == 0) {
|
|
|
- set_tableDataFilterParams({
|
|
|
- ...tableDataFilterParams,
|
|
|
- itemType: ''
|
|
|
- });
|
|
|
- }
|
|
|
- }} suffix={
|
|
|
- <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemType')} />
|
|
|
- } />
|
|
|
- </div> */}
|
|
|
- <div className='search'>
|
|
|
- <span>项目名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
- set_tableDataSearchKeywords(e.target.value);
|
|
|
- if (e.target.value.length == 0) {
|
|
|
- set_tableDataFilterParams({
|
|
|
- ...tableDataFilterParams,
|
|
|
- itemName: ''
|
|
|
- });
|
|
|
- }
|
|
|
- }} suffix={
|
|
|
- <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemName')} />
|
|
|
- } />
|
|
|
+ }} suffix={
|
|
|
+ <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('deptName')} />
|
|
|
+ } />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+ <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} >
|
|
|
+ <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
+ onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
+ onMouseLeave={() => set_ifShowTip(false)}
|
|
|
+ >
|
|
|
+ {/* <span key="1" onClick={() => generateFunc(2)} >获取</span>
|
|
|
+ <span key="2" >导入</span> */}
|
|
|
+ {importData(2, '非考核项目')}
|
|
|
+ <span key="3" onClick={auditType == '0' ? () => tableDataAddHandle() : () => { }}>添加</span>
|
|
|
+ </div>
|
|
|
+ </Popover>
|
|
|
</div>
|
|
|
-
|
|
|
- <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}>
|
|
|
- <span key="1" onClick={auditType == '0' ? () => generateFunc(3, true) : () => { }}>获取单个</span>
|
|
|
- <span key="2" onClick={auditType == '0' ? () => generateFunc(3) : () => { }}>获取所有</span>
|
|
|
- </div>
|
|
|
+ {currentComputeDate && <BMSTable scroll={{ x: 120 * 10, y: 500 }} actionRef={tableRef} rowKey='id' params={tableDataFilterParams}
|
|
|
+ columns={auditType == '0' ? [...tableColumn, {
|
|
|
+ title: '操作',
|
|
|
+ fixed: 'right',
|
|
|
+ key: 'option',
|
|
|
+ align: 'center',
|
|
|
+ width: 130,
|
|
|
+ valueType: 'option',
|
|
|
+ render: (_: any, record: any) => [
|
|
|
+ <a key={'edit'} onClick={() => tableEditActHandle(record)}>编辑</a>,
|
|
|
+ <Divider type='vertical' key='line' />,
|
|
|
+ <Popconfirm
|
|
|
+ key={'del'}
|
|
|
+ title="是否确认删除?"
|
|
|
+ onConfirm={() => delActionHandle(record, 2)}
|
|
|
+ // onCancel={()=>{}}
|
|
|
+ okText="是"
|
|
|
+ cancelText="否"
|
|
|
+ >
|
|
|
+ <a >删除</a>
|
|
|
+ </Popconfirm>
|
|
|
+ ],
|
|
|
+ }] : [...tableColumn]} request={(params, sort, filter) => getTableData('2', params, sort, filter)} />}
|
|
|
</div>
|
|
|
- {currentComputeDate && <BMSTable actionRef={tableRef} rowKey='id' params={tableDataFilterParams} columns={auditType == '0' ? [...tableColumn, {
|
|
|
- title: '数值',
|
|
|
- dataIndex: 'value',
|
|
|
- key: 'value',
|
|
|
- align: 'center',
|
|
|
- render: (text: any, record: any) => {
|
|
|
-
|
|
|
- return (
|
|
|
- <div key={'editCheckitem'} style={{ display: 'flex', flexDirection: 'row', width: '100%', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
-
|
|
|
- <div style={{ width: '80px', height: 16, display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
- {
|
|
|
- editTableCellId == record.id ? <Input size='small' defaultValue={record.value} placeholder='请输入' onChange={(e) => { set_checkItemvalNum(Number(e.target.value)) }} style={{ width: '80px' }} /> : <span>{text}</span>
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+ currentSelectedTabKey == '3' && (
|
|
|
+ <div className='tabContent'>
|
|
|
+
|
|
|
+ <div className='tabContentInner'>
|
|
|
+ <div className='leftTree'>
|
|
|
+ <div className='search'>
|
|
|
+ <Input className='searchInput' allowClear onChange={onTreeSearchKeyChange} placeholder="请输入类目名称" suffix={
|
|
|
+ <IconFont type="iconsousuo" />
|
|
|
+ } />
|
|
|
+ </div>
|
|
|
+ <div className='treeWrap'>
|
|
|
+ {
|
|
|
+ treeData && treeData.length > 0 && currentSelectedTreeNode && (
|
|
|
+ <DirectoryTree
|
|
|
+ fieldNames={{ title: 'name', key: 'code', children: 'child' }}
|
|
|
+ rootStyle={{ height: '100%', paddingBottom: 50, overflowY: 'scroll', overflowX: 'hidden' }}
|
|
|
+ onSelect={onSelectHandle}
|
|
|
+ onExpand={onExpand}
|
|
|
+ expandedKeys={expandedKeys}
|
|
|
+ autoExpandParent={autoExpandParent}
|
|
|
+ selectedKeys={[currentSelectedTreeNode.code]}
|
|
|
+ blockNode={true}
|
|
|
+ icon={() => null}
|
|
|
+ titleRender={
|
|
|
+ (nodeData: any) => {
|
|
|
+ const strTitle = nodeData.name as string;
|
|
|
+ const index = strTitle.indexOf(searchValue);
|
|
|
+ const beforeStr = strTitle.substring(0, index);
|
|
|
+ const afterStr = strTitle.slice(index + searchValue.length);
|
|
|
+ const title =
|
|
|
+ index > -1 ? (
|
|
|
+ <span>
|
|
|
+ {beforeStr}
|
|
|
+ <span className="site-tree-search-value" style={{ color: 'red', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{searchValue}</span>
|
|
|
+ {afterStr}
|
|
|
+ </span>
|
|
|
+ ) : (
|
|
|
+ <span className='strTitle'>{strTitle}</span>
|
|
|
+ );
|
|
|
+ return <div style={{
|
|
|
+ display: 'flex', flexDirection: 'row',
|
|
|
+ width: '100%',
|
|
|
+ justifyContent: 'flex-start', alignItems: 'center', height: 32,
|
|
|
+ borderRadius: '4px',
|
|
|
+ overflow: 'hidden',
|
|
|
+ color: '#17181A',
|
|
|
+ textOverflow: 'ellipsis',
|
|
|
+ whiteSpace: 'nowrap'
|
|
|
+
|
|
|
+ }}>{title}</div>
|
|
|
+ }
|
|
|
+ }
|
|
|
+ defaultSelectedKeys={[treeData[0].child[0].code]}
|
|
|
+ treeData={treeData as unknown as DataNode[]}
|
|
|
+ // treeData={treeDataNew}
|
|
|
+ switcherIcon={(props: any) => {
|
|
|
+ const { expanded } = props;
|
|
|
+ return !expanded ? <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={expandedIcon} /> : <img style={{ width: 20, height: 20, position: 'relative', top: 5 }} src={closeIcon} />
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className='rightTable'>
|
|
|
+ <div className='tableToolbar'>
|
|
|
+ <div className='filter'>
|
|
|
+ {/* <div className='search' style={{ marginRight: 24 }}>
|
|
|
+ <span>类型:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
+ set_tableDataSearchKeywords(e.target.value);
|
|
|
+ if (e.target.value.length == 0) {
|
|
|
+ set_tableDataFilterParams({
|
|
|
+ ...tableDataFilterParams,
|
|
|
+ itemType: ''
|
|
|
+ });
|
|
|
}
|
|
|
+ }} suffix={
|
|
|
+ <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemType')} />
|
|
|
+ } />
|
|
|
+ </div> */}
|
|
|
+ <div className='search'>
|
|
|
+ <span>项目名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
+ set_tableDataSearchKeywords(e.target.value);
|
|
|
+ if (e.target.value.length == 0) {
|
|
|
+ set_tableDataFilterParams({
|
|
|
+ ...tableDataFilterParams,
|
|
|
+ itemName: ''
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }} suffix={
|
|
|
+ <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemName')} />
|
|
|
+ } />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <img onClick={() => editCheckItemValHandle(record)} style={{ width: 16, height: 16, cursor: 'pointer', marginLeft: 8 }} src={editTableCellId == record.id ? conformIcon : editIcon} alt="" />
|
|
|
+ <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} >
|
|
|
+ <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
+ onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
+ onMouseLeave={() => set_ifShowTip(false)}
|
|
|
+ >
|
|
|
+ <span key="1" onClick={auditType == '0' ? () => generateFunc(3, true) : () => { }}>获取单个</span>
|
|
|
+ <span key="2" onClick={auditType == '0' ? () => generateFunc(3) : () => { }}>获取所有</span>
|
|
|
+ </div>
|
|
|
+ </Popover>
|
|
|
</div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- title: '操作',
|
|
|
- key: 'option',
|
|
|
- valueType: 'option',
|
|
|
- render: (_: any, record: any) => [
|
|
|
- <Popconfirm
|
|
|
- key={'del'}
|
|
|
- title="是否确认删除?"
|
|
|
- onConfirm={() => delActionHandle(record, 3)}
|
|
|
- // onCancel={()=>{}}
|
|
|
- okText="是"
|
|
|
- cancelText="否"
|
|
|
- >
|
|
|
- <a >删除</a>
|
|
|
- </Popconfirm>
|
|
|
- ],
|
|
|
- }] : [
|
|
|
- ...tableColumn, {
|
|
|
- title: '数值',
|
|
|
- dataIndex: 'value',
|
|
|
- key: 'value',
|
|
|
- align: 'center'
|
|
|
- }
|
|
|
- ]} request={(params, sort, filter) => getTableData('3', params, sort, filter)} />}
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
+ {currentComputeDate && <BMSTable actionRef={tableRef} loading={{ spinning: loading, tip: '正在计算数据...' }} rowKey='id' params={tableDataFilterParams} columns={auditType == '0' ? [...tableColumn, {
|
|
|
+ title: '数值',
|
|
|
+ dataIndex: 'value',
|
|
|
+ key: 'value',
|
|
|
+ align: 'center',
|
|
|
+ render: (text: any, record: any) => {
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div key={'editCheckitem'} style={{ display: 'flex', flexDirection: 'row', width: '100%', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
+
|
|
|
+ <div style={{ width: '80px', height: 16, display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: 'center' }}>
|
|
|
+ {
|
|
|
+ editTableCellId == record.id ? <Input size='small' defaultValue={record.value} placeholder='请输入' onChange={(e) => { set_checkItemvalNum(Number(e.target.value)) }} style={{ width: '80px' }} /> : <span>{text}</span>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ <img onClick={() => editCheckItemValHandle(record)} style={{ width: 16, height: 16, cursor: 'pointer', marginLeft: 8 }} src={editTableCellId == record.id ? conformIcon : editIcon} alt="" />
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ key: 'option',
|
|
|
+ valueType: 'option',
|
|
|
+ render: (_: any, record: any) => [
|
|
|
+ <Popconfirm
|
|
|
+ key={'del'}
|
|
|
+ title="是否确认删除?"
|
|
|
+ onConfirm={() => delActionHandle(record, 3)}
|
|
|
+ // onCancel={()=>{}}
|
|
|
+ okText="是"
|
|
|
+ cancelText="否"
|
|
|
+ >
|
|
|
+ <a >删除</a>
|
|
|
+ </Popconfirm>
|
|
|
+ ],
|
|
|
+ }] : [
|
|
|
+ ...tableColumn, {
|
|
|
+ title: '数值',
|
|
|
+ dataIndex: 'value',
|
|
|
+ key: 'value',
|
|
|
+ align: 'center'
|
|
|
+ }
|
|
|
+ ]} request={(params, sort, filter) => getTableData('3', params, sort, filter)} />}
|
|
|
+ </div>
|
|
|
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- {
|
|
|
- currentSelectedTabKey == '4' && (
|
|
|
- <div className='tabContent'>
|
|
|
- <div className='tableToolbar'>
|
|
|
- <div className='filter'>
|
|
|
- <div className='tabs'>
|
|
|
- {
|
|
|
- manaIndexGroups.map((item, index) => {
|
|
|
- return (
|
|
|
- <div key={index} className={currentSelectedManaGroup?.id == item.id ? 'tab on' : 'tab'} onClick={() => onManaIndexGroupClick(item)}>{item.groupName}</div>
|
|
|
- )
|
|
|
- })
|
|
|
- }
|
|
|
+ </div>
|
|
|
|
|
|
</div>
|
|
|
- <div className='search'>
|
|
|
- {/* <span>核算单元名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
- set_tableDataSearchKeywords(e.target.value);
|
|
|
- if (e.target.value.length == 0) {
|
|
|
- set_tableDataFilterParams({
|
|
|
- ...tableDataFilterParams,
|
|
|
- unitName: ''
|
|
|
- });
|
|
|
- }
|
|
|
- }} suffix={
|
|
|
- <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle()} />
|
|
|
- } /> */}
|
|
|
+ )
|
|
|
+ }
|
|
|
+ {
|
|
|
+ currentSelectedTabKey == '4' && (
|
|
|
+ <div className='tabContent'>
|
|
|
+ <div className='tableToolbar'>
|
|
|
+ <div className='filter'>
|
|
|
+ <div className='tabs'>
|
|
|
+ {
|
|
|
+ manaIndexGroups.map((item, index) => {
|
|
|
+ return (
|
|
|
+ <div key={index} className={currentSelectedManaGroup?.id == item.id ? 'tab on' : 'tab'} onClick={() => onManaIndexGroupClick(item)}>{item.groupName}</div>
|
|
|
+ )
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div className='search'>
|
|
|
+ {/* <span>核算单元名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
+ set_tableDataSearchKeywords(e.target.value);
|
|
|
+ if (e.target.value.length == 0) {
|
|
|
+ set_tableDataFilterParams({
|
|
|
+ ...tableDataFilterParams,
|
|
|
+ unitName: ''
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }} suffix={
|
|
|
+ <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle()} />
|
|
|
+ } /> */}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} placement='topRight'>
|
|
|
+ <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
+ onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
+ onMouseLeave={() => set_ifShowTip(false)}
|
|
|
+ >
|
|
|
+ {/* <span key="1">获取</span> */}
|
|
|
+ {importData(4, '管理指标')}
|
|
|
+ </div>
|
|
|
+ </Popover>
|
|
|
+ </div>
|
|
|
+ {currentComputeDate && tableColumn && <BMSTable className='BMS-ManaIndextable' rowClassName={() => 'BMS-ManaIndextable-row'} bordered actionRef={tableRef} scroll={{ x: (100 * (tableColumn.length - 2)) + 120 + 100, y: 500 }} rowKey='unitCode' columns={auditType == '0' ? [...tableColumn,
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ key: 'option',
|
|
|
+ valueType: 'option',
|
|
|
+ width: 100,
|
|
|
+ align: 'center',
|
|
|
+ fixed: 'right',
|
|
|
+ render: (_: any, record: any) => [
|
|
|
+ <EditManaIndexTableRow record={record} key={'edit'} />
|
|
|
+ ],
|
|
|
+ }] : [...tableColumn]} pagination={false} params={tableDataFilterParams} request={(params, sort, filter) => getTableData('4', params, sort, filter)} />}
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}>
|
|
|
- {/* <span key="1">获取</span> */}
|
|
|
- <span key="download" onClick={auditType == '0'?() =>downloadTemplate(4,currentSelectedManaGroup?.id):()=>{}}>下载模板</span>
|
|
|
- {importData(4, '管理指标')}
|
|
|
- {/* <span key="2" onClick={() => generateFunc(4)}>导入</span> */}
|
|
|
- {/* <span key="3" onClick={() => generateFunc(4)}>添加</span> */}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- {currentComputeDate && tableColumn && <BMSTable className='BMS-ManaIndextable' rowClassName={() => 'BMS-ManaIndextable-row'} bordered actionRef={tableRef} scroll={{ x: (100 * (tableColumn.length - 2)) + 120 + 100, y: 500 }} rowKey='unitCode' columns={auditType == '0' ? [...tableColumn,
|
|
|
+ )
|
|
|
+ }
|
|
|
{
|
|
|
- title: '操作',
|
|
|
- key: 'option',
|
|
|
- valueType: 'option',
|
|
|
- width: 100,
|
|
|
- align: 'center',
|
|
|
- fixed: 'right',
|
|
|
- render: (_: any, record: any) => [
|
|
|
- <EditManaIndexTableRow record={record} key={'edit'} />
|
|
|
- ],
|
|
|
- }] : [...tableColumn]} pagination={false} params={tableDataFilterParams} request={(params, sort, filter) => getTableData('4', params, sort, filter)} />}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- {
|
|
|
- currentSelectedTabKey == '5' && (
|
|
|
- <div className='tabContent' style={{ paddingBottom: 30 }}>
|
|
|
- <div className='tableToolbar'>
|
|
|
- <div className='filter'>
|
|
|
- <div className='search'>
|
|
|
- <span>项目名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
- set_tableDataSearchKeywords(e.target.value);
|
|
|
- if (e.target.value.length == 0) {
|
|
|
- set_tableDataFilterParams({
|
|
|
- ...tableDataFilterParams,
|
|
|
- itemName: ''
|
|
|
- });
|
|
|
- }
|
|
|
- }} suffix={
|
|
|
- <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemName')} />
|
|
|
- } />
|
|
|
+ currentSelectedTabKey == '5' && (
|
|
|
+ <div className='tabContent' >
|
|
|
+ <div className='tableToolbar'>
|
|
|
+ <div className='filter'>
|
|
|
+ <div className='search'>
|
|
|
+ <span>项目名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
+ set_tableDataSearchKeywords(e.target.value);
|
|
|
+ if (e.target.value.length == 0) {
|
|
|
+ set_tableDataFilterParams({
|
|
|
+ ...tableDataFilterParams,
|
|
|
+ itemName: ''
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }} suffix={
|
|
|
+ <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemName')} />
|
|
|
+ } />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} placement='topRight'>
|
|
|
+ <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
+ onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
+ onMouseLeave={() => set_ifShowTip(false)}
|
|
|
+ >
|
|
|
+ {/* <span key="1">获取</span> */}
|
|
|
+ {importData(5, '收入')}
|
|
|
+ </div>
|
|
|
+ </Popover>
|
|
|
+ </div>
|
|
|
+ {currentComputeDate && <BMSTable actionRef={tableRef} rowKey='id' params={tableDataFilterParams} columns={tableColumn} request={(params, sort, filter) => getTableData('5', params, sort, filter)} />}
|
|
|
+ <div className='totalCount'>合计:{totalNum}</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}>
|
|
|
- {/* <span key="1">获取</span> */}
|
|
|
- <span key="2" onClick={() => generateFunc(5)}>导入</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- {currentComputeDate && <BMSTable actionRef={tableRef} rowKey='id' columns={tableColumn} request={(params, sort, filter) => getTableData('5', params, sort, filter)} />}
|
|
|
- <div className='totalCount'>合计:151065.34</div>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- {
|
|
|
- currentSelectedTabKey == '6' && (
|
|
|
- <div className='tabContent'>
|
|
|
- <div className='tableToolbar'>
|
|
|
- <div className='filter'>
|
|
|
- <div className='search'>
|
|
|
- <span>项目名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
- set_tableDataSearchKeywords(e.target.value);
|
|
|
- if (e.target.value.length == 0) {
|
|
|
- set_tableDataFilterParams({
|
|
|
- ...tableDataFilterParams,
|
|
|
- itemName: ''
|
|
|
- });
|
|
|
- }
|
|
|
- }} suffix={
|
|
|
- <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemName')} />
|
|
|
- } />
|
|
|
+ )
|
|
|
+ }
|
|
|
+ {
|
|
|
+ currentSelectedTabKey == '6' && (
|
|
|
+ <div className='tabContent'>
|
|
|
+ <div className='tableToolbar'>
|
|
|
+ <div className='filter'>
|
|
|
+ <div className='search'>
|
|
|
+ <span>项目名称:</span><Input className='searchInput' allowClear placeholder="请输入" onChange={(e) => {
|
|
|
+ set_tableDataSearchKeywords(e.target.value);
|
|
|
+ if (e.target.value.length == 0) {
|
|
|
+ set_tableDataFilterParams({
|
|
|
+ ...tableDataFilterParams,
|
|
|
+ itemName: ''
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }} suffix={
|
|
|
+ <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('itemName')} />
|
|
|
+ } />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} placement='topRight'>
|
|
|
+ <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}
|
|
|
+ onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
|
|
|
+ onMouseLeave={() => set_ifShowTip(false)}
|
|
|
+ >
|
|
|
+ {/* <span key="1">获取</span> */}
|
|
|
+ {importData(6, '成本')}
|
|
|
+ </div>
|
|
|
+ </Popover>
|
|
|
+ </div>
|
|
|
+ {currentComputeDate && <BMSTable actionRef={tableRef} rowKey='id' params={tableDataFilterParams} columns={tableColumn} request={(params, sort, filter) => getTableData('6', params, sort, filter)} />}
|
|
|
+ <div className='totalCount'>合计:{totalNum}</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div className={auditType == '1' ? 'btnGroup disabled' : 'btnGroup'}>
|
|
|
- {/* <span key="1">获取</span> */}
|
|
|
- <span key="2" onClick={() => generateFunc(6)}>导入</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- {currentComputeDate && <BMSTable actionRef={tableRef} rowKey='id' columns={tableColumn} request={(params, sort, filter) => getTableData('5', params, sort, filter)} />}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
+ )
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- </BMSPagecontainer>
|
|
|
- </div>
|
|
|
+ </BMSPagecontainer>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ </>
|
|
|
+
|
|
|
</div>
|
|
|
);
|
|
|
|