Browse Source

领导驾驶舱提交代码

release_0.0.1
wangyue 3 years ago
parent
commit
f166aa2919
  1. 20
      web/client/assets/color.less
  2. BIN
      web/client/assets/images/leadership/di.png
  3. BIN
      web/client/assets/images/leadership/jiejue.png
  4. BIN
      web/client/assets/images/leadership/mingri.png
  5. BIN
      web/client/assets/images/leadership/pingshi.png
  6. BIN
      web/client/assets/images/leadership/road.png
  7. BIN
      web/client/assets/images/leadership/shiyantu.png
  8. BIN
      web/client/assets/images/leadership/zibiaoti.png
  9. 19
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js
  10. 203
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js
  11. 59
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js
  12. 180
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/lunbo.js
  13. 6
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less
  14. 57
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js
  15. 4
      web/client/src/sections/quanju/containers/footer/leadership/left.js
  16. 146
      web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js
  17. 2
      web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js
  18. 88
      web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js
  19. 39
      web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js
  20. 3
      web/client/src/sections/quanju/containers/footer/leadership/right/left.less
  21. 139
      web/client/src/sections/quanju/containers/footer/leadership/right/lunbo.js
  22. 74
      web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js
  23. 25
      web/client/src/sections/quanju/containers/public/left.less
  24. 139
      web/client/src/sections/quanju/containers/public/lunbo.js
  25. 5
      web/client/src/sections/quanju/containers/public/module.js
  26. 62
      web/log/development.txt

20
web/client/assets/color.less

@ -174,7 +174,7 @@ button::-moz-focus-inner,
[type='submit']::-moz-focus-inner {border-style: none;}
fieldset {border: 0;}
legend {color: inherit;}
mark {background-color: color(~`colorPalette("@{skeleton-to-color}", 1)`);}
mark {background-color: #feffe6;}
::selection {color: #fff;background: @primary-color;}
.anticon {color: inherit;}
.ant-fade-enter, .ant-fade-appear {animation-fill-mode: both;}
@ -1702,31 +1702,31 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-checkable:active, .ant-tag-checkable-checked {color: #fff;}
.ant-tag-checkable-checked {background-color: @primary-color;}
.ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);}
.ant-tag-pink {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;}
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;}
.ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-magenta {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;}
.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;}
.ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-red {color: #cf1322;background: #fff1f0;border-color: #ffa39e;}
.ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;}
.ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;}
.ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;}
.ant-tag-orange {color: #d46b08;background: color(~`colorPalette("@{select-background}", 3)`);border-color: #ffd591;}
.ant-tag-orange {color: #d46b08;background: #fff7e6;border-color: #ffd591;}
.ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;}
.ant-tag-yellow {color: #d4b106;background: color(~`colorPalette("@{skeleton-to-color}", 1)`);border-color: #fffb8f;}
.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;}
.ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;}
.ant-tag-gold {color: #d48806;background: #fffbe6;border-color: #ffe58f;}
.ant-tag-gold {color: #d48806;background: color(~`colorPalette("@{skeleton-color}", 1)`);border-color: #ffe58f;}
.ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;}
.ant-tag-cyan {color: #08979c;background: color(~`colorPalette("@{comment-author-time-color}", 3)`);border-color: #87e8de;}
.ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;}
.ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;}
.ant-tag-lime {color: #7cb305;background: color(~`colorPalette("@{item-active-bg}", 1)`);border-color: #eaff8f;}
.ant-tag-lime {color: #7cb305;background: #fcffe6;border-color: #eaff8f;}
.ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;}
.ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;}
.ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;}
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{modal-content-bg}", 1)`);border-color: #adc6ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{success-color-deprecated-border}", 1)`);border-color: #adc6ff;}
.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;}
.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{disabled-color}", 2)`);border-color: #d3adf7;}
.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{progress-steps-item-bg}", 3)`);border-color: #d3adf7;}
.ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;}
.ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;}
.ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;}

BIN
web/client/assets/images/leadership/di.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
web/client/assets/images/leadership/jiejue.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
web/client/assets/images/leadership/mingri.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
web/client/assets/images/leadership/pingshi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
web/client/assets/images/leadership/road.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
web/client/assets/images/leadership/shiyantu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
web/client/assets/images/leadership/zibiaoti.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

19
web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js

@ -1,12 +1,27 @@
import React from 'react'
import Module from '../../../public/module'
import Centerleftecharts from "./echarts/centerleftecharts"
import Bottomlunbo from './lunbo/bottomlunbo'
import Leftlunbo from './lunbo/toplunbo'
const Leftbottom = () => {
const style = { height: "28%", marginTop: "2%" }
return (
<>
<Module style={style}>
<Module style={style} title={"运政管理"}>
<div style={{ width: "100%", height: "100%" }}>
<div style={{ width: "50%", height: "100%", float: "left" }}>
<Centerleftecharts />
</div>
<div style={{ width: "50%", height: "100%", float: "right", }}>
<div style={{ width: "100%", height: "60%" }}>
<Bottomlunbo />
</div>
<div style={{ width: "100%", height: "50%" }}>
<Leftlunbo />
</div>
</div>
</div>
</Module>
</>
)

203
web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js

@ -0,0 +1,203 @@
import React, { useEffect, useRef } from 'react'
import * as echarts from 'echarts';
const Leftbottomecharts = () => {
const chartRef = useRef(null);
useEffect(() => {
var chartInstance = echarts.init(chartRef.current);
var colorArray = [
{
top: "#1978E5", //黄
bottom: "#10274B",
},
{
top: "#C31E00", //绿
bottom: "#10274B",
},
{
top: "#00B5E0 ", //蓝
bottom: "#10274B",
},
{
top: "#19E5D6", //深蓝
bottom: "#10274B",
},
// {
// top: "#b250ff", //粉
// bottom: "rgba(11,42,84,.3)",
// },
];
const option = {
tooltip: {
show: true,
formatter: "{b}:{c}",
},
grid: {
left: "5%",
top: "12%",
right: "1%",
bottom: "8%",
containLabel: true,
},
xAxis: {
type: "value",
show: true,
position: "bottom",
axisTick: {
show: true,
lineStyle: {
color: "rgba(176,215,255,0.25)",
// type: "dashed",
},
},
axisLine: {
show: false,
lineStyle: {
color: "rgba(216,240,255,0.8000)",
},
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(176,215,255,0.25)",
type: "dashed",
},
},
},
yAxis: [
{
type: "category",
axisTick: {
show: false,
alignWithLabel: false,
length: 5,
},
splitLine: {
//网格线
show: false,
},
inverse: "true", //排序
// nameTextStyle: {
// color: ["rgba(216,240,255,0.8)"],
// },
axisLine: {
// show: true,
lineStyle: {
color: "rgba(216,240,255,0.8000)",
width: 2,
},
},
data: ["客运车", "危险货运", "出租车", "公交"],
},
],
series: [
{
type: "bar",
barWidth: 10,
barGap: "100%",
// zlevel: 1,
barCategoryGap: "50%",
color: "#042B7F",
data: [150, 150, 150, 150],
tooltip: {
show: false,
},
},
{
name: "能耗值",
type: "bar",
// zlevel: 2,
barWidth: 10,
barGap: "-100%",
barCategoryGap: "50%",
data: [60, 132, 89, 134],
markPoint: {
Symbol: "",/* 可以通过’image: *///url’设置为图片,其中url为图片的链接
data: [{ type: "max", name: "最大值" }],
},
itemStyle: {
normal: {
show: true,
color: function (params) {
let num = colorArray.length;
return {
type: "linear",
colorStops: [
{
offset: 0,
color: colorArray[params.dataIndex % num].bottom,
},
{
offset: 1,
color: colorArray[params.dataIndex % num].top,
},
{
offset: 0,
color: colorArray[params.dataIndex % num].bottom,
},
{
offset: 1,
color: colorArray[params.dataIndex % num].top,
},
{
offset: 0,
color: colorArray[params.dataIndex % num].bottom,
},
{
offset: 1,
color: colorArray[params.dataIndex % num].top,
},
{
offset: 0,
color: colorArray[params.dataIndex % num].bottom,
},
{
offset: 1,
color: colorArray[params.dataIndex % num].top,
},
{
offset: 0,
color: colorArray[params.dataIndex % num].bottom,
},
{
offset: 1,
color: colorArray[params.dataIndex % num].top,
},
{
offset: 0,
color: colorArray[params.dataIndex % num].bottom,
},
{
offset: 1,
color: colorArray[params.dataIndex % num].top,
},
],
globalCoord: false,
};
},
barBorderRadius: 70,
borderWidth: 0,
borderColor: "#333",
},
},
},
],
};
chartInstance.setOption(option);
window.onresize = function () {
chartInstance.resize();
}
}, []);
return (
<>
<div ref={chartRef} style={{
height: "20vh", width: "100%"
}}></div>
</>
);
}
export default Leftbottomecharts

59
web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js

@ -0,0 +1,59 @@
import React, { useState, useEffect } from 'react'
import Lunbotop from "./lunbo"
const Bottomlunbo = () => {
const [list, setList] = useState([
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
])
const renderBody = () => {
return (
<div style={{ width: "100%", height: "100%" }}>
{
list.map((item, index) => {
return <div style={{ fontSize: "14px", color: "#FFFFFF" }}>{item.name}</div>
})
}
</div>
)
}
return (
<>
<div style={{
width: "100%",
height: "50%",
}}>
<div style={{ width: "100%", height: "10%", fontSize: "16px", color: "#FFFFFF", marginLeft: "10%", fontFamily: "PingFangSC-Medium, PingFang SC", }}>
业户信息:
</div>
<div style={{ width: "40%", height: "60%", float: "left" }}>
<div style={{ width: "100%", height: "100%", position: "relative" }}>
<img src='/assets/images/leadership/di.png' style={{ width: "60%", marginLeft: "20%", marginTop: "15%" }} />
<p style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "90%", left: "33%" }}>出租车</p>
</div>
</div>
<Lunbotop
content={renderBody()}
containerStyle={{ position: "relative", height: "100%", width: "60%", top: "8%", float: "right", marginTop: "7%" }}
divHeight={"100%"}
divId={"bottomlunbo"}
/>
</div>
</>
)
}
export default Bottomlunbo

180
web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/lunbo.js

@ -0,0 +1,180 @@
'use strict'
import React, { Component } from 'react';
// import { Col, Row, Tag, Tooltip } from '@douyinfe/semi-ui';
import { Col, Row, Tag, Toolip } from 'antd';
import './style.less';
export default class AutoRollComponent extends Component {
constructor(props) {
super(props);
this.scrollElem = null;
this.stopscroll = false;
this.preTop = 0;
this.cloneEle = null;
this.currentTop = 0;
this.marqueesHeight = 0;
this.interval = null;
}
marque = (height) => {
try {
this.scrollElem = document.getElementById(this.props.divId);
this.marqueesHeight = height;
if (this.scrollElem) {
this.scrollElem.style.height = this.marqueesHeight;
this.scrollElem.style.overflow = 'hidden';
}
if (!this.props.closeroll) {
this.repeat()
}
} catch (e) { console.log(e) }
}
repeat = () => {
this.scrollElem.scrollTop = 0;
this.interval = setInterval(() => {
if (this.stopscroll) return;
this.currentTop = this.currentTop + 1;
this.preTop = this.scrollElem.scrollTop;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + 1;
if (this.preTop === this.scrollElem.scrollTop) {
this.scrollElem.scrollTop = this.marqueesHeight;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + 1;
}
}, 80);
}
componentWillUnmount() {
clearInterval(this.interval);
}
componentDidMount() {
this.marque(10);
}
onMouseOver = () => {
this.stopscroll = true;
}
onMouseOut = () => {
this.stopscroll = false;
}
loadDataColumn = (c, index, q) => {
const { changeStyleCol, heads, spans, data, showWord, color, dataTextAlign, customColorBox, } = this.props;
if (c === changeStyleCol) {
if (color) {
<span style={{ color: q.changeColor }}>{q.data[index]}</span>
} else {
if (['时间'].indexOf(c) != -1) {
return <span style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span>
}
// if (c.indexOf("时间") == -1) {
// if (customColorBox) {
// return <DashBorder boxStyle={{ textAlign: 'center', background: q.boxColor, width: 58, height: 18, display: 'inline-block', fontSize: 12 }} content={q.data[index]} borderStyle={{ borderColor: q.changeColor, width: 4, height: 4 }} />
// }
// if (q.data[index].length > showWord) {
// return <Tooltip key={index} position="top" content={q.data[index]}>{q.data[index].substring(0, showWord) + '...'}</Tooltip>
// } else {
// return <span className='margin-left-5' style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span>
// }
// }
}
} else {
if (c.indexOf("时间") == -1)
if (q.data[index].length > showWord) {
return <Tooltip key={index} position="top" content={q.data[index]}>{q.data[index].substring(0, showWord) + '...'}</Tooltip>
}
return <span className='margin-left-5'>{q.data[index]}</span>
}
// c === changeStyleCol ?
// color ?
// <span style={{ color: q.changeColor }}>{q.data[index]}</span>
// : q.levelbg ?
// q.isSiteAlermListMock ? <span style={extraStyle}>已处理</span> :
// <span style={{ color: q.changeColor, background: `url('/assets/images/ui/${q.levelbg}.png') no-repeat`, backgroundSize: '100% 100%', textAlign: 'left', fontFamily: 'liquidCrystal', padding: '3px 10px' }}>{q.data[index]}</span>
// : <Tag color={q.changeColor}>{q.data[index]}</Tag>
// : ['时间'].indexOf(c) != -1 ? !customColorBox ? <span style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span> :
// <DashBorder boxStyle={{ textAlign: 'center', background: q.boxColor }} content={q.data[index]} borderStyle={{ borderColor: color }} />
// : c.indexOf("时间") == -1 && q.data[index].length > showWord ?
// <Tooltip placement="top" title={q.data[index]} className='margin-left-5'>{q.data[index].substring(0, showWord) + '...'}</Tooltip>
// : <span className='margin-left-5' style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span>
}
getContent = () => {
const { changeStyleCol, heads, spans, data, showWord, color, dataTextAlign, customColorBox, } = this.props;
let result = <div></div>;
if (data) {
result = data.map((q, idx) => {
return (
<div key={idx}>
<Row gutter={16} style={{
height: 40,
//background: idx % 2 == 0 ? 'url(/assets/images/ui/roll1.png) no-repeat' : 'url(/assets/images/ui/roll2.png) no-repeat',
background: idx % 2 == 0 ? 'rgba(22,70,116,0.32)' : '',
backgroundSize: '100% 100%',
whiteSpace: 'nowrap',
fontSize: 16
}}>
{q.data[1] == -1 ? null : heads.map((c, index) => {
let extraStyle = {}
if (q.isSiteAlermListMock && c == "状态") {
extraStyle = { color: "green" }
}
return <Col span={spans[index]} key={index} style={{
// padding: `8px 0px 0px ${titleLeft && c != changeStyleCol ? 12 : index == 0 ? 8 : 0}px`,
paddingLeft: index == 0 ? 20 : c != changeStyleCol ? 10 : 'auto', paddingTop: 8, paddingRight: 0,
textAlign: dataTextAlign ? dataTextAlign : 'left', textOverflow: 'ellipsis', overflow: 'hidden',
color: `${c === changeStyleCol ? q.changeColor : ''}`
}}>
{
this.loadDataColumn(c, index, q)
}
</Col>
})
}
</Row>
</div>
)
})
} else {
result = <div style={{ textAlign: 'center', padding: 20, color: '#fff', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<span></span>
</div>
}
return result;
}
render() {
const { heads, spans, divId, divHeight, content, color, titleLeft, containerStyle = {} } = this.props;
return (
<div style={{ ...containerStyle, textAlign: 'left', }}>
{heads ?
<Row className={'bg-row'} style={{ lineHeight: '40px', height: 40, fontSize: 16, wordBreak: 'keep-all', whiteSpace: 'nowrap', textAlign: titleLeft ? 'left' : 'center', paddingLeft: titleLeft ? 5 : 0 }}>
{heads.map((c, index) => {
return <Col style={{ color: color ? color : '#fff', paddingLeft: titleLeft ? 10 : 'auto' }} span={spans[index]} key={index}>{c}</Col>
})
}
</Row>
: ''}
<div id={divId} className={'hidden-scroll-bar-y'} style={{ overflow: 'hidden', height: divHeight }} onMouseOver={this.onMouseOver} onMouseOut={this.onMouseOut}>
<div style={{ height: '100%' }}>
{content ? content : ''}
{this.getContent()}
</div>
</div>
</div >
)
}
}

6
web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less

@ -0,0 +1,6 @@
.hidden-scroll-bar-y{
overflow-y: scroll !important;
scrollbar-width: none !important;
}
.hidden-scroll-bar-y::-webkit-scrollbar { width: 0 !important }

57
web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js

@ -0,0 +1,57 @@
import React, { useState, useEffect } from 'react'
import Lunbotop from "./lunbo"
const Toplunbo = () => {
const [list, setList] = useState([
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
])
const renderBody = () => {
return (
<div style={{ width: "100%", height: "100%" }}>
{
list.map((item, index) => {
return <div style={{ fontSize: "14px", color: "#FFFFFF" }}>{item.name}</div>
})
}
</div>
)
}
return (
<>
<div style={{
width: "100%",
height: "50%",
}}>
<div style={{ width: "40%", height: "60%", float: "left" }}>
<div style={{ width: "100%", height: "100%", position: "relative", top: "-30%" }}>
<img src='/assets/images/leadership/di.png' style={{ width: "60%", marginLeft: "20%" }} />
<p style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "20%", left: "33%" }}>危险货运</p>
</div>
</div>
<Lunbotop
canScroll={true}
content={renderBody()}
containerStyle={{ position: "relative", height: "100%", width: "60%", top: "8%", float: "right" }}
divHeight={"100%"}
divId={"toplunbo1"}
/>
</div>
</>
)
}
export default Toplunbo

4
web/client/src/sections/quanju/containers/footer/leadership/left.js

@ -1,6 +1,6 @@
import React from 'react'
import Lefttop from './left/left-top'
import Leftcenter from "./left/left-center"
// import Leftcenter from "./left/left-center"
import Leftbottom from './left/left-bottom'
const Left = () => {
@ -8,7 +8,7 @@ const Left = () => {
<>
<div style={{ width: "23%", height: "100%", float: "left", marginLeft: "1%" }}>
<Lefttop />
<Leftcenter />
<Leftbottom />
</div>
</>

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

@ -3,67 +3,139 @@ import * as echarts from 'echarts';
const Leftbottomecharts = () => {
const chartRef = useRef(null);
useEffect(() => {
let chartInstance = echarts.init(chartRef.current);
var chartInstance = echarts.init(chartRef.current);
const option = {
xAxis: {
type: "category",
data: ["街道1", "街道2", "街道3", "街道4", "街道5", "街道6", "街道7"],
title: {
},
yAxis: [
{ type: "value" },
tooltip: {
trigger: "axis",
axisPointer: {
lineStyle: {
color: "#57617B",
},
},
},
legend: {
icon: "rect",
itemWidth: 14,
itemHeight: 5,
itemGap: 13,
data: ["移动"],
right: "4%",
// textStyle: {
// fontSize: 12,
// color: "#F1F1F3",
// },
},
grid: {
top: "18%",
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: [
{
type: "value",
nameTextStyle: {
color: "#ccc",
type: "category",
boundaryGap: true,
axisTick: {
show: false,
},
splitNumber: 5,
splitLine: {
show: true,
axisLine: {
lineStyle: {
type: "dashed",
width: 1,
color: ["#ccc", "#ccc"],
color: "rgba(176,215,255,0.4)",
},
},
axisLabel: {
data: [
"13:00",
"13:05",
"13:10",
"13:15",
],
normal: {
lineStyle: {
color: "red"//折线的颜色
}
}
},
],
yAxis: [
{
// type: "value",
// show: true,
// type: "value",
splitLine: {
show: true,
textStyle: {
fontSize: 12,
},
lineStyle: {
color: "rgba(176,215,255,0.2500)",
type: "dashed"
}
}, //去除网格线
// nameTextStyle: {
// color: "#abb8ce",
// },
// axisLabel: {
// color: "#abb8ce",
// },
axisTick: {
//y轴刻度线
show: false,
},
axisLine: {
// y轴
show: false,
},
},
],
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
textStyle: {
color: "#fff",
align: "left",
fontSize: 14,
},
backgroundColor: "rgba(0,0,0,0.8)",
},
series: [
{
name: "完成率",
data: [50, 130, 124, 18, 35, 47, 160],
yAxisIndex: 1,
// name: "移动",
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 5,
showSymbol: false,
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: [220, 182, 191, 134],
},
],
};
chartInstance.setOption(option);
window.addEventListener('resize', function () {
chartInstance.resize();
})
}, []);
return (
<>
<div ref={chartRef} style={{ height: "200px", width: "100%" }}></div>
<div style={{ width: "72px", height: "20px", backgroundColor: "rgba(216,240,255,0.1000)", float: "right", textAlign: "center", marginRight: "4%", borderLeft: "solid 2px #6E7A83" }}>
<p style={{ color: "rgba(216,240,255,0.8000)", fontSize: "0.4vh", lineHeight: "20px" }}>公里数Km</p></div>
<div ref={chartRef} style={{
height: "20vh", width: "100%"
}}></div>
</>
);
}

2
web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js

@ -6,7 +6,7 @@ const Leftbottom = () => {
const style = { height: "28%", marginTop: "5%" }
return (
<>
<Module style={style} title={""}>
<Module style={style} title={"道路施工统计"}>
<Echartes />
</Module>
</>

88
web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js

@ -1,13 +1,95 @@
import React from 'react'
import React, { useEffect, useState } from 'react'
import Module from '../../../public/module'
import Lunbo from "../centerleft/lunbo/lunbo"
// import "./left.less"
const Leftcenter = () => {
const style = { height: "30%", marginTop: "5%" }
// const hualun = "auto"
const [num, setNum] = useState(1);
const [tu, setTu] = useState("");
const [name, setName] = useState("");
const [list, setList] = useState([
{ name: '静夜思', img: "/assets/images/leadership/shiyantu.png" },
{ name: '唐-李白', img: "/assets/images/leadership/shiyantu.png" },
{ name: '窗前明月光', img: "/assets/images/leadership/shiyantu.png" },
{ name: '疑是地上霜', img: "/assets/images/leadership/shiyantu.png" },
{ name: '举头望明月', img: "/assets/images/leadership/shiyantu.png" },
{ name: '低头思故乡', img: "/assets/images/leadership/shiyantu.png" },
{ name: '静夜思', img: "/assets/images/leadership/shiyantu.png" },
{ name: '唐-李白', img: "/assets/images/leadership/shiyantu.png" },
{ name: '窗前明月光', img: "/assets/images/leadership/shiyantu.png" },
{ name: '疑是地上霜', img: "/assets/images/leadership/shiyantu.png" },
{ name: '举头望明月', img: "/assets/images/leadership/shiyantu.png" },
{ name: '低头思故乡', img: "/assets/images/leadership/shiyantu.png" },
])
useEffect(() => {
const timer = setInterval(() => {
if (num == 12) {
setNum(1);
setTu(list[0].img);
} else {
setNum(num + 1);
setTu(list[num].img);
}
}, 6000);
return () => clearInterval(timer);
}, [num]);
const renderBody = () => {
return (
<div style={{ width: "100%", height: "55%" }}>{
list.map((item, index) => {
return (
// <div style={{ width: "100%", height: "100%" }} >
// {/* <div style={{ width: "100%", height: "100%", }}> */}
<li style={{ height: "20px", width: "100%", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", backgroundColor: "pink" }} onMouseEnter={() => {
setTu(item.img);
setNum(index + 1);
setName(item.name)
// console.log(list);
}}>{item.name}</li>
// {/* </div> */}
// </div>
)
})
}
</div >
)
}
return (
<>
<Module style={style}>
<div style={{ width: "100%", height: "40px"/* , backgroundColor: "#fff" */, position: "relative" }}>
{/* <p>{title || []}</p> */}
<img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "1%", top: "30%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "10%" }}>主要路段拥堵情况分析</span>
<img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "28px", position: "absolute", top: "12px", left: "6%" }} />
</div>
<div style={{ width: "100%", height: "100%", marginTop: "3%" }}>
<div style={{ width: "60%", height: "100%", float: "left", marginLeft: "1%" }}>
{
list.map((item, index) => {
return index + 1 == num ?
<div style={{ width: "100%", height: "100%", position: "relative" }}>
<img style={{ width: "100%", position: "absolute", bottom: "5%" }} src={item.img} />
<p style={{
width: "100%", height: "3vh", position: "absolute", bottom: "3%",
backgroundColor: "rgba(0,0,0,0.26)", lineHeight: "3vh", textAlign: ""
}}><span style={{ marginLeft: "13%", color: "#FFFFFF", fontSize: "12px", fontFamily: "PingFangSC-Regular, PingFang SC", fontWeight: 400 }}>{item.name}</span></p>
</div> : ""
})
</Module>
}
</div>
<Lunbo
canScroll={true}
content={renderBody()}
containerStyle={{ position: "relative", height: "100%", width: "35%", float: "right", marginRight: "2%", marginTop: "1%" }}
divHeight={"100%"}
divId={"screen-slope-midde-top-jiangxi"}
/>
</div>
</>
)
}

39
web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js

@ -1,12 +1,47 @@
import React from 'react'
import Module from '../../../public/module'
import Leftcenter from './left-center'
const Lefttop = () => {
const style = { height: "25%", height: "35%" }
const style = { height: "68%" }
return (
<>
<Module style={style} title={"道路拥堵指数"} >
{/* <div style={{ width: "40%", height: "40%", background: "red" }}></div> */}
<div style={{ width: "100%", height: "60%", position: "relative" }}>
<div style={{ width: "50%", height: "100%" }}>
<div style={{ width: "100%", height: "30%" }}>
<img src='/assets/images/leadership/road.png' style={{ width: "15%", height: "30%", position: "absolute", left: "10%" }} />
<p style={{
fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC", color: "rgba(216,240,255,0.8000)",
position: "absolute", left: "30%", top: "5%"
}}>路况</p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "12%", left: "30%" }}>畅通</p>
</div>
<div style={{ width: "100%", height: "30%" }}>
<img src='/assets/images/leadership/pingshi.png' style={{ width: "15%", height: "30%", position: "absolute", left: "10%" }} />
<p style={{
fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC", color: "rgba(216,240,255,0.8000)",
position: "absolute", left: "30%", top: "35%"
}}>平均时速</p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "42%", left: "30%" }}>55.2<span style={{ fontSize: "2px", color: "#EEF4FF" }}>Km/h</span></p>
</div>
<div style={{ width: "100%", height: "30%" }}>
<img src='/assets/images/leadership/mingri.png' style={{ width: "15%", height: "30%", position: "absolute", left: "10%" }} />
<p style={{
fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC", color: "rgba(216,240,255,0.8000)",
position: "absolute", left: "30%", top: "65%"
}}>预测明日</p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "72%", left: "30%" }}>55.2<span style={{ fontSize: "2px", color: "#EEF4FF" }}>Km/h</span></p>
</div>
</div>
<div>
</div>
</div>
<div style={{ width: "100%", height: "40%", position: "relative", /* top: "63%" */ }}>
<Leftcenter />
</div>
</Module>
</>
)

3
web/client/src/sections/quanju/containers/footer/leadership/right/left.less

@ -0,0 +1,3 @@
li{
list-style-type:none
}

139
web/client/src/sections/quanju/containers/footer/leadership/right/lunbo.js

@ -0,0 +1,139 @@
'use strict'
import React, { Component } from 'react';
import { Row, Col } from 'antd';
export default class AutoRollComponent extends Component {
constructor(props) {
super(props);
this.scrollElem = null;
this.stopscroll = false;
this.preTop = 0;
this.cloneEle = null;
this.currentTop = 0;
this.marqueesHeight = 0;
this.interval = null;
this.state = {
enabledScroll: false
}
}
get enabledScroll() {
let scrollElem = document.getElementById(this.props.divId);
let fatherElem = scrollElem?.parentNode || null;
if (scrollElem && fatherElem) {
return scrollElem.scrollHeight > fatherElem.scrollHeight
}
return false;
}
marque = (height) => {
try {
this.scrollElem = document.getElementById(this.props.divId);
this.marqueesHeight = height;
if (this.scrollElem) {
this.scrollElem.style.height = this.marqueesHeight;
this.scrollElem.style.overflow = 'hidden';
}
this.repeat();
} catch (e) { console.log(e) }
}
repeat = () => {
this.scrollElem.scrollTop = 0;
let offset = 1.5
this.interval = setInterval(() => {
if (this.stopscroll) return;
this.currentTop = this.currentTop + offset;
this.preTop = this.scrollElem.scrollTop;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset;
// console.log(`this.scrollElem.scrollTop:${this.scrollElem.scrollTop} === this.preTop:${this.preTop}`);
if (this.preTop === this.scrollElem.scrollTop) {
this.scrollElem.scrollTop = this.marqueesHeight;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset;
}
}, 40);
}
componentWillUnmount() {
clearInterval(this.interval);
}
componentWillReceiveProps(nextProps) {
requestAnimationFrame(() => {
if (this.enabledScroll) {
if (!this.state.enabledScroll) {
this.setState({ enabledScroll: true }, () => {
this.marque(10)
})
}
}
})
}
componentDidMount() {
if (this.enabledScroll) {
this.setState({ enabledScroll: true }, () => {
this.marque(10)
})
}
}
onMouseOver = () => {
this.stopscroll = true;
}
onMouseOut = () => {
this.stopscroll = false;
}
render() {
const { changeStyleCol, heads, spans, data, divId, divHeight, content, containerStyle = {} } = this.props;
return (
<div style={{ ...containerStyle, textAlign: 'left' }}>
{
heads ?
<Row style={{ lineHeight: '40px', height: 40 }}>
{heads.map((c, index) => {
return <Col span={spans[index]} key={index}>{c}</Col>
})
}
</Row> : ''
}
<div id={divId} style={{ overflow: 'hidden', height: divHeight }} onMouseOver={this.onMouseOver} onMouseOut={this.onMouseOut}>
<div>
{content ? content : ''}
{this.state.enabledScroll && content ? content : ''}
{
data ?
data.map((q, idx) => {
return (
<div key={idx}>
<Row gutter={16} style={{ borderBottom: '0px solid grey' }}>
{heads.map((c, index) => {
return <Col span={spans[index]} key={index} style={{ paddingTop: 8, textAlign: 'left', wordBreak: 'break-word', color: `${c === changeStyleCol ? q.changeColor : ''}` }}>
{index == 1 ? q.data[index] == -1 ? "-" : q.data[index] : index == 2 ? q.data[1] == -1 ? '-' : q.data[index] : q.data[index]}</Col>
})
}
</Row>
</div>
)
}) : ''
}
<div style={{ margin: 16 }}></div>
</div>
</div>
</div >
)
}
}

74
web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js

@ -1,12 +1,80 @@
import React from 'react'
import React, { useState, useEffect } from 'react'
import Module from '../../../public/module'
import Lun from "./lunbo"
import "./left.less"
const Rightbottom = () => {
const style = { height: "28%", marginTop: "4%" }
const [beijing, setBeijing] = useState()
const [list, setList] = useState([{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11121", chaoxian: "30%", penalty: "-6分和扣200元", days: "2022年5月4日" },
{ name: "苏LD112512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1151121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11912121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD16112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L2D111221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "62", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11152121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD13112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111612121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111216221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L63D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD163112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD651112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }])
const renderBody = () => {
return (
// <div style={{ width: "100%", height: "100%" }}>{
// lists.map((item, index) => {
// return (<div >
// <div style={{ width: "100%", height: "100%", }}>
// <li style={{ height: "20px", width: "100%", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", backgroundColor: "pink" }} onMouseEnter={() => {
// }}>{item.name}</li>
// </div>
// </div>)
// })
// }
// </div >
<div style={{ width: "100%", height: "50%" }}>
{list.map((item, index) => {
return <li style={{ width: "100%", height: "3vh", marginTop: "5px", backgroundColor: beijing == item.name ? "rgba(0,124,230,1) " : "" }} onMouseEnter={() => {
setBeijing(item.name)
console.log(beijing);
}}>
<div style={{ width: "30%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.name}</div>
<div style={{ width: "10%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.chaoxian}</div>
<div style={{ width: "30%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.penalty}</div>
<div style={{ width: "30%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.days}</div></li>
})
}
</div>
)
}
return (
<>
<Module style={style}>
<Module style={style} title={"治超详情"}>
<div style={{ position: "relative", width: "90%", height: "5%", left: "5%", textAlign: "right", fontSize: "16px", top: "-3%", color: "rgba(216,240,255,0.8)" }}>
<img src='/assets/images/leadership/jiejue.png' style={{ width: "4.5%", height: "2vh", marginTop: "-1%" }} />
已处理<span>192</span>
</div>
<div style={{ width: "90%", height: "3vh", backgroundColor: "rgba(21,77,160,0.2)", position: "relative", left: "5%", top: "5%" }}>
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh" }}>车牌号</p>
<p style={{ width: "10%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh", left: "30%" }}>超限</p>
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh", left: "40%" }}>处罚</p>
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh", left: "70%" }}>日期</p>
</div>
<Lun
content={renderBody()}
containerStyle={{ position: "relative", height: "70%", width: "90%", left: "5%", top: "8%" }}
divHeight={"100%"}
divId={"screen-slope-midde-top"}
/>
</Module>
</>
)

25
web/client/src/sections/quanju/containers/public/left.less

@ -0,0 +1,25 @@
#scroll-2::-webkit-scrollbar{
width:4px;
height:4px;
}
#scroll-2::-webkit-scrollbar-track{
background: #f6f6f6;
border-radius:2px;
}
#scroll-2::-webkit-scrollbar-thumb{
background: #aaa;
border-radius:2px;
}
#scroll-2::-webkit-scrollbar-thumb:hover{
background: #747474;
}
#scroll-2::-webkit-scrollbar-corner{
background: #f6f6f6;
}
#screen-slope-midde-top-jiangxi{
& > div > div{
&:first-child{
margin-bottom: 1px;
}
}
}

139
web/client/src/sections/quanju/containers/public/lunbo.js

@ -0,0 +1,139 @@
'use strict'
import React, { Component } from 'react';
import { Row, Col } from 'antd';
export default class AutoRollComponent extends Component {
constructor(props) {
super(props);
this.scrollElem = null;
this.stopscroll = false;
this.preTop = 0;
this.cloneEle = null;
this.currentTop = 0;
this.marqueesHeight = 0;
this.interval = null;
this.state = {
enabledScroll: false
}
}
get enabledScroll() {
let scrollElem = document.getElementById(this.props.divId);
let fatherElem = scrollElem?.parentNode || null;
if (scrollElem && fatherElem) {
return scrollElem.scrollHeight > fatherElem.scrollHeight
}
return false;
}
marque = (height) => {
try {
this.scrollElem = document.getElementById(this.props.divId);
this.marqueesHeight = height;
if (this.scrollElem) {
this.scrollElem.style.height = this.marqueesHeight;
this.scrollElem.style.overflow = 'hidden';
}
this.repeat();
} catch (e) { console.log(e) }
}
repeat = () => {
this.scrollElem.scrollTop = 0;
let offset = 1.5
this.interval = setInterval(() => {
if (this.stopscroll) return;
this.currentTop = this.currentTop + offset;
this.preTop = this.scrollElem.scrollTop;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset;
// console.log(`this.scrollElem.scrollTop:${this.scrollElem.scrollTop} === this.preTop:${this.preTop}`);
if (this.preTop === this.scrollElem.scrollTop) {
this.scrollElem.scrollTop = this.marqueesHeight;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset;
}
}, 300000);
}
componentWillUnmount() {
clearInterval(this.interval);
}
componentWillReceiveProps(nextProps) {
requestAnimationFrame(() => {
if (this.enabledScroll) {
if (!this.state.enabledScroll) {
this.setState({ enabledScroll: true }, () => {
this.marque(10)
})
}
}
})
}
componentDidMount() {
if (this.enabledScroll) {
this.setState({ enabledScroll: true }, () => {
this.marque(10)
})
}
}
onMouseOver = () => {
this.stopscroll = true;
}
onMouseOut = () => {
this.stopscroll = false;
}
render() {
const { changeStyleCol, heads, spans, data, divId, divHeight, content, containerStyle = {} } = this.props;
return (
<div style={{ ...containerStyle, textAlign: 'left' }}>
{
heads ?
<Row style={{ lineHeight: '40px', height: 40 }}>
{heads.map((c, index) => {
return <Col span={spans[index]} key={index}>{c}</Col>
})
}
</Row> : ''
}
<div id={divId} style={{ overflow: 'hidden', height: divHeight }} onMouseOver={this.onMouseOver} onMouseOut={this.onMouseOut}>
<div>
{content ? content : ''}
{this.state.enabledScroll && content ? content : ''}
{
data ?
data.map((q, idx) => {
return (
<div key={idx}>
<Row gutter={16} style={{ borderBottom: '0px solid grey' }}>
{heads.map((c, index) => {
return <Col span={spans[index]} key={index} style={{ paddingTop: 8, textAlign: 'left', wordBreak: 'break-word', color: `${c === changeStyleCol ? q.changeColor : ''}` }}>
{index == 1 ? q.data[index] == -1 ? "-" : q.data[index] : index == 2 ? q.data[1] == -1 ? '-' : q.data[index] : q.data[index]}</Col>
})
}
</Row>
</div>
)
}) : ''
}
<div style={{ margin: 16 }}></div>
</div>
</div>
</div >
)
}
}

5
web/client/src/sections/quanju/containers/public/module.js

@ -1,8 +1,9 @@
import React from 'react'
import "./font.css"
import "./left.less"
const Module = (props) => {
const { style, children, title } = props
const { style, children, title, hualun } = props
return (
<>
<div style={{ width: style?.width || "100%", height: style?.height || "30%", backgroundColor: "rgba(0,33,98,0.8)", marginTop: style?.marginTop || "0" }}>
@ -12,7 +13,7 @@ const Module = (props) => {
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "10%" }}>{title || []}</span>
<img src='/assets/images/quanju/mokuaitou.png' style={{ width: "100%", height: "28px", position: "absolute", top: "12px" }} />
</div>
<div style={{ width: "100%", height: "70%" }}>
<div id='scroll-2' style={{ width: "100%", height: "80%", overflow: hualun }}>
{children}
</div>
</div>

62
web/log/development.txt

@ -3415,3 +3415,65 @@
2022-07-18 17:40:02.984 - info: [Router] Inject api: attachment/index
2022-07-19 09:38:20.086 - debug: [FS-LOGGER] Init.
2022-07-19 09:38:20.998 - info: [Router] Inject api: attachment/index
2022-07-21 15:22:04.942 - debug: [FS-LOGGER] Init.
2022-07-21 15:22:05.542 - info: [Router] Inject api: attachment/index
2022-07-21 17:03:00.480 - debug: [FS-LOGGER] Init.
2022-07-21 17:03:01.177 - info: [Router] Inject api: attachment/index
2022-07-21 18:12:39.625 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.157:8439',
name: 'RequestError',
cause: {
errno: -4039,
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.157',
port: 8439
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.157:8439/enterprises/undefined/members?token=215ed57a-8244-4523-b2ed-5a6b12b51711',
headers: {
host: '10.8.30.157:8439',
connection: 'keep-alive',
'sec-ch-ua': '" Not;A Brand";v="99", "Microsoft Edge";v="103", "Chromium";v="103"',
expires: '-1',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62',
'sec-ch-ua-platform': '"Windows"',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/quanju',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.157:8439\n' +
' at new RequestError (F:\\4hao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (F:\\4hao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (F:\\4hao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (F:\\4hao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:315:20)\n' +
' at Request.onRequestError (F:\\4hao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:315:20)\n' +
' at Socket.socketErrorListener (_http_client.js:461:9)\n' +
' at Socket.emit (events.js:315:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:96:8)\n' +
' at emitErrorCloseNT (internal/streams/destroy.js:68:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}

Loading…
Cancel
Save