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