Browse Source

视频监控

dev
wenlele 1 year ago
parent
commit
0219cde490
  1. 64
      web/client/src/sections/quanju/containers/footer/build/videoMonitor.js
  2. 274
      web/client/src/sections/quanju/containers/footer/guanli/index.js
  3. 329
      web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js
  4. 2
      web/client/src/sections/quanju/containers/footer/leadership/right/hudong.js
  5. 6
      web/package-lock.json

64
web/client/src/sections/quanju/containers/footer/build/videoMonitor.js

@ -0,0 +1,64 @@
import React, { useEffect, useRef, useState } from 'react'
import { connect } from 'react-redux'
import { YSIframePlayer } from '../../../../../components'
import { LeftOutlined, RightOutlined } from '@ant-design/icons';
const videoMonitor = (props) => {
const { dispatch, videoCenterList } = props
const [pageLeft, setPageLeft] = useState(0) //左边翻页
let renderVideo = (item, index) => {
return <YSIframePlayer
containerId={`yingshiPlay_lu_${index}`}
height='100%'
width="100%"
url={`ezopen://open.ys7.com/${item.deviceSerial}/${item.channelNo || '1'}.hd.live`}
audio="0"
ysToken={item.token}
videoState={{
status: item.status
}}
/>
}
return (
videoCenterList?.length > 0 ? <div style={{ width: '100%', height: '100%', display: "flex", alignItems: 'center', justifyContent: 'space-around' }}>
<LeftOutlined style={{ width: "5%", color: '#FFF', cursor: 'pointer' }} onClick={() => {
if (pageLeft > 0) setPageLeft(pageLeft - 1)
}} />
<div style={{ width: '90%', height: "98%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:'space-between' }}>
{videoCenterList?.slice(pageLeft * 3, (pageLeft + 1) * 3)?.map((v, index) => {
return <div style={{ width: "95%", height: "30%", backgroundSize: 'cover', position: "relative", }}>
{renderVideo(v, index)}
<div style={{ width: "100%", position: "absolute", bottom: 0 }}>
<div style={{ width: "100%", height: "20%", backgroundColor: "rgba(0,0,0,0.6)", color: '#FFF', overflow: "hiddden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>
<img src='/assets/images/leadership/weizhis.png' style={{ width: "6%", height: "80%", marginLeft: "3%", marginRight: "3%" }} />
{v.deviceName}
</div>
</div>
</div>
})}
</div>
<RightOutlined style={{ width: "5%", color: '#FFF', cursor: 'pointer' }} onClick={() => {
if (pageLeft + 1 < Math.ceil(videoCenterList?.length / 3)) setPageLeft(pageLeft + 1)
}} />
</div>
:
<div style={{ color: "#fff", textAlign: 'center', height: "20%", display: 'flex', alignItems: "center", justifyContent: "space-around" }}>暂无摄像头信息</div>
);
}
function mapStateToProps (state) {
const { videoCenterList } = state
return {
videoCenterList: videoCenterList.data || []
}
}
export default connect(mapStateToProps)(videoMonitor)

274
web/client/src/sections/quanju/containers/footer/guanli/index.js

@ -2,160 +2,164 @@ import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Carousel, Tooltip } from 'antd' import { Carousel, Tooltip } from 'antd'
import AutoRollComponent from '../build/AutoRollComponent' import AutoRollComponent from '../build/AutoRollComponent'
import VideoMonitor from '../build/videoMonitor'
import Module from '../../public/module' import Module from '../../public/module'
import LeftItem from './LeftItem' import LeftItem from './LeftItem'
import { getjiandmanage, getjiandetail } from '../../../actions/example' import { getjiandmanage, getjiandetail } from '../../../actions/example'
import './style.less' import './style.less'
import NoData from '../../public/noData'; import NoData from '../../public/noData';
const Guanli = (props) => { const Guanli = (props) => {
const { dispatch } = props const { dispatch } = props
const [leftDatas, setleftDatas] = useState([]) const [leftDatas, setleftDatas] = useState([])
const [rightDatas, setrightDatas] = useState([]) const [rightDatas, setrightDatas] = useState([])
const [rightitemlist, setrightitemlist] = useState() const [rightitemlist, setrightitemlist] = useState()
const requestleftDatas = async () => { const requestleftDatas = async () => {
const res = await dispatch(getjiandmanage()) const res = await dispatch(getjiandmanage())
res.payload.data?.sort((a, b) => { res.payload.data?.sort((a, b) => {
return parseInt(b.total) - parseInt(a.total) return parseInt(b.total) - parseInt(a.total)
}) })
setleftDatas(res.payload.data) setleftDatas(res.payload.data)
// console.log(res.payload.data,'哈哈哈') // console.log(res.payload.data,'哈哈哈')
} }
const data_string = (str) => { const data_string = (str) => {
str.match('/([^.]*)$/g') str.match('/([^.]*)$/g')
} }
const requestRightDatas = async () => { const requestRightDatas = async () => {
const res = await dispatch(getjiandetail()) const res = await dispatch(getjiandetail())
// let d = res.payload.data?.overSpeedList.sort((a,b)=>b.processingTime < a.processingTime ?-1:1) // let d = res.payload.data?.overSpeedList.sort((a,b)=>b.processingTime < a.processingTime ?-1:1)
var pattern = /[\u4e00-\u9fa5]*/; var pattern = /[\u4e00-\u9fa5]*/;
// console.log(res.payload.data,'好的号的') // console.log(res.payload.data,'好的号的')
let d = res.payload.data?.overSpeedList?.filter((item, index) => { let d = res.payload.data?.overSpeedList?.filter((item, index) => {
return /.*[\u4e00-\u9fa5_a-zA-Z]+.*$/.test(item.processingTime) == false return /.*[\u4e00-\u9fa5_a-zA-Z]+.*$/.test(item.processingTime) == false
}) })
d.map((item, index) => { d.map((item, index) => {
if (parseInt(item.processingTime.match(/([^.]*)$/)[0]) < 10) { if (parseInt(item.processingTime.match(/([^.]*)$/)[0]) < 10) {
return item.processingTime = `${(item.processingTime.match(/^([^.]*)(.[^.]*)/)[0])}.0${parseInt(item.processingTime.match(/([^.]*)$/)[0])}` return item.processingTime = `${(item.processingTime.match(/^([^.]*)(.[^.]*)/)[0])}.0${parseInt(item.processingTime.match(/([^.]*)$/)[0])}`
} }
// console.log(d3,'好评') // console.log(d3,'好评')
// console.log(item.processingTime.match(/([^.]*)$/)[0],'kk') // console.log(item.processingTime.match(/([^.]*)$/)[0],'kk')
}) })
d.sort((a, b) => b.processingTime.localeCompare(a.processingTime)) d.sort((a, b) => b.processingTime.localeCompare(a.processingTime))
setrightDatas(res.payload.data) setrightDatas(res.payload.data)
setrightitemlist(d) setrightitemlist(d)
// console.log(d,'对比的数据') // console.log(d,'对比的数据')
// console.log(d2,'完美') // console.log(d2,'完美')
// console.log(res.payload.data,'嘿嘿嘿') // console.log(res.payload.data,'嘿嘿嘿')
} }
useEffect(() => { useEffect(() => {
requestleftDatas(); requestleftDatas();
requestRightDatas() requestRightDatas()
}, []) }, [])
// let datalist = newArry(30) // let datalist = newArry(30)
// datalist.fill({licensePlate:"赣A44454",overrunRate:"30%",fine:"200元",processingTime:"2020年4月1日"}) // datalist.fill({licensePlate:"赣A44454",overrunRate:"30%",fine:"200元",processingTime:"2020年4月1日"})
// const content = ( // const content = (
// ); // );
const renderContent = () => { const renderContent = () => {
// console.log(rightitemlist); // console.log(rightitemlist);
return <div style={{ height: "100%" }}> return <div style={{ height: "100%" }}>
{rightitemlist && rightitemlist.length !== 0 ? rightitemlist?.map(({ id, licensePlate, overrunRate, fine, processingTime, deductPoints, nameOfInspectionPoint }, index) => { {rightitemlist && rightitemlist.length !== 0 ? rightitemlist?.map(({ id, licensePlate, overrunRate, fine, processingTime, deductPoints, nameOfInspectionPoint }, index) => {
if (index < 120) { if (index < 120) {
return <div key={index} className='guanli-right-item'> return <div key={index} className='guanli-right-item'>
<Tooltip title={<div className='popover-content'> <Tooltip title={<div className='popover-content'>
<div style={{ width: "100%", height: "100%", marginTop: "0" }}> <div style={{ width: "100%", height: "100%", marginTop: "0" }}>
{/* <img src='/assets/images/leadership/beijinglan.png' style={{ width: "100%", height: "100%" }} /> */} {/* <img src='/assets/images/leadership/beijinglan.png' style={{ width: "100%", height: "100%" }} /> */}
<div style={{ position: "absolute", top: "0", width: "50%", padding: "20px" }}> <div style={{ position: "absolute", top: "0", width: "50%", padding: "20px" }}>
<img src='/assets/images/leadership/yuanxing.png' style={{ width: "100%", height: "100%" }} /> <img src='/assets/images/leadership/yuanxing.png' style={{ width: "100%", height: "100%" }} />
<p style={{ color: "#09BAFF", position: "absolute", top: "42%", left: "27%", fontSize: "29px", fontFamily: "YouSheBiaoTiHei" }}>{overrunRate ? overrunRate.toFixed(2) : 0}%{/* {item.overrunRate ? item.overrunRate + "%" : "--"} */}</p> <p style={{ color: "#09BAFF", position: "absolute", top: "42%", left: "27%", fontSize: "29px", fontFamily: "YouSheBiaoTiHei" }}>{overrunRate ? overrunRate.toFixed(2) : 0}%{/* {item.overrunRate ? item.overrunRate + "%" : "--"} */}</p>
<p style={{ color: "rgba(216,240,255,0.8)", position: "absolute", top: "60%", left: "43%", fontSize: "14px" }}>超限</p> <p style={{ color: "rgba(216,240,255,0.8)", position: "absolute", top: "60%", left: "43%", fontSize: "14px" }}>超限</p>
</div> </div>
<div style={{ position: "absolute", top: "0", width: "50%", left: "50%", top: '5px' }}> <div style={{ position: "absolute", top: "0", width: "50%", left: "50%", top: '5px' }}>
<p style={{ color: "rgba(216,240,255,0.8)", marginTop: "30px", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>车牌号<span style={{ color: "#EEF4FF", marginLeft: "33px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{licensePlate}{/* {item.licensePlate} */}</span></p> <p style={{ color: "rgba(216,240,255,0.8)", marginTop: "30px", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>车牌号<span style={{ color: "#EEF4FF", marginLeft: "33px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{licensePlate}{/* {item.licensePlate} */}</span></p>
<p style={{ color: "rgba(216,240,255,0.8)", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>检测点<span style={{ color: "#EEF4FF", marginLeft: "33px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{nameOfInspectionPoint}</span></p> <p style={{ color: "rgba(216,240,255,0.8)", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>检测点<span style={{ color: "#EEF4FF", marginLeft: "33px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{nameOfInspectionPoint}</span></p>
<p style={{ color: "rgba(216,240,255,0.8)", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>处罚<span style={{ color: "#FF0001", marginLeft: "50px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{deductPoints ? `-${deductPoints}` : ""}-{fine}{fine ? "元" : ""}{/* {item.deductPoints ? "-" + item.deductPoints + "分" : ""}{item.deductPoints && item.fine ? "和" : ""}{item.fine ? "-" + item.fine + "元" : ""}{item.deductPoints || item.fine ? "" : "--"} */}</span></p> <p style={{ color: "rgba(216,240,255,0.8)", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>处罚<span style={{ color: "#FF0001", marginLeft: "50px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{deductPoints ? `-${deductPoints}` : ""}-{fine}{fine ? "元" : ""}{/* {item.deductPoints ? "-" + item.deductPoints + "分" : ""}{item.deductPoints && item.fine ? "和" : ""}{item.fine ? "-" + item.fine + "元" : ""}{item.deductPoints || item.fine ? "" : "--"} */}</span></p>
<p style={{ color: "rgba(216,240,255,0.8)", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>日期<span style={{ color: "#EEF4FF", marginLeft: "50px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{processingTime}{/* {item.processingTime ? item.processingTime : "--"} */}</span></p> <p style={{ color: "rgba(216,240,255,0.8)", fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC" }}>日期<span style={{ color: "#EEF4FF", marginLeft: "50px", fontFamily: " PingFangSC-Medium, PingFang SC" }}>{processingTime}{/* {item.processingTime ? item.processingTime : "--"} */}</span></p>
</div> </div>
</div> </div>
</div>} </div>}
placement="leftTop" placement="leftTop"
overlayStyle={{ minWidth: 400, minHeight: 212, padding: 0, margin: 0, backgroundImage: `url(../../../../../assets/images/leadership/beijinglan.png)` }} overlayStyle={{ minWidth: 400, minHeight: 212, padding: 0, margin: 0, backgroundImage: `url(../../../../../assets/images/leadership/beijinglan.png)` }}
overlayClassName='popover' overlayClassName='popover'
> >
<div style={{ width: '100%', height: '100%', display: 'flex' }}> <div style={{ width: '100%', height: '100%', display: 'flex' }}>
<span>{licensePlate}</span> <span>{licensePlate}</span>
<span>{overrunRate}%</span> <span>{overrunRate}%</span>
<span>{deductPoints ? `-${deductPoints}` : ""}-{fine}{fine ? "元" : ""}</span> <span>{deductPoints ? `-${deductPoints}` : ""}-{fine}{fine ? "元" : ""}</span>
<span>{processingTime}</span> <span>{processingTime}</span>
</div> </div>
</Tooltip> </Tooltip>
</div> </div>
} }
}) : ""} }) : ""}
</div> </div>
} }
const renderLeftContent = () => { const renderLeftContent = () => {
// setleftDatas(leftDatas=>leftDatas.sort((a,b)=>b.total - a.total)) // setleftDatas(leftDatas=>leftDatas.sort((a,b)=>b.total - a.total))
return leftDatas && leftDatas.length !== 0 ? leftDatas.map((item, index) => return leftDatas && leftDatas.length !== 0 ? leftDatas.map((item, index) =>
<LeftItem key={index} datas={item}></LeftItem> <LeftItem key={index} datas={item}></LeftItem>
) : "" ) : ""
} }
// renderContent() // renderContent()
return ( return (
<> <>
<div className='guanli-left'> <div className='guanli-left'>
<Module style={{ height: "100%" }} title="检测点治超处理占比" customize={true}> {/* <Module style={{ height: "100%" }} title="" customize={true}>
{leftDatas && leftDatas.length !== 0 ? <AutoRollComponent content={renderLeftContent()} {leftDatas && leftDatas.length !== 0 ? <AutoRollComponent content={renderLeftContent()}
containerStyle={{ position: "relative", height: "90%", }} containerStyle={{ position: "relative", height: "90%", }}
divHeight={"100%"} divId={"chart-overview-left"} /> : <NoData />} divHeight={"100%"} divId={"chart-overview-left"} /> : <NoData />}
</Module> </Module> */}
</div> <Module style={{ height: "100%" }} title="视频监控" customize={true}>
<div className='guanli-right'> <VideoMonitor />
<Module style={{ height: "100%" }} title="治超详情" customize={true}> </Module>
<div className="guanli-right-top"> </div>
<img src="/assets/images/quanju/zhicaolog.png"></img> <div className='guanli-right'>
<span>已处理</span> <Module style={{ height: "100%" }} title="治超详情" customize={true}>
<span>{rightDatas?.processed || 0}</span> <div className="guanli-right-top">
<span></span> <img src="/assets/images/quanju/zhicaolog.png"></img>
</div> <span>已处理</span>
<div className='guanli-right-title'> <span>{rightDatas?.processed || 0}</span>
<span>车牌号</span> <span></span>
<span>超限</span> </div>
<span>处罚</span> <div className='guanli-right-title'>
<span>处理日期</span> <span>车牌号</span>
</div> <span>超限</span>
{rightitemlist && rightitemlist.length !== 0 ? <AutoRollComponent content={renderContent()} <span>处罚</span>
containerStyle={{ position: "relative", height: "90%", }} <span>处理日期</span>
divHeight={"100%"} divId={"chart-overview-deviceList"} /> : <NoData style={{ height: "70%" }} />} </div>
</Module> {rightitemlist && rightitemlist.length !== 0 ? <AutoRollComponent content={renderContent()}
</div> containerStyle={{ position: "relative", height: "90%", }}
</> divHeight={"100%"} divId={"chart-overview-deviceList"} /> : <NoData style={{ height: "70%" }} />}
) </Module>
</div>
</>
)
} }
function mapStateToProps (state) { function mapStateToProps (state) {
const { auth, depMessage } = state; const { auth, depMessage } = state;
const pakData = (dep) => { const pakData = (dep) => {
return dep.map((d) => { return dep.map((d) => {
return { return {
title: d.name, title: d.name,
value: d.id, value: d.id,
// children: d.type >= 2 ? [] : pakData(d.subordinate) // children: d.type >= 2 ? [] : pakData(d.subordinate)
children: pakData(d.subordinate) children: pakData(d.subordinate)
} }
}) })
} }
let depData = pakData(depMessage.data || []) let depData = pakData(depMessage.data || [])
return { return {
user: auth.user, user: auth.user,
depMessage: depMessage.data || [], depMessage: depMessage.data || [],
depLoading: depMessage.isRequesting, depLoading: depMessage.isRequesting,
depData, depData,
}; };
} }
export default connect(mapStateToProps)(Guanli); export default connect(mapStateToProps)(Guanli);

329
web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js

@ -3,171 +3,180 @@ import * as echarts from 'echarts';
import { getdaolutongji } from "../../../../../actions/example" import { getdaolutongji } from "../../../../../actions/example"
const Leftbottomecharts = (props) => { const Leftbottomecharts = (props) => {
const { dispatch } = props const { dispatch } = props
const [list, setList] = useState([]) const [list, setList] = useState([])
const [count, setCount] = useState([]) const [count, setCount] = useState([])
const [value, setValue] = useState([]) const [value, setValue] = useState([])
const [flag, setFlag] = useState(true) const [flag, setFlag] = useState(true)
const [years, setYears] = useState() const [years, setYears] = useState()
useEffect(() => { useEffect(() => {
const res = dispatch(getdaolutongji()).then((res) => { const res = dispatch(getdaolutongji()).then((res) => {
console.log(res); console.log(res);
setList(res.payload.data.construction.map((item, index) => { let listData = []
return item.year res.payload.data.construction.map((item, index) => listData.push(item.year))
})); setCount(res.payload.data.construction.map((item, index) => {
setCount(res.payload.data.construction.map((item, index) => { let count = item.count
return item.count.toFixed(3) listData.forEach((s, i) => {
})) if (s == '2022' && i == index) {
setValue(res.payload.data.constructionRebuild.map((item, index) => { count = 78.7
return item.count.toFixed(3) } else if (s == '2023' && i == index) {
})) count = 89.7
// setYears() }
}); })
}, []) return count
// console.log(list, count); }))
const chartRef = useRef(null); setList(listData);
useEffect(() => {
var chartInstance = echarts.init(chartRef.current); setValue(res.payload.data.constructionRebuild.map((item, index) => {
const option = { return item.count.toFixed(3)
title: { }))
// setYears()
});
}, [])
// console.log(list, count);
const chartRef = useRef(null);
useEffect(() => {
var chartInstance = echarts.init(chartRef.current);
const option = {
title: {
},
tooltip: {
formatter: " {b}年<br/> {c}公里",
trigger: "axis",
axisPointer: {
lineStyle: {
color: "rgba(226,240,255,0.4)",
default: "solid"
},
}, },
tooltip: { },
formatter: " {b}年<br/> {c}公里", legend: {
trigger: "axis", icon: "rect",
axisPointer: { itemWidth: 14,
lineStyle: { itemHeight: 5,
color: "rgba(226,240,255,0.4)", itemGap: 13,
default: "solid" data: ["移动"],
}, right: "4%",
}, // textStyle: {
// fontSize: 12,
// color: "#F1F1F3",
// },
},
grid: {
top: "18%",
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: [
{
type: "category",
boundaryGap: true,
axisTick: {
show: false,
},
axisLine: {
lineStyle: {
color: /* "rgba(176,215,255,0.4)" */"rgba(216,240,255,0.8)",
},
},
axisLabel: {
color: "rgba(216,240,255,0.8)",
},
data: list,
normal: {
lineStyle: {
color: "rgba(226,240,255,0.4)"//折线的颜色
}
}
}, },
legend: { ],
icon: "rect", yAxis: [
itemWidth: 14, {
itemHeight: 5, // type: "value",
itemGap: 13, // show: true,
data: ["移动"], // type: "value",
right: "4%", splitLine: {
// textStyle: { show: true,
// fontSize: 12, lineStyle: {
// color: "#F1F1F3", color: "rgba(176,215,255,0.2500)",
// }, type: "dashed"
}
}, //去除网格线
// nameTextStyle: {
// color: "#abb8ce",
// },
axisLabel: {
color: "rgba(216,240,255,0.8)",
},
axisTick: {
//y轴刻度线
show: false,
},
axisLine: {
// y轴
show: false,
},
}, },
grid: { ],
top: "18%", series: [
left: "3%", {
right: "4%", // name: "移动",
bottom: "3%", type: "line",
containLabel: true, smooth: true,
symbol: "circle",
symbolSize: 5,
showSymbol: false,
color: "#00D3FD",
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(176,215,255,0.2500)",
},
{
offset: 0.8,
color: "rgba(0,150,255,0)",
},
],
false
),
shadowBlur: 10,
},
},
data: flag ? count.map(v=>v.toFixed(3)) : value,
}, },
xAxis: [ ],
{ };
type: "category", chartInstance.setOption(option);
boundaryGap: true, window.addEventListener('resize', function () {
axisTick: { chartInstance.resize();
show: false, })
}, }, [count, flag, list]);
axisLine: { console.log(flag);
lineStyle: {
color: /* "rgba(176,215,255,0.4)" */"rgba(216,240,255,0.8)",
},
},
axisLabel: {
color: "rgba(216,240,255,0.8)",
},
data: list,
normal: {
lineStyle: {
color: "rgba(226,240,255,0.4)"//折线的颜色
}
}
},
],
yAxis: [
{
// type: "value",
// show: true,
// type: "value",
splitLine: {
show: true,
lineStyle: {
color: "rgba(176,215,255,0.2500)",
type: "dashed"
}
}, //去除网格线
// nameTextStyle: {
// color: "#abb8ce",
// },
axisLabel: {
color: "rgba(216,240,255,0.8)",
},
axisTick: {
//y轴刻度线
show: false,
},
axisLine: {
// y轴
show: false,
},
},
],
series: [
{
// name: "移动",
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 5,
showSymbol: false,
color: "#00D3FD",
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(176,215,255,0.2500)",
},
{
offset: 0.8,
color: "rgba(0,150,255,0)",
},
],
false
),
shadowBlur: 10,
},
},
data: flag ? count : value,
},
],
};
chartInstance.setOption(option);
window.addEventListener('resize', function () {
chartInstance.resize();
})
}, [count, flag, list]);
console.log(flag);
return ( return (
<> <>
<div onClick={() => { <div onClick={() => {
setFlag(true) setFlag(true)
}} style={{ position: "absolute", top: "75%", left: "55%", width: "72px", height: "20px", backgroundColor: "rgba(216,240,255,0.1000)", float: "right", textAlign: "center", zIndex: 100, marginRight: "4%", borderLeft: "solid 2px #6E7A83" }} > }} style={{ position: "absolute", top: "75%", right: "0", width: "72px", height: "20px", backgroundColor: "rgba(216,240,255,0.1000)", float: "right", textAlign: "center", zIndex: 100, marginRight: "4%", borderLeft: "solid 2px #6E7A83" }} >
<p style={{ color: flag == false ? "rgba(216,240,255,0.8000)" : "#fff", fontSize: "0.4vh", lineHeight: "20px" }}>修建</p></div> <p style={{ color: flag == false ? "rgba(216,240,255,0.8000)" : "#fff", fontSize: "0.4vh", lineHeight: "20px" }}>修建</p></div>
<div onClick={() => { {/* <div onClick={() => {
setFlag(false) setFlag(false)
}} style={{ position: "absolute", width: "72px", left: "80%", top: "75%", height: "20px", backgroundColor: "rgba(216,240,255,0.1000)", float: "right", textAlign: "center", marginRight: "4%", borderLeft: "solid 2px #6E7A83" }}> }} style={{ position: "absolute", width: "72px", left: "80%", top: "75%", height: "20px", backgroundColor: "rgba(216,240,255,0.1000)", float: "right", textAlign: "center", marginRight: "4%", borderLeft: "solid 2px #6E7A83" }}>
<p style={{ color: flag == true ? "rgba(216,240,255,0.8000)" : "#fff", fontSize: "0.4vh", lineHeight: "20px" }} >改建</p></div > <p style={{ color: flag == true ? "rgba(216,240,255,0.8000)" : "#fff", fontSize: "0.4vh", lineHeight: "20px" }} >改建</p></div > */}
<div ref={chartRef} style={{ <div ref={chartRef} style={{
height: "18vh", width: "100%", position: "absolute", top: "77%" height: "18vh", width: "100%", position: "absolute", top: "77%"
}}></div> }}></div>
</> </>
); );
} }
export default Leftbottomecharts export default Leftbottomecharts

2
web/client/src/sections/quanju/containers/footer/leadership/right/hudong.js

@ -39,7 +39,7 @@ class ReactCarousel extends Component {
], ],
imgs: [], imgs: [],
showIndex: 0, //显示第几个图片 showIndex: 0, //显示第几个图片
timer: null, // 定时器 timer: null, // 定时器
show: false, // 前后按钮显示 show: false, // 前后按钮显示
// arr1: "" // arr1: ""
} }

6
web/package-lock.json

@ -3163,7 +3163,7 @@
"strip-css-comments": { "strip-css-comments": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "http://10.8.30.22:7000/strip-css-comments/-/strip-css-comments-4.1.0.tgz", "resolved": "http://10.8.30.22:7000/strip-css-comments/-/strip-css-comments-4.1.0.tgz",
"integrity": "sha512-azjRwrqk7nK21LU7QuL7DpDyPjvRROQvqPrNyyz6emdzbOh6fsNTvkSvUiThBLzC6+MN90rFu296VbPb/KV+3A==", "integrity": "sha1-ynmOPmtxkp8LNU4L1y53WbLqF+A=",
"requires": { "requires": {
"is-regexp": "^2.1.0" "is-regexp": "^2.1.0"
} }
@ -4446,7 +4446,7 @@
}, },
"cross-env": { "cross-env": {
"version": "7.0.3", "version": "7.0.3",
"resolved": "http://npm.anxinyun.cn/cross-env/-/cross-env-7.0.3.tgz", "resolved": "http://10.8.30.22:7000/cross-env/-/cross-env-7.0.3.tgz",
"integrity": "sha1-hlJkspZ33AFbqEGJGJZd0jL8VM8=", "integrity": "sha1-hlJkspZ33AFbqEGJGJZd0jL8VM8=",
"requires": { "requires": {
"cross-spawn": "^7.0.1" "cross-spawn": "^7.0.1"
@ -7519,7 +7519,7 @@
}, },
"lodash": { "lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "http://10.8.30.22:7000/lodash/-/lodash-4.17.21.tgz", "resolved": "http://npm.anxinyun.cn/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}, },
"lodash-es": { "lodash-es": {

Loading…
Cancel
Save