From 89436385a31b0f31c33bb4688ab7c3b549ecc125 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 10 十二月 2025 17:15:52 +0800
Subject: [PATCH] feat: databoard

---
 src/views/DataBoard/components/DataBoardContentItem.vue       |    4 
 src/assets/dataBoard/data-board-center-icon2.png              |    0 
 src/assets/dataBoard/data-board-title-bg.png                  |    0 
 src/views/DataBoard/hooks/index.ts                            |  134 +++++++
 src/assets/dataBoard/data-board-data-info-bg1.png             |    0 
 src/assets/dataBoard/data-board-center-icon7.png              |    0 
 src/views/DataBoard/components/DataBoardCenterDataContent.vue |  167 ++++++---
 src/assets/dataBoard/data-board-data-info-bg5.png             |    0 
 src/services/api/EnterpriseApplyFile.ts                       |   18 +
 src/assets/dataBoard/data-board-center-icon5.png              |    0 
 src/services/api/DataBoard.ts                                 |  176 ++++++++++
 src/style/index.scss                                          |    7 
 src/assets/dataBoard/data-board-center-map.png                |    0 
 src/views/DataBoard/components/DataBoardCenterMap.vue         |  120 ++++--
 src/views/DataBoard/components/DataBoardTableView.vue         |    6 
 src/assets/dataBoard/data-board-center-icon1.png              |    0 
 src/assets/dataBoard/data-board-center-icon6.png              |    0 
 src/assets/dataBoard/data-board-data-info-bg4.png             |    0 
 src/views/DataBoard/components/DataBoardDataInfoItem.vue      |    2 
 src/views/DataBoard/DataBoardHome.vue                         |  125 +++++--
 src/views/DataBoard/utils/index.ts                            |   99 +++++
 src/assets/dataBoard/data-board-center-icon4.png              |    0 
 src/services/api/typings.d.ts                                 |  145 ++++++++
 src/assets/dataBoard/data-board-data-info-bg7.png             |    0 
 src/assets/dataBoard/data-board-center-chart-bg.png           |    0 
 src/assets/dataBoard/data-board-data-info-bg3.png             |    0 
 src/assets/fonts/DINAlternate-Bold.woff2                      |    0 
 src/assets/dataBoard/data-board-center-icon3.png              |    0 
 src/assets/dataBoard/data-board-data-info-bg6.png             |    0 
 src/assets/dataBoard/data-board-data-info-bg2.png             |    0 
 src/views/DataBoard/components/DataBoardCenterDataItem.vue    |   12 
 31 files changed, 861 insertions(+), 154 deletions(-)

diff --git a/src/assets/dataBoard/data-board-center-chart-bg.png b/src/assets/dataBoard/data-board-center-chart-bg.png
index 12aaf93..35a7413 100644
--- a/src/assets/dataBoard/data-board-center-chart-bg.png
+++ b/src/assets/dataBoard/data-board-center-chart-bg.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-icon1.png b/src/assets/dataBoard/data-board-center-icon1.png
index 754a590..1e8826e 100644
--- a/src/assets/dataBoard/data-board-center-icon1.png
+++ b/src/assets/dataBoard/data-board-center-icon1.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-icon2.png b/src/assets/dataBoard/data-board-center-icon2.png
index baa1574..f9b5099 100644
--- a/src/assets/dataBoard/data-board-center-icon2.png
+++ b/src/assets/dataBoard/data-board-center-icon2.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-icon3.png b/src/assets/dataBoard/data-board-center-icon3.png
index a7a3a1d..bf3d17a 100644
--- a/src/assets/dataBoard/data-board-center-icon3.png
+++ b/src/assets/dataBoard/data-board-center-icon3.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-icon4.png b/src/assets/dataBoard/data-board-center-icon4.png
new file mode 100644
index 0000000..7f4fdd7
--- /dev/null
+++ b/src/assets/dataBoard/data-board-center-icon4.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-icon5.png b/src/assets/dataBoard/data-board-center-icon5.png
new file mode 100644
index 0000000..8f16989
--- /dev/null
+++ b/src/assets/dataBoard/data-board-center-icon5.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-icon6.png b/src/assets/dataBoard/data-board-center-icon6.png
new file mode 100644
index 0000000..e7df120
--- /dev/null
+++ b/src/assets/dataBoard/data-board-center-icon6.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-icon7.png b/src/assets/dataBoard/data-board-center-icon7.png
new file mode 100644
index 0000000..219418d
--- /dev/null
+++ b/src/assets/dataBoard/data-board-center-icon7.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-center-map.png b/src/assets/dataBoard/data-board-center-map.png
index 59862d9..a537fd5 100644
--- a/src/assets/dataBoard/data-board-center-map.png
+++ b/src/assets/dataBoard/data-board-center-map.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-data-info-bg1.png b/src/assets/dataBoard/data-board-data-info-bg1.png
index d9f19a3..11b9338 100644
--- a/src/assets/dataBoard/data-board-data-info-bg1.png
+++ b/src/assets/dataBoard/data-board-data-info-bg1.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-data-info-bg2.png b/src/assets/dataBoard/data-board-data-info-bg2.png
index ac63e2a..a90cafe 100644
--- a/src/assets/dataBoard/data-board-data-info-bg2.png
+++ b/src/assets/dataBoard/data-board-data-info-bg2.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-data-info-bg3.png b/src/assets/dataBoard/data-board-data-info-bg3.png
index bfef642..389b77d 100644
--- a/src/assets/dataBoard/data-board-data-info-bg3.png
+++ b/src/assets/dataBoard/data-board-data-info-bg3.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-data-info-bg4.png b/src/assets/dataBoard/data-board-data-info-bg4.png
index d65983b..222e6d4 100644
--- a/src/assets/dataBoard/data-board-data-info-bg4.png
+++ b/src/assets/dataBoard/data-board-data-info-bg4.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-data-info-bg5.png b/src/assets/dataBoard/data-board-data-info-bg5.png
index daff347..2ce8618 100644
--- a/src/assets/dataBoard/data-board-data-info-bg5.png
+++ b/src/assets/dataBoard/data-board-data-info-bg5.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-data-info-bg6.png b/src/assets/dataBoard/data-board-data-info-bg6.png
index a5f7d59..bf2846d 100644
--- a/src/assets/dataBoard/data-board-data-info-bg6.png
+++ b/src/assets/dataBoard/data-board-data-info-bg6.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-data-info-bg7.png b/src/assets/dataBoard/data-board-data-info-bg7.png
index 3fecb41..f44b81e 100644
--- a/src/assets/dataBoard/data-board-data-info-bg7.png
+++ b/src/assets/dataBoard/data-board-data-info-bg7.png
Binary files differ
diff --git a/src/assets/dataBoard/data-board-title-bg.png b/src/assets/dataBoard/data-board-title-bg.png
index 165d571..506f943 100644
--- a/src/assets/dataBoard/data-board-title-bg.png
+++ b/src/assets/dataBoard/data-board-title-bg.png
Binary files differ
diff --git a/src/assets/fonts/DINAlternate-Bold.woff2 b/src/assets/fonts/DINAlternate-Bold.woff2
new file mode 100644
index 0000000..833fe23
--- /dev/null
+++ b/src/assets/fonts/DINAlternate-Bold.woff2
Binary files differ
diff --git a/src/services/api/DataBoard.ts b/src/services/api/DataBoard.ts
index 79bb9f7..eda960d 100644
--- a/src/services/api/DataBoard.ts
+++ b/src/services/api/DataBoard.ts
@@ -20,6 +20,24 @@
   );
 }
 
+/** 鏌ヨ鏁版嵁鐪嬫澘鍔冲姟浜哄憳鎺掕 GET /api/DataBoard/GetDataBoardEnterpriseClientUserRank */
+export async function getDataBoardEnterpriseClientUserRank(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetDataBoardEnterpriseClientUserRankParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetDataBoardEnterpriseClientUserRankOutput>(
+    '/api/DataBoard/GetDataBoardEnterpriseClientUserRank',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
+      ...(options || {}),
+    }
+  );
+}
+
 /** 鏌ヨ鏁版嵁鐪嬫澘鎶曚繚浜烘暟鎺掕 GET /api/DataBoard/GetDataBoardInsurePeopleCountRank */
 export async function getDataBoardInsurePeopleCountRank(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
@@ -28,6 +46,44 @@
 ) {
   return request<API.GetDataBoardInsurePeopleCountRankOutput>(
     '/api/DataBoard/GetDataBoardInsurePeopleCountRank',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ鏁版嵁鐪嬫澘涓婂搴﹀湪绾垮姵鍔′汉鍛樻暟鎹� GET /api/DataBoard/GetDataBoardLastQuarterEnterpriseClientUserCount */
+export async function getDataBoardLastQuarterEnterpriseClientUserCount(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetDataBoardLastQuarterEnterpriseClientUserCountParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetDataBoardLastQuarterEnterpriseClientUserCountOutput>(
+    '/api/DataBoard/GetDataBoardLastQuarterEnterpriseClientUserCount',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+        input: undefined,
+        ...params['input'],
+      },
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ鏁版嵁鐪嬫澘涓婂搴︿氦鏄撴暟鎹� GET /api/DataBoard/GetDataBoardLastQuarterOutputValueCount */
+export async function getDataBoardLastQuarterOutputValueCount(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetDataBoardLastQuarterOutputValueCountParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetDataBoardLastQuarterOutputValueCountOutput>(
+    '/api/DataBoard/GetDataBoardLastQuarterOutputValueCount',
     {
       method: 'GET',
       params: {
@@ -70,8 +126,6 @@
       method: 'GET',
       params: {
         ...params,
-        input: undefined,
-        ...params['input'],
       },
       ...(options || {}),
     }
@@ -90,8 +144,6 @@
       method: 'GET',
       params: {
         ...params,
-        input: undefined,
-        ...params['input'],
       },
       ...(options || {}),
     }
@@ -138,6 +190,24 @@
   );
 }
 
+/** 鏌ヨ鏁版嵁鐪嬫澘浜ゆ槗鎺掕 GET /api/DataBoard/GetDataBoardOutputValueRank */
+export async function getDataBoardOutputValueRank(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetDataBoardOutputValueRankParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetDataBoardOutputValueRankOutput>(
+    '/api/DataBoard/GetDataBoardOutputValueRank',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
+      ...(options || {}),
+    }
+  );
+}
+
 /** 鏌ヨ鏁版嵁鐪嬫澘姒傚喌 GET /api/DataBoard/GetDataBoardOverview */
 export async function getDataBoardOverview(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
@@ -172,3 +242,101 @@
     }
   );
 }
+
+/** 鏌ヨ鏁版嵁鐪嬫澘鍥尯姒傚喌锛堢浜岀増锛� GET /api/DataBoard/GetDataBoardOverviewByParkV2 */
+export async function getDataBoardOverviewByParkV2(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetDataBoardOverviewByParkV2Params,
+  options?: API.RequestConfig
+) {
+  return request<API.GetDataBoardOverviewByParkV2Output>(
+    '/api/DataBoard/GetDataBoardOverviewByParkV2',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ浼佷笟C绔敤鎴峰鍏ヤ俊鎭� POST /api/DataBoard/GetEnterpriseCustomerImports */
+export async function getEnterpriseCustomerImports(
+  body: API.GetEnterpriseCustomerImportsInput,
+  options?: API.RequestConfig
+) {
+  return request<API.GetEnterpriseCustomerImportsOutputPageOutput>(
+    '/api/DataBoard/GetEnterpriseCustomerImports',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ浜鸿祫浼佷笟鐨勭敳鏂瑰鎴� GET /api/DataBoard/GetEnterpriseCustomers */
+export async function getEnterpriseCustomers(options?: API.RequestConfig) {
+  return request<any>('/api/DataBoard/GetEnterpriseCustomers', {
+    method: 'GET',
+    ...(options || {}),
+  });
+}
+
+/** 鏌ヨ浜у�� GET /api/DataBoard/GetEnterpriseOutputValue */
+export async function getEnterpriseOutputValue(options?: API.RequestConfig) {
+  return request<any>('/api/DataBoard/GetEnterpriseOutputValue', {
+    method: 'GET',
+    ...(options || {}),
+  });
+}
+
+/** 瀵煎叆浼佷笟C绔敤鎴� POST /api/DataBoard/ImportEnterpriseCustomerUsers */
+export async function importEnterpriseCustomerUsers(options?: API.RequestConfig) {
+  return request<any>('/api/DataBoard/ImportEnterpriseCustomerUsers', {
+    method: 'POST',
+    ...(options || {}),
+  });
+}
+
+/** 閲嶆柊瀵煎叆浼佷笟C绔敤鎴� POST /api/DataBoard/ReImportEnterpriseCustomerUsers/ReImportEnterpriseCustomerUsers/${param0} */
+export async function reImportEnterpriseCustomerUsersReImportEnterpriseCustomerUsersId(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIreImportEnterpriseCustomerUsersReImportEnterpriseCustomerUsersIdParams,
+  body: {},
+  file?: File,
+  options?: API.RequestConfig
+) {
+  const { id: param0, ...queryParams } = params;
+  const formData = new FormData();
+
+  if (file) {
+    formData.append('file', file);
+  }
+
+  Object.keys(body).forEach((ele) => {
+    const item = (body as any)[ele];
+
+    if (item !== undefined && item !== null) {
+      formData.append(
+        ele,
+        typeof item === 'object' && !(item instanceof File) ? JSON.stringify(item) : item
+      );
+    }
+  });
+
+  return request<any>(
+    `/api/DataBoard/ReImportEnterpriseCustomerUsers/ReImportEnterpriseCustomerUsers/${param0}`,
+    {
+      method: 'POST',
+      params: { ...queryParams },
+      data: formData,
+      requestType: 'form',
+      ...(options || {}),
+    }
+  );
+}
diff --git a/src/services/api/EnterpriseApplyFile.ts b/src/services/api/EnterpriseApplyFile.ts
index fe47c5f..e2686e5 100644
--- a/src/services/api/EnterpriseApplyFile.ts
+++ b/src/services/api/EnterpriseApplyFile.ts
@@ -203,6 +203,24 @@
   );
 }
 
+/** 鑾峰彇浼佷笟宸蹭笂浼犵敵鎶ユ潗鏂欐湀浠� POST /api/EnterpriseApplyFile/GetEnterpriseMonthApplyHasUploadFileList */
+export async function getEnterpriseMonthApplyHasUploadFileList(
+  body: API.GetEnterpriseMonthApplyHasUploadFileListInput,
+  options?: API.RequestConfig
+) {
+  return request<API.GetEnterpriseMonthApplyFileOutput[]>(
+    '/api/EnterpriseApplyFile/GetEnterpriseMonthApplyHasUploadFileList',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 鑾峰彇鍥尯姹囨�绘潗鏂欑被鍨� POST /api/EnterpriseApplyFile/GetParkCollectFileTypeList */
 export async function getParkCollectFileTypeList(
   body: API.GetParkCollectFileTypeListInput,
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 573ce44..979b22a 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -471,6 +471,7 @@
   interface AddParkBountyApplyByEnterpriseInput {
     batchNo?: string;
     enterpriseMonthApplyId?: string;
+    enterpriseId?: string;
   }
 
   interface AddParkBountyApplyStepOneInput {
@@ -1429,9 +1430,23 @@
     take?: number;
   }
 
+  interface APIgetDataBoardEnterpriseClientUserRankParams {
+    /** 鏌ヨ鏁伴噺 */
+    take?: number;
+  }
+
   interface APIgetDataBoardInsurePeopleCountRankParams {
     /** 鏌ヨ鏁伴噺 */
     take?: number;
+  }
+
+  interface APIgetDataBoardLastQuarterEnterpriseClientUserCountParams {
+    input?: GetDataBoardLastQuarterEnterpriseClientUserCountInput;
+  }
+
+  interface APIgetDataBoardLastQuarterOutputValueCountParams {
+    /** 涓囧厓鍗曚綅 */
+    wanUnit?: boolean;
   }
 
   interface APIgetDataBoardNewBountyApplyCountParams {
@@ -1439,11 +1454,13 @@
   }
 
   interface APIgetDataBoardNewBountyReleaseAmountCountParams {
-    input?: GetDataBoardNewBountyReleaseAmountCountInput;
+    /** 涓囧厓鍗曚綅 */
+    wanUnit?: boolean;
   }
 
   interface APIgetDataBoardNewBountyUseAmountCountParams {
-    input?: GetDataBoardNewBountyUseAmountCountInput;
+    /** 涓囧厓鍗曚綅 */
+    wanUnit?: boolean;
   }
 
   interface APIgetDataBoardNewCustomerCountParams {
@@ -1454,7 +1471,17 @@
     input?: GetDataBoardNewInsurePeopleCountInput;
   }
 
+  interface APIgetDataBoardOutputValueRankParams {
+    /** 鏌ヨ鏁伴噺 */
+    take?: number;
+  }
+
   interface APIgetDataBoardOverviewByParkParams {
+    industrialParkId?: string;
+  }
+
+  interface APIgetDataBoardOverviewByParkV2Params {
+    /** 鍥尯Id 涓嶄紶鏌ュ叏閮� */
     industrialParkId?: string;
   }
 
@@ -2052,6 +2079,10 @@
 
   interface APIqueryRechargeParams {
     bussSeqNo?: string;
+  }
+
+  interface APIreImportEnterpriseCustomerUsersReImportEnterpriseCustomerUsersIdParams {
+    id: string;
   }
 
   interface APIsearchParams {
@@ -6519,6 +6550,8 @@
   interface ExportRewardStatisticsInput {
     /** 鏈堜唤 */
     month?: string;
+    /** 鏈堜唤 */
+    months?: string[];
     /** 鎵�灞炲洯鍖篒d */
     industrialParkId?: string;
     /** 鍏抽敭瀛� */
@@ -7858,6 +7891,17 @@
     amount?: number;
   }
 
+  interface GetDataBoardEnterpriseClientUserRankOutput {
+    items?: GetDataBoardEnterpriseClientUserRankOutputItem[];
+  }
+
+  interface GetDataBoardEnterpriseClientUserRankOutputItem {
+    /** 浼佷笟鍚嶇О */
+    enterpriseName?: string;
+    /** 绛剧害浜烘暟 */
+    count?: number;
+  }
+
   interface GetDataBoardInsurePeopleCountRankOutput {
     items?: GetDataBoardInsurePeopleCountRankOutputItem[];
   }
@@ -7867,6 +7911,22 @@
     enterpriseName?: string;
     /** 浜烘暟 */
     count?: number;
+  }
+
+  type GetDataBoardLastQuarterEnterpriseClientUserCountInput = Record<string, any>;
+
+  interface GetDataBoardLastQuarterEnterpriseClientUserCountOutput {
+    /** X杞� */
+    x?: string[];
+    /** 涓婂搴︽暟鎹� */
+    data?: number[];
+  }
+
+  interface GetDataBoardLastQuarterOutputValueCountOutput {
+    /** X杞� */
+    x?: string[];
+    /** 涓婂搴︽暟鎹� */
+    data?: number[];
   }
 
   type GetDataBoardNewBountyApplyCountInput = Record<string, any>;
@@ -7880,8 +7940,6 @@
     lastMonthData?: number[];
   }
 
-  type GetDataBoardNewBountyReleaseAmountCountInput = Record<string, any>;
-
   interface GetDataBoardNewBountyReleaseAmountCountOutput {
     /** X杞� */
     x?: string[];
@@ -7890,8 +7948,6 @@
     /** 涓婃湀鏁版嵁 */
     lastMonthData?: number[];
   }
-
-  type GetDataBoardNewBountyUseAmountCountInput = Record<string, any>;
 
   interface GetDataBoardNewBountyUseAmountCountOutput {
     /** X杞� */
@@ -7922,6 +7978,17 @@
     data?: number[];
   }
 
+  interface GetDataBoardOutputValueRankOutput {
+    items?: GetDataBoardOutputValueRankOutputItem[];
+  }
+
+  interface GetDataBoardOutputValueRankOutputItem {
+    /** 浼佷笟鍚嶇О */
+    enterpriseName?: string;
+    /** 閲戦 */
+    outputValue?: number;
+  }
+
   interface GetDataBoardOverviewByParkOutput {
     /** 鎬诲叆椹讳紒涓� */
     totalCustomerCount?: number;
@@ -7929,6 +7996,23 @@
     sumBountyReleaseAmount?: number;
     /** 濂栧姳閲戜娇鐢ㄦ�婚 */
     sumBountyUseAmount?: number;
+    /** 鎶曚繚浜烘暟 */
+    insurePeopleCount?: number;
+  }
+
+  interface GetDataBoardOverviewByParkV2Output {
+    /** 骞冲彴浼佷笟鎬绘暟 */
+    enterpriseCount?: number;
+    /** 鎬讳氦鏄撴祦姘� */
+    sumOutputValue?: number;
+    /** 鍦ㄧ嚎鐢叉柟鎬绘暟 */
+    enterpriseCustomerCount?: number;
+    /** 鍦ㄧ嚎鍔冲姟浜哄憳鎬绘暟 */
+    enterpriseClientUserCount?: number;
+    /** 骞冲彴娑堣垂鎬婚 */
+    sumBountyUseAmount?: number;
+    /** 淇濋櫓娑堣垂鎬婚 */
+    sumBountyInsuranceUseAmount?: number;
     /** 鎶曚繚浜烘暟 */
     insurePeopleCount?: number;
   }
@@ -7991,6 +8075,49 @@
     errmsg?: string;
     cost?: string;
     data?: GetEnterpriseCredentialDataResponse;
+  }
+
+  interface GetEnterpriseCustomerImportsInput {
+    pageModel?: Pagination;
+    /** 鍏抽敭瀛� */
+    keywords?: string;
+    /** 瀵煎叆澶辫触鐨勮褰� */
+    failImport?: boolean;
+  }
+
+  interface GetEnterpriseCustomerImportsOutput {
+    /** Id */
+    id?: string;
+    /** 浼佷笟Id */
+    enterpriseId?: string;
+    /** 鏂囦欢 */
+    file?: string;
+    /** 鎬昏鏁� */
+    count?: number;
+    /** 鎴愬姛琛屾暟 */
+    successCount?: number;
+    /** 绌虹櫧琛屾暟 */
+    emptyCount?: number;
+    /** 澶辫触琛屾暟 */
+    failCount?: number;
+    /** 澶辫触鍘熷洜 */
+    failReason?: string;
+    /** 棰勮淇濆瓨鏁伴噺 */
+    estimateSaveCount?: number;
+    /** 淇濆瓨鏁伴噺 */
+    saveCount?: number;
+    /** 鎻掑叆鏁伴噺 */
+    insertCount?: number;
+    /** 鏇存柊鏁伴噺 */
+    updateCount?: number;
+    /** 鏇存柊鏂囦欢鍦板潃 */
+    updateFile?: string;
+  }
+
+  interface GetEnterpriseCustomerImportsOutputPageOutput {
+    pageModel?: Pagination;
+    objectData?: any;
+    data?: GetEnterpriseCustomerImportsOutput[];
   }
 
   interface GetEnterpriseDrawWithDetailOutput {
@@ -8087,6 +8214,10 @@
     pageModel?: Pagination;
     objectData?: any;
     data?: GetEnterpriseMonthApplyFileOutput[];
+  }
+
+  interface GetEnterpriseMonthApplyHasUploadFileListInput {
+    enterpriseId?: string;
   }
 
   interface GetEnterpriseParkApplyUploadFileOutput {
@@ -9618,6 +9749,8 @@
     outReCheckTime?: string;
     /** 鎾ゅ洖鍘熷洜 */
     reasonForWithdrawal?: string;
+    /** 鏄惁闅愯棌 */
+    isHidden?: boolean;
   }
 
   interface GetParkBountyApplyListOutputPageOutput {
diff --git a/src/style/index.scss b/src/style/index.scss
index 42de2c8..dbd3146 100644
--- a/src/style/index.scss
+++ b/src/style/index.scss
@@ -204,6 +204,13 @@
 }
 
 @font-face {
+  font-family: DINAlternate-Bold;
+  src: url('@/assets/fonts/DINAlternate-Bold.woff2') format('woff2');
+  font-style: normal;
+  font-weight: normal;
+}
+
+@font-face {
   font-family: 'YouSheBiaoTiHei Regular';
   src: url('@/assets/fonts/YouSheBiaoTiHei Regular.ttf') format('truetype');
   font-style: normal;
diff --git a/src/views/DataBoard/DataBoardHome.vue b/src/views/DataBoard/DataBoardHome.vue
index 42caaf0..4cc5f70 100644
--- a/src/views/DataBoard/DataBoardHome.vue
+++ b/src/views/DataBoard/DataBoardHome.vue
@@ -13,17 +13,19 @@
       </div>
       <div class="data-board-home-content">
         <div class="data-board-home-content-left">
-          <DataBoardContentItem title="鏁版嵁姒傚喌" class="data-overview">
-            <DataOverviewContent></DataOverviewContent>
-          </DataBoardContentItem>
-          <DataBoardContentItem title="鏂板鍏ラ┗浼佷笟" class="new-enter">
-            <div class="new-enter-content">
-              <v-chart :option="newEnterOption" />
+          <DataBoardContentItem title="涓婂搴︿氦鏄撴暟鎹�">
+            <div class="data-chart-content">
+              <v-chart :option="LastQuarterOutputValueCountChartOption" />
             </div>
           </DataBoardContentItem>
-          <DataBoardContentItem title="鏂板鐢虫姤鎵规" :hasBottom="false" class="new-declare">
-            <div class="new-declare-content">
-              <v-chart :option="newDeclareOption" />
+          <DataBoardContentItem title="涓婂搴﹀湪绾垮姵鍔′汉鍛樻暟鎹�">
+            <div class="data-chart-content">
+              <v-chart :option="LastQuarterEnterpriseClientUserCountChartOption" />
+            </div>
+          </DataBoardContentItem>
+          <DataBoardContentItem title="鏈堝害骞冲彴娑堣垂鏁版嵁" :hasBottom="false">
+            <div class="data-chart-content">
+              <v-chart :option="newBountyUseAmountCountChartOption" />
             </div>
           </DataBoardContentItem>
         </div>
@@ -42,28 +44,30 @@
             />
             <DataBoardCenterMap></DataBoardCenterMap>
           </div>
-          <DataBoardCenterChart></DataBoardCenterChart>
         </div>
         <div class="data-board-home-content-right">
-          <DataBoardContentItem title="鍙敤璧勯噾浣跨敤鎺掕" class="data-table-content">
+          <DataBoardContentItem title="浜ゆ槗Top">
+            <DataBoardTableView
+              :tableData="dataBoardOutputValueRankList"
+              unit="鍏�"
+              :isMoney="true"
+              customerName="浜у��"
+            ></DataBoardTableView>
+          </DataBoardContentItem>
+          <DataBoardContentItem title="鍔冲姟浜哄憳Top">
+            <DataBoardTableView
+              :tableData="enterpriseClientUserRankList"
+              unit="浜�"
+              customerName="绛剧害浜烘暟"
+            ></DataBoardTableView>
+          </DataBoardContentItem>
+          <DataBoardContentItem title="骞冲彴娑堣垂Top" :hasBottom="false">
             <DataBoardTableView
               :tableData="bountyUseAmountRankList"
               unit="鍏�"
               :isMoney="true"
-              customerName="浣跨敤閲戦"
+              customerName="鍙戞斁閲戦"
             ></DataBoardTableView>
-          </DataBoardContentItem>
-          <DataBoardContentItem title="鎶曚繚浜烘暟鎺掕" class="data-table-content">
-            <DataBoardTableView
-              :tableData="insurePeopleCountRankList"
-              unit="浜�"
-              customerName="鎶曚繚浜烘暟"
-            ></DataBoardTableView>
-          </DataBoardContentItem>
-          <DataBoardContentItem title="鎶曚繚浜烘暟瀵规瘮" :hasBottom="false" class="insure-person">
-            <div class="insure-person-content">
-              <v-chart :option="insurePersonOption" />
-            </div>
           </DataBoardContentItem>
         </div>
       </div>
@@ -88,14 +92,22 @@
   createNewEnterChartOptions,
   createNewDeclareChartOptions,
   createInsurePersonOptionChartOptions,
+  creatDataBoardLeftLineChartOptions,
+  creatDataBoardLeftBarChartOptions,
 } from './utils';
 import { useQuery } from '@tanstack/vue-query';
 import {
   useGetDataBoardBountyUseAmountRank,
+  useGetDataBoardEnterpriseClientUserRank,
   useGetDataBoardInsurePeopleCountRank,
+  useGetDataBoardLastQuarterEnterpriseClientUserCount,
+  useGetDataBoardLastQuarterOutputValueCount,
   useGetDataBoardNewBountyApplyCount,
+  useGetDataBoardNewBountyReleaseAmountCount,
+  useGetDataBoardNewBountyUseAmountCount,
   useGetDataBoardNewCustomerCount,
   useGetDataBoardNewInsurePeopleCount,
+  useGetDataBoardOutputValueRank,
 } from './hooks';
 
 defineOptions({
@@ -114,11 +126,11 @@
 const { detail: newInsurePeopleCount } = useGetDataBoardNewInsurePeopleCount();
 
 const { bountyUseAmountRankList } = useGetDataBoardBountyUseAmountRank({
-  take: 6,
+  take: 5,
 });
 
 const { insurePeopleCountRankList } = useGetDataBoardInsurePeopleCountRank({
-  take: 6,
+  take: 5,
 });
 
 const newEnterOption = computed(() =>
@@ -139,13 +151,51 @@
   })
 );
 
-const insurePersonOption = computed(() =>
-  createInsurePersonOptionChartOptions({
-    data: newInsurePeopleCount.value.data,
-    xAxisData: newInsurePeopleCount.value.x,
-    name: format(new Date(), 'YYYY-MM'),
+const { detail: lastQuarterOutputValueCount } = useGetDataBoardLastQuarterOutputValueCount({
+  wanUnit: true,
+});
+const { detail: lastQuarterEnterpriseClientUserCount } =
+  useGetDataBoardLastQuarterEnterpriseClientUserCount();
+
+const { detail: newBountyUseAmountCount } = useGetDataBoardNewBountyUseAmountCount();
+
+const LastQuarterOutputValueCountChartOption = computed(() =>
+  creatDataBoardLeftLineChartOptions({
+    data: lastQuarterOutputValueCount.value.data,
+    xAxisData: lastQuarterOutputValueCount.value.x,
+    name: '鏈湀',
+    yAxisName: '鍗曚綅/涓囧厓',
+    smooth: true,
+    color: '#FECD07',
+    opacityColor: 'rgba(187, 189, 84, 0.5)',
   })
 );
+const LastQuarterEnterpriseClientUserCountChartOption = computed(() =>
+  creatDataBoardLeftLineChartOptions({
+    data: lastQuarterEnterpriseClientUserCount.value.data,
+    xAxisData: lastQuarterEnterpriseClientUserCount.value.x,
+    name: '鏈湀',
+    yAxisName: '鍗曚綅/鍏�',
+    smooth: false,
+    color: '#00A6FF',
+    opacityColor: 'rgba(0, 166, 255, 0.5)',
+  })
+);
+
+const newBountyUseAmountCountChartOption = computed(() =>
+  creatDataBoardLeftBarChartOptions({
+    data: newBountyUseAmountCount.value.currentMonthData,
+    xAxisData: newBountyUseAmountCount.value.x,
+  })
+);
+
+const { dataBoardOutputValueRankList } = useGetDataBoardOutputValueRank({
+  take: 5,
+});
+
+const { enterpriseClientUserRankList } = useGetDataBoardEnterpriseClientUserRank({
+  take: 5,
+});
 
 onMounted(() => {
   updateTime();
@@ -232,6 +282,14 @@
     .data-board-home-content-left {
       width: 446px;
 
+      .data-board-content-item {
+        height: 300px;
+
+        .data-chart-content {
+          height: 258px;
+        }
+      }
+
       .new-enter {
         .new-enter-content {
           width: 100%;
@@ -254,13 +312,12 @@
 
       .data-board-home-content-center-map {
         position: relative;
-        margin-bottom: 10px;
         width: 100%;
-        height: 560px;
+        height: 630px;
 
         .data-board-home-content-center-map-bg {
           position: absolute;
-          top: 0;
+          top: 35px;
           width: 70px;
           height: 560px;
 
diff --git a/src/views/DataBoard/components/DataBoardCenterDataContent.vue b/src/views/DataBoard/components/DataBoardCenterDataContent.vue
index 87ab6f9..b2d17b9 100644
--- a/src/views/DataBoard/components/DataBoardCenterDataContent.vue
+++ b/src/views/DataBoard/components/DataBoardCenterDataContent.vue
@@ -1,21 +1,48 @@
 <template>
   <div class="data-board-home-content-center-top">
-    <DataBoardCenterDataItem
-      v-model:value="currentMonthSumBountyReleaseAmountValue"
-      label="涓婃湀鍙戞斁棰�"
-      :image="DataBoardCenterIcon1"
-    ></DataBoardCenterDataItem>
-    <DataBoardCenterDataItem
-      v-model:value="currentMonthSumBountyUseAmountValue"
-      label="涓婃湀浣跨敤棰�"
-      :image="DataBoardCenterIcon2"
-    ></DataBoardCenterDataItem>
-    <DataBoardCenterDataItem
-      v-model:value="currentMonthInsurePeopleCountValue"
-      label="涓婃湀鎶曚繚浜烘暟"
-      :precision="0"
-      :image="DataBoardCenterIcon3"
-    ></DataBoardCenterDataItem>
+    <div class="data-board-home-content-center-top-item between">
+      <DataBoardCenterDataItem
+        v-model:value="enterpriseCountValue"
+        label="骞冲彴浼佷笟鎬绘暟"
+        :precision="0"
+        :image="DataBoardCenterIcon1"
+      ></DataBoardCenterDataItem>
+      <DataBoardCenterDataItem
+        v-model:value="sumOutputValueValue"
+        label="鎬讳氦鏄撴祦姘�"
+        :image="DataBoardCenterIcon2"
+      ></DataBoardCenterDataItem>
+      <DataBoardCenterDataItem
+        v-model:value="enterpriseCustomerCountValue"
+        label="鍦ㄧ嚎鐢叉柟鎬绘暟"
+        :precision="0"
+        :image="DataBoardCenterIcon3"
+      ></DataBoardCenterDataItem>
+      <DataBoardCenterDataItem
+        v-model:value="enterpriseClientUserCountValue"
+        label="鍦ㄧ嚎鍔冲姟浜哄憳鎬绘暟"
+        :precision="0"
+        :image="DataBoardCenterIcon4"
+      ></DataBoardCenterDataItem>
+    </div>
+    <div class="data-board-home-content-center-top-item center">
+      <DataBoardCenterDataItem
+        v-model:value="sumBountyUseAmountValue"
+        label="骞冲彴娑堣垂鎬婚"
+        :image="DataBoardCenterIcon5"
+      ></DataBoardCenterDataItem>
+      <DataBoardCenterDataItem
+        v-model:value="sumBountyInsuranceUseAmountValue"
+        label="淇濋櫓娑堣垂鎬婚"
+        :image="DataBoardCenterIcon6"
+      ></DataBoardCenterDataItem>
+      <DataBoardCenterDataItem
+        v-model:value="insurePeopleCountValue"
+        label="鎬绘姇淇濅汉娆�"
+        :precision="0"
+        :image="DataBoardCenterIcon7"
+      ></DataBoardCenterDataItem>
+    </div>
   </div>
 </template>
 
@@ -23,54 +50,69 @@
 import DataBoardCenterIcon1 from '@/assets/dataBoard/data-board-center-icon1.png';
 import DataBoardCenterIcon2 from '@/assets/dataBoard/data-board-center-icon2.png';
 import DataBoardCenterIcon3 from '@/assets/dataBoard/data-board-center-icon3.png';
+import DataBoardCenterIcon4 from '@/assets/dataBoard/data-board-center-icon4.png';
+import DataBoardCenterIcon5 from '@/assets/dataBoard/data-board-center-icon5.png';
+import DataBoardCenterIcon6 from '@/assets/dataBoard/data-board-center-icon6.png';
+import DataBoardCenterIcon7 from '@/assets/dataBoard/data-board-center-icon7.png';
 import DataBoardCenterDataItem from './DataBoardCenterDataItem.vue';
 import * as dataBoardServices from '@/services/api/DataBoard';
 import { useQuery } from '@tanstack/vue-query';
-import { useIntervalValue } from '../hooks';
+import { useGetDataBoardOverviewByParkV2, useIntervalValue } from '../hooks';
 
 defineOptions({
   name: 'DataBoardCenterDataContent',
 });
 
 const form = reactive({
-  currentMonthSumBountyReleaseAmount: 0,
-  currentMonthSumBountyUseAmount: 0,
-  currentMonthInsurePeopleCount: 0,
+  industrialParkId: '',
+
+  enterpriseCount: 0,
+  sumOutputValue: 0,
+  sumBountyUseAmount: 0,
+  sumBountyInsuranceUseAmount: 0,
+  enterpriseCustomerCount: 0,
+  enterpriseClientUserCount: 0,
+  insurePeopleCount: 0,
 });
 
-const { data: detail, isLoading } = useQuery({
-  queryKey: ['dataBoardServices/getDataBoardOverview'],
-  queryFn: async () => {
-    return await dataBoardServices.getDataBoardOverview(
-      {},
-      {
-        showLoading: false,
-      }
-    );
-  },
-  placeholderData: () => ({} as API.GetDataBoardOverviewOutput),
+const { refetch } = useGetDataBoardOverviewByParkV2({
+  industrialParkId: computed(() => form.industrialParkId),
   onSuccess(data) {
-    form.currentMonthSumBountyReleaseAmount = data.currentMonthSumBountyReleaseAmount;
-    changeCurrentMonthSumBountyReleaseAmount(data.currentMonthSumBountyReleaseAmount);
-    form.currentMonthSumBountyUseAmount = data.currentMonthSumBountyUseAmount;
-    changeCurrentMonthSumBountyUseAmount(data.currentMonthSumBountyUseAmount);
-    form.currentMonthInsurePeopleCount = data.currentMonthInsurePeopleCount;
-    changeCurrentMonthInsurePeopleCount(data.currentMonthInsurePeopleCount);
+    form.enterpriseCount = data.enterpriseCount;
+    changeEnterpriseCount(form.enterpriseCount);
+    form.sumOutputValue = data.sumOutputValue;
+    changeSumOutputValue(form.sumOutputValue);
+    form.sumBountyUseAmount = data.sumBountyUseAmount;
+    changeSumBountyUseAmount(form.sumBountyUseAmount);
+    form.sumBountyInsuranceUseAmount = data.sumBountyInsuranceUseAmount;
+    changeSumBountyInsuranceUseAmount(form.sumBountyInsuranceUseAmount);
+    form.enterpriseCustomerCount = data.enterpriseCustomerCount;
+    changeEnterpriseCustomerCount(form.enterpriseCustomerCount);
+    form.enterpriseClientUserCount = data.enterpriseClientUserCount;
+    changeEnterpriseClientUserCount(form.enterpriseClientUserCount);
+    form.insurePeopleCount = data.insurePeopleCount;
+    changeInsurePeopleCount(form.insurePeopleCount);
   },
 });
 
-const {
-  value: currentMonthSumBountyReleaseAmountValue,
-  changeValue: changeCurrentMonthSumBountyReleaseAmount,
-} = useIntervalValue(form.currentMonthSumBountyReleaseAmount);
-const {
-  value: currentMonthSumBountyUseAmountValue,
-  changeValue: changeCurrentMonthSumBountyUseAmount,
-} = useIntervalValue(form.currentMonthSumBountyUseAmount);
-const {
-  value: currentMonthInsurePeopleCountValue,
-  changeValue: changeCurrentMonthInsurePeopleCount,
-} = useIntervalValue(form.currentMonthInsurePeopleCount);
+const { value: enterpriseCountValue, changeValue: changeEnterpriseCount } = useIntervalValue(
+  form.enterpriseCount
+);
+const { value: sumOutputValueValue, changeValue: changeSumOutputValue } = useIntervalValue(
+  form.sumOutputValue
+);
+const { value: sumBountyUseAmountValue, changeValue: changeSumBountyUseAmount } = useIntervalValue(
+  form.sumBountyUseAmount
+);
+const { value: sumBountyInsuranceUseAmountValue, changeValue: changeSumBountyInsuranceUseAmount } =
+  useIntervalValue(form.sumBountyInsuranceUseAmount);
+const { value: enterpriseCustomerCountValue, changeValue: changeEnterpriseCustomerCount } =
+  useIntervalValue(form.enterpriseCustomerCount);
+const { value: enterpriseClientUserCountValue, changeValue: changeEnterpriseClientUserCount } =
+  useIntervalValue(form.enterpriseClientUserCount);
+const { value: insurePeopleCountValue, changeValue: changeInsurePeopleCount } = useIntervalValue(
+  form.insurePeopleCount
+);
 </script>
 
 <style lang="scss" scoped>
@@ -78,9 +120,28 @@
 
 .data-board-home-content-center-top {
   display: grid;
-  margin-bottom: 6px;
-  padding: 0 20px;
-  grid-template-columns: repeat(3, 1fr);
-  grid-column-gap: 16px;
+  margin-bottom: 30px;
+  padding: 60px 40px;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+  row-gap: 22px;
+  background-image: url('@/assets/dataBoard/data-board-center-chart-bg.png');
+
+  .data-board-home-content-center-top-item {
+    display: flex;
+
+    &.between {
+      justify-content: space-between;
+    }
+
+    &.center {
+      justify-content: center;
+      gap: 20px;
+
+      .data-board-center-data-item {
+        min-width: 214px;
+      }
+    }
+  }
 }
 </style>
diff --git a/src/views/DataBoard/components/DataBoardCenterDataItem.vue b/src/views/DataBoard/components/DataBoardCenterDataItem.vue
index 2634059..6d8bf92 100644
--- a/src/views/DataBoard/components/DataBoardCenterDataItem.vue
+++ b/src/views/DataBoard/components/DataBoardCenterDataItem.vue
@@ -4,10 +4,10 @@
       <img :src="image" alt="" />
     </div>
     <div class="data-board-data-info-item-content">
+      <div class="data-board-data-info-item-label">{{ label }}</div>
       <div class="data-board-data-info-item-value">
         <el-statistic :value="_value" :precision="precision" />
       </div>
-      <div class="data-board-data-info-item-label">{{ label }}</div>
     </div>
   </div>
 </template>
@@ -41,8 +41,8 @@
 
 .data-board-center-data-item {
   display: flex;
-  padding: 8px 12px;
-  background: rgba(0, 5, 18, 0.27);
+  // padding: 8px 12px;
+  // background: rgba(0, 5, 18, 0.27);
 
   .data-board-data-info-item-icon {
     width: 64px;
@@ -64,8 +64,8 @@
     .data-board-data-info-item-value {
       margin-bottom: 5px;
       font-size: 22px;
-      font-family: DrukWide-Bold;
-      line-height: 30px;
+      font-family: DINAlternate-Bold;
+      line-height: 26px;
 
       :deep() {
         .el-statistic__content {
@@ -77,7 +77,7 @@
     .data-board-data-info-item-label {
       font-size: 16px;
       line-height: 22px;
-      color: #ffffff;
+      color: #b9c4d0;
     }
   }
 }
diff --git a/src/views/DataBoard/components/DataBoardCenterMap.vue b/src/views/DataBoard/components/DataBoardCenterMap.vue
index 2f7d0c8..e7fc168 100644
--- a/src/views/DataBoard/components/DataBoardCenterMap.vue
+++ b/src/views/DataBoard/components/DataBoardCenterMap.vue
@@ -2,25 +2,41 @@
   <div class="data-board-home-content-center-map">
     <div class="data-board-home-content-center-map-data">
       <DataBoardDataInfoItem
-        :backgroundImage="DataBoardDataInfoBg5"
-        label="浼佷笟鏁伴噺"
-        v-model:value="totalCustomerCountValue"
+        :backgroundImage="DataBoardDataInfoBg1"
+        label="骞冲彴鍟嗘埛鏁伴噺"
+        v-model:value="enterpriseCountValue"
       ></DataBoardDataInfoItem>
       <DataBoardDataInfoItem
-        :backgroundImage="DataBoardDataInfoBg6"
-        label="鍙戞斁棰�"
-        v-model:value="sumBountyReleaseAmountValue"
+        :backgroundImage="DataBoardDataInfoBg2"
+        label="骞冲彴浜ゆ槗娴佹按"
+        v-model:value="sumOutputValueValue"
         :precision="2"
       ></DataBoardDataInfoItem>
       <DataBoardDataInfoItem
-        :backgroundImage="DataBoardDataInfoBg7"
-        label="浣跨敤棰�"
+        :backgroundImage="DataBoardDataInfoBg3"
+        label="骞冲彴娑堣垂鎬婚"
         v-model:value="sumBountyUseAmountValue"
         :precision="2"
       ></DataBoardDataInfoItem>
       <DataBoardDataInfoItem
-        :backgroundImage="DataBoardDataInfoBg8"
-        label="鎶曚繚浜烘暟"
+        :backgroundImage="DataBoardDataInfoBg4"
+        label="骞冲彴淇濋櫓娑堣垂鎬婚"
+        :precision="2"
+        v-model:value="sumBountyInsuranceUseAmountValue"
+      ></DataBoardDataInfoItem>
+      <DataBoardDataInfoItem
+        :backgroundImage="DataBoardDataInfoBg5"
+        label="鍦ㄧ嚎鐢叉柟鎬绘暟"
+        v-model:value="enterpriseCustomerCountValue"
+      ></DataBoardDataInfoItem>
+      <DataBoardDataInfoItem
+        :backgroundImage="DataBoardDataInfoBg6"
+        label="鍦ㄧ嚎鍔冲姟浜哄憳鎬绘暟"
+        v-model:value="enterpriseClientUserCountValue"
+      ></DataBoardDataInfoItem>
+      <DataBoardDataInfoItem
+        :backgroundImage="DataBoardDataInfoBg7"
+        label="鎶曚繚鎬讳汉娆�"
         v-model:value="insurePeopleCountValue"
       ></DataBoardDataInfoItem>
     </div>
@@ -40,17 +56,20 @@
 
 <script setup lang="ts">
 import DataBoardCenterMap from '@/assets/dataBoard/data-board-center-map.png';
+import DataBoardDataInfoBg1 from '@/assets/dataBoard/data-board-data-info-bg1.png';
+import DataBoardDataInfoBg2 from '@/assets/dataBoard/data-board-data-info-bg2.png';
+import DataBoardDataInfoBg3 from '@/assets/dataBoard/data-board-data-info-bg3.png';
+import DataBoardDataInfoBg4 from '@/assets/dataBoard/data-board-data-info-bg4.png';
 import DataBoardDataInfoBg5 from '@/assets/dataBoard/data-board-data-info-bg5.png';
 import DataBoardDataInfoBg6 from '@/assets/dataBoard/data-board-data-info-bg6.png';
 import DataBoardDataInfoBg7 from '@/assets/dataBoard/data-board-data-info-bg7.png';
-import DataBoardDataInfoBg8 from '@/assets/dataBoard/data-board-data-info-bg8.png';
 import DataBoardDataInfoItem from './DataBoardDataInfoItem.vue';
 import DataBoardCenterMapMark from './DataBoardCenterMapMark.vue';
 import * as dataBoardServices from '@/services/api/DataBoard';
 import { useQuery, useQueryClient } from '@tanstack/vue-query';
 import { useIndustrialParkDropDownList } from '@/hooks';
 import _ from 'lodash';
-import { useIntervalValue } from '../hooks';
+import { useGetDataBoardOverviewByParkV2, useIntervalValue } from '../hooks';
 import { useIntervalFn } from '@vueuse/core';
 
 defineOptions({
@@ -65,52 +84,58 @@
   industrialParkId: '',
   mapList: [],
 
-  totalCustomerCount: 0,
-  sumBountyReleaseAmount: 0,
+  enterpriseCount: 0,
+  sumOutputValue: 0,
   sumBountyUseAmount: 0,
+  sumBountyInsuranceUseAmount: 0,
+  enterpriseCustomerCount: 0,
+  enterpriseClientUserCount: 0,
   insurePeopleCount: 0,
 });
 
 function handleClick(chooseIndex: number) {
+  console.log('chooseIndex: ', chooseIndex);
   form.mapList.forEach((item, index) => {
     item.choose = chooseIndex === index;
   });
   form.industrialParkId = dataBoardIndustrialParkList.value[chooseIndex]?.id;
-  refetch();
 }
 
-const { data: detail, refetch } = useQuery({
-  queryKey: ['dataBoardServices/getDataBoardOverviewByPark', form.industrialParkId],
-  queryFn: async () => {
-    return await dataBoardServices.getDataBoardOverviewByPark(
-      { industrialParkId: form.industrialParkId },
-      {
-        showLoading: false,
-      }
-    );
-  },
-  placeholderData: () => ({} as API.GetDataBoardOverviewByParkOutput),
-  enabled: () => !!form.industrialParkId,
+const { refetch } = useGetDataBoardOverviewByParkV2({
+  industrialParkId: computed(() => form.industrialParkId),
   onSuccess(data) {
-    form.totalCustomerCount = data.totalCustomerCount;
-    changeTotalCustomerCount(form.totalCustomerCount);
-    form.sumBountyReleaseAmount = data.sumBountyReleaseAmount;
-    changeSumBountyReleaseAmount(form.sumBountyReleaseAmount);
+    form.enterpriseCount = data.enterpriseCount;
+    changeEnterpriseCount(form.enterpriseCount);
+    form.sumOutputValue = data.sumOutputValue;
+    changeSumOutputValue(form.sumOutputValue);
     form.sumBountyUseAmount = data.sumBountyUseAmount;
     changeSumBountyUseAmount(form.sumBountyUseAmount);
+    form.sumBountyInsuranceUseAmount = data.sumBountyInsuranceUseAmount;
+    changeSumBountyInsuranceUseAmount(form.sumBountyInsuranceUseAmount);
+    form.enterpriseCustomerCount = data.enterpriseCustomerCount;
+    changeEnterpriseCustomerCount(form.enterpriseCustomerCount);
+    form.enterpriseClientUserCount = data.enterpriseClientUserCount;
+    changeEnterpriseClientUserCount(form.enterpriseClientUserCount);
     form.insurePeopleCount = data.insurePeopleCount;
     changeInsurePeopleCount(form.insurePeopleCount);
   },
 });
 
-const { value: totalCustomerCountValue, changeValue: changeTotalCustomerCount } = useIntervalValue(
-  form.totalCustomerCount
+const { value: enterpriseCountValue, changeValue: changeEnterpriseCount } = useIntervalValue(
+  form.enterpriseCount
 );
-const { value: sumBountyReleaseAmountValue, changeValue: changeSumBountyReleaseAmount } =
-  useIntervalValue(form.sumBountyReleaseAmount);
+const { value: sumOutputValueValue, changeValue: changeSumOutputValue } = useIntervalValue(
+  form.sumOutputValue
+);
 const { value: sumBountyUseAmountValue, changeValue: changeSumBountyUseAmount } = useIntervalValue(
   form.sumBountyUseAmount
 );
+const { value: sumBountyInsuranceUseAmountValue, changeValue: changeSumBountyInsuranceUseAmount } =
+  useIntervalValue(form.sumBountyInsuranceUseAmount);
+const { value: enterpriseCustomerCountValue, changeValue: changeEnterpriseCustomerCount } =
+  useIntervalValue(form.enterpriseCustomerCount);
+const { value: enterpriseClientUserCountValue, changeValue: changeEnterpriseClientUserCount } =
+  useIntervalValue(form.enterpriseClientUserCount);
 const { value: insurePeopleCountValue, changeValue: changeInsurePeopleCount } = useIntervalValue(
   form.insurePeopleCount
 );
@@ -148,7 +173,7 @@
 
   .data-board-home-content-center-map-data {
     position: absolute;
-    top: 30px;
+    top: 75px;
     left: 25px;
     width: 223px;
 
@@ -158,11 +183,11 @@
 
       :deep() {
         .data-board-data-info-item-label {
-          margin-left: 65px;
+          margin-left: 58px;
         }
 
         .data-board-data-info-item-value {
-          margin-left: 65px;
+          margin-left: 58px;
         }
       }
     }
@@ -180,25 +205,30 @@
     .data-board-center-map-mark {
       position: absolute;
       cursor: pointer;
+      display: none;
 
       &.init1 {
-        top: 115px;
-        left: 230px;
+        top: 255px;
+        right: 75px;
+        display: block;
       }
 
       &.init2 {
-        top: 260px;
+        top: 295px;
         left: 75px;
+        display: block;
       }
 
       &.init3 {
-        top: 340px;
-        right: 90px;
+        bottom: 110px;
+        left: 130px;
+        display: block;
       }
 
       &.init4 {
-        top: 305px;
-        right: 10px;
+        right: 30px;
+        bottom: 150px;
+        display: block;
       }
     }
   }
diff --git a/src/views/DataBoard/components/DataBoardContentItem.vue b/src/views/DataBoard/components/DataBoardContentItem.vue
index 42d5937..0863cd5 100644
--- a/src/views/DataBoard/components/DataBoardContentItem.vue
+++ b/src/views/DataBoard/components/DataBoardContentItem.vue
@@ -2,7 +2,7 @@
   <div
     class="data-board-content-item"
     :style="{
-      marginBottom: hasBottom ? '18px' : '0',
+      marginBottom: hasBottom ? '20px' : '0',
     }"
   >
     <div class="data-board-content-item-title">
@@ -45,7 +45,7 @@
 
     .data-board-content-item-title-text {
       padding-left: 36px;
-      font-size: 24px;
+      font-size: 22px;
       line-height: 32px;
       background: linear-gradient(to bottom, #ffffff, #b5efff);
       -webkit-background-clip: text;
diff --git a/src/views/DataBoard/components/DataBoardDataInfoItem.vue b/src/views/DataBoard/components/DataBoardDataInfoItem.vue
index ad13b45..b73a1ca 100644
--- a/src/views/DataBoard/components/DataBoardDataInfoItem.vue
+++ b/src/views/DataBoard/components/DataBoardDataInfoItem.vue
@@ -50,7 +50,7 @@
   .data-board-data-info-item-label {
     margin-bottom: 4px;
     margin-left: 80px;
-    font-size: 13px;
+    font-size: 14px;
     color: #ffffff;
   }
 
diff --git a/src/views/DataBoard/components/DataBoardTableView.vue b/src/views/DataBoard/components/DataBoardTableView.vue
index 4d41ac2..cd85075 100644
--- a/src/views/DataBoard/components/DataBoardTableView.vue
+++ b/src/views/DataBoard/components/DataBoardTableView.vue
@@ -57,14 +57,14 @@
 
 .data-board-table {
   display: flex;
-  padding: 0 14px 11px;
+  padding: 0 14px;
   flex-direction: column;
-  min-height: 270px;
+  min-height: 258px;
 
   .data-board-table-item {
     display: grid;
     align-items: center;
-    height: 37px;
+    height: 42px;
     font-size: 14px;
     color: #ffffff;
     background-position: bottom center;
diff --git a/src/views/DataBoard/hooks/index.ts b/src/views/DataBoard/hooks/index.ts
index 0ead499..cd5ed35 100644
--- a/src/views/DataBoard/hooks/index.ts
+++ b/src/views/DataBoard/hooks/index.ts
@@ -195,3 +195,137 @@
     insurePeopleCountRankList,
   };
 }
+
+type UseDataBoardOverviewByParkV2 = {
+  industrialParkId: MaybeRef<string>;
+  onSuccess?: (data: API.GetDataBoardOverviewByParkV2Output) => void;
+};
+
+export function useGetDataBoardOverviewByParkV2(options: UseDataBoardOverviewByParkV2) {
+  const { industrialParkId, onSuccess } = options;
+  const {
+    data: detail,
+    isLoading,
+    refetch,
+  } = useQuery({
+    queryKey: ['dataBoardServices/getDataBoardOverviewByParkV2', industrialParkId],
+    queryFn: async () => {
+      let params: API.APIgetDataBoardOverviewByParkV2Params = {};
+      if (!!unref(industrialParkId)) {
+        params.industrialParkId = unref(industrialParkId);
+      }
+      return await dataBoardServices.getDataBoardOverviewByParkV2(params, {
+        showLoading: false,
+      });
+    },
+    placeholderData: () => ({} as API.GetDataBoardOverviewByParkV2Output),
+    onSuccess: (data) => {
+      onSuccess?.(data);
+    },
+  });
+
+  return {
+    detail,
+    refetch,
+  };
+}
+
+type UseWanUnitOptions = {
+  wanUnit: boolean;
+};
+
+export function useGetDataBoardLastQuarterOutputValueCount(options: UseWanUnitOptions) {
+  const { wanUnit } = options;
+
+  const { data: detail, isLoading } = useQuery({
+    queryKey: ['dataBoardServices/getDataBoardLastQuarterOutputValueCount', wanUnit],
+    queryFn: async () => {
+      return await dataBoardServices.getDataBoardLastQuarterOutputValueCount(
+        { wanUnit: wanUnit },
+        {
+          showLoading: false,
+        }
+      );
+    },
+    placeholderData: () => ({} as API.GetDataBoardLastQuarterOutputValueCountOutput),
+  });
+
+  return {
+    detail,
+  };
+}
+
+export function useGetDataBoardLastQuarterEnterpriseClientUserCount() {
+  const { data: detail, isLoading } = useQuery({
+    queryKey: ['dataBoardServices/getDataBoardLastQuarterEnterpriseClientUserCount'],
+    queryFn: async () => {
+      return await dataBoardServices.getDataBoardLastQuarterEnterpriseClientUserCount(
+        {},
+        {
+          showLoading: false,
+        }
+      );
+    },
+    placeholderData: () => ({} as API.GetDataBoardLastQuarterEnterpriseClientUserCountOutput),
+  });
+
+  return {
+    detail,
+  };
+}
+
+export function useGetDataBoardOutputValueRank(options: UseGetDataBoardBountyUseAmountRankOptions) {
+  const { take } = options;
+  const { data: detail, isLoading } = useQuery({
+    queryKey: ['dataBoardServices/getDataBoardOutputValueRank', take],
+    queryFn: async () => {
+      return await dataBoardServices.getDataBoardOutputValueRank(
+        { take: take },
+        {
+          showLoading: false,
+        }
+      );
+    },
+    placeholderData: () => ({} as API.GetDataBoardOutputValueRankOutput),
+  });
+
+  const dataBoardOutputValueRankList = computed(() =>
+    detail.value.items?.map((x) => ({
+      name: x.enterpriseName,
+      value: x.outputValue,
+    }))
+  );
+
+  return {
+    dataBoardOutputValueRankList,
+  };
+}
+
+export function useGetDataBoardEnterpriseClientUserRank(
+  options: UseGetDataBoardBountyUseAmountRankOptions
+) {
+  const { take } = options;
+  const { data: detail, isLoading } = useQuery({
+    queryKey: ['dataBoardServices/getDataBoardEnterpriseClientUserRank', take],
+    queryFn: async () => {
+      return await dataBoardServices.getDataBoardEnterpriseClientUserRank(
+        { take: take },
+        {
+          showLoading: false,
+        }
+      );
+    },
+    placeholderData: () => ({} as API.GetDataBoardEnterpriseClientUserRankOutput),
+  });
+
+  const enterpriseClientUserRankList = computed(() =>
+    detail.value.items?.map((x) => ({
+      name: x.enterpriseName,
+      value: x.count,
+    }))
+  );
+
+  return {
+    enterpriseClientUserRankList,
+  };
+}
diff --git a/src/views/DataBoard/utils/index.ts b/src/views/DataBoard/utils/index.ts
index 8c9e572..30489d8 100644
--- a/src/views/DataBoard/utils/index.ts
+++ b/src/views/DataBoard/utils/index.ts
@@ -286,3 +286,102 @@
     })),
   } as EChartsOption);
 }
+
+type CreatDataBoardLeftLineChartOptions = {
+  data: number[];
+  xAxisData: (number | string)[];
+  name: string;
+  yAxisName: string;
+  smooth: boolean;
+  color: string;
+  opacityColor: string;
+};
+
+export function creatDataBoardLeftLineChartOptions({
+  data,
+  xAxisData,
+  name,
+  yAxisName,
+  smooth,
+  color,
+  opacityColor,
+}: CreatDataBoardLeftLineChartOptions) {
+  return _.merge({}, CommonBarChartOptions, {
+    grid: {
+      left: '15%',
+    },
+    tooltip: {
+      trigger: 'axis',
+      axisPointer: {
+        type: 'cross',
+        label: {
+          backgroundColor: '#6a7985',
+        },
+      },
+    },
+    xAxis: {
+      data: xAxisData,
+    },
+    yAxis: {
+      name: yAxisName,
+    },
+    series: [
+      {
+        name: name,
+        type: 'line',
+        data: data,
+        smooth: smooth,
+        lineStyle: {
+          width: 1,
+          color: color, // 鎶樼嚎棰滆壊
+        },
+        itemStyle: {
+          opacity: 0,
+        },
+        showSymbol: false,
+        areaStyle: {
+          color: new echarts.graphic.LinearGradient(
+            0,
+            0,
+            0,
+            1, // 娓愬彉鏂瑰悜锛�0,0锛堝彸涓婏級鈫� 0,1锛堝彸涓嬶級锛堝瀭鐩村悜涓嬶級
+            [
+              { offset: 0, color: opacityColor }, // 鎶樼嚎澶勯鑹诧紙涓嶉�忔槑锛�
+              { offset: 1, color: 'rgba(64, 158, 255, 0)' }, // X杞村棰滆壊锛堝畬鍏ㄩ�忔槑锛�
+            ]
+          ),
+        },
+      },
+    ],
+  } as EChartsOption);
+}
+
+type CreatDataBoardLeftBarChartOptions = {
+  data: number[];
+  xAxisData: (number | string)[];
+};
+
+export function creatDataBoardLeftBarChartOptions({
+  data,
+  xAxisData,
+}: CreatDataBoardLeftBarChartOptions) {
+  return _.merge({}, CommonBarChartOptions, {
+    xAxis: {
+      data: xAxisData,
+    },
+    yAxis: {
+      name: '鍗曚綅/涓囧厓',
+    },
+    series: [
+      {
+        name: '鏈湀',
+        type: 'bar',
+        data: data,
+        itemStyle: {
+          color: '#19DAB0',
+        },
+        barWidth: '15%',
+      },
+    ],
+  } as EChartsOption);
+}

--
Gitblit v1.9.1