diff --git a/src/components/HncyModal/index.less b/src/components/HncyModal/index.less index c118b8a5546e9623cb198ece3cc8e387481eee67..1198faa33fd33d3b7a75e1e4738723c8dc8d5808 100644 --- a/src/components/HncyModal/index.less +++ b/src/components/HncyModal/index.less @@ -2,25 +2,23 @@ border-radius: 30px; backdrop-filter: blur(10px); background: rgba(22, 85, 135, 0.6); - padding: 20px 30px; + padding: 20px 30px; } .head { width: 100%; height: 74px; border-radius: 15px; - background: linear-gradient( - 90deg, - rgba(119, 250, 255, 0.34), - rgba(76, 154, 228, 0.34) 30%, - transparent 50%, - transparent 100% - ); + background: linear-gradient(90deg, + rgba(119, 250, 255, 0.34), + rgba(76, 154, 228, 0.34) 30%, + transparent 50%, + transparent 100%); display: flex; align-items: center; padding-left: 30px; - > p { + >p { background: linear-gradient(180deg, rgb(255, 255, 255), rgb(181, 229, 255)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; @@ -32,6 +30,7 @@ } .content { + width: auto; padding-top: 20px; box-sizing: border-box; } @@ -45,14 +44,13 @@ .ant-modal-close { border-radius: 32px; - background: linear-gradient( - 136.24deg, - rgba(128, 154, 255, 0.36) 14.51%, - rgba(45, 168, 255, 0.36) 84.656% - ); + background: linear-gradient(136.24deg, + rgba(128, 154, 255, 0.36) 14.51%, + rgba(45, 168, 255, 0.36) 84.656%); color: rgb(199, 243, 255); top: 37px; right: 30px; + &:hover { color: #fff; opacity: 0.8; @@ -60,7 +58,7 @@ } } - .ant-modal { + .ant-modal { max-width: unset !important; } } @@ -68,4 +66,4 @@ .mask { background-color: rgba(0, 11, 25, 0.7) !important; -} +} \ No newline at end of file diff --git a/src/pages/Common/Event/CommonList/index.tsx b/src/pages/Common/Event/CommonList/index.tsx index df246e0943aedcbf45ef4d93e8f0c6c0c7d7018b..f91ab18b56773c4d54d9ab7de4c7f22b7fcc5e2a 100644 --- a/src/pages/Common/Event/CommonList/index.tsx +++ b/src/pages/Common/Event/CommonList/index.tsx @@ -1,27 +1,24 @@ -import { Flex, Space, useMemo } from 'antd' -import styles from './index.less' -import ListTabs from '@/pages/Common/components/ListTabs' -import ProcessCard from '@/pages/Common/components/ProcessCard' -import BaseCard from '@/pages/Common/components/BaseCard' -import ListView from '@/pages/Common/components/ListView' -import EventPicList from '@/pages/Common/components/EventPicList' -import EventDetail from '@/pages/Common/Event/EventDetail' -import ToggleView from '@/components/ToggleView' -import LineCharts from './LineCharts' -import Tabs from '@/components/Tabs'; -import { useEffect, useState } from 'react' -import { eventList } from '@/mock/event' -import services from '@/services' import Modal from '@/components/HncyModal'; +import Tabs from '@/components/Tabs'; +import ToggleView from '@/components/ToggleView'; +import BaseCard from '@/pages/Common/components/BaseCard'; +import EventPicList from '@/pages/Common/components/EventPicList'; +import ListView from '@/pages/Common/components/ListView'; +import ProcessCard from '@/pages/Common/components/ProcessCard'; +import EventDetail from '@/pages/Common/Event/EventDetail'; +import services from '@/services'; +import { Flex, Space } from 'antd'; +import { useEffect, useState } from 'react'; +import styles from './index.less'; +import LineCharts from './LineCharts'; interface CommonListProps { - type: string, - extra?: any + type: string; + extra?: any; } const CommonList = (props: CommonListProps) => { - - const { type, extra } = props + const { type, extra } = props; // 事件详情弹窗 const [detailModalOpt, setDetailModalOpt] = useState<{ @@ -31,24 +28,24 @@ const CommonList = (props: CommonListProps) => { }>({ open: false, title: '', - eventId: '' - }) + eventId: '', + }); // tabs内容 const defalutTabItems = [ { key: '1', - label: '全部' + label: '全部', }, { key: '2', - label: '处置中' + label: '处置中', }, { key: '3', - label: '已办结' - } - ] + label: '已办结', + }, + ]; // 视图 const [viewType, setViewType] = useState<'list' | 'pic'>('pic'); //展示 @@ -59,7 +56,7 @@ const CommonList = (props: CommonListProps) => { caseStatus: '', eventType: '', isDispose: '1', - } + }; //事件列表 const [listData, setListData] = useState({ @@ -70,13 +67,12 @@ const CommonList = (props: CommonListProps) => { hasNext: false, }); - const [fetchParams, setFetchParams] = useState(params) - - const [eventStatistics, setEventStatistics] = useState({}) - const [categoryStatistics, setCategoryStatistics] = useState([]) - const [areaStatistics, setAreaStatistics] = useState([]) - const [importEventStatistics, setImportEventStatistics] = useState([]) + const [fetchParams, setFetchParams] = useState(params); + const [eventStatistics, setEventStatistics] = useState({}); + const [categoryStatistics, setCategoryStatistics] = useState([]); + const [areaStatistics, setAreaStatistics] = useState([]); + const [importEventStatistics, setImportEventStatistics] = useState([]); // 获取左侧顶部事件相关统计 const getCityStatistics = () => { @@ -84,17 +80,17 @@ const CommonList = (props: CommonListProps) => { eventType: '', type: '', time: '', - singleType: "" + singleType: '', + }; + if (type !== '3') { + params.singleType = type; } - if(type !== '3') { - params.singleType = type - } - services.CityProblemApi.getContentStatisticsApi(params).then(res => { + services.CityProblemApi.getContentStatisticsApi(params).then((res) => { if (res.code === 200) { - setEventStatistics(res.data) + setEventStatistics(res.data); } - }) - } + }); + }; // 高发类别统计 const getCategoryAnalysis = (category = 'mainClass') => { @@ -103,22 +99,22 @@ const CommonList = (props: CommonListProps) => { type: '', time: '', top: 3, - singleType: "" - } - if(type !== '3') { - params.singleType = type + singleType: '', + }; + if (type !== '3') { + params.singleType = type; } - services.CityProblemApi.getCategoryTopAnalysisApi(params).then(res => { + services.CityProblemApi.getCategoryTopAnalysisApi(params).then((res) => { if (res.code === 200) { - setCategoryStatistics(res.data) + setCategoryStatistics(res.data); } - }) - } + }); + }; - const onChangeCategory = (value:string) => { - console.log('onChangeCategory', value) - getCategoryAnalysis(value) - } + const onChangeCategory = (value: string) => { + console.log('onChangeCategory', value); + getCategoryAnalysis(value); + }; // 高发类别统计 const getAreaAnalysis = () => { @@ -127,119 +123,128 @@ const CommonList = (props: CommonListProps) => { type: '', time: '', top: 3, - singleType: "" + singleType: '', + }; + if (type !== '3') { + params.singleType = type; } - if(type !== '3') { - params.singleType = type - } - services.CityProblemApi.getAreaDistribAnalysisApi(params).then(res => { + services.CityProblemApi.getAreaDistribAnalysisApi(params).then((res) => { if (res.code === 200) { - setAreaStatistics(res.data) + setAreaStatistics(res.data); } - }) - } + }); + }; // 事件列表 - const getEventsList = (caseStatus = '', isDispose = '', eventType = '', isOther = '', collectionModel = '') => { + const getEventsList = ( + caseStatus = '', + isDispose = '', + eventType = '', + isOther = '', + collectionModel = '', + ) => { const params = { page: 1, count: 10, - singleType: "", + singleType: '', caseStatus: caseStatus, isDispose: isDispose, eventType: eventType, isOther: isOther, - collectionModel - } - if(type !== '3') { - params.singleType = type + collectionModel, + }; + if (type !== '3') { + params.singleType = type; } - if(extra?.eventType) { - params.eventType = extra.eventType + if (extra?.eventType) { + params.eventType = extra.eventType; } - if(extra?.isOther) { - params.isOther = extra.isOther + if (extra?.isOther) { + params.isOther = extra.isOther; } - if(extra?.collectionModel) { - params.collectionModel = extra.collectionModel + if (extra?.collectionModel) { + params.collectionModel = extra.collectionModel; } services.CityProblemApi.getZzEventListApi(params).then((res) => { if (res.code === 200) { - setListData({ ...res.data, items: res.data.items }) + setListData({ ...res.data, items: res.data.items }); } - }) - } + }); + }; // 事件统计 const getImportEventStatistics = () => { const params = { - singleType: type - } - services.CityProblemApi.getImportEventStatisticsApi(params).then(res => { + singleType: type, + }; + services.CityProblemApi.getImportEventStatisticsApi(params).then((res) => { if (res.code === 200) { - const result = res.data.map(item => { + const result = res.data.map((item) => { return { label: `${item.case_status_name} ${item.total}`, - key: item.case_status - } - }) - setImportEventStatistics(result) - if(type === '3') { - getEventsList() + key: item.case_status, + }; + }); + setImportEventStatistics(result); + if (type === '3') { + getEventsList(); } else { - getEventsList(result[0]?.key) + getEventsList(result[0]?.key); } } - }) - } + }); + }; const changeListTab = (value: string) => { - console.log(value) - getEventsList(value) - } + console.log(value); + getEventsList(value); + }; const changeTab = (value: string) => { - if(value === '1') { - getEventsList() - } else if(value === '2') { - getEventsList('90') - }else if(value === '3') { - getEventsList('', '1') + if (value === '1') { + getEventsList(); + } else if (value === '2') { + getEventsList('90'); + } else if (value === '3') { + getEventsList('', '1'); } - } + }; useEffect(() => { - getCityStatistics() - getCategoryAnalysis() - getAreaAnalysis() - getImportEventStatistics() - },[]) + getCityStatistics(); + getCategoryAnalysis(); + getAreaAnalysis(); + getImportEventStatistics(); + }, []); return ( - - + - - + + - {eventStatistics.disposalNum} + + {eventStatistics.disposalNum} + 处置中 - + - {eventStatistics.caseClosedNum} + + {eventStatistics.caseClosedNum} + 已办结 - + {eventStatistics.ratio} % @@ -250,9 +255,9 @@ const CommonList = (props: CommonListProps) => {
@@ -261,34 +266,34 @@ const CommonList = (props: CommonListProps) => { } @@ -300,7 +305,7 @@ const CommonList = (props: CommonListProps) => { /> { />
- + - { - type === '3' ? : - - } - + {type === '3' ? ( + + ) : ( + + )} + setViewType(type)} /> @@ -324,10 +338,18 @@ const CommonList = (props: CommonListProps) => { listData={listData} listHeight={540} setParams={(data) => { - setFetchParams({ ...fetchParams, page: data.pageNum, count: data.pageSize }) + setFetchParams({ + ...fetchParams, + page: data.pageNum, + count: data.pageSize, + }); }} handleDetail={(details) => { - setDetailModalOpt({ open: true, title: '事件详情', eventId: details.eventId }) + setDetailModalOpt({ + open: true, + title: '事件详情', + eventId: details.eventId, + }); }} /> ) : ( @@ -335,10 +357,14 @@ const CommonList = (props: CommonListProps) => { listData={listData} listHeight={640} setParams={(data) => { - setFetchParams({ ...fetchParams, page: data.page }) + setFetchParams({ ...fetchParams, page: data.page }); }} handleDetail={(details) => { - setDetailModalOpt({ open: true, title: '事件详情', eventId: details.eventId }) + setDetailModalOpt({ + open: true, + title: '事件详情', + eventId: details.eventId, + }); }} /> )} @@ -346,14 +372,16 @@ const CommonList = (props: CommonListProps) => { setDetailModalOpt({ open: false, title: '', eventId: '' })} - width={1160} + onCancel={() => + setDetailModalOpt({ open: false, title: '', eventId: '' }) + } + width={'fit-content'} height={950} > - ) -} + ); +}; -export default CommonList; \ No newline at end of file +export default CommonList; diff --git a/src/pages/Common/Event/EventDetail/DirectEventDetail/index.tsx b/src/pages/Common/Event/EventDetail/DirectEventDetail/index.tsx index 7e43726b840af1f4a70792ed029015d294881cba..71369306fc9887c9728ddbd7e5bbb25ce073d7ab 100644 --- a/src/pages/Common/Event/EventDetail/DirectEventDetail/index.tsx +++ b/src/pages/Common/Event/EventDetail/DirectEventDetail/index.tsx @@ -1,11 +1,11 @@ -//单兵直达事件详情 -import EventLeftInfo from '../EventLeftInfo'; +//单兵直达事件详情 import services from '@/services'; import { ensureLength, imageOptions } from '@/utils/comm'; -import { Flex, Image, Popover, Progress, Space } from 'antd'; +import { Flex, Image, Popover, Space } from 'antd'; import classNames from 'classnames'; import { CSSProperties, useEffect, useState } from 'react'; import styles from './index.less'; +import EventLeftInfo from '../EventLeftInfo'; interface LabelNumProps { preLabel?: string; number: string | undefined; @@ -129,7 +129,7 @@ const DirectEventDetail: React.FC = ({ {/* = ({ /> */}
- {/* */} @@ -189,7 +179,7 @@ const DirectEventDetail: React.FC = ({ {it.personName} -

{it.deptName}

+

{it.deptName}

diff --git a/src/pages/Common/Event/EventDetail/EventLeftInfo/index.less b/src/pages/Common/Event/EventDetail/EventLeftInfo/index.less index a9ee4f4a92e2ca8582152686d74c06d9a88f9c25..3737896200c4eee86588fbd0c97df13e79621d94 100644 --- a/src/pages/Common/Event/EventDetail/EventLeftInfo/index.less +++ b/src/pages/Common/Event/EventDetail/EventLeftInfo/index.less @@ -1,5 +1,5 @@ .leftWrap { - width: 50%; + flex: 1; margin-right: 20px; display: flex; margin-right: 15px; @@ -60,7 +60,7 @@ .eventImgWrap { width: 100%; - height: 560px; + height: 480px; border-radius: 20px; overflow: hidden; display: flex; diff --git a/src/pages/Common/Event/EventDetail/index.less b/src/pages/Common/Event/EventDetail/index.less index 17da67330edd37574463b9779cd3f43e8759c06e..8b17378191b2ebded799ad85fde075449ce00cc2 100644 --- a/src/pages/Common/Event/EventDetail/index.less +++ b/src/pages/Common/Event/EventDetail/index.less @@ -1,11 +1,16 @@ .eventContent { - padding: 10px 0 15px; - height:100%; + padding: 10px 0 15px; + width: 1100px; + height: calc(100% - 40px); display: flex; + > div { + width: 50%; + } + .transferWrap { - flex: 1; - height: 100%; + height: 100%; + background: rgba(246, 249, 255, 0.5); border-radius: 20px; overflow: hidden; } diff --git a/src/pages/IndustryOperation/components/Card/index.less b/src/pages/IndustryOperation/components/Card/index.less index 755c2cbf97ea66961f2a60b5de8789f852ad4d5e..a8f12c8ffa822015d10065950645e2f1279daf9e 100644 --- a/src/pages/IndustryOperation/components/Card/index.less +++ b/src/pages/IndustryOperation/components/Card/index.less @@ -1,9 +1,7 @@ .container { - background: linear-gradient( - to bottom, - rgb(27, 50, 89), - rgba(27, 50, 89, 0.59) - ); + background: linear-gradient(to bottom, + rgb(27, 50, 89), + rgba(27, 50, 89, 0.59)); border-radius: 40px; padding: 35px; @@ -26,6 +24,11 @@ justify-content: center; cursor: pointer; + &.bindClick { + // pointer-events: none; + opacity: 0; + } + &:hover { background-color: rgb(28, 192, 255); } @@ -34,3 +37,21 @@ opacity: 0.6; } } + +.otherSystem { + width: fit-content; + background: rgba(41, 84, 136, 0.95); + padding: 10px 10px 10px 40px; + text-align: right; + font-size: 20px; + line-height: 52px; + display: flex; + flex-direction: column; + + >span { + &:hover { + cursor: pointer; + color: #61d9f9; + } + } +} \ No newline at end of file diff --git a/src/pages/IndustryOperation/components/Card/index.tsx b/src/pages/IndustryOperation/components/Card/index.tsx index 9e435a1b997a37a5c898a1b65c2185856ce1f597..9047e5b9c57889dd783ae6ddfba0e641ed09ded9 100644 --- a/src/pages/IndustryOperation/components/Card/index.tsx +++ b/src/pages/IndustryOperation/components/Card/index.tsx @@ -1,22 +1,54 @@ import { RightOutlined } from '@ant-design/icons'; -import { Flex } from 'antd'; +import { ConfigProvider, Flex, Popover } from 'antd'; +import classNames from 'classnames'; import React, { PropsWithChildren } from 'react'; import styles from './index.less'; interface PropsType { title: string; + jumpSystem?: { name: string; url: string }[]; //外跳系统 onMore?(): void; } const Card: React.FC> = (props) => { - const { title, onMore, children } = props; + const { title, onMore, children, jumpSystem } = props; + + //跳转其他系统 + const jumpOtherSystem = (url: string) => { + window.open(url, '_blank'); + }; return (
{title}
-
- -
+ + + {jumpSystem?.map((it) => ( + jumpOtherSystem(it.url)}>{it.name} + ))} +
+ } + placement="bottomRight" + > +
+ +
+ +
{children}
diff --git a/src/pages/IndustryOperation/index.tsx b/src/pages/IndustryOperation/index.tsx index 90b4fcda1dcbb75a6d7fb44f5de95167c3a78aa5..718b44bdbf86ee386dec4e8a9c1300a1ff00413c 100644 --- a/src/pages/IndustryOperation/index.tsx +++ b/src/pages/IndustryOperation/index.tsx @@ -40,10 +40,26 @@ const IndustryOperation: React.FC = () => { { title: '数字城管', children: , + popverSystem: [ + { + name: '成都市数字化城市管理信息系统', + url: 'http://171.221.172.80:6888/eUrbanMIS/main.htm', + }, + ], }, { title: '城管执法', children: , + popverSystem: [ + { + name: '违法建设治理系统', + url: 'https://wjzl.cdcgzfzd.cn:1234/', + }, + { + name: '综合行政执法智慧服务平台', + url: 'http://171.221.172.80:6888/eUrbanMIS/main.htm', + }, + ], }, { title: '市容广告', @@ -52,14 +68,52 @@ const IndustryOperation: React.FC = () => { { title: '道桥监管', children: , + popverSystem: [ + { + name: '桥梁水位监测系统', + url: 'https://swjc.cddqgl.com:105/', + }, + { + name: '桥梁健康监测系统', + url: 'https://jk.cddqgl.com/#/login', + }, + { + name: '成都市城市道路桥梁监控中心综合应用平台', + url: 'https://yj.cddqgl.com:8008/DQCenter/', + }, + { + name: '成都市占用(挖掘)城市道路信息管理平台', + url: 'https://gl.cdzdwj.com/', + }, + { + name: '成都市道路桥梁信息管理系统', + url: 'https://www.cddqgl.com/', + }, + ], }, { title: '照明监管', children: , + popverSystem: [ + { + name: '成都市城市照明综合监管平台', + url: 'https://service.cdzmjg.cn:8443/', + }, + { + name: '照明运维系统', + url: 'https://service.cdzmjg.cn:8443/', + }, + ], }, { title: '扬尘治理', children: , + popverSystem: [ + { + name: '成都市工地扬尘监控及建筑垃圾运输处置信息和监管平台', + url: 'http://221.237.182.174:8011/', + }, + ], }, { title: '垃圾分类', @@ -101,7 +155,11 @@ const IndustryOperation: React.FC = () => {
{views.map((item, index) => { return ( - + {item.children} ); diff --git a/src/pages/TheOperationOfCityOverall/components/GarbageDisposal/index.tsx b/src/pages/TheOperationOfCityOverall/components/GarbageDisposal/index.tsx index 2f5c76e259c74bb4c47be615e3de3b79b3751581..21e3c48d74f61df2a7c602f543fb2bbecc543e6f 100644 --- a/src/pages/TheOperationOfCityOverall/components/GarbageDisposal/index.tsx +++ b/src/pages/TheOperationOfCityOverall/components/GarbageDisposal/index.tsx @@ -9,11 +9,7 @@ const GarbageDisposal: React.FC = () => {
- +
{ +interface RaiseDustProps { + indexId: string; +} +const RaiseDust: React.FC = ({ indexId }) => { return ( - +
{ + const { data: indutryIndexData, loading } = useRequest(() => + services.Physicalsign.getCityRunIndutryIndexInstance({ + physicalSignType: '1', + objectId: '510100', + }), + ); const views = useMemo(() => { return [ { title: '市容秩序', - children: , + children: , }, { title: '垃圾处置', @@ -21,40 +30,61 @@ const TheOperationOfCityOverall: React.FC = () => { }, { title: '城市照明', - children: , + children: , + popverSystem: [ + { + name: '成都市城市照明综合监管平台', + url: 'https://service.cdzmjg.cn:8443/', + }, + { + name: '照明运维系统', + url: 'https://service.cdzmjg.cn:8443/', + }, + ], }, { title: '道路桥梁', - children: , + children: , }, ]; }, []); return ( -
- - - 城市运行总体情况 - 2024-10-28 + +
+ +
城市运行总体情况
+ + + {indutryIndexData?.data[0]?.time} 更新 + +
城市管理运行日报
+ +
+
+ + + +
+ {views.map((item, index) => { + return ( + + {item.children} + + ); + })} +
- - 2024-10-29 00:20 更新 -
城市管理运行日报
- -
- - - -
- {views.map((item, index) => { - return ( - - {item.children} - - ); - })} -
-
-
+
+ ); }; diff --git a/src/services/Physicalsign.ts b/src/services/Physicalsign.ts index c9ddf244e787e30359755eb98fd8c961519c2fb8..725539aa03e0fd8087189a6bb1fa4913eba60786 100644 --- a/src/services/Physicalsign.ts +++ b/src/services/Physicalsign.ts @@ -291,4 +291,17 @@ export async function getAllIndutryIndexInstance( method: 'GET', params, }); +} + +//城市运行情况的行业体征 +export async function getCityRunIndutryIndexInstance( + params: { + physicalSignType: '1'; + objectId: '510100'; + }, +): Promise> { + return request(urlProxyApis(`/zhgl/getCityRunIndutryIndexInstance`), { + method: 'GET', + params, + }); } \ No newline at end of file