From bd4e6eb3d29de84c00f5e448f5839300873a6abe Mon Sep 17 00:00:00 2001
From: liuwh <964324856@qq.com>
Date: Sat, 21 Jun 2025 16:17:30 +0800
Subject: [PATCH] fix:优化统计功能

---
 src/views/disputeLedger/index.jsx |  130 +++++++++++++++++++++++++++----------------
 1 files changed, 81 insertions(+), 49 deletions(-)

diff --git a/src/views/disputeLedger/index.jsx b/src/views/disputeLedger/index.jsx
index bf82b39..50e2e93 100644
--- a/src/views/disputeLedger/index.jsx
+++ b/src/views/disputeLedger/index.jsx
@@ -2,7 +2,7 @@
  * @Company: hugeInfo
  * @Author: lwh
  * @Date: 2024-09-14 15:59:17
- * @LastEditTime: 2025-06-04 21:18:43
+ * @LastEditTime: 2025-06-20 18:48:05
  * @LastEditors: lwh
  * @Version: 1.0.0
  * @Description:
@@ -43,6 +43,11 @@
 // 调度中心列表
 function getListDataApi(submitData) {
 	return $$.ax.request({ url: 'caseInfo/ledger', type: 'get', data: submitData, service: 'mediate' });
+}
+
+//
+function ledgerCountApi(submitData) {
+	return $$.ax.request({ url: 'caseInfo/ledgerCount', type: 'get', data: submitData, service: 'mediate' });
 }
 
 // 区域字典值
@@ -86,7 +91,7 @@
 		data4: { value1: 24, value2: 30, value3: 46 },
 	});
 
-	const [allNum, setAllNum] = useState(0);
+	const [allData, setAllData] = useState({});
 
 	// 搜索 or 重置
 	function handleSearch(type, session) {
@@ -100,8 +105,24 @@
 					},
 					activeKey
 				);
+				ledgerCount(
+					{
+						[session.key]: session.value[0],
+						createStart: $$.dateFormat(session.createStart),
+						createEnd: $$.dateFormat(session.createEnd),
+					},
+					activeKey
+				);
 			} else {
 				getListData(
+					{
+						[normalSearch.key]: normalSearch.value[0],
+						createStart: $$.dateFormat(normalSearch.createStart),
+						createEnd: $$.dateFormat(normalSearch.createEnd),
+					},
+					activeKey
+				);
+				ledgerCount(
 					{
 						[normalSearch.key]: normalSearch.value[0],
 						createStart: $$.dateFormat(normalSearch.createStart),
@@ -119,6 +140,7 @@
 			$$.searchCascader(values, 'queCode', normalSearch.level, ['queCity', 'queArea', 'queRoad', 'queVillage']);
 			$$.searchCascader(values, 'caseType', 1, ['caseType', 'caseType']);
 			getListData({ ...values }, session);
+			ledgerCount({ ...values }, session);
 			return;
 		}
 	}
@@ -131,6 +153,7 @@
 		if (res.type) {
 			let nowData = res.data || {};
 			setData({ ...data, ...nowData });
+			// !allData.hasOwnProperty('sysNum') && ledgerCount(submitData, ledgerType);
 			// setSearch(submitData);
 		}
 	}
@@ -186,6 +209,15 @@
 			3: 'queRoad',
 			4: 'queVillage',
 		}[KeyIndex];
+	}
+
+	async function ledgerCount(submitData, ledgerType) {
+		global.setSpinning(true);
+		const res = await ledgerCountApi({ ...submitData, ledgerType });
+		global.setSpinning(false);
+		if (res.type) {
+			setAllData({ ...res.data });
+		}
 	}
 
 	useEffect(() => {
@@ -281,7 +313,7 @@
 							{
 								icon: disputeLedger_8,
 								title: '全部',
-								value: data?.totalNum || 0,
+								value: allData?.allNum || 0,
 								backgroundColor: '#e8f7ff',
 								borderColor: '#3491fa',
 								color: '#3491FA',
@@ -290,56 +322,56 @@
 							{
 								icon: disputeLedger_9,
 								title: '本系统',
-								value: data?.sysNum || 0,
+								value: allData?.sysNum || 0,
 								backgroundColor: '#fff7e6',
 								borderColor: '#FA8C16',
 								color: '#FA8C16',
-								per: `${data?.sysRate || 0}%`,
+								per: `${allData?.sysRate || 0}%`,
 							},
 							{
 								icon: disputeLedger_10,
 								title: '12345',
-								value: data?.ottffNum || 0,
+								value: allData?.ottffNum || 0,
 								backgroundColor: '#F9F0FF',
 								borderColor: '#722ED1',
 								color: '#722ED1',
-								per: `${data?.ottffRate || 0}%`,
+								per: `${allData?.ottffRate || 0}%`,
 							},
 							{
 								icon: disputeLedger_11,
 								title: '非警务纠纷',
-								value: data?.fjwjfNum || 0,
+								value: allData?.tzfjwjfNum || 0,
 								backgroundColor: 'rgba(182,221,241,0.24)',
 								borderColor: '#1A6FB8',
 								color: '#1A6FB8',
-								per: `${data?.fjwjfRate || 0}%`,
+								per: `${allData?.tzfjwjfRate || 0}%`,
 							},
 							{
 								icon: disputeLedger_12,
 								title: '人民调解',
-								value: data?.rmtjNum || 0,
+								value: allData?.rmtjNum || 0,
 								backgroundColor: 'rgba(253,205,197,0.24)',
 								borderColor: '#F53F3F',
 								color: '#F53F3F',
-								per: `${data?.rmtjRate || 0}%`,
+								per: `${allData?.rmtjRate || 0}%`,
 							},
 							{
 								icon: disputeLedger_13,
 								title: '信访',
-								value: data?.xfNum || 0,
+								value: allData?.xfNum || 0,
 								backgroundColor: 'rgba(175,240,181,0.24)',
 								borderColor: '#00B42A',
 								color: '#00B42A',
-								per: `${data?.xfRate || 0}%`,
+								per: `${allData?.xfRate || 0}%`,
 							},
 							{
 								icon: disputeLedger_14,
 								title: '劳动争议',
-								value: data?.ldzcNum || 0,
+								value: allData?.ldzcNum || 0,
 								backgroundColor: 'rgba(181,245,236,0.24)',
 								borderColor: '#08979c',
 								color: '#08979c',
-								per: `${data?.ldzcRate || 0}%`,
+								per: `${allData?.ldzcRate || 0}%`,
 							},
 						].map((item, index) => (
 							<div
@@ -347,26 +379,9 @@
 									setActiveKey(index);
 									setActiveName(item.title);
 									if (index === 0) {
-										setAllNum(data?.allNum || 0);
 										handleSearch('search', '');
-									} else if (index === 1) {
-										setAllNum(data?.sysNum || 0);
-										handleSearch('search', 1);
-									} else if (index === 2) {
-										setAllNum(data?.ottffNum || 0);
-										handleSearch('search', 2);
-									} else if (index === 3) {
-										setAllNum(data?.rmtjNum || 0);
-										handleSearch('search', 3);
-									} else if (index === 4) {
-										setAllNum(data?.xfNum || 0);
-										handleSearch('search', 4);
-									} else if (index === 5) {
-										setAllNum(data?.ldzcNum || 0);
-										handleSearch('search', 5);
-									} else if (index === 6) {
-										setAllNum(data?.fjwjfNum || 0);
-										handleSearch('search', 6);
+									} else {
+										handleSearch('search', index);
 									}
 								}}
 								className={`disputeLedger-card ${activeKey === index ? 'disputeLedger-card-active' : ''}`}
@@ -383,17 +398,10 @@
 							>
 								<div>
 									<div className="disputeLedger-card-content">
-										<div className={`disputeLedger-card-content-t`}>
-											{item.title}
-										</div>
+										<div className={`disputeLedger-card-content-t`}>{item.title}</div>
 										<div>
-											<span className={`disputeLedger-card-title`}>
-												{item.value}
-											</span>{' '}
-											<span className={`disputeLedger-unit`}>件</span>{' '}
-											{item.per && (
-												<span className={`disputeLedger-unit `}>| {item.per}</span>
-											)}
+											<span className={`disputeLedger-card-title`}>{item.value}</span> <span className={`disputeLedger-unit`}>件</span>{' '}
+											{item.per && <span className={`disputeLedger-unit `}>| {item.per}</span>}
 										</div>
 									</div>
 									<img src={item.icon} style={{ width: activeKey === index && '52px', height: activeKey === index && '52px' }} alt="" />
@@ -443,11 +451,31 @@
 								<div style={{ paddingBottom: '12px' }}>
 									<MyLTopChartPie1
 										data={[
-											{ value: data.data4.value1, name: '化解中' },
-											{ value: data.data4.value2, name: '化解成功' },
-											{ value: data.data4.value3, name: '化解不成功' },
+											{ value: data.rejectNum, name: '不予受理' },
+											{ value: data.processNum, name: '化解中' },
+											{ value: data.finishNum, name: '化解成功' },
+											{ value: data.failNum, name: '化解不成功' },
 										]}
-										allNum={allNum}
+										allNum={(() => {
+											switch (activeKey) {
+												case 0:
+													return allData?.allNum || 0;
+												case 1:
+													return allData?.sysNum || 0;
+												case 2:
+													return allData?.ottffNum || 0;
+												case 3:
+													return allData?.tzfjwjfNum || 0;
+												case 4:
+													return allData?.rmtjNum || 0;
+												case 5:
+													return allData?.xfNum || 0;
+												case 6:
+													return allData?.ldzcNum || 0;
+												default:
+													return allData?.sysNum || 0;
+											}
+										})()}
 									/>
 								</div>
 							</div>
@@ -688,6 +716,10 @@
 				},
 				data: [
 					{
+						name: '不予受理',
+						icon: 'circle', // 图例标记的形状
+					},
+					{
 						name: '化解中',
 						icon: 'circle', // 图例标记的形状
 					},
@@ -707,7 +739,7 @@
 					type: 'pie',
 					radius: ['60%', '90%'], // 设置饼图的内半径和外半径,实现扇形区域
 					center: ['30%', '50%'],
-					color: ['#B6DDF1', '#3A8AC6', '#094282'],
+					color: ['#B6DDF1', '#5BA8E5', '#3A8AC6', '#094282'],
 					data: data,
 					label: {
 						show: true,

--
Gitblit v1.8.0