Explorar o código

修复发版前发现的bug

code4eat %!s(int64=2) %!d(string=hai) anos
pai
achega
ca6905101f

+ 0 - 1
src/app.tsx

@@ -408,7 +408,6 @@ export const layout = ({ initialState, setInitialState }: { initialState: any, s
                       });
                     }
                     if (t[key] == 5) {
-                      //网易有数页面
                       result.push({
                         contentType: t[key],
                         path: t['path'],

+ 125 - 54
src/pages/budgetMana/monthlyInfoCheck/index.tsx

@@ -4,7 +4,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-12-16 09:42:52
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-03-08 11:12:38
+ * @LastEditTime: 2023-05-11 10:40:28
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -25,7 +25,7 @@ import { BMSTable } from '@/components/BMSTable';
 import { ActionType, ProColumns, ProColumnType } from '@ant-design/pro-components';
 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 { TransferDirection, TransferItem, TransferProps } from 'antd/es/transfer';
 import { getComputeDate } from '@/pages/Home/service';
 
 
@@ -35,6 +35,8 @@ import { getCurrentCheckStatus } from '@/services/auth';
 import React from 'react';
 import DirectoryTree from 'antd/es/tree/DirectoryTree';
 import { getDeepestTreeData } from '@/utils/tooljs';
+import { ColumnsType, TableRowSelection } from 'antd/es/table/interface';
+import { difference } from 'lodash';
 
 
 
@@ -296,38 +298,53 @@ const MonthlyInfoCheck: React.FC = () => {
     }
 
 
+    interface TableTransferProps extends TransferProps<TransferItem> {
+        leftColumns: ColumnsType<any>;
+        rightColumns: ColumnsType<any>;
+    }
 
-    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[]>([]);
 
+    const transferTableColumn = [
+        {
+            title: '工号',
+            dataIndex: 'empNo',
+        },
+        {
+            title: '姓名',
+            dataIndex: 'name',
 
-        useImperativeHandle(ref, () => ({
-            save: async () => {
-                const items = datasource.filter(a => targetKeys.includes(a.empNo));
-                const resp = await saveEmpsRequest(items);
-                if (resp) {
-                    tableRef.current?.reload();
-                }
+        },
+    ]
+
+    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({
                 computeDate: currentComputeDate as string,
                 unitCode: currentSelectedTreeNode.code
@@ -341,47 +358,101 @@ 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(() => {
-            getData();
+            getFuncList();
         }, [])
 
         return (
-            <Transfer
+            <Transfer className='TableTransfer' showSearch
+                titles={['待选项', '已选项']}
+                locale={{
+                    itemUnit: '项',
+                    itemsUnit: '项',
+                    searchPlaceholder: '请输入',
+                }}
+                oneWay={true}
+                onChange={onChange}
+                onSelectChange={onSelectChange}
                 dataSource={datasource}
-                titles={['未添加人员', '已添加人员']}
+                rowKey={record => record.empNo}
                 targetKeys={targetKeys}
                 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 resp = await generateDataRequest({

+ 207 - 190
src/pages/secondaryDistribute/employeeInfoCheck/index.tsx

@@ -4,7 +4,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-12-16 09:42:52
  * @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
  * @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 { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
+import { useEffect, useImperativeHandle, useRef, useState } from 'react';
 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 expandedIcon from '../../../../static/treenode_open.png';
 import closeIcon from '../../../../static/treenode_collapse.png';
 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 { 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 'dayjs/locale/zh-cn';
-import locale from 'antd/es/date-picker/locale/zh_CN';
-import { getCurrentCheckStatus } from '@/services/auth';
 import React from 'react';
 import DirectoryTree from 'antd/es/tree/DirectoryTree';
 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 [tableColumn, set_tableColumn] = useState<ProColumns[]>([]);
     const [currentSelectedTreeNode, set_currentSelectedTreeNode] = useState<any | undefined>();
-    const [currentSelectedTabKey, set_currentSelectedTabKey] = useState<string>('1');
+
     const [currentComputeDate, set_currentComputeDate] = useState<string | undefined>();
 
     const [ifShowTip, set_ifShowTip] = useState(false);
 
-    const [auditType, set_auditType] = useState('0');
+    const [commitStatus, set_commitStatus] = useState('0');
 
     const [empInfoSearchKeywords, set_empInfoSearchKeywords] = useState('');
 
     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 [searchValue, setSearchValue] = useState('');
     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',
             key: 'jobTitleName',
 
@@ -135,7 +132,8 @@ const MonthlyInfoCheck: React.FC = () => {
         if (currentComputeDateResp) {
             const resp = await delPersonRequest({
                 computeDate: currentComputeDateResp,
-                id: id
+                id: id,
+                unitCode: currentSelectedTreeNode.code
             });
             if (resp) {
                 tableRef.current?.reload();
@@ -157,14 +155,16 @@ const MonthlyInfoCheck: React.FC = () => {
         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) => {
         // console.log({ currentSelectedTreeNode });
         // console.log({ params, sort, filter });
@@ -190,47 +190,6 @@ const MonthlyInfoCheck: React.FC = () => {
                     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 []
@@ -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({
                 computeDate: currentComputeDate as string,
                 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(() => {
-            getData();
+            getFuncList();
         }, [])
 
         return (
-            <Transfer
+            <Transfer className='TableTransfer' showSearch
+                titles={['待选项', '已选项']}
+                locale={{
+                    itemUnit: '项',
+                    itemsUnit: '项',
+                    searchPlaceholder: '请输入',
+                }}
+                oneWay={true}
+                onChange={onChange}
+                onSelectChange={onSelectChange}
                 dataSource={datasource}
-                titles={['未添加人员', '已添加人员']}
+                rowKey={record => record.empNo}
                 targetKeys={targetKeys}
                 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({
             computeDate: currentComputeDate as string,
-            generateType: type
+            unitCode: currentSelectedTreeNode.code
         });
         if (resp) {
             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({
             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();
     }
 
-    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[] = [];
 
@@ -463,15 +470,18 @@ const MonthlyInfoCheck: React.FC = () => {
 
         if (currentComputeDate) {
             getTreeReqFunc(currentComputeDate);
-            getCheckStatus(currentComputeDate);
         }
     }, [currentComputeDate]);
 
     useEffect(() => {
         tableRef.current?.reload();
-    }, [currentSelectedTreeNode]);
 
-  
+        if (currentComputeDate && currentSelectedTreeNode) {
+            getCurrentCommitStatus();
+        }
+    }, [currentSelectedTreeNode, currentComputeDate]);
+
+
 
 
     useEffect(() => {
@@ -484,6 +494,7 @@ const MonthlyInfoCheck: React.FC = () => {
 
                 set_currentSelectedTreeNode(node);
                 setExpandedKeys([nodeParent.code]);
+                getCurrentCommitStatus();
             }
         }
     }, [treeData]);
@@ -499,7 +510,7 @@ const MonthlyInfoCheck: React.FC = () => {
 
 
     return (
-        <div className='MonthlyInfoCheck'>
+        <div className='EmployeeInfoCheck'>
             <div className='leftTree'>
                 <div className='search'>
                     <Input
@@ -553,7 +564,10 @@ const MonthlyInfoCheck: React.FC = () => {
                                         textOverflow: 'ellipsis',
                                         whiteSpace: 'nowrap'
 
-                                    }}>{title}</div>
+                                    }}>
+                                        {title}
+                                        {!nodeData.map&&<span className={nodeData.unitType?'point lastChild':'point'}></span>}
+                                    </div>
                                 }
                             }
                             defaultSelectedKeys={[treeData[0].child[0].code]}
@@ -586,19 +600,22 @@ const MonthlyInfoCheck: React.FC = () => {
                                     <IconFont type="iconsousuo" onClick={() => searchEmpHandle()} />
                                 } />
                             </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>
-                        {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: '操作',
                             key: 'option',
                             valueType: 'option',
@@ -611,10 +628,10 @@ const MonthlyInfoCheck: React.FC = () => {
                         },] : [...tableColumn]} request={(params, sort, filter) => getTableData('PERSON', params, sort, filter)} />}
                     </div>
                 </BMSPagecontainer>
-            </div>
-        </div>
+            </div >
+        </div >
     );
 
 };
 
-export default MonthlyInfoCheck;
+export default EmployeeInfoCheck;

+ 18 - 95
src/pages/secondaryDistribute/employeeInfoCheck/service.ts

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-12-21 11:13:51
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-10 13:50:34
+ * @LastEditTime: 2023-05-11 10:59:43
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlyInfoCheck/service.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -76,100 +76,21 @@ export const getPersonInfoTableData = (params: getPersonInfoTableDataParamsType)
 }
 
 
-//获取科室信息表格数据
-
-export type getDepInfoTableDataParamsType = {
-    computeDate: string; //核算年月
-    unitCode: string; //核算单元代码
-    deptName?: string; //科室名称
-}
-
-export type DepInfoTableItemDataType = {
-    unitCode: number,
-    empNo: string,
-    empName: string,
-    jobLevel: string,
-    jobTitle: string,
-    jobRate: string,
-    seniority: string
-}
-
-export type DepInfoTableDataType = {
-
-    current: number,
-    list: DepInfoTableItemDataType[],
-    pageSize: number,
-    totalCount: number,
-    totalPage: number,
-}
-
-export const getDepInfoTableData = (params: getDepInfoTableDataParamsType) => {
-
-    return request<DepInfoTableDataType>('/performance/check/deptList', {
-        method: 'GET',
-        params: params
-    })
-
-}
-
-
-//获取收费项目信息
-
-export type getProjectInfoTableDataParamsType = {
-    computeDate: string; //核算年月
-    unitCode: string; //核算单元代码
-    itemName?: string; //项目名称
-}
-
-export type ProjectInfoTableItemDataType = {
-    itemCode: string,
-    itemName: string,
-    itemType: string,
-    itemPoint: number,
-    coreFlag: string,
-}
-
-export type ProjectInfoTableDataType = {
-
-    current: number,
-    list: ProjectInfoTableItemDataType[],
-    pageSize: number,
-    totalCount: number,
-    totalPage: number,
-}
-
-export const getProjectInfoTableData = (params: getProjectInfoTableDataParamsType) => {
-
-    return request<ProjectInfoTableDataType>('/performance/check/itemList', {
-        method: 'GET',
-        params: params
-    })
-
-}
-
-
-//获取收费项目信息表格数据
-
-export type getChargeItemTableDataParamsType = {
-    Date: string; //核算年月
-    unitCode: string; //核算单元代码
-    deptName?: string; //科室名称
-}
-
-export const getChargeItemfoTableData = (params: getDepInfoTableDataParamsType) => {
+//获取当前提交状态
+export const getCurrentCommitStatusReq = (params:{
+    computeDate:string,
+    unitCode:string
+}) => {
 
-    return request<getTreeDataRespType>('/performance/check/itemList', {
+    return request('/performance/secondSetting/getEmployeeSubmitStatus', {
         method: 'GET',
         params: params
     })
 
 }
 
-
 //获取可选人员列表
 
-///master/centerSys/user/list
-
 export const getTotalEmps = (params:{
     computeDate:string,
     unitCode:string
@@ -186,10 +107,11 @@ export const getTotalEmps = (params:{
 //删除人员
 export const delPersonRequest = (params:{
     computeDate:string,
-    id:string
+    id:string,
+    unitCode:string
 }) => {
 
-    return request('/performance/check/deleteEmployee', {
+    return request('/performance/secondSetting/deleteEmployee', {
         method: 'POST',
         params: params
     })
@@ -201,12 +123,12 @@ export const delPersonRequest = (params:{
 
 export type GenerateDataRequestParamsType = {
     computeDate: string,
-    generateType: number,
+    unitCode: string,
 }
 
 export const generateDataRequest = (data: GenerateDataRequestParamsType) => {
  
-    return request('/performance/check/generate', {
+    return request('/performance/secondSetting/generateEmployee', {
         method: 'POST',
         params:data
     })
@@ -214,15 +136,16 @@ export const generateDataRequest = (data: GenerateDataRequestParamsType) => {
 }
 
 
-//审核请求
+//提交请求
 
-export type CheckRequestParamsType = {
+export type CommitRequestParamsType = {
     computeDate:string,
-    auditType:string
+    unitCode:string,
+    type:string
 }
-export const checkRequest = (data:CheckRequestParamsType) => {
+export const commitRequest = (data:CommitRequestParamsType) => {
  
-    return request('/performance/check/audit', {
+    return request('/performance/secondSetting/submitEmployee', {
         method: 'POST',
         params:data
     })

+ 62 - 26
src/pages/secondaryDistribute/employeeInfoCheck/style.less

@@ -1,12 +1,12 @@
-.MonthlyInfoCheck {
+.EmployeeInfoCheck {
     display: flex;
     flex-direction: row;
     // height: 100%;
     background: #F5F7FA;
 
     .leftTree {
-        position:fixed;
-        top:64px;
+        position: fixed;
+        top: 64px;
         width: 220px;
         height: calc(100vh - 80px);
         background: #FFF;
@@ -17,11 +17,26 @@
         // border-right:16px solid #F5F7FA;
 
         .searchInput {
-              border: 1px solid #CFD7E6;
+            border: 1px solid #CFD7E6;
+        }
+        
+        .point {
+            display: block;
+            content: '';
+            width: 6px;
+            height: 6px;
+            border-radius: 50%;
+            z-index:99;
+            background: #FF9832;
+
+            &.lastChild {
+                background: #FF1966;
+            }
         }
 
 
-        .bms-ant-tree.bms-ant-tree-directory .bms-ant-tree-treenode-selected:hover::before,.bms-ant-tree.bms-ant-tree-directory .bms-ant-tree-treenode-selected::before {
+        .bms-ant-tree.bms-ant-tree-directory .bms-ant-tree-treenode-selected:hover::before,
+        .bms-ant-tree.bms-ant-tree-directory .bms-ant-tree-treenode-selected::before {
             border-radius: 4px;
             background: rgb(240 242 245 / 100%);
         }
@@ -43,7 +58,7 @@
             position: absolute;
             cursor: pointer;
             top: 0;
-            right:0;
+            right: 0;
             padding: 0 14px;
             height: 24px;
             line-height: 24px;
@@ -97,7 +112,7 @@
                 flex-direction: row;
                 justify-content: space-between;
                 align-items: center;
-                margin-top:16px;
+                margin-top: 16px;
                 margin-bottom: 16px;
 
                 .search {
@@ -121,33 +136,54 @@
                         color: #17181A;
                     }
                 }
+                
+                .btnGroupWrap {
+                    display: flex;
+                    flex-direction: row;
+                    align-items: center;
 
-                .btnGroup {
-                    &>span {
+                    .btnGroup {
+                        &>span {
+                            display: inline-block;
+                            text-align: center;
+                            width: 56px;
+                            height: 24px;
+                            line-height: 21px;
+                            background: #FAFCFF;
+                            border-radius: 4px;
+                            cursor: pointer;
+                            border: 1px solid #DAE2F2;
+                            margin-right: 8px;
+    
+                            &:last-child {
+                                margin-right: 0;
+                            }
+                        }
+                        &.disabled {
+                            &>span {
+                                cursor: not-allowed;
+                                color: rgb(0 0 0 / 50%);
+                                background-color: #f0f2f5;
+                            }
+                        }
+                    }
+                    .commit {
                         display: inline-block;
                         text-align: center;
-                        width: 56px;
+                        padding: 0 14px;
                         height: 24px;
-                        line-height: 21px;
-                        background: #FAFCFF;
+                        line-height: 23px;
+                        background: #3377FF;
                         border-radius: 4px;
                         cursor: pointer;
-                        border: 1px solid #DAE2F2;
-                        margin-right: 8px;
-
-                        &:last-child {
-                            margin-right: 0;
-                        }
-                    }
-
-                    &.disabled {
-                        &>span {
-                            cursor:not-allowed;
-                            color: rgb(0 0 0 / 50%);
-                            background-color:#f0f2f5;
-                        }
+                        font-size: 14px;
+                        font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+                        font-weight: 400;
+                        margin-left: 8px;
+                        color: #FFF;
                     }
                 }
+        
             }
         }
     }

+ 2 - 1
src/pages/setting/projectSetting/bilingProjectMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-04 15:31:10
+ * @LastEditTime: 2023-05-11 13:30:28
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -238,6 +238,7 @@ export default function BilingProjectMana() {
         if (resp) {
             const respStat = await gainData({ compute_date: resp });
             if (respStat) {
+                message.success('获取成功!');
                 tableRef.current?.reload();
             }
         }

+ 4 - 4
src/pages/setting/projectSetting/bilingProjectMana/service.ts

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 16:31:27
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-04 16:35:54
+ * @LastEditTime: 2023-05-11 13:28:49
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/service.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -42,10 +42,10 @@ export const getData = (params?:any) => {
   });
 };
 
-export const gainData = (params?:any) => {
+export const gainData = (data:any) => {
   return request('/performance/item/auto', {
-    method: 'GET',
-    params:{...params}
+    method: 'POST',
+    data:{...data}
   });
 };
 

+ 16 - 8
src/pages/setting/projectSetting/nonAssessmentProjectMana/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-08 15:07:57
+ * @LastEditTime: 2023-05-11 14:14:10
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -86,7 +86,7 @@ export default function MonAssessmentProjectMana() {
             width: 200,
             valueType: 'option',
             render: (_: any, record: any) => {
-                return [
+                return record.distributionType == 1?[
                     <UpDataActBtn key={'SCORE'} record={record} type='SCORE' />,
                     <UpDataActBtn key={'act'} record={record} type='EDIT' />,
                     <Popconfirm
@@ -96,6 +96,15 @@ export default function MonAssessmentProjectMana() {
                     >
                         <a>删除</a>
                     </Popconfirm>
+                ]:[
+                    <UpDataActBtn key={'act'} record={record} type='EDIT' />,
+                    <Popconfirm
+                        title="是否确认删除?"
+                        key="del"
+                        onConfirm={() => delTableData(record)}
+                    >
+                        <a>删除</a>
+                    </Popconfirm>
                 ]
             },
         },
@@ -210,6 +219,7 @@ export default function MonAssessmentProjectMana() {
 
         
         useEffect(() => {
+        
             if (type == 'SCORE') {
                 let defaultFormData: { [key: string]: any } = {};
                 if (record.secondItem && record.secondItem.length > 0) {
@@ -220,18 +230,18 @@ export default function MonAssessmentProjectMana() {
                     });
 
                     set_scoreInitList({ ...defaultFormData });
-
+            
                     set_scoreList([...defaultVal]);
                 } else {
                     set_scoreList([{}]);
                 }
             }
-        }, [type]);
+        },[record]);
 
 
         return (
             <ModalForm
-                title={`${type == 'EDIT' ? '编辑' : '新增'}非考核项目`}
+                title={`${type == 'EDIT' ? '编辑' : '新增'}${type == 'SCORE'?'评分项':'非考核项目'}`}
                 className='MonAssessmentProjectMana-ModalForm'
                 width={352}
                 initialValues={type == 'EDIT' ? { ...record } :type == 'SCORE'?{...scoreInitList}:{}}
@@ -293,8 +303,6 @@ export default function MonAssessmentProjectMana() {
                                                             return a
                                                         });
 
-                                                        console.log({ newArr });
-
                                                         set_scoreList([...newArr]);
                                                     }}
                                                 />
@@ -340,7 +348,7 @@ export default function MonAssessmentProjectMana() {
                                                 label="分配对象:"
                                                 placeholder="请输入"
                                                 options={[
-                                                    { label: '医师', value: 1 },
+                                                    { label: '员工', value: 1 },
                                                     { label: '核算单元', value: 2 },
                                                     { label: '医疗组', value: 3 },
                                                 ]}

+ 8 - 10
src/pages/setting/projectSetting/occupationsSecondaryDistriSet/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-09 16:20:40
+ * @LastEditTime: 2023-05-11 14:34:32
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -155,7 +155,6 @@ export default function OccupationsSecondaryDistriSet() {
 
 
     interface TableTransferProps extends TransferProps<TransferItem> {
-        dataSource: any[];
         leftColumns: ColumnsType<any>;
         rightColumns: ColumnsType<any>;
     }
@@ -187,7 +186,7 @@ export default function OccupationsSecondaryDistriSet() {
             content: <TableTransfer
                 ref={ref}
                 leftColumns={transferTableColumn}
-                rightColumns={transferTableColumn} dataSource={[]}
+                rightColumns={transferTableColumn}
             ></TableTransfer>,
             onOk: () => {
                 return ref.current && ref.current.save();
@@ -206,17 +205,15 @@ export default function OccupationsSecondaryDistriSet() {
         const getFuncList = async () => {
             const resp = await getTransferTableData(currentTab ? currentTab.key : '');
             if (resp) {
-
-                if (dataSource) {
-
+                
+                if(dataSource){
                     const defaultSelctedkeys = dataSource.map((item: any) => item.secondItemCode);
-
                     set_datasource([...resp, ...(dataSource.map((a: any) => ({ ...a, name: a.secondItemName, code: a.secondItemCode })))]);
-
-
                     setTargetKeys(defaultSelctedkeys);
+                }else{
+                    set_datasource([...resp]);
                 }
-
+                
             }
         }
 
@@ -352,6 +349,7 @@ export default function OccupationsSecondaryDistriSet() {
         const resp = await delData(tableSelectedKeys);
         if (resp) {
             message.success('操作成功!');
+            set_tableSelectedKeys([]);
             getTableData();
         }
     }

+ 19 - 12
src/pages/setting/projectSetting/secondaryProjectDistribute/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 11:30:33
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-08 14:18:26
+ * @LastEditTime: 2023-05-11 14:04:48
  * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -17,7 +17,7 @@ import { getDataByKeyFromDic, getPubDicData } from '@/services/getDic';
 import { createFromIconfontCN } from '@ant-design/icons';
 
 import { ActionType, ProFormRadio } from '@ant-design/pro-components';
-import { ModalForm, ProFormCascader, ProFormDigit, ProFormSelect, ProFormText, ProFormTextArea } from '@ant-design/pro-form'
+import { ModalForm, ProFormCascader, ProFormDependency, ProFormDigit, ProFormSelect, ProFormText, ProFormTextArea } from '@ant-design/pro-form'
 import { ProColumns } from '@ant-design/pro-table';
 import { Input, message, Popconfirm } from 'antd';
 import { useEffect, useRef, useState } from 'react'
@@ -192,6 +192,10 @@ export default function BilingProjectMana() {
                         {
                             label: '评级',
                             value: 2,
+                        },
+                        {
+                            label: '直接给付',
+                            value: 3,
                         }
                     ]}
                     rules={[{ required: true, message: '评价方式不能为空!' }]}
@@ -228,20 +232,23 @@ export default function BilingProjectMana() {
                         {
                             label: '自动获取',
                             value: 2,
-                        },
-                        {
-                            label: '导入',
-                            value: 3,
                         }
                     ]}
                     rules={[{ required: true, message: '数据来源不能为空!' }]}
                 />
-                <ProFormTextArea
-                    name="sql"
-                    label="SQL:"
-                    placeholder="请输入"
-                    // rules={[{ required: true, message: 'SQL不能为空!' }]}
-                />
+                <ProFormDependency name={['source']}>
+                     {
+                        ({source})=>(
+                            <ProFormTextArea
+                            name="sql"
+                            label="SQL:"
+                            placeholder="请输入"
+                            rules={[{ required:source == 2?true:false, message: 'SQL不能为空!' }]}
+                        />
+                        )
+                     }
+                </ProFormDependency>
+                
 
             </ModalForm>
         )