Browse Source

绩效系统功能优化需求 id 78

code4eat 2 years ago
parent
commit
52cca2b22b
52 changed files with 962 additions and 264 deletions
  1. 4 1
      package.json
  2. 9 4
      src/app.tsx
  3. 1 0
      src/components/BMSTable/style.less
  4. 1 1
      src/global.less
  5. 4 4
      src/pages/budgetMana/monthlyDataCheck/index.tsx
  6. 13 5
      src/pages/budgetMana/monthlyInfoCheck/index.tsx
  7. 16 1
      src/pages/budgetMana/monthlyInfoCheck/service.ts
  8. 33 7
      src/pages/budgetMana/monthlyInfoCheck/style.less
  9. 73 18
      src/pages/budgetMana/oneBatch/index.tsx
  10. 4 0
      src/pages/budgetMana/oneBatch/style.less
  11. 4 3
      src/pages/budgetMana/personnelSalaryBudget/index.tsx
  12. 69 33
      src/pages/reportCheck/report/index.tsx
  13. 22 5
      src/pages/reportCheck/report/style.less
  14. 3 3
      src/pages/secondaryDistribute/employeeInfoCheck/index.tsx
  15. 3 3
      src/pages/secondaryDistribute/nonCheckProjectApprove/index.tsx
  16. 169 52
      src/pages/secondaryDistribute/secondaryDitriComputed/index.tsx
  17. 26 2
      src/pages/secondaryDistribute/secondaryDitriComputed/service.ts
  18. 120 7
      src/pages/secondaryDistribute/secondaryDitriComputed/style.less
  19. 5 5
      src/pages/setting/baseSetting/businessDicMana/index.tsx
  20. 4 4
      src/pages/setting/baseSetting/dicClassfication/index.tsx
  21. 6 6
      src/pages/setting/baseSetting/paramsMana/index.tsx
  22. 2 2
      src/pages/setting/baseSetting/paramsMana/service.ts
  23. 15 5
      src/pages/setting/checkUnitSet/checkUnitClassMana/index.tsx
  24. 2 1
      src/pages/setting/checkUnitSet/checkUnitClassMana/service.ts
  25. 5 3
      src/pages/setting/checkUnitSet/checkUnitDepMap/index.tsx
  26. 5 4
      src/pages/setting/checkUnitSet/checkUnitEmpSet/index.tsx
  27. 11 4
      src/pages/setting/checkUnitSet/checkUnitMana/index.tsx
  28. 2 1
      src/pages/setting/checkUnitSet/checkUnitMana/service.ts
  29. 5 20
      src/pages/setting/checkUnitSet/medicalGroupSet/index.tsx
  30. 4 4
      src/pages/setting/checkUnitSet/viewUnitPermSet/index.tsx
  31. 3 3
      src/pages/setting/manaPerformanceSet/manaIndicItemSet/index.tsx
  32. 3 3
      src/pages/setting/manaPerformanceSet/unitIndicTargetSet/index.tsx
  33. 92 9
      src/pages/setting/projectSetting/bilingProjectMana/index.tsx
  34. 49 1
      src/pages/setting/projectSetting/bilingProjectMana/service.ts
  35. 16 0
      src/pages/setting/projectSetting/bilingProjectMana/style.less
  36. 11 6
      src/pages/setting/projectSetting/checkUnitProjectSet/index.tsx
  37. 2 2
      src/pages/setting/projectSetting/costIncomeProjectSet/index.tsx
  38. 4 4
      src/pages/setting/projectSetting/indicProjectMana/index.tsx
  39. 6 4
      src/pages/setting/projectSetting/nonAssessmentProjectMana/index.tsx
  40. 4 7
      src/pages/setting/projectSetting/occupationsSecondaryDistriSet/index.tsx
  41. 4 4
      src/pages/setting/projectSetting/secondaryProjectDistribute/index.tsx
  42. 1 5
      src/pages/setting/reportSet/diySqlMana/index.tsx
  43. 3 3
      src/pages/setting/reportSet/reportListMana/index.tsx
  44. 2 2
      src/pages/setting/reportSet/reportNavSet/index.tsx
  45. 3 3
      src/pages/setting/reportSet/reportSetting/index.tsx
  46. 35 0
      src/utils/tableToExcel.ts
  47. 0 0
      src/utils/zhongtaiA.js
  48. 8 0
      src/utils/zhongtaiB.js
  49. 8 0
      src/utils/zhongtaiC.js
  50. BIN
      static/filter.png
  51. BIN
      static/gou_blue.png
  52. 68 0
      yarn.lock

+ 4 - 1
package.json

@@ -18,13 +18,16 @@
     "@umijs/max": "^4.0.51",
     "antd": "^5.0.7",
     "axios": "^1.3.3",
+    "file-saver": "^2.0.5",
     "json-bigint": "^1.0.0",
     "lodash": "^4.17.21",
     "mathjs": "^11.6.0",
     "react-sortable-hoc": "^2.0.0",
-    "umi-request": "^1.4.0"
+    "umi-request": "^1.4.0",
+    "xlsx": "^0.18.5"
   },
   "devDependencies": {
+    "@types/file-saver": "^2.0.5",
     "@types/json-bigint": "^1.0.1",
     "@types/lodash": "^4.14.192",
     "@types/react": "^18.0.0",

+ 9 - 4
src/app.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2022-12-14 14:14:32
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-29 14:31:46
+ * @LastEditTime: 2023-05-30 10:28:09
  * @FilePath: /BudgetManaSystem/src/app.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -27,15 +27,15 @@ import Static from './pages/static/index';
 
 import DevicePixelRatio from './utils/devicePixelRatio.js';
 
-import Icon, { createFromIconfontCN } from '@ant-design/icons';
+import Icon, { createFromIconfontCN, FolderOutlined } from '@ant-design/icons';
 import { getPlatformMenu } from '@/services/auth';
 import { useState } from 'react';
 
 
-
+import './utils/zhongtaiC'
 
 const IconFont = createFromIconfontCN({
-  scriptUrl: '//at.alicdn.com/t/c/font_3878861_tw9yqguouab.js',
+  scriptUrl: '',
 });
 
 
@@ -469,6 +469,11 @@ export const layout = ({ initialState, setInitialState }: { initialState: any, s
               if (node.children) {
                 node.children.forEach((child: any) => addIconToPath(child, paths));
               }
+
+              // node.icon = <FolderOutlined />;
+              // if (node.children) {
+              //   node.children.forEach((child: any) => addIconToPath(child, paths));
+              // }
             }
 
             data.forEach((item: any) => {

+ 1 - 0
src/components/BMSTable/style.less

@@ -100,6 +100,7 @@
    
     .bms-ant-table-summary {
         &>tr>td {
+            text-align: left !important;
             padding: 13px 16px !important;
             border-top: 1px solid #dae2f2 !important;
         }

+ 1 - 1
src/global.less

@@ -5,7 +5,7 @@
 body {
     margin: 0;
     height: 100%;
-
+    zoom: unset !important;
 }
 
 

+ 4 - 4
src/pages/budgetMana/monthlyDataCheck/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-22 15:34:11
+ * @LastEditTime: 2023-05-30 10:40:11
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -39,10 +39,10 @@ import FormItem from 'antd/es/form/FormItem';
 import { getDeepestTreeData } from '@/utils/tooljs';
 
 
-
+import '../../../utils/zhongtaiA'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -1302,7 +1302,7 @@ const MonthlyDataCheck: React.FC = () => {
                                                                 });
                                                             }
                                                         }} suffix={
-                                                            <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('deptName')} />
+                                                            <IconFont type="iconsousuo" style={{color:'#99A6BF'}} onClick={() => tableDataSearchHandle('deptName')} />
                                                         } />
                                                     </div>
                                                 </div>

+ 13 - 5
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-05-11 10:40:28
+ * @LastEditTime: 2023-06-06 14:59:41
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -24,7 +24,7 @@ import closeIcon from '../../../../static/treenode_collapse.png';
 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 { checkRequest, delPersonRequest, generateDataRequest, getDepInfoTableData, getPersonInfoTableData, getProjectInfoTableData, getTotalEmps, getTreeData, getTreeDataRespType, jixiaoDataImport, PersonInfoTableDataType, saveEmpsRequest } from './service';
 import { TransferDirection, TransferItem, TransferProps } from 'antd/es/transfer';
 import { getComputeDate } from '@/pages/Home/service';
 
@@ -38,14 +38,15 @@ import { getDeepestTreeData } from '@/utils/tooljs';
 import { ColumnsType, TableRowSelection } from 'antd/es/table/interface';
 import { difference } from 'lodash';
 
+import '../../../../src/utils/zhongtaiA'
 
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_g1njmm1kh7b.js',
+    scriptUrl: '',
 });
 
 
@@ -589,6 +590,13 @@ const MonthlyInfoCheck: React.FC = () => {
         set_treeData(resp);
     }
 
+    const importHandle = async ()=>{
+           const resp = await jixiaoDataImport(currentComputeDate as string );
+           if(resp){
+            tableRef.current?.reload();
+           }
+    }
+
     useEffect(() => {
 
         if (currentComputeDate) {
@@ -710,7 +718,7 @@ const MonthlyInfoCheck: React.FC = () => {
             {/* <div style={{width:16,height:'92vh',background:'#F5F7FA'}}></div> */}
             <div className='rightContent'>
                 <BMSPagecontainer title={`核算年月:${currentComputeDate}`} ghost>
-                    <div></div>
+                    <div className={auditType != '0' ? 'importBtn disabled' : 'importBtn '} onClick={()=>importHandle()}>绩效数据导入</div>
                     <div className='checkBtn' onClick={() => checkHandle(`${auditType}`)}>{auditType == '0' ? '审核' : '取消审核'}</div>
                     {/* <div className='midLine'>
                         <span>点击检查</span>

+ 16 - 1
src/pages/budgetMana/monthlyInfoCheck/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-02-02 17:45:51
+ * @LastEditTime: 2023-06-06 14:57:39
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlyInfoCheck/service.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -236,3 +236,18 @@ export const saveEmpsRequest = (data:any[]) => {
     })
 
 }
+
+//绩效数据导入
+
+export const jixiaoDataImport = (compute_date:string) => {
+ 
+    return request('/performance/check/kpiImport', {
+        method: 'POST',
+        data:{
+            parameter:{
+                compute_date
+            }
+        }
+    })
+
+}

+ 33 - 7
src/pages/budgetMana/monthlyInfoCheck/style.less

@@ -5,8 +5,8 @@
     background: #F5F7FA;
 
     .leftTree {
-        position:fixed;
-        top:64px;
+        position: fixed;
+        top: 64px;
         width: 220px;
         height: calc(100vh - 80px);
         background: #FFF;
@@ -17,11 +17,12 @@
         // border-right:16px solid #F5F7FA;
 
         .searchInput {
-              border: 1px solid #CFD7E6;
+            border: 1px solid #CFD7E6;
         }
 
 
-        .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%);
         }
@@ -39,11 +40,36 @@
         margin-left: 236px;
         background: #FFF;
 
+        .importBtn {
+            position: absolute;
+            text-align: center;
+            z-index: 99;
+            right:0px;
+            top:42px;
+            cursor: pointer;
+            width: 110px;
+            height: 24px;
+            line-height: 24px;
+            background: #FAFCFF;
+            border-radius: 4px;
+            border: 1px solid #DAE2F2;
+            font-size: 14px;
+            font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+            font-weight: 400;
+            color: #17181A;
+
+            &.disabled {
+                cursor: not-allowed;
+                color: rgb(0 0 0 / 50%);
+                background-color: #f0f2f5;
+            }
+        }
+
         .checkBtn {
             position: absolute;
             cursor: pointer;
             top: 0;
-            right:0;
+            right: 0;
             padding: 0 14px;
             height: 24px;
             line-height: 24px;
@@ -141,9 +167,9 @@
 
                     &.disabled {
                         &>span {
-                            cursor:not-allowed;
+                            cursor: not-allowed;
                             color: rgb(0 0 0 / 50%);
-                            background-color:#f0f2f5;
+                            background-color: #f0f2f5;
                         }
                     }
                 }

+ 73 - 18
src/pages/budgetMana/oneBatch/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-01-04 14:12:31
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-03-08 11:08:33
+ * @LastEditTime: 2023-06-02 10:19:46
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/oneBatch/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -21,6 +21,7 @@ import './style.less';
 
 
 import { create, all } from 'mathjs'
+import exportTableToExcel from '@/utils/tableToExcel';
 
 const config = {
   number: 'number',
@@ -36,6 +37,8 @@ const OneBatch = () => {
 
   const [tableColumn, set_tableColumn] = useState<ProColumns[] | any[]>([]);
 
+  const [tableData, set_tableData] = useState<any[]>([]);
+
   const [currentComputeDate, set_currentComputeDate] = useState<string | undefined>();
 
   const [currentTabKey, set_currentTabKey] = useState('1');
@@ -74,10 +77,10 @@ const OneBatch = () => {
       const columns = title.map((item: any) => {
         return {
           title: item.name,
-          dataIndex: `${item.code}`,
-          key: `${item.code}`,
+          dataIndex: `key-${item.code}`,
+          key: `key-${item.code}`,
           width: 140,
-   
+
         }
       });
       set_tableColumn([{
@@ -86,14 +89,14 @@ const OneBatch = () => {
         key: 'unitName',
         width: 140,
         fixed: 'left',
-       
+
       }, ...columns, {
         title: '总奖金',
         dataIndex: 'totalScore',
         key: 'totalScore',
         width: 140,
         fixed: 'right',
-       
+
       }]);
 
       const data = assignmentData.map((item: any) => {
@@ -104,7 +107,7 @@ const OneBatch = () => {
           for (const key in item.value[index]) {
 
             if (key != 'code') {
-              rowData[`${item.value[index].code}`] = item.value[index].value
+              rowData[`key-${item.value[index].code}`] = item.value[index].value
             }
           }
         }
@@ -112,6 +115,8 @@ const OneBatch = () => {
         return { ...item, ...rowData, id: item.id, columns }
       });
 
+      set_tableData(data);
+
       return {
         data,
         success: true
@@ -159,7 +164,7 @@ const OneBatch = () => {
   const getCheckStatus = async (computeDate: string) => {
     const resp = await getCurrentCheckStatus(computeDate);
     if (resp) {
-        set_auditType(`${resp}`);  //0 未审核 1 已审核
+      set_auditType(`${resp}`);  //0 未审核 1 已审核
     }
   }
 
@@ -174,6 +179,50 @@ const OneBatch = () => {
     })
   }
 
+  const exportHandle = () => {
+    let headers: { [key: string]: any } = {};
+    let data: any[] = [];
+    let summary: { [key: string]: any } = {};
+    
+    tableColumn.forEach(a => {
+      if(a.hideInTable != 1){
+        headers[`${a.dataIndex}`] = a.title;
+      }
+    });
+
+    tableData.forEach(b => {
+      let _temp: { [key: string]: any } = {};
+      Object.keys(headers).forEach(key => {
+        _temp[`${key}`] = b[`${key}`]
+      });
+      data.push(_temp);
+    });
+
+    tableColumn.forEach(a => {
+      if(a.dataIndex == 'unitName'){
+        summary[`unitName`] = '合计';
+      }else{
+        const calArr = tableData.map(b=>b[`${a.dataIndex}`]);
+        const total = calArr.reduce((prev, cur) => {
+          //return prev + cur[`${dataIndex}`]
+          if (typeof cur == 'number') {
+            return math.add(prev, cur);
+          }
+        }, 0);
+        summary[`${a.dataIndex}`] = total;
+      }
+    });
+
+    //console.log({headers,tableData,data,summary});
+    
+    const excelTableData = [
+      ...data,
+      summary
+    ];
+
+    exportTableToExcel(excelTableData,headers, 'my-data');
+  }
+
   const handleResize = (e: any) => {
     const wH = e.target.innerHeight;
     const tableHeight = wH - 290;
@@ -197,11 +246,11 @@ const OneBatch = () => {
 
   useEffect(() => {
     getCurrentComputeDate();
-    window.addEventListener('resize',(e)=>handleResize(e)) //监听窗口大小改变
+    window.addEventListener('resize', (e) => handleResize(e)) //监听窗口大小改变
     doResize();
 
-    return ()=>{
-      window.removeEventListener('resize',(e)=>handleResize(e))
+    return () => {
+      window.removeEventListener('resize', (e) => handleResize(e))
     }
   }, [])
 
@@ -210,10 +259,16 @@ const OneBatch = () => {
     <BMSPagecontainer className='OneBatch' title={`核算年月:${currentComputeDate}`}>
       <div className='btnGroup'>
         <Popover open={ifShowTip} content={'当前处于审核中,无法操作!'} >
-          <div className={auditType == '0' ? 'caculateBtn' : 'caculateBtn disabled'}
-            onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
-            onMouseLeave={() => set_ifShowTip(false)}
-            onClick={() => auditType == '0' ? generateFunc() : () => { }}>计算</div>
+          <div style={{display:'flex',flexDirection:'row',alignItems:'center'}}>
+            <div className={auditType == '0' ? 'caculateBtn' : 'caculateBtn disabled'}
+              onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
+              onMouseLeave={() => set_ifShowTip(false)}
+              onClick={() => auditType == '0' ? generateFunc() : () => { }}>计算</div>
+            <div className={auditType == '0' ? 'caculateBtn' : 'caculateBtn disabled'}
+              onMouseEnter={() => auditType == '0' ? set_ifShowTip(false) : set_ifShowTip(true)}
+              onMouseLeave={() => set_ifShowTip(false)}
+              onClick={() => auditType == '0' ? exportHandle() : () => { }}>导出</div>
+          </div>
         </Popover>
         <div className='checkBtn' onClick={() => checkHandle(`${auditType}`)}>{auditType == '0' ? '审核' : '取消审核'}</div>
       </div>
@@ -243,7 +298,7 @@ const OneBatch = () => {
         <div className='tabContent'>
           {currentComputeDate && <BMSTable actionRef={tableRef} rowKey='unitCode' pagination={false} columns={tableColumn as ProColumns[]}
             params={tableDataFilterParams}
-            scroll={{ x: 140 * 10, y:tableH }}
+            scroll={{ x: 140 * 10, y: tableH }}
             request={(params, sort, filter) => getTableData(params, sort, filter)}
 
             summary={(pageData) => {
@@ -258,9 +313,9 @@ const OneBatch = () => {
                   }
                 }, 0);
 
-                return (
+                return dataIndex == "unitName" ? <div style={{textAlign:'left'}}>合计</div>:(
                   //<span>{typeof total == 'number'?math.format(total, {precision: 14}) : '合计'}</span>
-                  <span>{typeof total == 'number' ? Number(total.toFixed(4)) : '合计'}</span>
+                  <span style={{textAlign:'left'}}>{typeof total == 'number' ? Number(total.toFixed(4)) : '-'}</span>
                 )
               }
 

+ 4 - 0
src/pages/budgetMana/oneBatch/style.less

@@ -49,6 +49,10 @@
                 color: rgba(0, 0, 0, 0.5);
                 background-color: #f0f2f5;
             }
+
+            &:first-child {
+                margin-right: 8px;
+            }
         }
     }
 

+ 4 - 3
src/pages/budgetMana/personnelSalaryBudget/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-01-03 14:20:22
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-03-08 11:09:01
+ * @LastEditTime: 2023-05-30 10:42:29
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/personnelSalaryBudget/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -18,9 +18,10 @@ import React, { useEffect, useRef, useState } from 'react'
 import { caculate, checkRequest, generate, getCurrentCheckStatus, getData } from './service';
 
 import './style.less';
+import '../../../utils/zhongtaiB'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_gfxzp431jpt.js',
+    scriptUrl: '',
   });
 
 const PersonnelSalaryBudget = () => {
@@ -232,7 +233,7 @@ const PersonnelSalaryBudget = () => {
                 <div className='func'>
                     <div className='title'>
                         <span className='a'>全院人事成本(D=(A-B)*C)</span>
-                        <span className='btn' onClick={()=>generateFunc(1)}> <IconFont  type='iconzhongxin' /> 重新生成</span>
+                        <span className='btn' onClick={()=>generateFunc(1)}> <IconFont style={{color:'#3376FE'}}  type='iconzhongxin' /> 重新生成</span>
                     </div>
                     <InputNumber className='input' size='large' min={-10000000} value={pageData.personalCost} placeholder='请输入' 
                     disabled={auditType == '1'}

+ 69 - 33
src/pages/reportCheck/report/index.tsx

@@ -2,7 +2,7 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-01-04 14:12:31
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-29 14:16:04
+ * @LastEditTime: 2023-06-02 10:17:39
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/oneBatch/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -22,6 +22,7 @@ import './style.less';
 import { useParams } from '@umijs/max';
 import { DownOutlined } from '@ant-design/icons';
 import { useLocation } from '@umijs/max';
+import exportTableToExcel from '@/utils/tableToExcel';
 
 
 
@@ -34,7 +35,7 @@ const ReportTemplate = () => {
 
   const { reportCode: urlReportCode } = useParams();
 
-  console.log({urlReportCode});
+  console.log({ urlReportCode });
 
   // const location = useLocation();
   // console.log({location});
@@ -42,6 +43,8 @@ const ReportTemplate = () => {
 
   const [tableColumn, set_tableColumn] = useState<ProColumns[] | any[]>([]);
 
+  const [tableData,set_tableData] = useState<any[]>([]);
+
   const [currentComputeDate, set_currentComputeDate] = useState<string | undefined>();
 
   const [breadCrumbList, set_breadCrumbList] = useState<any[]>([]);
@@ -54,6 +57,8 @@ const ReportTemplate = () => {
 
   const [step, set_step] = useState(0);
 
+  const [reportName,set_reportName] = useState('')
+
 
   const reportJumphandle = (reportData: any) => {
 
@@ -72,11 +77,11 @@ const ReportTemplate = () => {
       [...breadCrumbList,
       {
         index: _step,
-        name: reportData[`report_name`]||reportData[`redirectReportName`],
+        name: reportData[`report_name`] || reportData[`redirectReportName`],
         params: {
           reportCode: reportData.redirectReportCode,
-          parameter:{
-            compute_date:currentComputeDate,
+          parameter: {
+            compute_date: currentComputeDate,
             ...parameter
           }
         }
@@ -85,10 +90,12 @@ const ReportTemplate = () => {
     );
     set_step(_step);
 
-    set_tableDataFilterParams({ ...tableDataFilterParams, reportCode: reportData.redirectReportCode, parameter:{
-      compute_date:currentComputeDate,
-      ...parameter
-    } })
+    set_tableDataFilterParams({
+      ...tableDataFilterParams, reportCode: reportData.redirectReportCode, parameter: {
+        compute_date: currentComputeDate,
+        ...parameter
+      }
+    })
   }
 
 
@@ -116,32 +123,32 @@ const ReportTemplate = () => {
 
     if (resp) {
 
-      const { title, data: assignmentData } = resp;
+      const { title, data: assignmentData,reportName } = resp;
+      set_reportName(reportName);
       const columns = title.map((item: any, index: number) => {
         return {
           title: item.name,
           dataIndex: `${item.columnName}`,
           key: `${item.columnName}`,
           width: 100,
-          hideInTable:item.hide,
+          hideInTable: item.hide,
           render: (_: any, record: any) => {
 
-
-            if(item.redirect){
-              if (item.redirectData&&item.redirectData.length > 1) {
-
-                const items:MenuProps['items'] = [
-                  ...(item.redirectData.map((a:any,index:number)=>({
-                           key:index,
-                           label: (
-                            <a onClick={() => reportJumphandle({ ...item,...record, ...a })}>
-                              {a.redirectReportName}
-                            </a>
-                          ),
+            if (item.redirect) {
+              if (item.redirectData && item.redirectData.length > 1) {
+
+                const items: MenuProps['items'] = [
+                  ...(item.redirectData.map((a: any, index: number) => ({
+                    key: index,
+                    label: (
+                      <a onClick={() => reportJumphandle({ ...item, ...record, ...a })}>
+                        {a.redirectReportName}
+                      </a>
+                    ),
                   })))
                 ];
-  
-               return  <Dropdown menu={{ items }}>
+
+                return <Dropdown menu={{ items }}>
                   <a onClick={(e) => e.preventDefault()}>
                     <Space>
                       {_}
@@ -149,7 +156,7 @@ const ReportTemplate = () => {
                     </Space>
                   </a>
                 </Dropdown>
-              }else {
+              } else {
                 return <a className='active' onClick={() => reportJumphandle({ ...item.redirectData[0], ...record })}>{_}</a>
               }
             }
@@ -165,17 +172,17 @@ const ReportTemplate = () => {
 
         let rowData: { [key: string]: any } = {};
 
-        item.forEach((b:any) => {
-          const needTitle = title.filter((a:any)=>a.code == b.code);
-          if(needTitle.length>0){
-              rowData[`${needTitle[0].columnName}`] = b.value
+        item.forEach((b: any) => {
+          const needTitle = title.filter((a: any) => a.code == b.code);
+          if (needTitle.length > 0) {
+            rowData[`${needTitle[0].columnName}`] = b.value
           }
         });
 
 
         return { ...item, ...rowData, id: Math.random(), columns }
       });
-
+      set_tableData(data);
       return {
         data,
         success: true
@@ -206,6 +213,34 @@ const ReportTemplate = () => {
     }, 0)
   }
 
+  const exportHandle = () => {
+
+    //const headers = { name: '姓名', age: '年龄', city: '城市' };
+    let headers:{[key:string]:any} = {};
+    let data:any[]= [];
+    tableColumn.forEach(a=>{
+        console.log({a});
+        if(a.hideInTable != 1){
+          headers[`${a.dataIndex}`] = a.title;
+        }
+    });
+
+    tableData.forEach(b=>{
+      let _temp:{[key:string]:any} = {};
+      Object.keys(headers).forEach(key => {
+        _temp[`${key}`] = b[`${key}`]
+      });
+      data.push(_temp);
+    });
+
+    //console.log({tableColumn,headers,tableData,data});
+    const excelTableData = [
+      ...data
+    ];
+
+    exportTableToExcel(excelTableData,headers,reportName);
+  }
+
 
   //面包屑跳转
   const switchHandle = (data: any) => {
@@ -221,8 +256,8 @@ const ReportTemplate = () => {
     // 在这里处理路由参数变化的逻辑
     set_tableDataFilterParams({ reportCode: urlReportCode, parameter: { compute_date: currentComputeDate } });
     set_breadCrumbList([{
-      name:'首页',
-      index:0,
+      name: '首页',
+      index: 0,
       params: { reportCode: urlReportCode, parameter: { compute_date: currentComputeDate } }
     }])
   }, [urlReportCode]);
@@ -241,6 +276,7 @@ const ReportTemplate = () => {
 
   return (
     <BMSPagecontainer className='ReportTemplate' title={`核算年月:${currentComputeDate}`}>
+      <div className='export' onClick={() => exportHandle()}>导出</div>
       <div className='breadcrumb'>
         {
           breadCrumbList.length > 1 && breadCrumbList.map((item: any, index: number) => {

+ 22 - 5
src/pages/reportCheck/report/style.less

@@ -5,18 +5,35 @@
     border-radius: 4px;
     background: #fff;
 
+    .export {
+        position: absolute;
+        top: 16px;
+        right: 16px;
+        width: 56px;
+        height: 24px;
+        color: #fff;
+        text-align: center;
+        line-height: 24px;
+        cursor: pointer;
+        background: #3377FF;
+        border-radius: 4px;
+    }
+
     .breadcrumb {
         margin-top: 8px;
+
         .tab {
             font-size: 12px;
-            color:#2c323c;
+            color: #2c323c;
             cursor: pointer;
+
             &:hover {
-                 text-decoration: underline;
+                text-decoration: underline;
             }
 
             &.actived {
-                color:#7A8599;
+                color: #7A8599;
+
                 &:hover {
                     cursor: default;
                     text-decoration: none;
@@ -27,7 +44,7 @@
 
     .content {
         position: relative;
-        padding-top:8px;
+        padding-top: 8px;
 
         .bms-ant-tabs-nav {
             &::before {
@@ -36,7 +53,7 @@
         }
 
         .bms-ant-table-body {
-              max-height: calc(100vh - 210px) !important;
+            max-height: calc(100vh - 210px) !important;
         }
     }
 }

+ 3 - 3
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-26 13:12:21
+ * @LastEditTime: 2023-05-30 11:29:18
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -41,11 +41,11 @@ import { getCurrentCheckStatus } from '@/services/auth';
 
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_g1njmm1kh7b.js',
+    scriptUrl: '',
 });
 
 

+ 3 - 3
src/pages/secondaryDistribute/nonCheckProjectApprove/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-26 14:07:11
+ * @LastEditTime: 2023-05-30 11:30:07
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -42,11 +42,11 @@ import { getEmps } from '@/pages/budgetMana/monthlyDataCheck/service';
 
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_g1njmm1kh7b.js',
+    scriptUrl: '',
 });
 
 

+ 169 - 52
src/pages/secondaryDistribute/secondaryDitriComputed/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-26 14:46:52
+ * @LastEditTime: 2023-06-06 13:23:15
  * @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 { TreeProps, Input, Modal, message, Popover, Table, Switch } from 'antd';
+import { TreeProps, Input, Modal, message, Popover, Table, Switch, Tooltip } from 'antd';
 import { DataNode } from 'antd/es/tree';
 
 import expandedIcon from '../../../../static/treenode_open.png';
@@ -24,7 +24,7 @@ import closeIcon from '../../../../static/treenode_collapse.png';
 import { BMSTable } from '@/components/BMSTable';
 import { ActionType, ProColumns, ProFormDigit, ProFormInstance } from '@ant-design/pro-components';
 import { createFromIconfontCN } from '@ant-design/icons';
-import { checkRequest, commitRequest, getCurrentCheckStatusReq, getCurrentCommitStatusReq, getSecondaryDistriComputeTableData, getTreeData, getTreeDataRespType, save } from './service';
+import { checkCurrentRequest, checkRequest, commitRequest, getCurrentCheckStatusReq, getCurrentCommitStatusReq, getCurrentUnitCheckStatusReq, getSecondaryDistriComputeTableData, getTreeData, getTreeDataRespType, save } from './service';
 
 import { getComputeDate } from '@/pages/Home/service';
 
@@ -39,12 +39,13 @@ import math, { sparse } from 'mathjs';
 import { useParams } from '@umijs/max';
 import { useLocation } from '@umijs/max';
 import { useAccess } from '@umijs/max';
-import { values } from 'lodash';
+import { getParamsData } from '@/pages/setting/baseSetting/paramsMana/service';
+
 
 
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_g1njmm1kh7b.js',
+    scriptUrl: '',
 });
 
 
@@ -61,6 +62,7 @@ const SecondaryDitriComputed: React.FC = () => {
     const userFunctionInThispage = access.whatCanIDoInThisPage(location.pathname);
     const [ifCheckPage, set_ifCheckPage] = useState(false); //是否为二次分配审核页面
     const [treeData, set_treeData] = useState<getTreeDataRespType[]>([]);
+    const [treeDataDefault, set_treeDataDefault] = useState<getTreeDataRespType[]>([]);
     const [tableColumn, set_tableColumn] = useState<ProColumns[]>([]);
     const [currentSelectedTreeNode, set_currentSelectedTreeNode] = useState<any | undefined>();
 
@@ -80,6 +82,8 @@ const SecondaryDitriComputed: React.FC = () => {
 
     const [auditType, set_auditType] = useState('0');  //审核状态
 
+    const [currentUnitAuditType,set_currentUnitAuditType] = useState('0'); //当前单元审核状态
+
     const tableRef = useRef<ActionType>();
 
     const [needSaveData, set_needSaveData] = useState<any | undefined>(undefined);
@@ -94,6 +98,8 @@ const SecondaryDitriComputed: React.FC = () => {
 
     const [currentInputRefKeys, set_currentInputRefKeys] = useState<string | undefined>(undefined);
     const [tableH, set_tableH] = useState(0);
+    const [currentTreeDataFilter, set_currentTreeDataFilter] = useState({ name: '全部单元', code: 0 });
+    const [treeFilterVisible, set_treeFilterVisible] = useState(false);
 
 
     const column: ProColumns[] = [
@@ -143,6 +149,11 @@ const SecondaryDitriComputed: React.FC = () => {
 
     }
 
+    const getCurrentUnitCheckStatus = async () => {
+        const resp = await getCurrentUnitCheckStatusReq(currentComputeDate as string,currentSelectedTreeNode.code);
+        set_currentUnitAuditType(`${resp}`);  //0 未审核 1 已审核
+    }
+
     const getCurrentCommitStatus = async () => {
         if (currentSelectedTreeNode) {
             const resp = await getCurrentCommitStatusReq({
@@ -185,7 +196,7 @@ const SecondaryDitriComputed: React.FC = () => {
                                         return a
                                     }
                                 });
-    
+
                                 set_needSaveData({ ...needSaveData, userList: updatedUserList })
                             },
                             onChange(value) {
@@ -210,8 +221,9 @@ const SecondaryDitriComputed: React.FC = () => {
                                             return a
                                         }
                                     });
-        
-                                    set_needSaveData({ ...needSaveData, userList: updatedUserList })
+
+                                    set_needSaveData({ ...needSaveData, userList: updatedUserList });
+
                                     const index = inputsRefKeys ? inputsRefKeys.findIndex(a => a == `${record.account}-${item.code}`) : -1;
                                     //console.log({index,input:inputsRef.current,inputsRefKeys});
                                     const nextInput = inputsRefKeys ? inputsRef.current[inputsRefKeys[index + 1]] : null;
@@ -251,8 +263,6 @@ const SecondaryDitriComputed: React.FC = () => {
     }
 
     const getTableData = async (params: any) => {
-        // console.log({ currentSelectedTreeNode });
-        // console.log({ params, sort, filter });
 
         if (currentSelectedTreeNode && currentComputeDate) {
             const resp = await getSecondaryDistriComputeTableData({
@@ -271,19 +281,6 @@ const SecondaryDitriComputed: React.FC = () => {
 
 
 
-    const confirmGenerateHandle = async () => {
-        // const resp = await generateDataRequest({
-        //     computeDate: currentComputeDate as string,
-        //     unitCode: currentSelectedTreeNode.code
-        // });
-        // if (resp) {
-        //     message.success('生成数据成功');
-        //     tableRef.current?.reload();
-        // } else {
-        //     message.success('生成数据错误!');
-        // }
-    }
-
     const buildTableData = (resp: any, inputsRefKeys?: string[]) => {
         const { title, userList } = resp;
         const _columns = gennerateColumns(resp, inputsRefKeys);
@@ -309,31 +306,91 @@ const SecondaryDitriComputed: React.FC = () => {
         set_dataSource(data)
     }
 
-    const generateFunc = () => {
+    const checkIfCommit = (type: number) => {
+        //检查当前单元是否提交
+        if (type == 1) {
+            if (!currentSelectedTreeNode.map) {
+                  return false
+            }
 
-        let msg = '生成操作会覆盖已有的数据,是否继续?';
-        Modal.confirm({
-            title: '注意',
-            okText: '确定',
-            cancelText: '取消',
-            content: msg,
-            onOk: () => confirmGenerateHandle()
+        }
+        if (type == 2) {
+            if (!currentSelectedTreeNode.map) {
+        
+            }
 
-        });
+        }
     }
 
-    const commitBtnhandle = async () => {
+    const commitBtnhandle = async (type?: number) => {
+        /**
+         * type 1 单个 2 全部
+         * 提交界面不需要type
+         */
+
+        const handle = async () => {
+            if (type == 1) {
+                //审核单个
+                const resp = await checkCurrentRequest({
+                    computeDate: currentComputeDate as string,
+                    auditType: auditType == '1' ? '0' : '1',  //1 审核 0 取消审核
+                    unitCode: currentSelectedTreeNode.code
+                });
+                if (resp) {
+                    message.success('操作成功!');
+                    getTreeReqFunc(currentComputeDate as string);
+                    getCurrentUnitCheckStatus();
+                }
+            }
 
-        if (ifCheckPage) {
-            const resp = await checkRequest({
-                computeDate: currentComputeDate as string,
-                auditType: auditType == '1' ? '0' : '1',  //1 审核 0 取消审核
-            });
-            if (resp) {
-                message.success('操作成功!');
-                getTreeReqFunc(currentComputeDate as string);
-                getCheckStatus(currentComputeDate as string);
+            if (type == 2) {
+                const resp = await checkRequest({
+                    computeDate: currentComputeDate as string,
+                    auditType: auditType == '1' ? '0' : '1',  //1 审核 0 取消审核
+
+                });
+                if (resp) {
+                    message.success('操作成功!');
+                    getTreeReqFunc(currentComputeDate as string);
+                    getCheckStatus(currentComputeDate as string);
+                }
+            }
+        }
+
+        if (ifCheckPage && type) {
+            const checkCondition = await getParamsData({ pageSize: 500 });
+            if (checkCondition) {
+                const needParamsVal = checkCondition.list.filter(a => a.code == '1664510428258115584'); //判断未提交是否可以审核
+                if (needParamsVal.length > 0) {
+                    if (needParamsVal[0].value == '1') {
+                        //需要提交后才可以审核
+                        //console.log(checkIfCommit(type));
+                        if (checkIfCommit(type)) {
+                            handle();
+                        }else{
+                            Modal.confirm({
+                                title: '注意',
+                                okText: '确定',
+                                cancelText: '取消',
+                                content: '当前核算单元未提交,请提交后再审核?'
+                            })
+                        }
+                    } else {
+                        if (checkIfCommit(type)) {
+                            handle();
+                        }else{
+                            Modal.confirm({
+                                title: '注意',
+                                okText: '确定',
+                                cancelText: '取消',
+                                content: '当前核算单元未提交,是否继续审核?',
+                                onOk:()=>handle()
+                            })
+                        }
+                    }
+                }
             }
+
         } else {
             if (pageData.leftTotal == 0) {
                 Modal.confirm({
@@ -404,6 +461,48 @@ const SecondaryDitriComputed: React.FC = () => {
         setAutoExpandParent(true);
     }
 
+    //左侧树结构筛选
+    const changeTreeDataFilter = (obj: any) => {
+
+        set_currentTreeDataFilter(obj);
+        set_treeFilterVisible(false);
+
+        interface Node {
+            map: boolean;
+            child?: Node[];
+        }
+
+        function filterNodes(node: Node): Node | null {
+            if (node.map === (obj.code == 1 ? false : true) && (!node.child || node.child.length === 0)) {
+                return node; // 如果节点map为false并且是叶子节点,返回该节点
+            }
+
+            if (Array.isArray(node.child)) {
+                // 对每个子节点递归执行此过程
+                let child = node.child.map(filterNodes).filter((n): n is Node => n !== null);
+                if (child.length > 0) {
+                    // 如果有任何子节点的map属性为false,返回包含这些子节点的新节点
+                    return { ...node, child: child };
+                }
+            }
+
+            // 如果节点map为true,或者所有子节点的map都为true,返回null
+            return null;
+        }
+
+        if (obj.code == 0) {
+            set_treeData(treeDataDefault);
+        } else {
+            const result = treeDataDefault.map(a => {
+                return filterNodes(a);
+            });
+
+            set_treeData(result.filter(b => b != null) as any);
+        }
+
+
+    }
+
 
     const onExpand = (newExpandedKeys: React.Key[]) => {
         setExpandedKeys(newExpandedKeys);
@@ -426,6 +525,7 @@ const SecondaryDitriComputed: React.FC = () => {
     const getTreeReqFunc = async (computeDate: string) => {
         const resp = await getTreeData(computeDate);
         set_treeData(resp);
+        set_treeDataDefault(resp);
     }
 
 
@@ -497,7 +597,7 @@ const SecondaryDitriComputed: React.FC = () => {
         } else { set_ifCheckPage(false); }
     }, [location])
 
-  
+
 
     useEffect(() => {
         if (needSaveData) {
@@ -573,6 +673,16 @@ const SecondaryDitriComputed: React.FC = () => {
 
     return (
         <div className='SecondaryDitriComputed'>
+            {
+                treeFilterVisible && (
+                    <div className='selecterList'>
+                        <div onClick={() => changeTreeDataFilter({ name: '全部单元', code: 0 })} className={currentTreeDataFilter.code == 0 ? 'list on' : 'list'}>全部单元</div>
+                        <div onClick={() => changeTreeDataFilter({ name: '未提交', code: 1 })} className={currentTreeDataFilter.code == 1 ? 'list on' : 'list'}>未提交</div>
+                        <div onClick={() => changeTreeDataFilter({ name: '已提交', code: 2 })} className={currentTreeDataFilter.code == 2 ? 'list on' : 'list'}>已提交</div>
+                    </div>
+                )
+            }
+
             <div className='leftTree'>
                 <div className='search'>
                     <Input
@@ -580,13 +690,15 @@ const SecondaryDitriComputed: React.FC = () => {
                         placeholder="请输入类目名称"
                         size='small'
                         allowClear
-
-                        style={{ marginBottom: 16 }}
+                        style={{ width: 158 }}
                         onChange={onTreeSearchKeyChange}
                         suffix={
                             <SearchIcon type='iconsousuo' />
                         }
                     />
+                    <Tooltip placement="top" title={currentTreeDataFilter.name}>
+                        <div className={currentTreeDataFilter.code == 0 ? 'filter' : currentTreeDataFilter.code == 1 ? 'filter orange' : 'filter blue'} onClick={() => set_treeFilterVisible(true)}></div>
+                    </Tooltip>
                 </div>
                 {
                     treeData && treeData.length > 0 && currentSelectedTreeNode && (
@@ -599,7 +711,9 @@ const SecondaryDitriComputed: React.FC = () => {
                             autoExpandParent={autoExpandParent}
                             selectedKeys={[currentSelectedTreeNode.code]}
                             blockNode={true}
+
                             icon={() => null}
+
                             titleRender={
                                 (nodeData: any) => {
                                     const strTitle = nodeData.name as string;
@@ -668,19 +782,22 @@ const SecondaryDitriComputed: React.FC = () => {
                                                     onMouseEnter={() => auditType == '0' ? commitStatus == '1' ? set_ifShowTip(true) : set_ifShowTip(false) : set_ifShowTip(true)}
                                                     onMouseLeave={() => set_ifShowTip(false)}
                                                 >
-                                                    {!ifEditMode && <span key="1" className='cancel' onClick={commitStatus == '0' && auditType != '1' ? () => set_ifEditMode(true) : () => { }}>编辑</span>}
-                                                    {ifEditMode && <span key="3" className='cancel' onClick={commitStatus == '0' ? () => set_ifEditMode(false) : () => { }}>取消</span>}
-                                                    {ifEditMode && <span key="2" className='editBtn' onClick={commitStatus == '0' && auditType != '1' ? () => saveHandle() : () => { }}>保存</span>}
-                                                    
+                                                    {!ifEditMode && <span  className='cancel' onClick={commitStatus == '0' && auditType != '1' ? () => set_ifEditMode(true) : () => { }}>编辑</span>}
+                                                    {ifEditMode && <span  className='cancel' onClick={commitStatus == '0' ? () => set_ifEditMode(false) : () => { }}>取消</span>}
+                                                    {ifEditMode && <span  className='editBtn' onClick={commitStatus == '0' && auditType != '1' ? () => saveHandle() : () => { }}>保存</span>}
+
                                                 </div>
                                             </Popover>
-                                            {!ifEditMode && <div key="4" className={auditType == '1' ? 'commit disabled' : 'commit'} onClick={() => auditType == '0' ? commitBtnhandle() : () => { }}>{commitStatus == '1' ? '取消提交' : '提交'}</div>}
+                                            {!ifEditMode && <div key="" className={auditType == '1' ? 'commit disabled' : 'commit'} onClick={() => auditType == '0' ? commitBtnhandle() : () => { }}>{commitStatus == '1' ? '取消提交' : '提交'}</div>}
                                         </>
                                     )
                                 }
                                 {
-                                    ifCheckPage && (userFunctionInThispage.findIndex((a: { code: string, name: string }) => a.code == 'audit') != -1) && (
-                                        <div key="4" className={'commit'} onClick={() => commitBtnhandle()}>{auditType == '1' ? '取消审核' : '审核'}</div>
+                                    ifCheckPage && userFunctionInThispage && (userFunctionInThispage.findIndex((a: { code: string, name: string }) => a.code == 'audit') != -1) && (
+                                        <>
+                                            <div  className={'commit gray'} onClick={() => commitBtnhandle(1)}>{currentUnitAuditType == '1' ? '取消审核单个' : '审核单个'}</div>
+                                            <div  className={'commit'} onClick={() => commitBtnhandle(2)}>{auditType == '1' ? '取消审核全部' : '审核全部'}</div>
+                                        </>
                                     )
                                 }
 

+ 26 - 2
src/pages/secondaryDistribute/secondaryDitriComputed/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-25 14:24:52
+ * @LastEditTime: 2023-06-06 11:25:38
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlyInfoCheck/service.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -78,7 +78,7 @@ export const getCurrentCommitStatusReq = (params:{
 
 }
 
-//获取当前审核
+//获取当前审核状态
 export const getCurrentCheckStatusReq = (computeDate:string) => {
     return request('/performance/second/getAuditStatus', {
         method: 'GET',
@@ -87,6 +87,15 @@ export const getCurrentCheckStatusReq = (computeDate:string) => {
 
 }
 
+//获取当前核算单元审核状态
+export const getCurrentUnitCheckStatusReq = (computeDate:string,unitCode:string) => {
+    return request('/performance/second/getUnitAuditStatus', {
+        method: 'GET',
+        params: {computeDate,unitCode}
+    })
+
+}
+
 
 
 // //生成数据
@@ -137,4 +146,19 @@ export const checkRequest = (data:CheckRequestParamsType) => {
 
 }
 
+//只审核当前
+export type CheckCurrentRequestParamsType = {
+    computeDate:string,
+    auditType:string,
+    unitCode:string
+}
+export const checkCurrentRequest = (data:CheckCurrentRequestParamsType) => {
+ 
+    return request('/performance/second/audit', {
+        method: 'POST',
+        params:data
+    })
+
+}
+
 

+ 120 - 7
src/pages/secondaryDistribute/secondaryDitriComputed/style.less

@@ -1,9 +1,52 @@
 .SecondaryDitriComputed {
+    position: relative;
     display: flex;
     flex-direction: row;
     // height: 100%;
     background: #F5F7FA;
 
+    .selecterList {
+        position: absolute;
+        z-index: 99;
+        top: 44px;
+        left: 180px;
+        width: 120px;
+        height: 104px;
+        background: #FFFFFF;
+        box-shadow: 0px 8px 16px 0px rgba(64, 85, 128, 0.1);
+        border-radius: 4px;
+        padding: 4px;
+
+        .list {
+            position: relative;
+            height: 32px;
+            line-height: 16px;
+            border-radius: 2px;
+            font-size: 14px;
+            cursor: pointer;
+            padding: 8px;
+            font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+            font-weight: 400;
+            color: #17181A;
+
+            &.on {
+                font-weight: 500;
+                background: rgba(51, 119, 255, 0.08);
+
+                &::after {
+                    position: absolute;
+                    right: 8px;
+                    display: inline-block;
+                    content: '';
+                    width: 16px;
+                    height: 16px;
+                    background: url('../../../../static//gou_blue.png');
+                    background-size: contain;
+                }
+            }
+        }
+    }
+
     .leftTree {
         position: fixed;
         top: 64px;
@@ -16,6 +59,62 @@
         margin-right: 16px;
         // border-right:16px solid #F5F7FA;
 
+        .search {
+            position: relative;
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 16px;
+
+            .filter {
+                position: relative;
+                width: 24px;
+                height: 24px;
+                background: #FAFCFF;
+                border-radius: 4px;
+                border: 1px solid #DAE2F2;
+                margin-left: 8px;
+                cursor: pointer;
+                background: url('../../../../static/filter.png');
+                background-size: 16px 16px;
+                background-position: center;
+                background-repeat: no-repeat;
+
+                &.orange {
+                    &::after {
+                        position: absolute;
+                        z-index: 9;
+                        top: 1px;
+                        right: 1px;
+                        display: inline-block;
+                        content: '';
+                        width: 4px;
+                        height: 4px;
+                        border-radius: 50%;
+                        background: #FF9832;
+                    }
+                }
+
+                &.blue {
+                    &::after {
+                        position: absolute;
+                        z-index: 9;
+                        top: 1px;
+                        right: 1px;
+                        display: inline-block;
+                        content: '';
+                        width: 4px;
+                        height: 4px;
+                        border-radius: 50%;
+                        background: #3377FF;
+                    }
+                }
+            }
+
+
+        }
+
         .searchInput {
             border: 1px solid #CFD7E6;
         }
@@ -137,6 +236,7 @@
                                 color: #17181A;
                             }
                         }
+
                         &.compelted {
                             i {
                                 font-style: normal;
@@ -145,19 +245,21 @@
                                 font-weight: 500;
                                 color: #2E6BE6;
                             }
+
                             &::before {
                                 position: relative;
-                                top:2px;
+                                top: 2px;
                                 display: inline-block;
                                 content: '';
                                 width: 12px;
                                 height: 12px;
                                 margin-right: 4px;
                                 background: url('../../../../static//bingzhuantu.png');
-                                background-size:cover;
-                        
+                                background-size: cover;
+
                             }
                         }
+
                         &.left {
                             i {
                                 font-style: normal;
@@ -166,17 +268,18 @@
                                 font-weight: 500;
                                 color: #14CC8F;
                             }
+
                             &::before {
                                 position: relative;
-                                top:2px;
+                                top: 2px;
                                 display: inline-block;
                                 content: '';
                                 width: 12px;
                                 height: 12px;
                                 margin-right: 4px;
                                 background: url('../../../../static/bingzhuantu_green.png');
-                                background-size:cover;
-                        
+                                background-size: cover;
+
                             }
                         }
 
@@ -203,9 +306,10 @@
                             margin-right: 8px;
 
                             &.editBtn {
-                                color:white;
+                                color: white;
                                 background: #3377FF;
                             }
+
                             &.cancel {
                                 color: #17181A;
                                 background: #FAFCFF;
@@ -220,10 +324,12 @@
                         &.disabled {
                             &>span {
                                 cursor: not-allowed;
+
                                 &.editBtn {
                                     color: rgb(0 0 0 / 50%);
                                     background-color: #f0f2f5;
                                 }
+
                                 &.cancel {
                                     color: rgb(0 0 0 / 50%);
                                     background-color: #f0f2f5;
@@ -247,11 +353,18 @@
                         margin-left: 8px;
                         color: #FFF;
 
+                        &.gray {
+                            color: #17181A;
+                            background: #FAFCFF;
+                            border: 1px solid #DAE2F2;
+                        }
+
                         &.disabled {
                             cursor: not-allowed;
                             color: rgb(0 0 0 / 50%);
                             background-color: #f0f2f5;
                         }
+
                     }
                 }
 

+ 5 - 5
src/pages/setting/baseSetting/businessDicMana/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-04-14 10:20:18
+ * @LastEditTime: 2023-05-30 10:49:44
  * @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
  */
@@ -24,10 +24,10 @@ import { addBusinessDicTableData, delData, editPubDicRelaTbaleData, getBusinessD
 
 
 import './style.less';
-
+import '../../../../utils/zhongtaiA'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -255,7 +255,7 @@ const BusinessDicMana = () => {
             <div className='left'>
                 <Input placeholder={'请输入类目名称'} allowClear
                     suffix={
-                        <IconFont type="iconsousuo" />
+                        <IconFont style={{color:'#99A6BF'}} type="iconsousuo" />
                     }
                     onChange={(e) => {
                         const result = typeList.filter(item => item.name.indexOf(e.target.value) != -1);
@@ -284,7 +284,7 @@ const BusinessDicMana = () => {
                             <Input placeholder={'请输入项目名称'} style={{ width: 160 }} allowClear
 
                                 suffix={
-                                    <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('typeName')} />
+                                    <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('typeName')} />
                                 }
                                 onChange={(e) => {
                                     set_tableDataSearchKeywords(e.target.value);

+ 4 - 4
src/pages/setting/baseSetting/dicClassfication/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-04-14 10:19:25
+ * @LastEditTime: 2023-05-30 10:47:43
  * @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
  */
@@ -23,10 +23,10 @@ import { useEffect, useRef, useState } from 'react'
 import { addData, delData, editData, getData } from './service';
 
 import './style.less';
-
+import '../../../../utils/zhongtaiA'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -180,7 +180,7 @@ export default function DicClassfication() {
                         <span className='label' style={{whiteSpace:'nowrap'}}> 检索:</span>
                         <Input placeholder={'请输入类型名称'}  allowClear
                             suffix={
-                                <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('typeName')} />
+                                <IconFont type="iconsousuo" style={{color:'#99A6BF'}} onClick={() => tableDataSearchHandle('typeName')} />
                             }
                             onChange={(e) => {
                                 set_tableDataSearchKeywords(e.target.value);

+ 6 - 6
src/pages/setting/baseSetting/paramsMana/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-04-14 10:20:46
+ * @LastEditTime: 2023-06-06 09:29:08
  * @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
  */
@@ -20,13 +20,13 @@ import { ProColumns } from '@ant-design/pro-table';
 import { Input, message, Popconfirm } from 'antd';
 import { useEffect, useRef, useState } from 'react'
 
-import { addData, delData, editData, getData } from './service';
+import { addData, delData, editData, getParamsData } from './service';
 
 import './style.less';
-
+import '../../../../utils/zhongtaiB'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -85,7 +85,7 @@ export default function ParamsMana() {
 
 
     const getTableData = async (params: any) => {
-        const resp = await getData(params);
+        const resp = await getParamsData(params);
         if (resp) {
             return {
                 data: resp.list,
@@ -207,7 +207,7 @@ export default function ParamsMana() {
                         <span className='label' style={{whiteSpace:'nowrap'}}> 检索:</span>
                         <Input placeholder={'请输入参数名称'}  allowClear
                             suffix={
-                                <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('parameterName')} />
+                                <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('parameterName')} />
                             }
                             onChange={(e) => {
                                 set_tableDataSearchKeywords(e.target.value);

+ 2 - 2
src/pages/setting/baseSetting/paramsMana/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-03-22 15:33:28
+ * @LastEditTime: 2023-06-06 09:28:56
  * @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
  */
@@ -25,7 +25,7 @@ export type ParamsManaTableRowType = {
 }
 
 
-export const getData = (params?:any) => {
+export const getParamsData = (params?:any) => {
   return request<{
        current:number;
        list:ParamsManaTableRowType[];

+ 15 - 5
src/pages/setting/checkUnitSet/checkUnitClassMana/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-04-26 15:23:17
+ * @LastEditTime: 2023-06-06 13:29:26
  * @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
  */
@@ -16,7 +16,7 @@ import { getDataByKeyFromDic, getPubDicData } from '@/services/getDic';
 import { createFromIconfontCN } from '@ant-design/icons';
 
 import { ActionType, ProFormInstance, ProFormText } from '@ant-design/pro-components';
-import { ModalForm, ProFormDependency, ProFormDigit, ProFormSelect, ProFormTextArea } from '@ant-design/pro-form'
+import { ModalForm, ProFormDigit, ProFormSelect, ProFormTextArea } from '@ant-design/pro-form'
 import { ProColumns } from '@ant-design/pro-table';
 import { Input, message, Popconfirm } from 'antd';
 import { useEffect, useMemo, useRef, useState } from 'react';
@@ -25,10 +25,10 @@ import { useEffect, useMemo, useRef, useState } from 'react';
 import { addData, delData, editData, getCheckUnitClassTableData } from './service';
 
 import './style.less';
-
+import '../../../../utils/zhongtaiB'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -46,6 +46,10 @@ export default function CheckUnitClassficationMana() {
             title: '分类名称',
             dataIndex: 'className',
         },
+        {
+            title: '分类代码',
+            dataIndex: 'code',
+        },
         {
             title: '职类',
             dataIndex: 'unitTypeName',
@@ -169,6 +173,12 @@ export default function CheckUnitClassficationMana() {
                     placeholder="请输入"
                     rules={[{ required: true, message: '名称不能为空!' }]}
                 />
+                <ProFormText
+                    name="code"
+                    label="分类代码:"
+                    placeholder="请输入"
+                    rules={[{ required: true, message: '代码不能为空!' }]}
+                />
                 {
                     type == 'ADD' && (
                         <ProFormSelect label="职类:"
@@ -216,7 +226,7 @@ export default function CheckUnitClassficationMana() {
                         <span className='label' style={{ whiteSpace: 'nowrap' }}> 检索:</span>
                         <Input placeholder={'请输入分类名称'} allowClear
                             suffix={
-                                <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('unitTypeName')} />
+                                <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('unitTypeName')} />
                             }
                             onChange={(e) => {
                                 set_tableDataSearchKeywords(e.target.value);

+ 2 - 1
src/pages/setting/checkUnitSet/checkUnitClassMana/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-04-20 15:22:23
+ * @LastEditTime: 2023-06-06 13:28:52
  * @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,6 +42,7 @@ export type AddTableDataType = {
   parentClassCode:string,
   unitType:string,
   sort:string,
+  code:string,
   description:string
 }
 

+ 5 - 3
src/pages/setting/checkUnitSet/checkUnitDepMap/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-04-27 14:24:51
+ * @LastEditTime: 2023-05-30 11:01:02
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -40,13 +40,15 @@ import { getDeepestTreeData } from '@/utils/tooljs';
 import { ColumnsType, TableRowSelection } from 'antd/es/table/interface';
 
 
+import '../../../../utils/zhongtaiB';
+import '../../../../utils/zhongtaiC';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_g1njmm1kh7b.js',
+    scriptUrl: '',
 });
 
 

+ 5 - 4
src/pages/setting/checkUnitSet/checkUnitEmpSet/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-04-27 13:58:37
+ * @LastEditTime: 2023-05-30 10:59:48
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -39,14 +39,15 @@ import { getDeepestTreeData } from '@/utils/tooljs';
 
 import { ColumnsType, TableRowSelection } from 'antd/es/table/interface';
 
-
+import '../../../../utils/zhongtaiB';
+import '../../../../utils/zhongtaiC';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_g1njmm1kh7b.js',
+    scriptUrl: '',
 });
 
 

+ 11 - 4
src/pages/setting/checkUnitSet/checkUnitMana/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-12 11:15:21
+ * @LastEditTime: 2023-06-06 13:32:54
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -37,14 +37,15 @@ import { getDeepestTreeData } from '@/utils/tooljs';
 import { CheckUnitClassTableDataType } from '../checkUnitClassMana/service';
 import { getDataByKeyFromDic, getPubDicData } from '@/services/getDic';
 
-
+import '../../../../utils/zhongtaiB';
+import '../../../../utils/zhongtaiC';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_g1njmm1kh7b.js',
+    scriptUrl: '',
 });
 
 
@@ -214,6 +215,12 @@ const CheckUnitMana: React.FC = () => {
                     label="核算单元名称:"
                     placeholder="请输入"
                     rules={[{ required: true, message: '名称不能为空!' }]}
+                />
+                 <ProFormText
+                    name="code"
+                    label="核算单元代码:"
+                    placeholder="请输入"
+                    rules={[{ required: true, message: '代码不能为空!' }]}
                 />
                 <ProFormRadio.Group
                     label="特殊单元"

+ 2 - 1
src/pages/setting/checkUnitSet/checkUnitMana/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-04-23 14:28:57
+ * @LastEditTime: 2023-06-06 13:36:58
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlyInfoCheck/service.ts
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -75,6 +75,7 @@ export const getCheckUnitTableDataByUnitClass = (params?:{
 export type AddCheckUnitDataType = {
     unitName:string,
     classCode:string,
+    code:string,
     unitType:string,
     description:string,
     specialUnit:number,

+ 5 - 20
src/pages/setting/checkUnitSet/medicalGroupSet/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-12 14:04:00
+ * @LastEditTime: 2023-05-30 11:04:19
  * @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
  */
@@ -27,9 +27,10 @@ import { getMedicalGroup, getEmpTableDataFromMedicalGroup, addMedicalGroup, edit
 
 import './style.less';
 
+import '../../../../utils/zhongtaiA'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -252,22 +253,6 @@ const MedicalGroupSet = () => {
         const ref = React.createRef<{ save: any; getSelectedKeys: any }>();
 
         set_ifShowModal(true);
-
-        // Modal.confirm({
-        //     title: `添加医疗组人员信息`,
-        //     icon: <></>,
-        //     width: 400,
-        //     centered: true,
-        //     content: <TableSelecter
-        //         ref={ref}
-        //         record={undefined}
-        //         tableSelecterColumn={tableSelecterColumn}
-        //     ></TableSelecter>,
-
-        //     // onOk: () => {
-        //     //     return ref.current && ref.current.save();
-        //     // }
-        // })
     }
 
     const TableSelecter = React.forwardRef(({ tableSelecterColumn, record }: TableSelecterProps, ref) => {
@@ -317,7 +302,7 @@ const MedicalGroupSet = () => {
             <div className='TableSelecter'>
                 <Input placeholder={'请输入'} allowClear
                     suffix={
-                        <IconFont type="iconsousuo" />
+                        <IconFont style={{color:'#99A6BF'}} type="iconsousuo" />
                     }
                     style={{ marginBottom: 8 }}
                     onChange={(e) => {
@@ -426,7 +411,7 @@ const MedicalGroupSet = () => {
                 <div className='toolbar'>
                     <Input placeholder={'医疗组名称'} allowClear
                         suffix={
-                            <IconFont type="iconsousuo" />
+                            <IconFont style={{color:'#99A6BF'}} type="iconsousuo" />
                         }
                         style={{ width: 156 }}
                         onChange={(e) => {

+ 4 - 4
src/pages/setting/checkUnitSet/viewUnitPermSet/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-12 11:12:53
+ * @LastEditTime: 2023-05-30 11:06:08
  * @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
  */
@@ -28,10 +28,10 @@ import { useEffect, useRef, useState } from 'react'
 import { getViewUnitTableData, getAllCheckUnit, saveCheckViewUnit, postCheckViewAll } from './service';
 
 import './style.less';
-
+import '../../../../utils/zhongtaiB';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -317,7 +317,7 @@ export default function ViewUnitPermSet() {
                             set_tableDataFilterParams({ ...tableDataFilterParams, name: '' });
                         }
                     }} suffix={
-                        <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
+                        <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
                     }
 
                         onPressEnter={(e) => {

+ 3 - 3
src/pages/setting/manaPerformanceSet/manaIndicItemSet/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-04-14 10:17:59
+ * @LastEditTime: 2023-05-30 11:20:17
  * @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
  */
@@ -24,9 +24,9 @@ import { addData, delData, editData, getManaIndicListData } from './service';
 
 import './style.less';
 
-
+import '../../../../utils/zhongtaiB';
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 

+ 3 - 3
src/pages/setting/manaPerformanceSet/unitIndicTargetSet/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-04-06 18:30:05
+ * @LastEditTime: 2023-05-30 11:21:57
  * @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
  */
@@ -31,9 +31,9 @@ import {  copyGroupUnit, delData, editUnitIndicTargetTbaleData, getUnitGroupList
 
 import './style.less';
 
-
+import '../../../../utils/zhongtaiB'
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 

+ 92 - 9
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-15 17:24:09
+ * @LastEditTime: 2023-06-06 15:12:08
  * @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
  */
@@ -22,13 +22,16 @@ import { ProColumns } from '@ant-design/pro-table';
 import { Input, message, Popconfirm } from 'antd';
 import { useEffect, useRef, useState } from 'react'
 
-import { addData, delData, editData, gainData, getBillProjectData } from './service';
+import { addData, delData, downloadTemplateReq, editData, gainData, getBillProjectData, importBillingProjectRelaFiles } from './service';
 
 import './style.less';
 
+import '../../../../utils/zhongtaiB'
+import FormItem from 'antd/es/form/FormItem';
+import BMSUpload from '@/components/BMSUpload';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -38,6 +41,7 @@ export default function BilingProjectMana() {
     const [tableDataFilterParams, set_tableDataFilterParams] = useState<any | undefined>();
     const [tableDataSearchKeywords, set_tableDataSearchKeywords] = useState<string>('');
     const tableRef = useRef<ActionType>();
+    const [currentComputeDate, set_currentComputeDate] = useState<string | undefined>(undefined);
 
 
 
@@ -61,12 +65,16 @@ export default function BilingProjectMana() {
             dataIndex: 'orderPointValue',
         },
         {
-            title: '类',
-            dataIndex: 'coreFlagName',
+            title: '类',
+            dataIndex: 'kcBigType',
         },
         {
-            title: '来源',
-            dataIndex: 'sourceName',
+            title: '小类',
+            dataIndex: 'kcSmallType',
+        },
+        {
+            title: '指标类别',
+            dataIndex: 'kcIndicatorType',
         },
         {
             title: '操作',
@@ -90,6 +98,12 @@ export default function BilingProjectMana() {
     ]
 
 
+    const getCurrentComputeDate = async () => {
+        const resp = await getComputeDate();
+        set_currentComputeDate(resp);
+    }
+
+
     const getTableData = async (params: any) => {
         const resp = await getBillProjectData(params);
         if (resp) {
@@ -121,7 +135,10 @@ export default function BilingProjectMana() {
             itemTypeCode: formVal.itemType.value,
             itemType: formVal.itemType.label,
             coreFlag: formVal.coreFlag,
-            orderPointValue: formVal.orderPointValue
+            orderPointValue: formVal.orderPointValue,
+            kcBigType:formVal.kcBigType,
+            kcSmallType:formVal.kcSmallType,
+            kcIndicatorType:formVal.kcIndicatorType,
         }
 
         if (type == 'ADD') {
@@ -216,6 +233,21 @@ export default function BilingProjectMana() {
                         },
                     ]}
                 />
+                <ProFormText
+                    name="kcBigType"
+                    label="康程大类:"
+                    placeholder="请输入"
+                />
+                <ProFormText
+                    name="kcSmallType"
+                    label="康程小类:"
+                    placeholder="请输入"
+                />
+                <ProFormText
+                    name="kcIndicatorType"
+                    label="指标类别:"
+                    placeholder="请输入"
+                />
 
             </ModalForm>
         )
@@ -243,9 +275,59 @@ export default function BilingProjectMana() {
         }
     }
 
+    const downloadTemplate = async ()=>{
+        await downloadTemplateReq(currentComputeDate as string);
+    }
+
+
+    const importData = () => {
+
+        return (
+            <ModalForm
+                className='BilingProjectMana-Modal'
+                width={360}
+                title={`导入收费项目数据`}
+                trigger={
+                    <span key="3" className='importBtn'>导入</span>
+                }
+                submitter={{
+                    render: (props, defaultDoms) => {
+                        const needBtn = defaultDoms.filter((b) => {
+                            return b.key != 'rest'
+                        })
+                        return [
+                            ...needBtn,
+                        ];
+                    },
+                }}
+                onFinish={async (values) => {
+                    // console.log({values});
+                    const { importFile: { fileList } } = values;
+
+                    let formData = new FormData();
+                    formData.append('file', fileList[0].originFileObj);
+                   
+                    const resp = await importBillingProjectRelaFiles(formData);
+
+                    if (resp) {
+                        tableRef.current?.reload();
+                        return true;
+                    }
+
+                }}
+            >
+                <FormItem name={'importFile'}>
+                    <BMSUpload downloadTemplateFile={() => downloadTemplate()} />
+                </FormItem>
+
+            </ModalForm>
+        )
+    }
+
 
     useEffect(() => {
         getDirecData();
+        getCurrentComputeDate();
     }, [])
 
     return (
@@ -256,7 +338,7 @@ export default function BilingProjectMana() {
                         <span className='label' style={{ whiteSpace: 'nowrap' }}> 检索:</span>
                         <Input placeholder={'请输入项目名称'} allowClear
                             suffix={
-                                <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
+                                <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
                             }
                             onChange={(e) => {
                                 set_tableDataSearchKeywords(e.target.value);
@@ -279,6 +361,7 @@ export default function BilingProjectMana() {
                     </div>
                 </div>
                 <div className='btnGroup'>
+                    {importData()}
                     <span className='getDataBtn' onClick={() => getDataBySQL()}>获取</span>
                     <UpDataActBtn record type='ADD' />
                 </div>

+ 49 - 1
src/pages/setting/projectSetting/bilingProjectMana/service.ts

@@ -2,13 +2,14 @@
  * @Author: code4eat awesomedema@gmail.com
  * @Date: 2023-03-03 16:31:27
  * @LastEditors: code4eat awesomedema@gmail.com
- * @LastEditTime: 2023-05-15 17:23:49
+ * @LastEditTime: 2023-06-06 14:21:56
  * @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
  */
 
 
 
+import axios from 'axios';
 import { request } from 'umi';
 
 //获取table列表数据
@@ -87,6 +88,53 @@ export const delData = (id:string) => {
   });
 };
 
+//导入excel
+export const importBillingProjectRelaFiles = (data:any) => {
+  return request('/performance/item/importItem', {
+    method: 'POST',
+    data
+  });
+};
+
+
+
+//获取excel导入模板
+export const downloadTemplateReq = (compute_date:string) => {
+
+  let path = `/performance/item/exportItem?compute_date=${compute_date}`;
+
+  const userData = localStorage.getItem('userData');
+  const { token = '' } = JSON.parse(userData as any);
+
+  axios({
+      method: 'get',
+      url: path,
+      responseType: 'blob',
+      headers: { token },
+  })
+      .then(function (response) {
+          //console.log({ 'chunk': response });
+          const filename = decodeURI(response.headers["content-disposition"]);
+          const objectUrl = URL.createObjectURL(
+              new Blob([response.data], {
+                  type: 'application/vnd.ms-excel',
+              })
+          )
+          const link = document.createElement('a')
+          // 设置导出的文件名称
+          link.download = `${filename}` + '.xls'
+          link.style.display = 'none'
+          link.href = objectUrl
+          link.click()
+          document.body.appendChild(link)
+
+      });
+
+
+
+}
+
+
 
 
 

+ 16 - 0
src/pages/setting/projectSetting/bilingProjectMana/style.less

@@ -1,3 +1,7 @@
+.BilingProjectMana-Modal {
+   
+}
+
 .BilingProjectMana {
   padding: 16px;
   background: #FFFFFF;
@@ -37,6 +41,18 @@
         margin-right: 8px;
         border: 1px solid #DAE2F2;
       }
+      .importBtn {
+        display: inline-block;
+        text-align: center;
+        width: 56px;
+        height: 24px;
+        cursor: pointer;
+        line-height: 24px;
+        background: #FAFCFF;
+        border-radius: 4px;
+        margin-right: 8px;
+        border: 1px solid #DAE2F2;
+      }
       .add {
         cursor: pointer;
         display: inline-block;

+ 11 - 6
src/pages/setting/projectSetting/checkUnitProjectSet/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-26 10:13:15
+ * @LastEditTime: 2023-05-30 16:30:41
  * @FilePath: /BudgetManaSystem/src/pages/budgetMana/monthlySet/index.tsx
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -41,14 +41,14 @@ import { getIndicProjectTableData } from '../indicProjectMana/service';
 import { getNonCheckProjectTableData } from '../nonAssessmentProjectMana/service';
 
 
-
+import '../../../../utils/zhongtaiB';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 const SearchIcon = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_p7y3y2t8lg.js',
+    scriptUrl: '',
 });
 
 
@@ -557,7 +557,7 @@ const CheckUnitProjectSet: React.FC = () => {
         };
 
         const onSelectChange = (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => {
-            //console.log('sourceSelectedKeys:', sourceSelectedKeys,'targetSelectedKeys:',targetSelectedKeys);
+            console.log('sourceSelectedKeys:', sourceSelectedKeys,'targetSelectedKeys:',targetSelectedKeys);
             setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]);
         };
 
@@ -567,8 +567,9 @@ const CheckUnitProjectSet: React.FC = () => {
                 let flag = false;
 
                 if (currentSelectedTabKey == '1') {
-                    const items = datasource.filter(a => targetKeys.includes(a.itemCode));
+                    const items = datasource.filter(a => targetKeys.includes(a.code));
                     //拿到当前的表格数据覆盖全量表格数据
+                    console.log({items,targetKeys});
                     const uodatedData = items.map(a=>{
                         if(targetData.length>0){
                              const result = targetData.filter(b=>b.itemPointCode == a.code);
@@ -679,6 +680,9 @@ const CheckUnitProjectSet: React.FC = () => {
                 targetKeys={targetKeys}
                 selectedKeys={selectedKeys}
                 filterOption={(inputValue, item) => {
+                    if(item.itemName!.indexOf(inputValue) !== -1){
+                         console.log({item});
+                    }
                     return item.itemName!.indexOf(inputValue) !== -1
 
                 }}
@@ -705,6 +709,7 @@ const CheckUnitProjectSet: React.FC = () => {
                             onItemSelectAll(diffKeys as string[], selected);
                         },
                         onSelect({ code }, selected) {
+                            console.log({code,selected})
                             onItemSelect(code as string, selected);
                         },
                         selectedRowKeys: listSelectedKeys,

+ 2 - 2
src/pages/setting/projectSetting/costIncomeProjectSet/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-26 10:21:13
+ * @LastEditTime: 2023-05-30 11:18:37
  * @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
  */
@@ -28,7 +28,7 @@ import './style.less';
 
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 

+ 4 - 4
src/pages/setting/projectSetting/indicProjectMana/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-24 17:16:20
+ * @LastEditTime: 2023-05-30 11:09:22
  * @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
  */
@@ -25,10 +25,10 @@ import { useEffect, useRef, useState } from 'react'
 import { addData, delData, editData, gainData, getIndicProjectTableData } from './service';
 
 import './style.less';
-
+import '../../../../utils/zhongtaiB';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -242,7 +242,7 @@ export default function BilingProjectMana() {
                         <span className='label' style={{ whiteSpace: 'nowrap' }}> 检索:</span>
                         <Input placeholder={'请输入项目名称'} allowClear
                             suffix={
-                                <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
+                                <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
                             }
                             onChange={(e) => {
                                 set_tableDataSearchKeywords(e.target.value);

+ 6 - 4
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-17 16:58:28
+ * @LastEditTime: 2023-05-30 11:15:43
  * @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
  */
@@ -28,13 +28,15 @@ import { addData, delData, editData, gainData,getNonCheckProjectTableData, saveS
 
 import './style.less';
 
+import '../../../../utils/zhongtaiB';
+import '../../../../utils/zhongtaiA'
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_p7y3y2t8lg.js',
+    scriptUrl: '',
 });
 
 const AddIconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_3824256_kzhiq41zywa.js',
+    scriptUrl: '',
 });
 
 
@@ -311,7 +313,7 @@ export default function NonAssessmentProjectMana() {
                                                     }}
                                                 />
                                             </Form.Item>
-                                            <span className='delIcon' onClick={() => delGroupIndic(item, index)}><IconFont  type="iconshanchu" /></span>
+                                            <span className='delIcon' onClick={() => delGroupIndic(item, index)}><IconFont   type="iconshanchu" /></span>
                                         </div>
                                     )
                                 })

+ 4 - 7
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-12 10:22:13
+ * @LastEditTime: 2023-05-30 11:13:17
  * @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
  */
@@ -38,14 +38,11 @@ import {
     SortableHandle,
 } from 'react-sortable-hoc';
 
-
+import '../../../../utils/zhongtaiB';
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
-const AddIconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_3824256_kzhiq41zywa.js',
-});
 
 
 
@@ -466,7 +463,7 @@ export default function OccupationsSecondaryDistriSet() {
                         <span className='label' style={{ whiteSpace: 'nowrap' }}> 检索:</span>
                         <Input placeholder={'请输入项目名称'} allowClear
                             suffix={
-                                <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
+                                <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
                             }
                             onChange={(e) => {
                                 set_tableDataSearchKeywords(e.target.value);

+ 4 - 4
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-12 13:32:53
+ * @LastEditTime: 2023-05-30 11:10:59
  * @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
  */
@@ -25,10 +25,10 @@ import { useEffect, useRef, useState } from 'react'
 import { addData, delData, editData, gainData, getSecondaryProjectDistriData } from './service';
 
 import './style.less';
-
+import '../../../../utils/zhongtaiB';
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 
@@ -288,7 +288,7 @@ export default function BilingProjectMana() {
                         <span className='label' style={{ whiteSpace: 'nowrap' }}> 检索:</span>
                         <Input placeholder={'请输入项目名称'} allowClear
                             suffix={
-                                <IconFont type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
+                                <IconFont style={{color:'#99A6BF'}} type="iconsousuo" onClick={() => tableDataSearchHandle('name')} />
                             }
                             onChange={(e) => {
                                 set_tableDataSearchKeywords(e.target.value);

+ 1 - 5
src/pages/setting/reportSet/diySqlMana/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-04-14 14:30:17
+ * @LastEditTime: 2023-05-30 11:28:36
  * @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
  */
@@ -26,10 +26,6 @@ import { addData, delData, editData, getSqlListTableData, getSqlTypeList } from
 import './style.less';
 
 
-const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
-});
-
 
 
 export default function DiySqlMana() {

+ 3 - 3
src/pages/setting/reportSet/reportListMana/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-04-13 18:48:18
+ * @LastEditTime: 2023-05-30 11:26:06
  * @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
  */
@@ -24,9 +24,9 @@ import { addData, delData, editData, getManaIndic, getReportListTableData, getRe
 
 import './style.less';
 
-
+import '../../../../utils/zhongtaiB';
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 

+ 2 - 2
src/pages/setting/reportSet/reportNavSet/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-04-14 11:34:42
+ * @LastEditTime: 2023-05-30 11:27:59
  * @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
  */
@@ -27,7 +27,7 @@ import './style.less';
 
 
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 

+ 3 - 3
src/pages/setting/reportSet/reportSetting/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-04-26 18:16:43
+ * @LastEditTime: 2023-05-30 11:27:17
  * @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
  */
@@ -34,9 +34,9 @@ import './style.less';
 import { addReportTableList, getReportListTableData, getReportListType } from '../reportListMana/service';
 import { SortableContainer, SortableElement, SortableHandle } from 'react-sortable-hoc';
 
-
+import '../../../../utils/zhongtaiB'
 const IconFont = createFromIconfontCN({
-    scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js',
+    scriptUrl: '',
 });
 
 var temp_dataSource: any[] = [];

+ 35 - 0
src/utils/tableToExcel.ts

@@ -0,0 +1,35 @@
+/*
+ * @Author: code4eat awesomedema@gmail.com
+ * @Date: 2023-05-31 11:18:30
+ * @LastEditors: code4eat awesomedema@gmail.com
+ * @LastEditTime: 2023-06-01 14:42:06
+ * @FilePath: /BudgetManaSystem/src/utils/tableToExcel.ts
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+import * as XLSX from 'xlsx';
+import { saveAs } from 'file-saver';
+type DataType = { [key: string]: string | number | null };
+
+function exportTableToExcel(tableData: DataType[], headers: DataType, fileName = 'data') {
+    const headerValues = Object.values(headers);
+    const dataValues = tableData.map(row => Object.values(row));
+
+    // 创建一个新的工作簿
+    const wb = XLSX.utils.book_new();
+
+    // 将数据转化为工作表
+    const ws = XLSX.utils.aoa_to_sheet([headerValues, ...dataValues]);
+
+    // 将工作表添加到工作簿中
+    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
+
+    // 将工作簿转化为blob
+    const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
+    const blob = new Blob([wbout], { type: 'application/octet-stream' });
+
+    // 使用file-saver保存文件
+    saveAs(blob, `${fileName}.xlsx`);
+}
+
+export default exportTableToExcel

File diff suppressed because it is too large
+ 0 - 0
src/utils/zhongtaiA.js


File diff suppressed because it is too large
+ 8 - 0
src/utils/zhongtaiB.js


File diff suppressed because it is too large
+ 8 - 0
src/utils/zhongtaiC.js


BIN
static/filter.png


BIN
static/gou_blue.png


+ 68 - 0
yarn.lock

@@ -2151,6 +2151,11 @@
   dependencies:
     "@babel/types" "^7.3.0"
 
+"@types/file-saver@^2.0.5":
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.5.tgz#9ee342a5d1314bb0928375424a2f162f97c310c7"
+  integrity sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==
+
 "@types/graceful-fs@^4.1.3":
   version "4.1.6"
   resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz"
@@ -2754,6 +2759,11 @@ add-dom-event-listener@^1.1.0:
   dependencies:
     object-assign "4.x"
 
+adler-32@~1.3.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2"
+  integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==
+
 aggregate-error@^3.0.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz"
@@ -3419,6 +3429,14 @@ caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464:
   resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz"
   integrity sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==
 
+cfb@~1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44"
+  integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==
+  dependencies:
+    adler-32 "~1.3.0"
+    crc-32 "~1.2.0"
+
 chalk@^2.0.0:
   version "2.4.2"
   resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
@@ -3529,6 +3547,11 @@ clone-regexp@^2.1.0:
   dependencies:
     is-regexp "^2.0.0"
 
+codepage@~1.15.0:
+  version "1.15.0"
+  resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.15.0.tgz#2e00519024b39424ec66eeb3ec07227e692618ab"
+  integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==
+
 color-convert@^1.9.0:
   version "1.9.3"
   resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
@@ -3702,6 +3725,11 @@ cosmiconfig@^7.0.1:
     path-type "^4.0.0"
     yaml "^1.10.0"
 
+crc-32@~1.2.0, crc-32@~1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
+  integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
+
 create-ecdh@^4.0.0:
   version "4.0.4"
   resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz"
@@ -4676,6 +4704,11 @@ file-entry-cache@^6.0.1:
   dependencies:
     flat-cache "^3.0.4"
 
+file-saver@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38"
+  integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==
+
 fill-range@^7.0.1:
   version "7.0.1"
   resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
@@ -4768,6 +4801,11 @@ formdata-polyfill@^4.0.10:
   dependencies:
     fetch-blob "^3.1.2"
 
+frac@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b"
+  integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==
+
 fraction.js@^4.2.0:
   version "4.2.0"
   resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz"
@@ -8416,6 +8454,13 @@ sprintf-js@~1.0.2:
   resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
   integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
 
+ssf@~0.11.2:
+  version "0.11.2"
+  resolved "https://registry.yarnpkg.com/ssf/-/ssf-0.11.2.tgz#0b99698b237548d088fc43cdf2b70c1a7512c06c"
+  integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==
+  dependencies:
+    frac "~1.1.2"
+
 stable@^0.1.8:
   version "0.1.8"
   resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz"
@@ -9240,11 +9285,21 @@ which@^2.0.1:
   dependencies:
     isexe "^2.0.0"
 
+wmf@~1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da"
+  integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==
+
 word-wrap@^1.2.3:
   version "1.2.3"
   resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
   integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
 
+word@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/word/-/word-0.3.0.tgz#8542157e4f8e849f4a363a288992d47612db9961"
+  integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==
+
 wrap-ansi@^6.2.0:
   version "6.2.0"
   resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
@@ -9276,6 +9331,19 @@ write-file-atomic@^4.0.1, write-file-atomic@^4.0.2:
     imurmurhash "^0.1.4"
     signal-exit "^3.0.7"
 
+xlsx@^0.18.5:
+  version "0.18.5"
+  resolved "https://registry.yarnpkg.com/xlsx/-/xlsx-0.18.5.tgz#16711b9113c848076b8a177022799ad356eba7d0"
+  integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==
+  dependencies:
+    adler-32 "~1.3.0"
+    cfb "~1.2.1"
+    codepage "~1.15.0"
+    crc-32 "~1.2.1"
+    ssf "~0.11.2"
+    wmf "~1.0.1"
+    word "~0.3.0"
+
 xtend@^4.0.0:
   version "4.0.2"
   resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"

Some files were not shown because too many files changed in this diff