From 8fb20fc31b4be097e5408b9ecfeb5002ebe042f3 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 10 四月 2025 15:07:47 +0800
Subject: [PATCH] feat: 接口

---
 src/views/MaterialReview/MaterialReview.vue                         |   68 ++-
 src/views/Account/components/AddOrEditAccountDialog.vue             |    2 
 src/views/Account/components/ResetPasswordDialog.vue                |    8 
 src/views/Login/Login.vue                                           |    1 
 src/services/api/typings.d.ts                                       |  244 ++++++++++++-
 src/views/EnterpriseInfo/EnterpriseInfo.vue                         |   22 
 src/components/commonView/SettlementMaterialInfoView.vue            |    6 
 src/views/MaterialReview/MaterialReviewAudit.vue                    |   98 ++++
 src/components/commonView/MaterialInfoView.vue                      |    6 
 src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue |    7 
 src/components/commonView/DetailView.vue                            |    6 
 src/services/api/Account.ts                                         |   14 
 src/components/commonView/DeclareEnterpriseTableView.vue            |   47 --
 src/constants/reward.ts                                             |   10 
 src/services/api/UserRole.ts                                        |   30 +
 src/views/Account/AccountManageList.vue                             |   79 ++-
 src/components/Layout/ChunkCellV2.vue                               |    4 
 src/services/api/ParkBountyApply.ts                                 |  181 ++++++++++
 src/views/MaterialReview/MaterialReviewDetail.vue                   |   80 ++++
 src/views/Home/Home.vue                                             |   63 +++
 20 files changed, 794 insertions(+), 182 deletions(-)

diff --git a/src/components/Layout/ChunkCellV2.vue b/src/components/Layout/ChunkCellV2.vue
index bcf8b10..1bf7c85 100644
--- a/src/components/Layout/ChunkCellV2.vue
+++ b/src/components/Layout/ChunkCellV2.vue
@@ -36,5 +36,9 @@
     margin-bottom: 0;
     border-bottom: none;
   }
+
+  .chunk-cell-v2-content {
+    padding-bottom: 12px;
+  }
 }
 </style>
diff --git a/src/components/commonView/DeclareEnterpriseTableView.vue b/src/components/commonView/DeclareEnterpriseTableView.vue
index d067305..d952ab8 100644
--- a/src/components/commonView/DeclareEnterpriseTableView.vue
+++ b/src/components/commonView/DeclareEnterpriseTableView.vue
@@ -32,27 +32,31 @@
   ProTableV2,
   SearchInput,
   useFormDialog,
-  useTable,
   defineOperationBtns,
   defineColumns,
 } from '@bole-core/components';
 import MateriaDetailDialog from './MateriaDetailDialog.vue';
 import { FourStreamsMaterialFileTableItem } from './types';
-import { OrderInputType } from '@bole-core/core';
-import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
 
 defineOptions({
   name: 'DeclareEnterpriseTableView',
 });
 
-type Props = {};
+type Props = {
+  getList: (pageIndex?: number) => Promise<void>;
+  reset: () => void;
+  proTableProps: any;
+  extraParamState: {
+    searchKeyWord: string;
+  };
+};
 
 const props = withDefaults(defineProps<Props>(), {});
 
 const column = defineColumns([
   {
     id: '1',
-    enCode: 'accDateTime',
+    enCode: 'userName',
     name: '甯愬彿',
   },
   {
@@ -99,35 +103,6 @@
   },
 ]);
 
-const {
-  getDataSource: getList,
-  proTableProps,
-  paginationState,
-  extraParamState,
-  reset,
-} = useTable(
-  async ({ pageIndex, pageSize }, extraParamState) => {
-    try {
-      let params: API.GetParkBountyApplyInfoInput = {
-        pageModel: {
-          rows: pageSize,
-          page: pageIndex,
-          orderInput: extraParamState.orderInput,
-        },
-        searchKeyWord: extraParamState.searchKeyWord,
-      };
-      let res = await parkBountyApplyServices.getParkBountyApplyDetailList(params);
-      return res;
-    } catch (error) {}
-  },
-  {
-    defaultExtraParams: {
-      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
-      searchKeyWord: '',
-    },
-  }
-);
-
 const { dialogProps, handleEdit, editForm } = useFormDialog({
   defaultFormParams: {
     list: [] as FourStreamsMaterialFileTableItem[],
@@ -139,10 +114,6 @@
     list: [],
   });
 }
-
-defineExpose({
-  getList,
-});
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/components/commonView/DetailView.vue b/src/components/commonView/DetailView.vue
index 18acd11..af0b043 100644
--- a/src/components/commonView/DetailView.vue
+++ b/src/components/commonView/DetailView.vue
@@ -1,12 +1,12 @@
 <template>
   <ProForm :model="form" label-width="160px" label-position="left" is-read>
-    <ChunkCellV2 title="鏉愭枡瀹℃牳">
+    <ChunkCellV2 title="鏉愭枡瀹℃牳" style="margin-bottom: 0">
       <BatchInfoView :form="form"></BatchInfoView>
     </ChunkCellV2>
-    <ChunkCellV2 title="姹囨�绘潗鏂�">
+    <ChunkCellV2 title="姹囨�绘潗鏂�" style="margin-bottom: 0">
       <MaterialInfoView :form="form"></MaterialInfoView>
     </ChunkCellV2>
-    <ChunkCellV2 title="姹囩畻鏉愭枡">
+    <ChunkCellV2 title="姹囩畻鏉愭枡" style="margin-bottom: 0">
       <SettlementMaterialInfoView :form="form"></SettlementMaterialInfoView>
     </ChunkCellV2>
     <slot></slot>
diff --git a/src/components/commonView/MaterialInfoView.vue b/src/components/commonView/MaterialInfoView.vue
index a45a78f..0aaffd9 100644
--- a/src/components/commonView/MaterialInfoView.vue
+++ b/src/components/commonView/MaterialInfoView.vue
@@ -1,7 +1,11 @@
 <template>
   <ProFormCol>
     <ProFormColItem :span="12">
-      <ProFormItemV2 label="浼佷笟缂寸◣鏄庣粏姹囨�昏〃:" prop="enterpriseTaxSubFileUrl">
+      <ProFormItemV2
+        label="浼佷笟缂寸◣鏄庣粏姹囨�昏〃:"
+        prop="enterpriseTaxSubFileUrl"
+        style="margin-bottom: 22px"
+      >
         <ProFormUpload v-model:file-url="form.enterpriseTaxSubFileUrl"></ProFormUpload>
       </ProFormItemV2>
     </ProFormColItem>
diff --git a/src/components/commonView/SettlementMaterialInfoView.vue b/src/components/commonView/SettlementMaterialInfoView.vue
index de9228b..5558441 100644
--- a/src/components/commonView/SettlementMaterialInfoView.vue
+++ b/src/components/commonView/SettlementMaterialInfoView.vue
@@ -8,7 +8,11 @@
   </ProFormCol>
   <ProFormCol>
     <ProFormColItem :span="12">
-      <ProFormItemV2 label="濂栧姳閲戝垎閰嶆槑缁嗚〃:" prop="bountyAssignFileUlr">
+      <ProFormItemV2
+        label="濂栧姳閲戝垎閰嶆槑缁嗚〃:"
+        prop="bountyAssignFileUlr"
+        style="margin-bottom: 22px"
+      >
         <ProFormUpload v-model:file-url="form.bountyAssignFileUlr"></ProFormUpload>
       </ProFormItemV2>
     </ProFormColItem>
diff --git a/src/constants/reward.ts b/src/constants/reward.ts
index 623df82..a1b97d9 100644
--- a/src/constants/reward.ts
+++ b/src/constants/reward.ts
@@ -1,5 +1,9 @@
 export enum BountyCheckStatusEnum {
   /**
+   * 鏈彁浜�
+   */
+  NotSubmit = -10,
+  /**
    * 寰呭鏍�
    */
   WaitCheck = 10,
@@ -16,7 +20,11 @@
 export const BountyCheckStatusEnumText = {
   [BountyCheckStatusEnum.WaitCheck]: '寰呭鏍�',
   [BountyCheckStatusEnum.CheckPassed]: '瀹℃牳閫氳繃',
-  [BountyCheckStatusEnum.CheckReject]: '瀹℃牳涓嶉�氳繃',
+  [BountyCheckStatusEnum.CheckReject]: '瀹℃牳鏈�氳繃',
+};
+export const BountyCheckStatusEnumTextForAudit = {
+  [BountyCheckStatusEnum.CheckPassed]: '瀹℃牳閫氳繃',
+  [BountyCheckStatusEnum.CheckReject]: '椹冲洖',
 };
 
 export enum SettleStatusEnum {
diff --git a/src/services/api/Account.ts b/src/services/api/Account.ts
index 86fd3ef..7f7fd9a 100644
--- a/src/services/api/Account.ts
+++ b/src/services/api/Account.ts
@@ -341,6 +341,18 @@
   });
 }
 
+/** 鏀垮姟绔竴绯荤粺閰嶇疆涓�閲嶇疆瀵嗙爜 POST /api/Account/ResetPassword */
+export async function resetPassword(body: API.ResetPasswordBaseInput, options?: API.RequestConfig) {
+  return request<number>('/api/Account/ResetPassword', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 閲嶇疆瀵嗙爜骞跺彂閫佹墜鏈洪�氱煡鏂板瘑鐮� POST /api/Account/ResetPasswordWithMicroNotify */
 export async function resetPasswordWithMicroNotify(
   body: API.ResetPasswordBaseInput,
@@ -536,7 +548,7 @@
 }
 
 /** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/accountAuth/ResetPassword */
-export async function resetPassword(body: API.ResetPasswordDto, options?: API.RequestConfig) {
+export async function resetPassword_2(body: API.ResetPasswordDto, options?: API.RequestConfig) {
   return request<any>('/api/accountAuth/ResetPassword', {
     method: 'POST',
     headers: {
diff --git a/src/services/api/ParkBountyApply.ts b/src/services/api/ParkBountyApply.ts
index 16fefeb..0950200 100644
--- a/src/services/api/ParkBountyApply.ts
+++ b/src/services/api/ParkBountyApply.ts
@@ -17,6 +17,21 @@
   });
 }
 
+/** 鎾ゅ洖鐢虫姤 GET /api/ParkBountyApply/CancelParkBountyApply */
+export async function cancelParkBountyApply(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIcancelParkBountyApplyParams,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/ParkBountyApply/CancelParkBountyApply', {
+    method: 'GET',
+    params: {
+      ...params,
+    },
+    ...(options || {}),
+  });
+}
+
 /** 缁х画鐢虫姤 POST /api/ParkBountyApply/EditParkBountyApply */
 export async function editParkBountyApply(
   body: API.EditParkBountyApplyStepOneInput,
@@ -47,6 +62,32 @@
   });
 }
 
+/** 鑾峰彇杩愯惀绔� 濂栧姳閲戠敵鎶ュ垪琛� POST /api/ParkBountyApply/GetCustmoerParkBountyApplyList */
+export async function getCustmoerParkBountyApplyList(
+  body: API.GetCustomerParkBountyApplyListInput,
+  options?: API.RequestConfig
+) {
+  return request<API.GetParkBountyApplyListOutputPageOutput>(
+    '/api/ParkBountyApply/GetCustmoerParkBountyApplyList',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏀垮姟绔�斿伐浣滃彴鏁版嵁鐪嬫澘 GET /api/ParkBountyApply/GetGoverDataBoard */
+export async function getGoverDataBoard(options?: API.RequestConfig) {
+  return request<API.GetGoverDataBoardOutput>('/api/ParkBountyApply/GetGoverDataBoard', {
+    method: 'GET',
+    ...(options || {}),
+  });
+}
+
 /** 鑾峰彇宸茬敵鎶ヤ紒涓氬垪琛� 鍚彲閫夋嫨銆佸凡鍓旈櫎 POST /api/ParkBountyApply/GetHasApplyCompanyNameList */
 export async function getHasApplyCompanyNameList(
   body: API.GetHasApplyCompanyNameListInput,
@@ -65,12 +106,66 @@
   );
 }
 
+/** 鏀垮姟绔�-鏉愭枡瀹℃牳-鐢虫姤璇︽儏 POST /api/ParkBountyApply/GetOutCheckParkBountyApplyDetailBaseInfo */
+export async function getOutCheckParkBountyApplyDetailBaseInfo(
+  body: API.GetParkBountyApplyInfoInput,
+  options?: API.RequestConfig
+) {
+  return request<API.OutCheckParkBountyApplyBaseInfo>(
+    '/api/ParkBountyApply/GetOutCheckParkBountyApplyDetailBaseInfo',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏀垮姟绔�-鏉愭枡瀹℃牳-鐢虫姤浼佷笟鍚嶅崟 POST /api/ParkBountyApply/GetOutCheckParkBountyApplyDetailList */
+export async function getOutCheckParkBountyApplyDetailList(
+  body: API.GetParkBountyApplyInfoInput,
+  options?: API.RequestConfig
+) {
+  return request<API.ParkBountyApplyDetailInfoPageOutput>(
+    '/api/ParkBountyApply/GetOutCheckParkBountyApplyDetailList',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏀垮姟绔�-鏉愭枡瀹℃牳-鑾峰彇澶栭儴瀹℃牳鍒楄〃 POST /api/ParkBountyApply/GetOutcheckParkBountyList */
+export async function getOutcheckParkBountyList(
+  body: API.GetParkBountyApplyListInput,
+  options?: API.RequestConfig
+) {
+  return request<API.GetParkBountyApplyListOutputPageOutput>(
+    '/api/ParkBountyApply/GetOutcheckParkBountyList',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 璺熻繘鍥尯鏌ヨ鍏徃鍒嗛〉鍒楄〃 POST /api/ParkBountyApply/GetParkApplyCompanyList */
 export async function getParkApplyCompanyList(
   body: API.GetApplyCompanyListInput,
   options?: API.RequestConfig
 ) {
-  return request<API.GetParkApplyCompanyListOutputPageOutput>(
+  return request<API.ParkBountyApplyDetailInfoPageOutput>(
     '/api/ParkBountyApply/GetParkApplyCompanyList',
     {
       method: 'POST',
@@ -96,6 +191,24 @@
         'Content-Type': 'application/json',
       },
       data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 杩愯惀绔�-濂栧姳閲戝彂鏀�-鍏ヨ处-鑾峰彇鎵归噺鍏ヨ处涓湭鍏ヨ处鐨勪紒涓� GET /api/ParkBountyApply/GetParkBountyApplyBatchTransferEnterprise */
+export async function getParkBountyApplyBatchTransferEnterprise(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetParkBountyApplyBatchTransferEnterpriseParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetCompanyNameListOutput[]>(
+    '/api/ParkBountyApply/GetParkBountyApplyBatchTransferEnterprise',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
       ...(options || {}),
     }
   );
@@ -206,6 +319,42 @@
   );
 }
 
+/** 杩愯惀绔�-濂栧姳杩涘嚭璐﹁鎯� POST /api/ParkBountyApply/GetParkBountyTradeDetailList */
+export async function getParkBountyTradeDetailList(
+  body: API.GetParkBountyTradeDetailByIdInput,
+  options?: API.RequestConfig
+) {
+  return request<API.GetParkBountyTradeDetailOutputPageOutput>(
+    '/api/ParkBountyApply/GetParkBountyTradeDetailList',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 杩愯惀绔�-濂栧姳閲戜娇鐢ㄧ鐞嗗垪琛� POST /api/ParkBountyApply/GetParkBountyTradeList */
+export async function getParkBountyTradeList(
+  body: API.GetParkBountyTradeInput,
+  options?: API.RequestConfig
+) {
+  return request<API.GetParkBountyTradeOutputPageOutput>(
+    '/api/ParkBountyApply/GetParkBountyTradeList',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 杩愯惀绔�-鏀垮姟绔竴鍥尯瀹㈡埛绠$悊璇︽儏涓�浼佷笟鐢虫姤璁板綍 POST /api/ParkBountyApply/GetParkCustomerBountyApplyList */
 export async function getParkCustomerBountyApplyList(
   body: API.QueryParkCustomerBountyApplyInput,
@@ -275,6 +424,21 @@
   });
 }
 
+/** 鏀垮姟绔�-鏉愭枡瀹℃牳-澶栭儴瀹℃牳 POST /api/ParkBountyApply/OutcheckParkBountyApply */
+export async function outcheckParkBountyApply(
+  body: API.OutcheckParkBountyApplyInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/ParkBountyApply/OutcheckParkBountyApply', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 杩愯惀绔�斿叆璐�-鎵归噺鍏ヨ处 POST /api/ParkBountyApply/ParkBountyApplyBatchTransfer */
 export async function parkBountyApplyBatchTransfer(
   body: API.ParkBountyApplyBatchTransferInput,
@@ -305,6 +469,21 @@
   });
 }
 
+/** 杩愯惀绔�斿鍔遍噾-鍑鸿处 POST /api/ParkBountyApply/ParkBountyApplyTrade */
+export async function parkBountyApplyTrade(
+  body: API.CreateParkBountyTradeInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/ParkBountyApply/ParkBountyApplyTrade', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 杩愯惀绔�斿叆璐︹�斿鍔遍噾鍏ヨ处 POST /api/ParkBountyApply/ParkBountyApplyTransfer */
 export async function parkBountyApplyTransfer(
   body: API.ParkBountyApplyTransferInput,
diff --git a/src/services/api/UserRole.ts b/src/services/api/UserRole.ts
index 309f2fa..9d36735 100644
--- a/src/services/api/UserRole.ts
+++ b/src/services/api/UserRole.ts
@@ -17,6 +17,21 @@
   });
 }
 
+/** 鏀垮姟绔竴绯荤粺閰嶇疆涓�鍒涘缓鏀垮姟绔敤鎴� POST /api/UserRole/CreateGovermentClientUser */
+export async function createGovermentClientUser(
+  body: API.CreateGoverUserInput,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/UserRole/CreateGovermentClientUser', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鏂板瑙掕壊 POST /api/UserRole/CreateRole */
 export async function createRole(body: API.CreateBaseRoleInput, options?: API.RequestConfig) {
   return request<string>('/api/UserRole/CreateRole', {
@@ -131,6 +146,21 @@
   });
 }
 
+/** 鏀垮姟绔竴绯荤粺閰嶇疆涓�缂栬緫鏀垮姟绔处鎴� POST /api/UserRole/UpdateGovermentClientUser */
+export async function updateGovermentClientUser(
+  body: API.UpdateGovermentClientUserInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/UserRole/UpdateGovermentClientUser', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 瑙掕壊缂栬緫 POST /api/UserRole/UpdateRole */
 export async function updateRole(body: API.CreateOrUpdateRoleInput, options?: API.RequestConfig) {
   return request<number>('/api/UserRole/UpdateRole', {
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index dac04de..e6d6ec9 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -946,6 +946,10 @@
     walletAccountType?: WalletAccountTypeEnum;
   }
 
+  interface APIcancelParkBountyApplyParams {
+    parkBountyApplyId?: string;
+  }
+
   interface APIcheckUserCertificationRepeatParams {
     userId?: string;
     enterpriseName?: string;
@@ -1550,6 +1554,10 @@
 
   interface APIgetParams {
     id?: string;
+  }
+
+  interface APIgetParkBountyApplyBatchTransferEnterpriseParams {
+    parkBountyApplyId?: string;
   }
 
   interface APIgetParkCustomerManageBaseDetailParams {
@@ -3883,6 +3891,21 @@
     status?: CooperationApplyStatusEnum;
   }
 
+  interface CreateGoverUserInput {
+    /** 鍚嶇О */
+    name?: string;
+    /** 鐢ㄦ埛鍚� */
+    userName?: string;
+    /** 澶囨敞 */
+    remark?: string;
+    /** 鎵嬫満鍙� */
+    phoneNumber?: string;
+    /** 瑙掕壊 */
+    roleNames?: string[];
+    /** 瀵嗙爜 */
+    password?: string;
+  }
+
   interface CreateInformationAdvertiseInput {
     /** 瀵瑰鑱旂郴浜� */
     outerContacter?: string;
@@ -4841,6 +4864,16 @@
     name: string;
     /** 鎺掑簭 */
     sequence?: number;
+  }
+
+  interface CreateParkBountyTradeInput {
+    enterpriseId?: string;
+    /** 鏈�杩戝嚭璐﹂噾棰� */
+    tradeAmount?: number;
+    /** 鍑鸿处鍑瘉 */
+    payFileUrl?: string;
+    /** 娑堣垂绫诲瀷 */
+    payRemark?: string;
   }
 
   interface CreateParkOrHRAdvertiseInput {
@@ -6533,6 +6566,26 @@
     data?: GetCustomerListOutput[];
   }
 
+  interface GetCustomerParkBountyApplyListInput {
+    pageModel?: Pagination;
+    /** 鐢宠鎵规鍙� */
+    batchNo?: string;
+    /** 鐢宠璧峰鏃ユ湡 */
+    creationTimeBegin?: string;
+    /** 鐢宠缁撴潫鏃ユ湡 */
+    creationTimeEnd?: string;
+    /** 鍐呴儴瀹℃牳璧峰鏃ユ湡 */
+    inCheckTimeBegin?: string;
+    /** 鍐呴儴瀹℃牳缁撴潫鏃ユ湡 */
+    inCheckTimeEnd?: string;
+    /** 澶栭儴瀹℃牳璧峰鏃ユ湡 */
+    outCheckTimeBegin?: string;
+    /** 澶栭儴瀹℃牳缁撴潫鏃ユ湡 */
+    outCheckTimeEnd?: string;
+    outCheckStatus?: BountyCheckStatusEnum;
+    inCheckStatus?: BountyCheckStatusEnum;
+  }
+
   interface GetCustomersExportInput {
     /** 鏌ヨ鏉′欢锛氱敳鏂瑰悕绉�/鑱旂郴浜� */
     queryCondition?: string;
@@ -6745,6 +6798,25 @@
     signName?: string;
     status?: LgGigWorkerSignStatus;
     settingStatus?: LgGigWorkerSignSettingStatus;
+  }
+
+  interface GetGoverDataBoardOutput {
+    /** 寰呭鏍� */
+    waitCheckEnterpriseNumber?: number;
+    /** 濂栧姳閲戝緟鍙戞斁 */
+    waitForSettleRewardNumber?: number;
+    /** 绱宸插鏍镐紒涓� */
+    accumulatedCheckEnterpriseNumber?: number;
+    /** 绱宸插鏍搁�氳繃浼佷笟 */
+    accumulatedCheckPassEnterpriseNumber?: number;
+    /** 绱鏈鏍搁�氳繃浼佷笟 */
+    accumulatedCheckRejectEnterpriseNumber?: number;
+    /** 绱宸插彂鏀惧鍔遍噾 */
+    accumulatedHasSettleRewardAmount?: number;
+    /** 绱寰呭彂鏀惧鍔遍噾 */
+    accumulatedWaitForSettleRewardAmount?: number;
+    /** 绱宸蹭娇鐢ㄥ鍔遍噾 */
+    accumulatedUsedRewardAmount?: number;
   }
 
   interface GetHasApplyCompanyNameListInput {
@@ -7757,32 +7829,6 @@
     enterinessName?: string;
   }
 
-  interface GetParkApplyCompanyListOutput {
-    id?: string;
-    userName?: string;
-    enterpriseName?: string;
-    bankIsVerify?: boolean;
-    /** 钀ヤ笟鎵х収鏂囦欢鍦板潃 */
-    licenseUrl?: string;
-    /** 缁熶竴绀句細淇$敤浠g爜 */
-    societyCreditCode?: string;
-    /** 浼佷笟淇℃伅鏄惁宸插畬鍠� */
-    enterpriseIsVerify?: boolean;
-    authType?: EnterpriseTypeEnum;
-    /** 浼佷笟绫诲瀷 10浜哄姏璧勬簮鍏徃 20鐢叉柟浼佷笟 30琛屼笟閰嶅 40琛屼笟鏈烘瀯 */
-    type?: number;
-    /** 鐢ㄦ埛鎵嬫満鍙� */
-    phoneNumber?: string;
-    /** 鍒涘缓鏃堕棿 */
-    creationTime?: string;
-  }
-
-  interface GetParkApplyCompanyListOutputPageOutput {
-    pageModel?: Pagination;
-    objectData?: any;
-    data?: GetParkApplyCompanyListOutput[];
-  }
-
   interface GetParkApplyCompanyStepTwoListInput {
     pageModel?: Pagination;
     parkBountyApplyId?: string;
@@ -7791,6 +7837,8 @@
     bankIsVerify?: boolean;
     /** 钀ヤ笟鎵х収鏄惁宸插畬鍠� */
     enterpriseIsVerify?: boolean;
+    /** 閫夋嫨鍏徃Id */
+    removeCompanyIds?: string[];
   }
 
   interface GetParkBountyApplyFileInput {
@@ -7874,6 +7922,9 @@
     /** 鍙戞斁鏃ユ湡 */
     settleTime?: string;
     incomeStatus?: IncomeStatusEnum;
+    inCheckStatus?: BountyCheckStatusEnum;
+    /** 鍐呴儴瀹℃牳鏃ユ湡 */
+    inCheckTime?: string;
     outCheckStatus?: BountyCheckStatusEnum;
     /** 澶栭儴瀹℃牳鏃ユ湡 */
     outCheckTime?: string;
@@ -7891,6 +7942,82 @@
     /** 浼佷笟鍚�/淇$敤浠g爜 */
     searchKeyWord?: string;
     transferToStatus?: TransferToStatusEnum;
+  }
+
+  interface GetParkBountyTradeDetailByIdInput {
+    pageModel?: Pagination;
+    /** 浼佷笟鍚�/淇$敤浠g爜 */
+    searchKeyWord?: string;
+    /** 鐢宠璧峰鏃ユ湡 */
+    creationTimeBegin?: string;
+    /** 鐢宠缁撴潫鏃ユ湡 */
+    creationTimeEnd?: string;
+    /** 鍑鸿处璧峰鏃ユ湡 */
+    transferTimeBegin?: string;
+    /** 鍑鸿处缁撴潫鏃ユ湡 */
+    transferTimeEnd?: string;
+    enterpriseId?: string;
+  }
+
+  interface GetParkBountyTradeDetailOutput {
+    /** 鏈�杩戝嚭璐﹂噾棰� */
+    tradeAmount?: number;
+    /** 鍑鸿处鍑瘉 */
+    payFileUrl?: string;
+    /** 娑堣垂绫诲瀷 */
+    payRemark?: string;
+    /** 鍑鸿处鏃堕棿 */
+    tradeTime?: string;
+    /** 濂栧姳閲戜綑棰� */
+    remianAmount?: number;
+  }
+
+  interface GetParkBountyTradeDetailOutputPageOutput {
+    pageModel?: Pagination;
+    objectData?: any;
+    data?: GetParkBountyTradeDetailOutput[];
+  }
+
+  interface GetParkBountyTradeInput {
+    pageModel?: Pagination;
+    /** 浼佷笟鍚�/淇$敤浠g爜 */
+    searchKeyWord?: string;
+    /** 鐢宠璧峰鏃ユ湡 */
+    creationTimeBegin?: string;
+    /** 鐢宠缁撴潫鏃ユ湡 */
+    creationTimeEnd?: string;
+    /** 鍑鸿处璧峰鏃ユ湡 */
+    transferTimeBegin?: string;
+    /** 鍑鸿处缁撴潫鏃ユ湡 */
+    transferTimeEnd?: string;
+  }
+
+  interface GetParkBountyTradeOutput {
+    /** 璐﹀彿 */
+    userName?: string;
+    /** 浼佷笟鍚嶇О */
+    enterpriseName?: string;
+    /** 鐢佃瘽 */
+    contactPhone?: string;
+    /** 绀句細缁熶竴淇$敤浠g爜 */
+    societyCreditCode?: string;
+    authType?: EnterpriseTypeEnum;
+    /** 鏈�杩戝嚭璐﹂噾棰� */
+    tradeAmount?: number;
+    /** 鍑鸿处鏃堕棿 */
+    tradeTime?: string;
+    /** 濂栧姳閲戜綑棰� */
+    remianAmount?: number;
+    /** 鐢宠鍥尯 */
+    parkName?: string;
+    /** 鐢宠鍥尯绫诲瀷 */
+    parkTypeName?: string;
+  }
+
+  interface GetParkBountyTradeOutputPageOutput {
+    pageModel?: Pagination;
+    objectData?: any;
+    data?: GetParkBountyTradeOutput[];
   }
 
   interface GetParkCustomerBountyApplyOutput {
@@ -7924,6 +8051,7 @@
     remianAmount?: number;
     /** 鍑瘉 */
     payFileUrl?: string;
+    payFileUrls?: string[];
   }
 
   interface GetParkCustomerBountyConsumptionOutputPageOutput {
@@ -9492,6 +9620,10 @@
     id?: string;
     /** 鍥尯鍚嶇О */
     parkName?: string;
+    /** 鍥尯绫诲瀷 */
+    parkTypeId?: string;
+    /** 鍥尯绫诲瀷鍚嶇О */
+    parkTypeName?: string;
   }
 
   interface IndustrialParkListOutput {
@@ -14054,6 +14186,39 @@
     requestId?: string;
   }
 
+  interface OutCheckParkBountyApplyBaseInfo {
+    /** 鐢宠鎵规鍙� */
+    batchNo?: string;
+    /** 鐢宠鍥尯Id */
+    parkId?: string;
+    /** 鐢宠鍥尯 */
+    parkName?: string;
+    /** 鐢宠鍥尯绫诲瀷 */
+    parkTypeName?: string;
+    /** 鐢宠濂栧姳閲戞湀浠� */
+    applyMonth?: string;
+    /** 濂栧姳閲戞眹鎬婚噾棰� */
+    applySumAmount?: number;
+    /** 姹囨�绘槑缁嗚〃 */
+    enterpriseTaxSubFileUrl?: string;
+    /** 浼佷笟钀ユ敹姹囨�昏〃 */
+    enterpriseOperateFileUrl?: string;
+    /** 濂栧姳閲戝垎閰嶈〃 */
+    bountyAssignFileUlr?: string;
+    /** 濂栧姳閲戞眹鎬昏〃 */
+    bountyCollectFileUrl?: string;
+    outCheckStatus?: BountyCheckStatusEnum;
+    /** 澶栭儴瀹℃牳鍘熷洜 */
+    outCheckRemark?: string;
+  }
+
+  interface OutcheckParkBountyApplyInput {
+    parkBountyApplyId?: string;
+    outCheckStatus?: BountyCheckStatusEnum;
+    /** 澶囨敞 */
+    remark?: string;
+  }
+
   interface PageInput {
     pageModel?: Pagination;
   }
@@ -14117,6 +14282,7 @@
   interface ParkBountyApplyDetailInfo {
     parkBountyApplyId?: string;
     enterpriseId?: string;
+    userName?: string;
     /** 浼佷笟鍚嶇О */
     enterpriseName?: string;
     /** 鍩烘湰鎴蜂俊鎭� */
@@ -14140,8 +14306,6 @@
     /** C绔釜绋庡畬绋庢儏鍐佃鏄� */
     personTaxRatePayUrl?: string;
     authType?: EnterpriseTypeEnum;
-    /** 浼佷笟绫诲瀷 10浜哄姏璧勬簮鍏徃 20鐢叉柟浼佷笟 30琛屼笟閰嶅 40琛屼笟鏈烘瀯 */
-    type?: number;
     /** 閾惰淇℃伅鍙锋槸鍚﹀凡瀹屽杽 */
     bankIsVerify?: boolean;
     /** 浼佷笟淇℃伅鏄惁宸插畬鍠� */
@@ -16411,6 +16575,13 @@
     enterpriseIsVerify?: boolean;
     /** 鎵�灞炲洯鍖� */
     industrialParkId?: string;
+    /** 鏈�杩戠敵鎶ュ紑濮嬫棩鏈� */
+    lastApplyBeginTime?: string;
+    /** 鏈�杩戠敵鎶ョ粨鏉熸棩鏈� */
+    lastApplyEndTime?: string;
+    lastPayBeginTime?: string;
+    /** 鏈�杩戝彂鏀剧粨鏉熸棩鏈� */
+    lastPayEndTime?: string;
   }
 
   interface QueryParkOrHRAuditPageInput {
@@ -19052,6 +19223,23 @@
     id?: string;
   }
 
+  interface UpdateGovermentClientUserInput {
+    /** 鍚嶇О */
+    name?: string;
+    /** 鐢ㄦ埛鍚� */
+    userName?: string;
+    /** 澶囨敞 */
+    remark?: string;
+    /** 鎵嬫満鍙� */
+    phoneNumber?: string;
+    /** 瑙掕壊 */
+    roleNames?: string[];
+    /** 瀵嗙爜 */
+    password?: string;
+    /** 鐢ㄦ埛Id */
+    id?: string;
+  }
+
   interface UpdateIndustrialParkInput {
     /** 鍥尯鍚嶇О */
     parkName: string;
diff --git a/src/views/Account/AccountManageList.vue b/src/views/Account/AccountManageList.vue
index 77fa4ba..5a287cb 100644
--- a/src/views/Account/AccountManageList.vue
+++ b/src/views/Account/AccountManageList.vue
@@ -38,6 +38,7 @@
   defineOperationBtns,
 } from '@bole-core/components';
 import * as userRoleServices from '@/services/api/UserRole';
+import * as accountServices from '@/services/api/Account';
 import { Message, OrderInputType } from '@bole-core/core';
 import AddOrEditAccountDialog from './components/AddOrEditAccountDialog.vue';
 import ResetPasswordDialog from './components/ResetPasswordDialog.vue';
@@ -50,7 +51,7 @@
 const column: API.CustomModuleColumnDto[] = [
   {
     id: '1',
-    enCode: 'changeFlag',
+    enCode: 'userName',
     name: '璐﹀彿',
   },
   {
@@ -60,12 +61,12 @@
   },
   {
     id: '3',
-    enCode: 'idNumber',
+    enCode: 'phoneNumber',
     name: '鎵嬫満鍙�',
   },
   {
     id: '4',
-    enCode: 'workType',
+    enCode: 'remark',
     name: '澶囨敞',
   },
 ];
@@ -86,7 +87,7 @@
       name: '閲嶇疆瀵嗙爜',
     },
     emits: {
-      onClick: (role) => handleResetPasswordAdd(),
+      onClick: (role) => openResetPasswordDialog(role),
     },
   },
 ]);
@@ -162,30 +163,27 @@
 });
 
 async function handleAddOrEdit() {
-  // try {
-  //   let isEdit = !!editForm.id;
-  //   let params: API.CreateAccountInput = {
-  //     name: editForm.name,
-  //     userName: editForm.userName,
-  //     remark: editForm.remark,
-  //     password: editForm.password,
-  //     phoneNumber: editForm.phoneNumber,
-  //     channel: editForm.channel,
-  //     // clientId: RoleClientType.RoleBackendClientId,
-  //     roleNames: [editForm.roleName],
-  //   };
-  //   let res;
-  //   if (isEdit) {
-  //     (params as API.UpdateAccountInput).id = editForm.id;
-  //     res = await accountServices.updateAccount(params);
-  //   } else {
-  //     res = await accountServices.createAccount(params);
-  //   }
-  //   if (res) {
-  //     Message.successMessage('鎿嶄綔鎴愬姛');
-  //     getList(isEdit ? paginationState.pageIndex : 1);
-  //   }
-  // } catch (error) {}
+  try {
+    let isEdit = !!editForm.id;
+    let params: API.CreateAccountInput = {
+      name: editForm.name,
+      userName: editForm.userName,
+      remark: editForm.remark,
+      phoneNumber: editForm.phoneNumber,
+    };
+    let res;
+    if (isEdit) {
+      (params as API.UpdateGovermentClientUserInput).id = editForm.id;
+      res = await userRoleServices.updateGovermentClientUser(params);
+    } else {
+      (params as API.CreateGoverUserInput).password = editForm.password;
+      res = await userRoleServices.createGovermentClientUser(params);
+    }
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(isEdit ? paginationState.pageIndex : 1);
+    }
+  } catch (error) {}
 }
 
 const {
@@ -193,10 +191,31 @@
   handleAdd: handleResetPasswordAdd,
   editForm: resetPasswordEditForm,
 } = useFormDialog({
-  onConfirm: handleAddOrEdit,
+  onConfirm: resetPassword,
   defaultFormParams: {
-    id: '',
+    userId: '',
     password: '',
   },
 });
+
+function openResetPasswordDialog(row: API.UserDto) {
+  handleResetPasswordAdd({
+    userId: row.id,
+    password: '',
+  });
+}
+
+async function resetPassword() {
+  try {
+    let params: API.ResetPasswordBaseInput = {
+      userId: resetPasswordEditForm.userId,
+      password: resetPasswordEditForm.password,
+    };
+    let res = await accountServices.resetPassword(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
 </script>
diff --git a/src/views/Account/components/AddOrEditAccountDialog.vue b/src/views/Account/components/AddOrEditAccountDialog.vue
index a9cf30c..96591f3 100644
--- a/src/views/Account/components/AddOrEditAccountDialog.vue
+++ b/src/views/Account/components/AddOrEditAccountDialog.vue
@@ -30,7 +30,7 @@
         <ProFormText placeholder="璇疯緭鍏ユ墜鏈哄彿" v-model.trim="form.phoneNumber"></ProFormText>
       </ProFormItemV2>
       <ProFormItemV2
-        v-if="isEdit"
+        v-if="!isEdit"
         label="瀵嗙爜:"
         prop="password"
         :check-rules="[{ message: '璇疯緭鍏ュ瘑鐮�', required: !form.id }]"
diff --git a/src/views/Account/components/ResetPasswordDialog.vue b/src/views/Account/components/ResetPasswordDialog.vue
index b92542c..e974bfd 100644
--- a/src/views/Account/components/ResetPasswordDialog.vue
+++ b/src/views/Account/components/ResetPasswordDialog.vue
@@ -8,11 +8,7 @@
     :width="800"
   >
     <ProForm :model="form" ref="dialogForm" label-width="120px">
-      <ProFormItemV2
-        label="瀵嗙爜:"
-        prop="password"
-        :check-rules="[{ message: '璇疯緭鍏ュ瘑鐮�', required: !form.id }]"
-      >
+      <ProFormItemV2 label="瀵嗙爜:" prop="password" :check-rules="[{ message: '璇疯緭鍏ュ瘑鐮�' }]">
         <ProFormText
           placeholder="璇疯緭鍏ュ瘑鐮�"
           v-model.trim="form.password"
@@ -45,7 +41,7 @@
 
 type Form = {
   title?: string;
-  id: string;
+  userId: string;
   password: string;
 };
 
diff --git a/src/views/EnterpriseInfo/EnterpriseInfo.vue b/src/views/EnterpriseInfo/EnterpriseInfo.vue
index 0f8a514..d061b89 100644
--- a/src/views/EnterpriseInfo/EnterpriseInfo.vue
+++ b/src/views/EnterpriseInfo/EnterpriseInfo.vue
@@ -5,7 +5,7 @@
         <template #query>
           <QueryFilterItem tip-content="鏈�杩戠敵鎶ユ棩鏈�">
             <FieldDatePicker
-              v-model="extraParamState.date"
+              v-model="extraParamState.lastApplyTime"
               type="daterange"
               range-separator="~"
               start-placeholder="寮�濮嬫棩鏈�"
@@ -16,7 +16,7 @@
           </QueryFilterItem>
           <QueryFilterItem tip-content="鏈�杩戝彂鏀炬棩鏈�">
             <FieldDatePicker
-              v-model="extraParamState.date"
+              v-model="extraParamState.lastPayTime"
               type="daterange"
               range-separator="~"
               start-placeholder="寮�濮嬫棩鏈�"
@@ -27,7 +27,7 @@
           </QueryFilterItem>
           <QueryFilterItem>
             <SearchInput
-              v-model="extraParamState.keyword"
+              v-model="extraParamState.keywords"
               style="width: 300px"
               placeholder="浼佷笟鍚�/缁熶竴淇$敤浠g爜"
               @on-click-search="getList"
@@ -163,8 +163,11 @@
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        publishStartDate: format(extraParamState.date?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
-        publishEndDate: format(extraParamState.date?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        keywords: extraParamState.keywords,
+        lastApplyBeginTime: format(extraParamState.lastApplyTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        lastApplyEndTime: format(extraParamState.lastApplyTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        lastPayBeginTime: format(extraParamState.lastPayTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        lastPayEndTime: format(extraParamState.lastPayTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
       };
       let res = await parkBountyApplyServices.getParkCustomerManagePage(params, {
         showLoading: !state.loading,
@@ -174,9 +177,10 @@
   },
   {
     defaultExtraParams: {
-      keyword: '',
-      date: [] as unknown as ModelValueType,
-      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+      keywords: '',
+      lastApplyTime: [] as unknown as ModelValueType,
+      lastPayTime: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
     },
     columnsRenderProps: {
       lastApplyTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
@@ -187,7 +191,7 @@
   }
 );
 
-function goDetail(row: any) {
+function goDetail(row: API.GetParkCustomerManageOutput) {
   router.push({
     name: 'EnterpriseInfoDetail',
     params: {
diff --git a/src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue b/src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue
index 6ec96ca..ae0e574 100644
--- a/src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue
+++ b/src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue
@@ -96,9 +96,12 @@
   }
 );
 
-async function goDetail(row: API.InsureBatchBillDto) {
+async function goDetail(row: API.GetParkCustomerBountyApplyOutput) {
   router.push({
-    name: '',
+    name: 'MaterialReviewDetail',
+    params: {
+      id: row.id,
+    },
   });
 }
 
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index f5e15ff..4fe6e3a 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -4,11 +4,21 @@
       <ChunkCell title="寰呭鐞�">
         <div class="data-board-card-list">
           <DataBoardCard title="寰呭鏍镐紒涓�" :contentBetween="true">
-            <DataBoardCardPrice :value="20000" :isInline="true" :useThousand="false" unit="瀹�" />
+            <DataBoardCardPrice
+              :value="detail?.waitCheckEnterpriseNumber ?? 0"
+              :isInline="true"
+              :useThousand="false"
+              unit="瀹�"
+            />
             <el-button type="primary" link @click="goToAudit">鍘诲鏍�</el-button>
           </DataBoardCard>
           <DataBoardCard title="濂栧姳閲戝緟鍙戞斁" :contentBetween="true">
-            <DataBoardCardPrice :isInline="true" :value="20000" :useThousand="false" unit="瀹�" />
+            <DataBoardCardPrice
+              :isInline="true"
+              :value="detail?.waitForSettleRewardNumber ?? 0"
+              :useThousand="false"
+              unit="瀹�"
+            />
             <el-button type="primary" link @click="goToGrant">鍘诲彂鏀�</el-button>
           </DataBoardCard>
         </div>
@@ -16,22 +26,37 @@
       <ChunkCell title="鏁版嵁鐪嬫澘">
         <div class="data-board-card-list">
           <DataBoardCard title="绱宸插鏍镐紒涓�">
-            <DataBoardCardPrice :value="20000" :useThousand="false" unit="瀹�" />
+            <DataBoardCardPrice
+              :value="detail?.accumulatedCheckEnterpriseNumber ?? 0"
+              :useThousand="false"
+              unit="瀹�"
+            />
           </DataBoardCard>
           <DataBoardCard title="绱宸插鏍搁�氳繃浼佷笟">
-            <DataBoardCardPrice :value="20000" :useThousand="false" unit="瀹�" />
+            <DataBoardCardPrice
+              :value="detail?.accumulatedCheckPassEnterpriseNumber ?? 0"
+              :useThousand="false"
+              unit="瀹�"
+            />
           </DataBoardCard>
           <DataBoardCard title="绱鏈鏍搁�氳繃浼佷笟">
-            <DataBoardCardPrice :value="20000" :useThousand="false" unit="瀹�" />
+            <DataBoardCardPrice
+              :value="detail?.accumulatedCheckRejectEnterpriseNumber ?? 0"
+              :useThousand="false"
+              unit="瀹�"
+            />
           </DataBoardCard>
           <DataBoardCard title="绱宸插彂鏀惧鍔遍噾">
-            <DataBoardCardPrice :value="20000" unit="鍏�" />
+            <DataBoardCardPrice :value="detail?.accumulatedHasSettleRewardAmount ?? 0" unit="鍏�" />
           </DataBoardCard>
           <DataBoardCard title="绱寰呭彂鏀惧鍔遍噾">
-            <DataBoardCardPrice :value="20000" unit="鍏�" />
+            <DataBoardCardPrice
+              :value="detail?.accumulatedWaitForSettleRewardAmount ?? 0"
+              unit="鍏�"
+            />
           </DataBoardCard>
           <DataBoardCard title="绱宸蹭娇鐢ㄥ鍔遍噾">
-            <DataBoardCardPrice :value="20000" unit="鍏�" />
+            <DataBoardCardPrice :value="detail?.accumulatedUsedRewardAmount ?? 0" unit="鍏�" />
           </DataBoardCard>
         </div>
       </ChunkCell>
@@ -43,13 +68,25 @@
 import { AppContainer, ChunkCell } from '@bole-core/components';
 import DataBoardCard from '@/components/DataBoardCard/DataBoardCard.vue';
 import DataBoardCardPrice from '@/components/DataBoardCard/DataBoardCardPrice.vue';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
+import { useQuery, useQueryClient } from '@tanstack/vue-query';
 
 defineOptions({
   name: 'Home',
 });
 
 const router = useRouter();
-const isLoading = ref(false);
+
+const { data: detail, isLoading } = useQuery({
+  queryKey: ['parkBountyApplyServices/getGoverDataBoard'],
+  queryFn: async () => {
+    return await parkBountyApplyServices.getGoverDataBoard({
+      showLoading: false,
+    });
+  },
+  placeholderData: () => ({} as API.GetGoverDataBoardOutput),
+});
+
 function goToAudit() {
   router.push({
     name: 'MaterialReviewList',
@@ -60,6 +97,14 @@
     name: 'RewardGrant',
   });
 }
+
+const queryClient = useQueryClient();
+
+onMounted(async () => {
+  await queryClient.ensureQueryData({
+    queryKey: ['parkBountyApplyServices/getGoverDataBoard'],
+  });
+});
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue
index 7f317c5..774987f 100644
--- a/src/views/Login/Login.vue
+++ b/src/views/Login/Login.vue
@@ -178,6 +178,7 @@
     await userStore.loginByUsername({
       userName: unref(user),
       userPassword: unref(pwd),
+      clientId: 'goverend-admin-app-client',
     });
     loading.value = false;
     router.push({
diff --git a/src/views/MaterialReview/MaterialReview.vue b/src/views/MaterialReview/MaterialReview.vue
index c3e7ca4..c3f3735 100644
--- a/src/views/MaterialReview/MaterialReview.vue
+++ b/src/views/MaterialReview/MaterialReview.vue
@@ -3,9 +3,9 @@
     <AppContainer>
       <ProTableQueryFilterBar @on-reset="reset">
         <template #query>
-          <QueryFilterItem tip-content="鏈�杩戠敵鎶ユ棩鏈�">
+          <QueryFilterItem tip-content="鐢虫姤鏃ユ湡">
             <FieldDatePicker
-              v-model="extraParamState.date"
+              v-model="extraParamState.creationTime"
               type="daterange"
               range-separator="~"
               start-placeholder="寮�濮嬫棩鏈�"
@@ -14,9 +14,9 @@
               @change="getList()"
             ></FieldDatePicker>
           </QueryFilterItem>
-          <QueryFilterItem tip-content="鏈�杩戝彂鏀炬棩鏈�">
+          <QueryFilterItem tip-content="瀹℃牳鏃ユ湡">
             <FieldDatePicker
-              v-model="extraParamState.date"
+              v-model="extraParamState.outCheckTime"
               type="daterange"
               range-separator="~"
               start-placeholder="寮�濮嬫棩鏈�"
@@ -27,8 +27,8 @@
           </QueryFilterItem>
           <QueryFilterItem>
             <FieldRadio
-              v-model="extraParamState.showStatus"
-              :value-enum="DataRangeEnumText"
+              v-model="extraParamState.outCheckStatus"
+              :value-enum="BountyCheckStatusEnumText"
               buttonStyle
               showAllBtn
               @change="getList()"
@@ -36,7 +36,7 @@
           </QueryFilterItem>
           <QueryFilterItem>
             <SearchInput
-              v-model="extraParamState.keyword"
+              v-model="extraParamState.batchNo"
               style="width: 200px"
               placeholder="鎵规鍙�"
               @on-click-search="getList"
@@ -67,8 +67,8 @@
 } from '@bole-core/components';
 import { OrderInputType } from '@bole-core/core';
 import { format } from '@/utils';
-import { DataRangeEnum, DataRangeEnumText } from '@/constants';
-import * as informationServices from '@/services/api/Information';
+import { BountyCheckStatusEnum, BountyCheckStatusEnumText, DataRangeEnumText } from '@/constants';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
 import _ from 'lodash';
 import { ModelValueType } from 'element-plus';
 import { useGlobalEventContext } from '@/hooks';
@@ -80,42 +80,42 @@
 const column: API.CustomModuleColumnDto[] = [
   {
     id: '1',
-    enCode: 'changeFlag',
+    enCode: 'batchNo',
     name: '鐢宠鎵规鍙�',
   },
   {
     id: '2',
-    enCode: 'name',
+    enCode: 'parkName',
     name: '鐢宠鍥尯',
   },
   {
     id: '3',
-    enCode: 'idNumber',
+    enCode: 'parkTypeName',
     name: '鍥尯绫诲瀷',
   },
   {
     id: '4',
-    enCode: 'workType',
+    enCode: 'applyMonth',
     name: '鐢宠濂栧姳閲戞湀浠�',
   },
   {
     id: '5',
-    enCode: 'gender',
+    enCode: 'applySumAmount',
     name: '濂栧姳閲戞眹鎬婚噾棰濓紙鍏冿級',
   },
   {
     id: '6',
-    enCode: 'age',
+    enCode: 'creationTime',
     name: '鐢虫姤鏃ユ湡',
   },
   {
     id: '7',
-    enCode: 'birthDay',
+    enCode: 'outCheckTime',
     name: '瀹℃牳鏃ユ湡',
   },
   {
     id: '8',
-    enCode: 'phoneNumber',
+    enCode: 'outCheckStatus',
     name: '瀹℃牳鐘舵��',
   },
 ];
@@ -137,6 +137,10 @@
     },
     emits: {
       onClick: (role) => goAudit(role),
+    },
+    extraProps: {
+      hide: (row: API.GetParkBountyApplyListOutput) =>
+        row.outCheckStatus !== BountyCheckStatusEnum.WaitCheck,
     },
   },
 ]);
@@ -168,16 +172,20 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetInformationForManageInput = {
+      let params: API.GetParkBountyApplyListInput = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        publishStartDate: format(extraParamState.date?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
-        publishEndDate: format(extraParamState.date?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        batchNo: extraParamState.batchNo,
+        outCheckStatus: extraParamState.outCheckStatus,
+        creationTimeBegin: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        creationTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        outCheckTimeBegin: format(extraParamState.outCheckTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        outCheckTimeEnd: format(extraParamState.outCheckTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
       };
-      let res = await informationServices.getInformationForManage(params, {
+      let res = await parkBountyApplyServices.getOutcheckParkBountyList(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -185,15 +193,23 @@
   },
   {
     defaultExtraParams: {
-      keyword: '',
-      showStatus: '' as any as DataRangeEnum,
-      date: [] as unknown as ModelValueType,
+      batchNo: '',
+      outCheckStatus: '' as any as BountyCheckStatusEnum,
+      creationTime: [] as unknown as ModelValueType,
+      outCheckTime: [] as unknown as ModelValueType,
       orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+    },
+    columnsRenderProps: {
+      applyMonth: { type: 'date', format: 'YYYY骞碝M鏈�' },
+      creationTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+      outCheckTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+      applySumAmount: { type: 'money', precision: 2 },
+      outCheckStatus: { type: 'enum', valueEnum: BountyCheckStatusEnumText },
     },
   }
 );
 
-function goDetail(row: any) {
+function goDetail(row: API.GetParkBountyApplyListOutput) {
   router.push({
     name: 'MaterialReviewDetail',
     params: {
@@ -201,7 +217,7 @@
     },
   });
 }
-function goAudit(row: any) {
+function goAudit(row: API.GetParkBountyApplyListOutput) {
   router.push({
     name: 'MaterialReviewAudit',
     params: {
diff --git a/src/views/MaterialReview/MaterialReviewAudit.vue b/src/views/MaterialReview/MaterialReviewAudit.vue
index 104cf51..d92dc23 100644
--- a/src/views/MaterialReview/MaterialReviewAudit.vue
+++ b/src/views/MaterialReview/MaterialReviewAudit.vue
@@ -4,7 +4,12 @@
       <PageFormLayout title="鏉愭枡瀹℃牳">
         <DetailView :form="form" :has-form="true">
           <ChunkCellV2 title="鐢虫姤浼佷笟鍚嶅崟" class="chunk-cell-table">
-            <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView>
+            <DeclareEnterpriseTableView
+              :getList="getList"
+              :extra-param-state="extraParamState"
+              :pro-table-props="proTableProps"
+              :reset="reset"
+            ></DeclareEnterpriseTableView>
           </ChunkCellV2>
           <ChunkCell>
             <ProForm :model="form" ref="formRef" label-width="120px">
@@ -15,13 +20,20 @@
                     prop="status"
                     :check-rules="[{ message: '璇烽�夋嫨瀹℃牳鐘舵��' }]"
                   >
-                    <ProFormRadio v-model="form.status" :value-enum="DataRangeEnumText" />
+                    <ProFormRadio
+                      v-model="form.status"
+                      :value-enum="BountyCheckStatusEnumTextForAudit"
+                    />
                   </ProFormItemV2>
                 </ProFormColItem>
               </ProFormCol>
-              <ProFormCol>
+              <ProFormCol v-if="form.status === BountyCheckStatusEnum.CheckReject">
                 <ProFormColItem>
-                  <ProFormItemV2 label="椹冲洖鍘熷洜:" prop="remark">
+                  <ProFormItemV2
+                    label="椹冲洖鍘熷洜:"
+                    prop="remark"
+                    :check-rules="[{ message: '璇疯緭鍏ラ┏鍥炲師鍥�' }]"
+                  >
                     <ProFormTextArea
                       v-model="form.remark"
                       placeholder="璇疯緭鍏�"
@@ -56,22 +68,29 @@
   LoadingLayout,
   UploadUserFile,
   PageFormLayout,
+  useTable,
 } from '@bole-core/components';
-import { DataRangeEnum, DataRangeEnumText } from '@/constants';
+import {
+  AuthTypeText,
+  BountyCheckStatusEnum,
+  BountyCheckStatusEnumTextForAudit,
+} from '@/constants';
 import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue';
 import DetailView from '@/components/commonView/DetailView.vue';
 import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
 import { useQuery } from '@tanstack/vue-query';
 import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
-import { convertApi2FormUrlOnlyOne } from '@/utils';
-import { useRouteView } from '@/hooks';
+import { convertApi2FormUrlOnlyOne, setOSSLink } from '@/utils';
+import { useGlobalEventContext, useRouteView } from '@/hooks';
 import { FormInstance } from 'element-plus';
+import { Message, OrderInputType } from '@bole-core/core';
 
 defineOptions({
   name: 'MaterialReviewAudit',
 });
 
 const route = useRoute();
+const eventContext = useGlobalEventContext();
 const { closeViewPush } = useRouteView();
 const id = route.params?.id as string;
 const form = reactive({
@@ -85,16 +104,14 @@
   bountyAssignFileUlr: [] as UploadUserFile[],
   bountyCollectFileUrl: [] as UploadUserFile[],
 
-  status: '' as any as DataRangeEnum,
+  status: '' as any as BountyCheckStatusEnum,
   remark: '',
 });
 
-const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
-
 const { data: detail, isLoading } = useQuery({
-  queryKey: ['parkBountyApplyServices/getParkBountyApplyDetail', id],
+  queryKey: ['parkBountyApplyServices/getOutCheckParkBountyApplyDetailBaseInfo', id],
   queryFn: async () => {
-    return await parkBountyApplyServices.getParkBountyApplyDetailBaseInfo(
+    return await parkBountyApplyServices.getOutCheckParkBountyApplyDetailBaseInfo(
       { parkBountyApplyId: id },
       {
         showLoading: false,
@@ -113,9 +130,48 @@
     form.bountyAssignFileUlr = convertApi2FormUrlOnlyOne(data?.bountyAssignFileUlr);
     form.bountyCollectFileUrl = convertApi2FormUrlOnlyOne(data?.bountyCollectFileUrl);
 
-    tableRef.value?.getList();
+    getList();
   },
 });
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetParkBountyApplyInfoInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        searchKeyWord: extraParamState.searchKeyWord,
+        parkBountyApplyId: id,
+      };
+      let res = await parkBountyApplyServices.getOutCheckParkBountyApplyDetailList(params);
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'enterpriseId', order: OrderInputType.Desc }],
+      searchKeyWord: '',
+    },
+    columnsRenderProps: {
+      authType: { type: 'enum', valueEnum: AuthTypeText },
+      licenseUrl: {
+        type: 'url',
+        formatter: (row: API.UserCertificationAuditListDto) => setOSSLink(row.licenseUrl),
+        modal: true,
+        showDownloadBtn: false,
+      },
+    },
+  }
+);
 
 function handleBack() {
   closeViewPush(route, {
@@ -135,7 +191,21 @@
   });
 }
 
-function confirm() {}
+async function confirm() {
+  try {
+    let params: API.OutcheckParkBountyApplyInput = {
+      parkBountyApplyId: id,
+      outCheckStatus: form.status,
+      remark: form.remark,
+    };
+    let res = await parkBountyApplyServices.outcheckParkBountyApply(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      eventContext.emit('materialReviewAudit:audit');
+      handleBack();
+    }
+  } catch (error) {}
+}
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/MaterialReview/MaterialReviewDetail.vue b/src/views/MaterialReview/MaterialReviewDetail.vue
index ba85cbb..cc0fb29 100644
--- a/src/views/MaterialReview/MaterialReviewDetail.vue
+++ b/src/views/MaterialReview/MaterialReviewDetail.vue
@@ -6,16 +6,24 @@
           <div class="page-form-layout-title">
             鐢虫姤璇︽儏
             <span class="page-form-layout-title-item status">
-              {{ `瀹℃牳鐘舵��:${form.categoryName}` }}
+              {{ `瀹℃牳鐘舵��:${BountyCheckStatusEnumText[form.outCheckStatus]}` }}
             </span>
-            <span class="page-form-layout-title-item remark">
-              {{ `瀹℃牳鏈�氳繃鍘熷洜:${form.categoryName}` }}
+            <span
+              v-if="form.outCheckStatus === BountyCheckStatusEnum.CheckReject"
+              class="page-form-layout-title-item remark"
+            >
+              {{ `瀹℃牳鏈�氳繃鍘熷洜:${form.outCheckRemark ?? ''}` }}
             </span>
           </div>
         </template>
         <DetailView :form="form">
           <ChunkCellV2 title="鐢虫姤浼佷笟鍚嶅崟">
-            <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView>
+            <DeclareEnterpriseTableView
+              :getList="getList"
+              :extra-param-state="extraParamState"
+              :pro-table-props="proTableProps"
+              :reset="reset"
+            ></DeclareEnterpriseTableView>
           </ChunkCellV2>
         </DetailView>
         <template #footer>
@@ -27,14 +35,22 @@
 </template>
 
 <script setup lang="ts">
-import { AppContainer, LoadingLayout, UploadUserFile, PageFormLayout } from '@bole-core/components';
+import {
+  AppContainer,
+  LoadingLayout,
+  UploadUserFile,
+  PageFormLayout,
+  useTable,
+} from '@bole-core/components';
 import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue';
 import DetailView from '@/components/commonView/DetailView.vue';
 import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
 import { useQuery } from '@tanstack/vue-query';
 import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
-import { convertApi2FormUrlOnlyOne } from '@/utils';
+import { convertApi2FormUrlOnlyOne, setOSSLink } from '@/utils';
 import { useRouteView } from '@/hooks';
+import { OrderInputType } from '@bole-core/core';
+import { AuthTypeText, BountyCheckStatusEnum, BountyCheckStatusEnumText } from '@/constants';
 
 defineOptions({
   name: 'MaterialReviewDetail',
@@ -54,37 +70,79 @@
   bountyAssignFileUlr: [] as UploadUserFile[],
   bountyCollectFileUrl: [] as UploadUserFile[],
 
-  categoryName: '',
+  outCheckStatus: '' as any as BountyCheckStatusEnum,
+  outCheckRemark: '',
 });
 
 const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
 
 const { data: detail, isLoading } = useQuery({
-  queryKey: ['parkBountyApplyServices/getParkBountyApplyDetail', id],
+  queryKey: ['parkBountyApplyServices/getOutCheckParkBountyApplyDetailBaseInfo', id],
   queryFn: async () => {
-    return await parkBountyApplyServices.getParkBountyApplyDetailBaseInfo(
+    return await parkBountyApplyServices.getOutCheckParkBountyApplyDetailBaseInfo(
       { parkBountyApplyId: id },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.ParkBountyApplyBaseInfo),
+  placeholderData: () => ({} as API.OutCheckParkBountyApplyBaseInfo),
   onSuccess(data) {
     form.batchNo = data.batchNo;
     form.parkName = data.parkName;
     form.parkTypeName = data.parkTypeName;
     form.applyMonth = data.applyMonth;
     form.applySumAmount = data.applySumAmount;
+    form.outCheckStatus = data.outCheckStatus;
+    form.outCheckRemark = data.outCheckRemark;
     form.enterpriseTaxSubFileUrl = convertApi2FormUrlOnlyOne(data?.enterpriseTaxSubFileUrl);
     form.enterpriseOperateFileUrl = convertApi2FormUrlOnlyOne(data?.enterpriseOperateFileUrl);
     form.bountyAssignFileUlr = convertApi2FormUrlOnlyOne(data?.bountyAssignFileUlr);
     form.bountyCollectFileUrl = convertApi2FormUrlOnlyOne(data?.bountyCollectFileUrl);
 
-    tableRef.value?.getList();
+    getList();
   },
 });
 
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetParkBountyApplyInfoInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        searchKeyWord: extraParamState.searchKeyWord,
+        parkBountyApplyId: id,
+      };
+      let res = await parkBountyApplyServices.getOutCheckParkBountyApplyDetailList(params);
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'enterpriseId', order: OrderInputType.Desc }],
+      searchKeyWord: '',
+    },
+    columnsRenderProps: {
+      authType: { type: 'enum', valueEnum: AuthTypeText },
+      licenseUrl: {
+        type: 'url',
+        formatter: (row: API.UserCertificationAuditListDto) => setOSSLink(row.licenseUrl),
+        modal: true,
+        showDownloadBtn: false,
+      },
+    },
+  }
+);
+
 function handleBack() {
   closeViewPush(route, {
     name: 'MaterialReviewList',

--
Gitblit v1.9.1