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/workDash/index.jsx | 497 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 286 insertions(+), 211 deletions(-) diff --git a/src/views/workDash/index.jsx b/src/views/workDash/index.jsx index ae0547c..f2da821 100644 --- a/src/views/workDash/index.jsx +++ b/src/views/workDash/index.jsx @@ -2,7 +2,7 @@ * @Company: hugeInfo * @Author: lwh * @Date: 2024-09-14 15:59:17 - * @LastEditTime: 2025-05-09 14:20:13 + * @LastEditTime: 2025-06-21 11:32:31 * @LastEditors: lwh * @Version: 1.0.0 * @Description: @@ -40,6 +40,10 @@ workDash_24, workDash_25, workDash_26, + workDash_27, + workDash_28, + workDash_29, + workDash_30, } from '../../assets/images'; import NewPage from '../../components/NewPage/index'; import * as echarts from 'echarts'; @@ -376,6 +380,14 @@ getListData({ ...search, canal: '22_00001-3' }, listDataSearch); } else if (activeKey === '5') { getListData({ ...search, canal: '22_00001-4' }, listDataSearch); + } else if (activeKey === '6') { + getListData({ ...search, canal: '22_00001-3', canalSecond: '22_00003-8' }, listDataSearch); + } else if (activeKey === '7') { + getListData({ ...search, canal: '22_00001-3', canalSecond: '22_00003-2' }, listDataSearch); + } else if (activeKey === '8') { + getListData({ ...search, canal: '22_00001-4', canalSecond: '22_00003-1' }, listDataSearch); + } else if (activeKey === '9') { + getListData({ ...search, canal: '22_00001-4', canalSecond: '22_00003-7' }, listDataSearch); } } } @@ -783,6 +795,14 @@ return '自行排查'; case '5': return '协同推送'; + case '6': + return '部门排查'; + case '7': + return '网格排查'; + case '8': + return '非警务纠纷'; + case '9': + return '专项纠纷'; default: break; } @@ -1083,7 +1103,7 @@ {tabKey === '4' && ( <Button className="source-button source-button-color" - icon={<img className="source-icon" src={workDash_22} alt="" srcset="" />} + icon={<img className="source-icon" src={workDash_29} alt="" srcset="" />} type="secondary" > 自行排查 @@ -1097,6 +1117,94 @@ > 协同推送 </Button> + )} + {tabKey === '6' && ( + <Space> + <Button + onClick={() => { + tabsOnchange('4'); + }} + className="source-button" + icon={<img className="source-icon" src={workDash_28} alt="" srcset="" />} + type="secondary" + > + 自行排查 + </Button> + <IconCaretRight /> + <Button + className="source-button source-button-color" + icon={<img className="source-icon" src={workDash_23} alt="" srcset="" />} + type="secondary" + > + 部门排查 + </Button> + </Space> + )} + {tabKey === '7' && ( + <Space> + <Button + onClick={() => { + tabsOnchange('4'); + }} + className="source-button" + icon={<img className="source-icon" src={workDash_28} alt="" srcset="" />} + type="secondary" + > + 自行排查 + </Button> + <IconCaretRight /> + <Button + className="source-button source-button-color" + icon={<img className="source-icon" src={workDash_23} alt="" srcset="" />} + type="secondary" + > + 网格排查 + </Button> + </Space> + )} + {tabKey === '8' && ( + <Space> + <Button + onClick={() => { + tabsOnchange('5'); + }} + className="source-button" + icon={<img className="source-icon" src={workDash_27} alt="" srcset="" />} + type="secondary" + > + 协同推送 + </Button> + <IconCaretRight /> + <Button + className="source-button1 source-button-color" + icon={<img className="source-icon" src={workDash_30} alt="" srcset="" />} + type="secondary" + > + 非警务纠纷 + </Button> + </Space> + )} + {tabKey === '9' && ( + <Space> + <Button + onClick={() => { + tabsOnchange('5'); + }} + className="source-button" + icon={<img className="source-icon" src={workDash_27} alt="" srcset="" />} + type="secondary" + > + 协同推送 + </Button> + <IconCaretRight /> + <Button + className="source-button source-button-color" + icon={<img className="source-icon" src={workDash_23} alt="" srcset="" />} + type="secondary" + > + 专项纠纷 + </Button> + </Space> )} </div> )} @@ -1122,7 +1230,7 @@ /> <div style={{ borderBottom: '1px solid #E5E6EB', position: 'absolute', width: '100%' }}></div> */} <div style={{ marginTop: '16px' }} className="disputeLedger-row"> - <div className="comprehensive-title">数据总览</div> + <div className="comprehensive-title">数据总览{tabKey !== '1' && `(${tabKeyTitles(tabKey)})`}</div> <div> <Space className="workDash-d" align="center" split={<Divider type="vertical" style={{ height: '48px' }} />}> <div @@ -1134,10 +1242,154 @@ <div className="workDash-item-img"> <img src={workDash_1} alt="" srcset="" /> </div> - <div className="workDash-item-div"> - <div className="workDash-item-title">总登记</div> - <div className="workDash-item-value">{data?.totalNum || 0}</div> - </div> + {['1', '2', '3', '6', '7', '8', '9'].includes(tabKey) && ( + <div className="workDash-item-div"> + <div className="workDash-item-title">总登记</div> + <div className="workDash-item-value">{data?.totalNum || 0}</div> + </div> + )} + {tabKey === '4' && ( + <div className="workDash-item-div"> + <div className="workDash-item-title"> + <div style={{ width: '50px' }}>总登记</div> + <div style={{ width: '36px' }}></div>{' '} + <Space split={<Divider type="vertical" />}> + <div style={{ display: 'flex', alignItems: 'center' }}> + <span className="workDash-item-title-blue"></span> + <span + style={{ + color: '#4E5969', + fontSize: '14px', + display: 'flex', + alignItems: 'center', + display: 'inline-block', + width: '150px', + }} + > + 部门排查:{data?.bmpcNum || 0}件 + </span> + <span + onClick={() => { + tabsOnchange('6'); + }} + style={{ + color: '#1A6FB8', + border: '1px solid #1A6FB8', + fontSize: '12px', + borderRadius: '2px', + padding: '0px 4px', + display: 'flex', + alignItems: 'center', + marginLeft: '12px', + }} + > + 查看 + </span> + </div> + </Space> + </div> + <div className="workDash-item-value" style={{ marginTop: '4px' }}> + <div style={{ width: '50px' }}>{data?.totalNum || 0}</div> + <div style={{ width: '36px' }}></div> + <Space split={<Divider type="vertical" />}> + <div style={{ display: 'flex', alignItems: 'center' }}> + <span className="workDash-item-title-blue"></span> + <span style={{ color: '#4E5969', fontSize: '14px', display: 'inline-block', width: '150px' }}> + 网格排查:{data?.wgpcNum || 0}件 + </span> + <span + onClick={() => { + tabsOnchange('7'); + }} + style={{ + color: '#1A6FB8', + border: '1px solid #1A6FB8', + fontSize: '12px', + borderRadius: '2px', + padding: '0px 4px', + display: 'flex', + alignItems: 'center', + marginLeft: '12px', + }} + > + 查看 + </span> + </div> + </Space> + </div> + </div> + )} + {tabKey === '5' && ( + <div className="workDash-item-div"> + <div className="workDash-item-title"> + <div style={{ width: '50px' }}>总登记</div> + <div style={{ width: '36px' }}></div>{' '} + <Space split={<Divider type="vertical" />}> + <div style={{ display: 'flex', alignItems: 'center' }}> + <span className="workDash-item-title-blue"></span> + <span + style={{ + color: '#4E5969', + fontSize: '14px', + display: 'flex', + alignItems: 'center', + display: 'inline-block', + width: '150px', + }} + > + 非警务纠纷:{data?.fjwjfNum || 0}件 + </span> + <span + onClick={() => { + tabsOnchange('8'); + }} + style={{ + color: '#1A6FB8', + border: '1px solid #1A6FB8', + fontSize: '12px', + borderRadius: '2px', + padding: '0px 4px', + display: 'flex', + alignItems: 'center', + marginLeft: '12px', + }} + > + 查看 + </span> + </div> + </Space> + </div> + <div className="workDash-item-value" style={{ marginTop: '4px' }}> + <div style={{ width: '50px' }}>{data?.totalNum || 0}</div> + <div style={{ width: '36px' }}></div> + <Space split={<Divider type="vertical" />}> + <div style={{ display: 'flex', alignItems: 'center' }}> + <span className="workDash-item-title-blue"></span> + <span style={{ color: '#4E5969', fontSize: '14px', display: 'inline-block', width: '150px' }}> + 专项纠纷:{data?.zxjfNum || 0}件 + </span> + <span + onClick={() => { + tabsOnchange('9'); + }} + style={{ + color: '#1A6FB8', + border: '1px solid #1A6FB8', + fontSize: '12px', + borderRadius: '2px', + padding: '0px 4px', + display: 'flex', + alignItems: 'center', + marginLeft: '12px', + }} + > + 查看 + </span> + </div> + </Space> + </div> + </div> + )} </div> <div onClick={() => { @@ -1170,14 +1422,15 @@ <div style={{ display: 'flex', alignItems: 'center' }}> <span className="workDash-item-title-green"></span> <span style={{ color: '#4E5969', fontSize: '14px', display: 'flex', alignItems: 'center' }}> - 化解成功:{data?.finishNum || 0}件 | 成功率:<span style={{ color: '#00B42A' }}>{((data?.finishNum*100)/(data?.finishNum+data?.failNum) || 0).toFixed(2)}%</span> + 化解成功:{data?.finishNum || 0}件 | 成功率: + <span style={{ color: '#00B42A' }}>{((data?.finishNum * 100) / (data?.finishNum + data?.failNum) || 0).toFixed(2)}%</span> <img style={{ width: '14px', height: '14px', marginLeft: '8px' }} src={workDash_5} alt="" srcset="" /> </span> </div> </Space> </div> <div className="workDash-item-value"> - <div style={{ width: '50px' }}>{data?.finishNum+data?.failNum || 0}</div> + <div style={{ width: '50px' }}>{data?.finishNum + data?.failNum || 0}</div> <div style={{ width: '36px' }}></div> <Space split={<Divider type="vertical" />}> <div> @@ -1218,13 +1471,13 @@ </div> <div className="workDash-main-card-one"> <div className="workDash-main-card"> - <div className="workDash-main-card-head"> - <div - className="workDash-main-card-head-l" - onClick={() => { - tabsOnchange('2'); - }} - > + <div + className="workDash-main-card-head" + onClick={() => { + tabsOnchange('2'); + }} + > + <div className="workDash-main-card-head-l"> <div className="workDash-main-card-head-l-img"> <img src={workDash_6} alt="" srcset="" /> </div> @@ -1267,13 +1520,13 @@ </div> <div className="workDash-main-card"> - <div className="workDash-main-card-head"> - <div - className="workDash-main-card-head-l workDash-bg_2" - onClick={() => { - tabsOnchange('3'); - }} - > + <div + className="workDash-main-card-head" + onClick={() => { + tabsOnchange('3'); + }} + > + <div className="workDash-main-card-head-l workDash-bg_2"> <div className="workDash-main-card-head-l-img workDash-bg_2_img"> <img src={workDash_7} alt="" srcset="" /> </div> @@ -1316,17 +1569,14 @@ </div> <div className="workDash-main-card"> - <div className="workDash-main-card-head"> + <div className="workDash-main-card-head" onClick={() => { + tabsOnchange('4'); + }}> <div className="workDash-main-card-head-l workDash-bg_3"> <div className="workDash-main-card-head-l-img workDash-bg_3_img"> <img src={workDash_8} alt="" srcset="" /> </div> - <div - className="workDash-main-card-head-l-img-title" - onClick={() => { - tabsOnchange('4'); - }} - > + <div className="workDash-main-card-head-l-img-title"> 详情 </div> </div> @@ -1367,13 +1617,10 @@ </div> <div className="workDash-main-card"> - <div className="workDash-main-card-head"> - <div - className="workDash-main-card-head-l workDash-bg_4" - onClick={() => { + <div className="workDash-main-card-head" onClick={() => { tabsOnchange('5'); - }} - > + }}> + <div className="workDash-main-card-head-l workDash-bg_4"> <div className="workDash-main-card-head-l-img workDash-bg_4_img"> <img src={workDash_9} alt="" srcset="" /> </div> @@ -1527,178 +1774,6 @@ </div> )} - {/* 公安非警务,12345,网格化 */} - {tabKey === '5' && ( - <div style={{ marginTop: '12px' }}> - <Row gutter={16}> - {/* 公安非警务 */} - <Col span={8}> - <div className="workDash-public"> - <div className="workDash-public-head"> - <div className="workDash-public-head-l"> - <div className="workDash-public-head-l-img"> - <img src={workDash_24} alt="" srcset="" /> - </div> - </div> - <div className="workDash-public-head-r"> - <div className="workDash-public-head-r-title">公安非警务</div> - <div className="workDash-public-head-r-value"> - <div className="workDash-public-head-r-value-num"> - {data?.oneSecondSource?.caseNum || 0}条 <span className="workDash-public-head-r-value-unit">(工单总数)</span> - </div> - </div> - </div> - </div> - <div className="workDash-public-body"> - <Row gutter={[12, 8]}> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解中</div> - <div className="workDash-public-body-item-value">{data?.oneSecondSource?.resolveingNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">回退</div> - <div className="workDash-public-body-item-value">{data?.oneSecondSource?.rejectNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解成功</div> - <div className="workDash-public-body-item-value">{data?.oneSecondSource?.resolveNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解不成功</div> - <div className="workDash-public-body-item-value">{data?.oneSecondSource?.unResolveNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解成功率</div> - <div className="workDash-public-body-item-value">{data?.oneSecondSource?.resolveRate || 0}%</div> - </div> - </Col> - </Row> - </div> - </div> - </Col> - - {/* 12345 */} - <Col span={8}> - <div className="workDash-public"> - <div className="workDash-public-head"> - <div className="workDash-public-head-l"> - <div className="workDash-public-head-l-img workDash-public-head-l-img-green"> - <img src={workDash_25} alt="" srcset="" /> - </div> - </div> - <div className="workDash-public-head-r"> - <div className="workDash-public-head-r-title">12345</div> - <div className="workDash-public-head-r-value"> - <div className="workDash-public-head-r-value-num"> - {data?.twoSecondSource?.caseNum || 0}条 <span className="workDash-public-head-r-value-unit">(工单总数)</span> - </div> - </div> - </div> - </div> - <div className="workDash-public-body"> - <Row gutter={[12, 8]}> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解中</div> - <div className="workDash-public-body-item-value">{data?.twoSecondSource?.resolveingNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">不予受理</div> - <div className="workDash-public-body-item-value">{data?.twoSecondSource?.rejectNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解成功</div> - <div className="workDash-public-body-item-value">{data?.twoSecondSource?.resolveNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解不成功</div> - <div className="workDash-public-body-item-value">{data?.twoSecondSource?.unResolveNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解成功率</div> - <div className="workDash-public-body-item-value">{data?.twoSecondSource?.resolveRate || 0}%</div> - </div> - </Col> - </Row> - </div> - </div> - </Col> - - {/* 网格化 */} - <Col span={8}> - <div className="workDash-public"> - <div className="workDash-public-head"> - <div className="workDash-public-head-l"> - <div className="workDash-public-head-l-img workDash-public-head-l-img-blue"> - <img src={workDash_26} alt="" srcset="" /> - </div> - </div> - <div className="workDash-public-head-r"> - <div className="workDash-public-head-r-title">网格化</div> - <div className="workDash-public-head-r-value"> - <div className="workDash-public-head-r-value-num"> - {data?.threeSecondSource?.caseNum || 0}条 <span className="workDash-public-head-r-value-unit">(工单总数)</span> - </div> - </div> - </div> - </div> - <div className="workDash-public-body"> - <Row gutter={[12, 8]}> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解中</div> - <div className="workDash-public-body-item-value">{data?.threeSecondSource?.resolveingNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">不予受理</div> - <div className="workDash-public-body-item-value">{data?.threeSecondSource?.rejectNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解成功</div> - <div className="workDash-public-body-item-value">{data?.threeSecondSource?.resolveNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解不成功</div> - <div className="workDash-public-body-item-value">{data?.threeSecondSource?.unResolveNum || 0}条</div> - </div> - </Col> - <Col span={12}> - <div className="workDash-public-body-item"> - <div className="workDash-public-body-item-title">化解成功率</div> - <div className="workDash-public-body-item-value">{data?.threeSecondSource?.resolveRate || 0}%</div> - </div> - </Col> - </Row> - </div> - </div> - </Col> - </Row> - </div> - )} - {/* 纠纷类型 化解状况 事项等级 */} {tabKey !== '1' && ( <div style={{ marginTop: '12px', width: '100%' }}> @@ -1813,7 +1888,7 @@ style={{ position: 'absolute', zIndex: '1000', alignItems: 'center', justifyContent: 'space-between', width: '100%' }} className="big-green-main-title-display" > - <div className="disputeLedger-green-title">化解统计</div> + <div className="disputeLedger-green-title">化解统计{tabKey !== '1' && `(${tabKeyTitles(tabKey)})`}</div> <div style={{ paddingRight: '24px' }}> <Select style={{ width: '180px' }} @@ -1833,7 +1908,7 @@ </Option> ))} </Select> - <Button type="outline" onClick={downloadAreaXls}> + <Button style={{ marginLeft: '12px' }} type="outline" onClick={downloadAreaXls}> 导出 </Button> </div> @@ -1998,7 +2073,7 @@ <div className="workDash-main-flex_1" style={{ marginBottom: '12px' }}> <div className="big-green-main-title-display-table"> <div className="disputeLedger-green-title" style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}> - <div>实时动态</div> + <div>实时动态{tabKey !== '1' && `(${tabKeyTitles(tabKey)})`}</div> {/* 导出 */} <Button type="outline" onClick={downloadXls}> 导出 -- Gitblit v1.8.0