From 252aa74034db281a07c9fe9df5000cc07ffe4950 Mon Sep 17 00:00:00 2001 From: xusd <330628789@qq.com> Date: Sun, 29 Jun 2025 16:28:23 +0800 Subject: [PATCH] fix:修改解纷态势逻辑 --- src/views/disputeLedger/index.jsx | 232 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 228 insertions(+), 4 deletions(-) diff --git a/src/views/disputeLedger/index.jsx b/src/views/disputeLedger/index.jsx index a6486d9..9c6229a 100644 --- a/src/views/disputeLedger/index.jsx +++ b/src/views/disputeLedger/index.jsx @@ -9,7 +9,7 @@ */ import React, { useState, useEffect, useRef, useMemo } from 'react'; import * as $$ from '../../utils/utility'; -import { Form, Typography, Row, Col, Space } from 'antd'; +import { Form, Typography, Row, Col, Space, Button } from 'antd'; import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'; import { IconUndo } from '@arco-design/web-react/icon'; import { @@ -28,9 +28,18 @@ disputeLedger_13, disputeLedger_14, } from '../../assets/images'; +import { + workDash_13, + workDash_14, + workDash_16, + workDash_17, + workDash_18, +} from '../../assets/images'; import NewPage from '../../components/NewPage/index'; import * as echarts from 'echarts'; import NewTableSearch from '../../components/NewTableSearch'; +import TableView from '../../components/TableView'; +import MyTabsNew from '../../components/MyTabsNew'; import './index.less'; const { Link } = Typography; @@ -48,6 +57,11 @@ // function ledgerCountApi(submitData) { return $$.ax.request({ url: 'caseInfo/ledgerCount', type: 'get', data: submitData, service: 'mediate' }); +} + +// 获取实时动态数据 +function getCaseInfoDataApi(submitData) { + return $$.ax.request({ url: 'caseInfo/pageQueryAll', type: 'get', data: submitData, service: 'mediate' }); } // 区域字典值 @@ -93,6 +107,11 @@ const [allData, setAllData] = useState({}); + // 实时动态相关状态 + const [listData, setListData] = useState({ tableData: [] }); //实时动态数据表 + const [listDataSearch, setListDataSearch] = useState({ page: 1, size: 10, sortColmn: '1', sortType: '2' }); //实时动态数据表 + const [tabKey, setTabKey] = useState('1'); // tab切换 + // 搜索 or 重置 function handleSearch(type, session) { if (type === 'reset') { @@ -113,6 +132,13 @@ }, activeKey ); + // 更新实时动态数据 + getCaseInfoData({ + [session.key]: session.value[0], + createStart: $$.dateFormat(session.createStart), + createEnd: $$.dateFormat(session.createEnd), + ...listDataSearch + }); } else { getListData( { @@ -130,6 +156,13 @@ }, activeKey ); + // 更新实时动态数据 + getCaseInfoData({ + [normalSearch.key]: normalSearch.value[0], + createStart: $$.dateFormat(normalSearch.createStart), + createEnd: $$.dateFormat(normalSearch.createEnd), + ...listDataSearch + }); } return; } @@ -141,6 +174,8 @@ $$.searchCascader(values, 'caseType', 1, ['caseType', 'caseType']); getListData({ ...values }, session); ledgerCount({ ...values }, session); + // 更新实时动态数据 + getCaseInfoData({ ...values, ...listDataSearch }); return; } } @@ -149,6 +184,15 @@ async function getListData(submitData, ledgerType) { global.setSpinning(true); const res = await getListDataApi({ ...submitData, ledgerType }); + if (ledgerType === 0 || ledgerType === 1) { + const res1 = await getCaseInfoDataApi({ ...submitData, ...listDataSearch }); //获取实时动态数据 + if (res1.type) { + setListData({ + total: res1?.data?.totalElements || 0, + tableData: res1?.data?.content || [], + }); + } + } global.setSpinning(false); if (res.type) { let nowData = res.data || {}; @@ -156,6 +200,7 @@ // !allData.hasOwnProperty('sysNum') && ledgerCount(submitData, ledgerType); // setSearch(submitData); } + } // 饼图点击进入下一层级 @@ -220,8 +265,142 @@ } } + // 实时动态相关函数 + const columns = () => { + const columnsData = [ + { + title: '登记时间', + width: 120, + dataIndex: 'createTime', + render: (text, record, index) => { + return ( + <div style={{ display: 'flex', gap: '8px' }}> + <div>{$$.dateFormat(text)}</div> + {record?.isRisk === '1' && <div className="public-tag public-tag-tagRed">扬言</div>} + </div> + ); + }, + }, + { title: '事项来源', width: 100, dataIndex: 'canalName' }, + { title: '事项状态', width: 100, dataIndex: 'statusName' }, + { title: '事项等级', width: 80, dataIndex: 'caseLevel' }, + { title: '事项类型', width: 150, dataIndex: 'caseTypeName' }, + { title: '问题属地', width: 170, dataIndex: 'areaName' }, + { title: '登记机构', width: 130, dataIndex: 'inputUnitName' }, + { title: '承办部门', width: 100, dataIndex: 'mediateUnitName' }, + { title: '办结时间', width: 100, dataIndex: 'closeTime', render: (text) => <span>{$$.dateFormat(text)}</span> }, + { + title: '化解结果', + width: 80, + dataIndex: 'mediResult', + render: (text) => ( + <div className={text === '22_00025-1' ? 'comprehensive-green' : text === '22_00025-2' ? 'comprehensive-red' : '-'}> + {text === '22_00025-1' ? '化解成功' : text === '22_00025-2' ? '化解不成功' : '-'} + </div> + ), + }, + { + title: '操作', + dataIndex: 'action', + width: 50, + render: (_, record) => { + return <Link onClick={() => handleJump(record)}>详情</Link>; + }, + }, + ]; + return columnsData; + }; + + // 跳转详情页 + function handleJump(record) { + // 仅在gz/index.html路径下生效 + const newWindow = window.open(`${$$.windowUrl}/windowDetail?caseTaskId=${record.caseTaskId}&caseId=${record.id}`); + } + + // tab标题映射 + function tabKeyTitles(type) { + switch (type) { + case '2': + return '大厅来访'; + case '3': + return '线上来访'; + case '4': + return '自行排查'; + case '5': + return '协同推送'; + case '6': + return '部门排查'; + case '7': + return '网格排查'; + case '8': + return '非警务纠纷'; + case '9': + return '专项治理'; + default: + break; + } + } + + // 切换tabs页 + function tabsOnchange(activeKey) { + console.log(activeKey); + setTabKey(activeKey); + if (activeKey !== tabKey) { + if (activeKey === '1') { + delete normalSearch.canal; + getCaseInfoData({ ...normalSearch, ...listDataSearch }); + } else if (activeKey === '2') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-1', ...listDataSearch }); + } else if (activeKey === '3') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-2', ...listDataSearch }); + } else if (activeKey === '4') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-3', ...listDataSearch }); + } else if (activeKey === '5') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-4', ...listDataSearch }); + } else if (activeKey === '6') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-3', canalSecond: '22_00003-8', ...listDataSearch }); + } else if (activeKey === '7') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-3', canalSecond: '22_00003-2', ...listDataSearch }); + } else if (activeKey === '8') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-4', canalSecond: '22_00003-1', ...listDataSearch }); + } else if (activeKey === '9') { + getCaseInfoData({ ...normalSearch, canal: '22_00001-4', canalSecond: '22_00003-7', ...listDataSearch }); + } + } + } + + // 页码修改 + function handleChangePage(page, pageSize) { + let paramsObj = Object.assign({ ...normalSearch, ...listDataSearch }, { page, size: pageSize }); + getCaseInfoData({ ...paramsObj }); + } + + // 获取实时动态数据 + async function getCaseInfoData(submitData) { + global.setSpinning(true); + const res = await getCaseInfoDataApi({ ...submitData }); + global.setSpinning(false); + setListDataSearch({ ...listDataSearch, page: submitData.page, size: submitData.size }); + if (res.type) { + setListData({ + total: res?.data?.totalElements || 0, + tableData: res?.data?.content || [], + }); + } + } + + // 导出数据 + function downloadXls() { + const keysToFilter = ['page', 'size']; + const filteredObj = Object.fromEntries(Object.entries(normalSearch).filter(([key, value]) => value !== undefined && !keysToFilter.includes(key))); + + window.open(`${$$.appUrl.baseUrl}/${$$.appUrl.mediate}/api/web/caseInfo/exportQueryAll?${$$.useQueryParams(filteredObj)}`); + } + useEffect(() => { treeByUserId(); + // 初始化时获取实时动态数据 + getCaseInfoData({ ...listDataSearch }); }, []); return ( @@ -378,10 +557,28 @@ onClick={() => { setActiveKey(index); setActiveName(item.title); - if (index === 0) { - handleSearch('search', ''); + if (index === 0 || index === 1) { + // 全部和本系统:重新查询数据 + if (index === 0) { + handleSearch('search', ''); + } else { + handleSearch('search', index); + } } else { - handleSearch('search', index); + // 12345热线处置的矛盾及其后面的tab:更新统计数据,清空实时动态数据 + let values = form.getFieldsValue(); + $$.changeTimNeweFormat(values, 'createTime', 'createStart', 'createEnd'); + $$.changeTimNeweFormat(values, 'endTime', 'closeStart', 'closeEnd'); + $$.searchCascader(values, 'queCode', normalSearch.level, ['queCity', 'queArea', 'queRoad', 'queVillage']); + $$.searchCascader(values, 'caseType', 1, ['caseType', 'caseType']); + + // 更新统计图表数据 + getListData({ ...values }, index); + ledgerCount({ ...values }, index); + + // 清空实时动态数据 + setListData({ tableData: [] }); + setListDataSearch({ page: 1, size: 10, sortColmn: '1', sortType: '2' }); } }} className={`disputeLedger-card ${activeKey === index ? 'disputeLedger-card-active' : ''}`} @@ -493,6 +690,33 @@ </div> </Space> </div> + + {/* 实时动态 */} + <div style={{ marginTop: '-10px' }}> + <div className="workDash-main-flex_1"> + <div className="big-green-main-title-display-table"> + <div className="disputeLedger-green-title" style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}> + <div>实时动态{tabKey !== '1' && `(${tabKeyTitles(tabKey)})`}</div> + + </div> + <div style={{ padding: '4px 16px 16px' }}> + <div className="workDash-table"> + <TableView + title="" + columns={columns()} + dataSource={listData.tableData} + pagination={{ + current: listDataSearch.page, + pageSize: listDataSearch.size, + total: listData.total, + onChange: (page, pageSize) => handleChangePage(page, pageSize), + }} + /> + </div> + </div> + </div> + </div> + </div> </div> </NewPage> ); -- Gitblit v1.8.0