From 6fc60fcdccd4c99e43be482ecf3757108e833c34 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 04 十一月 2025 17:27:34 +0800
Subject: [PATCH] fix: 四流

---
 src/services/api/index.ts                                   |    2 
 src/store/modules/permission.ts                             |    6 
 src/views/StatisticalReport/RewardStatistics.vue            |   38 +++--
 src/constants/module.ts                                     |   12 +
 src/services/api/User.ts                                    |   15 ++
 src/services/api/typings.d.ts                               |   52 +++++++
 src/router/index.ts                                         |  150 ++++++++++----------
 src/services/api/EnterpriseMaterial.ts                      |   18 ++
 src/views/StatisticalReport/hooks/rewardStatistics.ts       |   34 ++++
 src/services/api/ParkBountyApply.ts                         |   30 ++++
 src/views/Reward/components/RewardApplyTradeCheckDialog.vue |    2 
 src/services/api/BaseModuleNew.ts                           |   33 ++++
 12 files changed, 299 insertions(+), 93 deletions(-)

diff --git a/src/constants/module.ts b/src/constants/module.ts
index 798ceca..6d25c55 100644
--- a/src/constants/module.ts
+++ b/src/constants/module.ts
@@ -132,3 +132,15 @@
     width: 80,
   },
 ];
+
+export enum EnumMenuScene {
+  /// 鍚庡彴
+  Back = 0,
+  /// 鏀垮姟绔�
+  Goverment = 1,
+}
+
+export const EnumMenuSceneText = {
+  [EnumMenuScene.Back]: '鍚庡彴',
+  [EnumMenuScene.Goverment]: '鏀垮姟绔�',
+};
diff --git a/src/router/index.ts b/src/router/index.ts
index 89c9087..6fb9c51 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -134,81 +134,81 @@
       },
     ],
   },
-  {
-    path: '/MaterialReview',
-    redirect: 'noRedirect',
-    component: Layout,
-    hidden: false,
-    alwaysShow: true,
-    meta: {
-      rank: 10020,
-      title: '鏉愭枡瀹℃牳',
-      rootMenu: true,
-      icon: 'home',
-    },
-    children: [
-      {
-        path: '/MaterialReviewList',
-        name: 'MaterialReviewList',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/MaterialReview/MaterialReview.vue'),
-        meta: {
-          rank: 10021,
-          title: '鏉愭枡鍒濆',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/MaterialReviewDetail/:id',
-        name: 'MaterialReviewDetail',
-        hidden: true,
-        component: () => import('@/views/MaterialReview/MaterialReviewDetail.vue'),
-        meta: {
-          rank: 10022,
-          title: '鏉愭枡瀹℃牳璇︽儏',
-          rootMenu: false,
-        },
-      },
-      {
-        path: '/MaterialReviewAudit/:id',
-        name: 'MaterialReviewAudit',
-        hidden: true,
-        component: () => import('@/views/MaterialReview/MaterialReviewAudit.vue'),
-        meta: {
-          rank: 10023,
-          title: '瀹℃牳',
-          rootMenu: false,
-        },
-      },
-      {
-        path: '/MaterialReReviewList',
-        name: 'MaterialReReviewList',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/MaterialReview/MaterialReReviewList.vue'),
-        meta: {
-          rank: 10021,
-          title: '鏉愭枡澶嶅',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/MaterialReReviewAudit/:id',
-        name: 'MaterialReReviewAudit',
-        hidden: true,
-        component: () => import('@/views/MaterialReview/MaterialReReviewAudit.vue'),
-        meta: {
-          rank: 10021,
-          title: '澶嶅',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-    ],
-  },
+  // {
+  //   path: '/MaterialReview',
+  //   redirect: 'noRedirect',
+  //   component: Layout,
+  //   hidden: false,
+  //   alwaysShow: true,
+  //   meta: {
+  //     rank: 10020,
+  //     title: '鏉愭枡瀹℃牳',
+  //     rootMenu: true,
+  //     icon: 'home',
+  //   },
+  //   children: [
+  //     {
+  //       path: '/MaterialReviewList',
+  //       name: 'MaterialReviewList',
+  //       hidden: false,
+  //       alwaysShow: true,
+  //       component: () => import('@/views/MaterialReview/MaterialReview.vue'),
+  //       meta: {
+  //         rank: 10021,
+  //         title: '鏉愭枡鍒濆',
+  //         // rootMenu: true,
+  //         icon: 'home',
+  //       },
+  //     },
+  //     {
+  //       path: '/MaterialReviewDetail/:id',
+  //       name: 'MaterialReviewDetail',
+  //       hidden: true,
+  //       component: () => import('@/views/MaterialReview/MaterialReviewDetail.vue'),
+  //       meta: {
+  //         rank: 10022,
+  //         title: '鏉愭枡瀹℃牳璇︽儏',
+  //         rootMenu: false,
+  //       },
+  //     },
+  //     {
+  //       path: '/MaterialReviewAudit/:id',
+  //       name: 'MaterialReviewAudit',
+  //       hidden: true,
+  //       component: () => import('@/views/MaterialReview/MaterialReviewAudit.vue'),
+  //       meta: {
+  //         rank: 10023,
+  //         title: '瀹℃牳',
+  //         rootMenu: false,
+  //       },
+  //     },
+  //     {
+  //       path: '/MaterialReReviewList',
+  //       name: 'MaterialReReviewList',
+  //       hidden: false,
+  //       alwaysShow: true,
+  //       component: () => import('@/views/MaterialReview/MaterialReReviewList.vue'),
+  //       meta: {
+  //         rank: 10021,
+  //         title: '鏉愭枡澶嶅',
+  //         // rootMenu: true,
+  //         icon: 'home',
+  //       },
+  //     },
+  //     {
+  //       path: '/MaterialReReviewAudit/:id',
+  //       name: 'MaterialReReviewAudit',
+  //       hidden: true,
+  //       component: () => import('@/views/MaterialReview/MaterialReReviewAudit.vue'),
+  //       meta: {
+  //         rank: 10021,
+  //         title: '澶嶅',
+  //         // rootMenu: true,
+  //         icon: 'home',
+  //       },
+  //     },
+  //   ],
+  // },
 
   {
     path: '/Reward',
diff --git a/src/services/api/BaseModuleNew.ts b/src/services/api/BaseModuleNew.ts
new file mode 100644
index 0000000..7a09141
--- /dev/null
+++ b/src/services/api/BaseModuleNew.ts
@@ -0,0 +1,33 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鏌ヨ鎵�鏈夋ā鍧� GET /api/BaseModuleNew/GetAllModuleList */
+export async function getAllModuleList(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetAllModuleListParams,
+  options?: API.RequestConfig
+) {
+  return request<API.ModuleDto[]>('/api/BaseModuleNew/GetAllModuleList', {
+    method: 'GET',
+    params: {
+      ...params,
+    },
+    ...(options || {}),
+  });
+}
+
+/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/BaseModuleNew/GetUserOrRoleModuleList */
+export async function getUserOrRoleModuleList(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetUserOrRoleModuleListParams,
+  options?: API.RequestConfig
+) {
+  return request<API.ModuleDto[]>('/api/BaseModuleNew/GetUserOrRoleModuleList', {
+    method: 'GET',
+    params: {
+      ...params,
+    },
+    ...(options || {}),
+  });
+}
diff --git a/src/services/api/EnterpriseMaterial.ts b/src/services/api/EnterpriseMaterial.ts
index ac06d23..3030a65 100644
--- a/src/services/api/EnterpriseMaterial.ts
+++ b/src/services/api/EnterpriseMaterial.ts
@@ -68,6 +68,24 @@
   );
 }
 
+/** 鑾峰彇浼佷笟鏉愭枡绠$悊鍒嗛〉鍒楄〃 POST /api/EnterpriseMaterial/GetEnterpriseMaterialManagePageTotal */
+export async function getEnterpriseMaterialManagePageTotal(
+  body: API.QueryEnterpriseMaterialManageListInput,
+  options?: API.RequestConfig
+) {
+  return request<API.EnterpriseMaterialManageListOutputPageOutput>(
+    '/api/EnterpriseMaterial/GetEnterpriseMaterialManagePageTotal',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 鑾峰彇鎴戠殑浼佷笟鍥涙祦鏉愭枡鍒楄〃 POST /api/EnterpriseMaterial/GetMyEnterpriseMaterialPage */
 export async function getMyEnterpriseMaterialPage(
   body: API.PageInput,
diff --git a/src/services/api/ParkBountyApply.ts b/src/services/api/ParkBountyApply.ts
index fdbd9c9..e420fb5 100644
--- a/src/services/api/ParkBountyApply.ts
+++ b/src/services/api/ParkBountyApply.ts
@@ -17,6 +17,21 @@
   });
 }
 
+/** 浼佷笟鑷富鐢虫姤 POST /api/ParkBountyApply/AddParkBountyApplyByEnterprise */
+export async function addParkBountyApplyByEnterprise(
+  body: API.AddParkBountyApplyByEnterpriseInput,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/ParkBountyApply/AddParkBountyApplyByEnterprise', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 濂栧姳閲�-鍑鸿处-瀹℃壒 POST /api/ParkBountyApply/AuditParkBountyApplyTrade */
 export async function auditParkBountyApplyTrade(
   body: API.AuditParkBountyTradeInput,
@@ -808,6 +823,21 @@
   );
 }
 
+/** 鏌ヨ濂栧姳閲戠粺璁℃姤琛� GET /api/ParkBountyApply/GetRewardStatisticsMonths */
+export async function getRewardStatisticsMonths(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetRewardStatisticsMonthsParams,
+  options?: API.RequestConfig
+) {
+  return request<string[]>('/api/ParkBountyApply/GetRewardStatisticsMonths', {
+    method: 'GET',
+    params: {
+      ...params,
+    },
+    ...(options || {}),
+  });
+}
+
 /** 瀵煎叆濂栧姳閲戠敵鎶ヨ储鏀�/骞冲彴鎷ㄤ粯鎬婚 POST /api/ParkBountyApply/ImportParkBountyAppalyAmount */
 export async function importParkBountyAppalyAmount(
   body: API.ImportParkBountyAppalyAmountInput,
diff --git a/src/services/api/User.ts b/src/services/api/User.ts
index 3e7a25b..2d5020a 100644
--- a/src/services/api/User.ts
+++ b/src/services/api/User.ts
@@ -784,6 +784,21 @@
   });
 }
 
+/** 璁剧疆浼佷笟鍚堜綔鍗忚 POST /api/User/SetUserEnterpiseCooperationUrl */
+export async function setUserEnterpiseCooperationUrl(
+  body: API.SetUserEnterpiseCooperationUrlInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/User/SetUserEnterpiseCooperationUrl', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鍙栧叧鐢ㄦ埛 POST /api/User/UnFollowUser */
 export async function unFollowUser(body: API.UnFollowUserInput, options?: API.RequestConfig) {
   return request<number>('/api/User/UnFollowUser', {
diff --git a/src/services/api/index.ts b/src/services/api/index.ts
index e267aca..a0a2349 100644
--- a/src/services/api/index.ts
+++ b/src/services/api/index.ts
@@ -12,6 +12,7 @@
 import * as AliPayNotify from './AliPayNotify';
 import * as Area from './Area';
 import * as BaseModule from './BaseModule';
+import * as BaseModuleNew from './BaseModuleNew';
 import * as BestSign from './BestSign';
 import * as BestSignCallBack from './BestSignCallBack';
 import * as CaiNiao from './CaiNiao';
@@ -103,6 +104,7 @@
   AliPayNotify,
   Area,
   BaseModule,
+  BaseModuleNew,
   BestSign,
   BestSignCallBack,
   CaiNiao,
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 6472f78..e8377f6 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -453,6 +453,11 @@
     userId?: string;
   }
 
+  interface AddParkBountyApplyByEnterpriseInput {
+    batchNo?: string;
+    enterpriseMonthApplyId?: string;
+  }
+
   interface AddParkBountyApplyStepOneInput {
     batchNo?: string;
     parkId?: string;
@@ -1290,6 +1295,10 @@
     parentId?: string;
   }
 
+  interface APIgetAllModuleListParams {
+    menuScene?: EnumMenuScene;
+  }
+
   interface APIgetAllSubModuleParams {
     moduleId?: string;
   }
@@ -1750,6 +1759,11 @@
     id?: string;
   }
 
+  interface APIgetRewardStatisticsMonthsParams {
+    /** 鎵�灞炲洯鍖篒d */
+    industrialParkId?: string;
+  }
+
   interface APIgetRolesIdRolesParams {
     id: string;
   }
@@ -1842,6 +1856,12 @@
 
   interface APIgetUserOrRoleModuleListParams {
     id?: string;
+    objectType?: number;
+  }
+
+  interface APIgetUserOrRoleModuleListParams {
+    id?: string;
+    menuScene?: EnumMenuScene;
     objectType?: number;
   }
 
@@ -4081,6 +4101,8 @@
     password?: string;
     /** 浜т笟鍥尯id */
     industrialParkId?: string;
+    /** 缁熶竴绀句細淇$敤浠g爜 */
+    societyCreditCode?: string;
   }
 
   interface CreateBackClientUserInput {
@@ -4101,6 +4123,7 @@
   }
 
   interface CreateBaseRoleInput {
+    menuScene?: EnumMenuScene;
     /** 鍚嶇О */
     name?: string;
     /** 鎺掑簭 */
@@ -5192,6 +5215,7 @@
   }
 
   interface CreateOrUpdateRoleInput {
+    menuScene?: EnumMenuScene;
     /** 鍚嶇О */
     name?: string;
     /** 鎺掑簭 */
@@ -5698,6 +5722,8 @@
     isSignFreeSet?: boolean;
     /** 娉ㄥ唽鏃堕棿 */
     registTime?: string;
+    /** 澶囨敞 */
+    remark?: string;
   }
 
   interface CustomerManageListOutputPageOutput {
@@ -5754,6 +5780,7 @@
     /** 鐢虫姤閲戦 */
     applyAmount?: number;
     fileTypes?: CustomerUploadMonthApplyFileType[];
+    enterpriseId?: string;
   }
 
   interface CustomerUploadMonthApplyFileType {
@@ -6153,6 +6180,8 @@
     remark?: string;
     /** 鏂囦欢鏁伴噺 */
     fileCount?: number;
+    /** 浼佷笟鐢虫姤鏉愭枡鏁伴噺 */
+    enterpriseMonthApplyFileCount?: number;
     lastModificationTime?: string;
     lastModifierName?: string;
     lastModifierId?: string;
@@ -6294,6 +6323,8 @@
   type EnumElectronSignRealStatus = 0 | 10 | 99 | 100;
 
   type EnumElectronSignUserType = 10 | 20;
+
+  type EnumMenuScene = 0 | 1;
 
   type EnumPagedListOrder = 0 | 1;
 
@@ -7548,6 +7579,7 @@
   interface GetCustomerUploadApplyFilesInput {
     id?: string;
     enterpriseId?: string;
+    userId?: string;
     withMonth?: string;
     parkBountyApplyId?: string;
   }
@@ -7694,6 +7726,9 @@
     /** 鐢虫姤閲戦 */
     applyAmount?: number;
     applyStatus?: EnterpriseMonthApplyStatusEnum;
+    inCheckStatus?: BountyCheckStatusEnum;
+    /** 鑷富鐢虫姤鐨勭敵鎶d */
+    parkBountyApplyId?: string;
   }
 
   interface GetEnterpriseMonthApplyFileOutputPageOutput {
@@ -9315,6 +9350,7 @@
     selfAuditOperatorId?: string;
     /** 姹熺淇濅笂浼犵殑淇濆崟鏂囦欢 */
     insureBillUrl?: string;
+    auditType?: EnumParkBountyTradeDetailAuditType;
   }
 
   interface GetParkBountyTradeDetailOutputPageOutput {
@@ -9536,6 +9572,8 @@
     parkTypName?: string;
     /** 钀ヤ笟鎵х収 */
     licenseUrl?: string;
+    /** 鍚堜綔鍗忚 */
+    cooperationUrl?: string;
     /** 閾惰鎬昏鍚嶇О */
     bankName?: string;
     /** 閾惰鏀鍚嶇О */
@@ -9885,6 +9923,7 @@
     pageModel?: Pagination;
     /** 鏌ヨ鏉′欢锛氳鑹插悕绉� */
     queryCondition?: string;
+    menuScene?: EnumMenuScene;
   }
 
   interface GetSearchSettingList {
@@ -10297,6 +10336,8 @@
     bankBranchName?: string;
     bankCardNumber?: string;
     bankIsVerify?: boolean;
+    /** 鍚堜綔鍗忚 */
+    cooperationUrl?: string;
   }
 
   interface GetUserBaseInfoDataResponse {
@@ -20212,6 +20253,7 @@
   interface RoleInfo {
     /** 瑙掕壊Id */
     id?: string;
+    menuScene?: EnumMenuScene;
     /** 鍚嶇О */
     name?: string;
     /** 鎺掑簭 */
@@ -20922,6 +20964,15 @@
     /** 鐢ㄦ埛Id */
     userId?: string;
     disabledSyncUser?: boolean;
+    /** 鍚堜綔鍗忚 */
+    cooperationUrl?: string;
+  }
+
+  interface SetUserEnterpiseCooperationUrlInput {
+    /** 鐢ㄦ埛Id */
+    userId?: string;
+    /** 鍚堜綔鍗忚 */
+    cooperationUrl?: string;
   }
 
   interface SetUserEnterpriseBankInfoInput {
@@ -23183,6 +23234,7 @@
     monthApplyId?: string;
     fileSearchTypeId?: string;
     listFiles?: CustomerUploadMonthApplyFileTypeDto[];
+    enterpriseId?: string;
   }
 
   interface UploadParkApplyCustomerFilesInput {
diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts
index 925456d..ded2d45 100644
--- a/src/store/modules/permission.ts
+++ b/src/store/modules/permission.ts
@@ -33,12 +33,14 @@
           const res = await baseModuleServices.getCurrentUserModuleList({
             showLoading: false,
           });
-          const accessedRoutes = ascending(addAsyncRoutes(formatModuleList([], null))); // createAccessedRoutes(userMenuList, userInfo)
+          const accessedRoutes = ascending(addAsyncRoutes(formatModuleList(res, null))); // createAccessedRoutes(userMenuList, userInfo)
           //@ts-ignore
           accessedRoutes.push({ path: '/:pathMatch(.*)*', redirect: '/404', hidden: true });
 
           this.addRoutes = accessedRoutes;
-          this.routes = constantRoutes.concat(accessedRoutes);
+          this.routes = constantRoutes
+            .concat(accessedRoutes)
+            .sort((a, b) => (a.meta?.rank ?? 0) - (b.meta?.rank ?? 0));
 
           resolve(accessedRoutes);
         } catch (e) {
diff --git a/src/views/Reward/components/RewardApplyTradeCheckDialog.vue b/src/views/Reward/components/RewardApplyTradeCheckDialog.vue
index 7c917f7..ad902e5 100644
--- a/src/views/Reward/components/RewardApplyTradeCheckDialog.vue
+++ b/src/views/Reward/components/RewardApplyTradeCheckDialog.vue
@@ -307,7 +307,7 @@
 
 async function handleApply() {
   try {
-    const content = `寮�鎴峰悕绉帮細${getIncomeCompanyName(form.value)}\n寮�鎴烽摱琛岋細${getIncomeBankName(
+    const content = `寮�鎴峰悕绉帮細${getIncomeBankAccount(form.value)}\n寮�鎴烽摱琛岋細${getIncomeBankName(
       form.value
     )}\n寮�鎴疯处鍙凤細${getIncomeBankCardNumber(form.value)}`;
     await Message.tipMessage(content, { title: '澶嶅埗鍐呭' });
diff --git a/src/views/StatisticalReport/RewardStatistics.vue b/src/views/StatisticalReport/RewardStatistics.vue
index c7e00e7..16689e1 100644
--- a/src/views/StatisticalReport/RewardStatistics.vue
+++ b/src/views/StatisticalReport/RewardStatistics.vue
@@ -20,17 +20,6 @@
       </div>
       <ProTableQueryFilterBar @on-reset="reset">
         <template #query>
-          <QueryFilterItem tip-content="鐢虫姤鏈堜唤">
-            <FieldDatePicker
-              v-model="extraParamState.months"
-              type="months"
-              clearable
-              placeholder="璇烽�夋嫨鐢虫姤鏈堜唤"
-              format="YYYY-MM"
-              value-format="YYYY-MM"
-              @change="getList()"
-            ></FieldDatePicker>
-          </QueryFilterItem>
           <QueryFilterItem>
             <FieldSelect
               v-model="extraParamState.industrialParkId"
@@ -41,6 +30,18 @@
               clearable
               @change="getList()"
             />
+          </QueryFilterItem>
+          <QueryFilterItem tip-content="鐢虫姤鏈堜唤">
+            <FieldDatePicker
+              v-model="extraParamState.months"
+              type="months"
+              clearable
+              placeholder="璇烽�夋嫨鐢虫姤鏈堜唤"
+              format="YYYY-MM"
+              value-format="YYYY-MM"
+              @change="getList()"
+              :disabled-date="disabledDate"
+            ></FieldDatePicker>
           </QueryFilterItem>
           <QueryFilterItem>
             <SearchInput
@@ -133,6 +134,7 @@
 import EnterpriseWithdrawalDetailDialog from './components/EnterpriseWithdrawalDetailDialog.vue';
 import BalanceDetailDialog from './components/BalanceDetailDialog.vue';
 import { EnumParkRewardStatisticsDetailScene } from '@/constants';
+import { useRewardStatisticsMonths } from './hooks';
 
 defineOptions({
   name: 'RewardStatistics',
@@ -289,14 +291,15 @@
       //   Message.errorMessage('璇烽�夋嫨鏈堜唤');
       //   return;
       // }
-      if (!extraParamState.months.length) {
-        Message.errorMessage('璇烽�夋嫨鏈堜唤');
-        return;
-      }
       if (!extraParamState.industrialParkId) {
         Message.errorMessage('璇烽�夋嫨鍥尯');
         return;
       }
+      if (!extraParamState.months.length) {
+        Message.errorMessage('璇烽�夋嫨鏈堜唤');
+        return;
+      }
+
       let params: API.GetRewardStatisticsInput = {
         pageModel: {
           rows: pageSize,
@@ -358,6 +361,11 @@
   }
 );
 
+const { disabledDate } = useRewardStatisticsMonths({
+  industrialParkId: toRef(extraParamState, 'industrialParkId'),
+  enabled: computed(() => !!extraParamState.industrialParkId),
+});
+
 const handleExport = _.debounce(
   async () => {
     if (!extraParamState.month) {
diff --git a/src/views/StatisticalReport/hooks/rewardStatistics.ts b/src/views/StatisticalReport/hooks/rewardStatistics.ts
index b1d4324..681ed8c 100644
--- a/src/views/StatisticalReport/hooks/rewardStatistics.ts
+++ b/src/views/StatisticalReport/hooks/rewardStatistics.ts
@@ -2,6 +2,8 @@
 import { useTable } from '@bole-core/components';
 import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
 import { OrderInputType } from '@bole-core/core';
+import { useQuery } from '@tanstack/vue-query';
+import dayjs from 'dayjs';
 
 type UseRewardStatisticsDetailOptions = {
   scene?: Ref<EnumParkRewardStatisticsDetailScene>;
@@ -54,3 +56,35 @@
     reset,
   };
 }
+
+type UseRewardStatisticsMonthsOptions = {
+  industrialParkId?: MaybeRef<string>;
+  enabled?: MaybeRef<boolean>;
+};
+
+export function useRewardStatisticsMonths(options: UseRewardStatisticsMonthsOptions = {}) {
+  const { industrialParkId, enabled } = options;
+
+  const { data: rewardStatisticsMonths } = useQuery({
+    queryKey: ['parkBountyApplyServices/getRewardStatisticsMonths', industrialParkId],
+    queryFn: async () => {
+      let params: API.APIgetRewardStatisticsMonthsParams = {
+        industrialParkId: unref(industrialParkId),
+      };
+      let res = await parkBountyApplyServices.getRewardStatisticsMonths(params, {
+        showLoading: false,
+      });
+      return res;
+    },
+    placeholderData: [] as string[],
+    enabled: enabled,
+  });
+
+  const disabledDate = computed(() => {
+    return (time: Date) => {
+      return rewardStatisticsMonths.value.every((x) => !dayjs(x).isSame(dayjs(time), 'month'));
+    };
+  });
+
+  return { rewardStatisticsMonths, disabledDate };
+}

--
Gitblit v1.9.1