Browse Source

更新

wangqin
hui 9 months ago
parent
commit
1977a2421b
  1. 21
      ruoyi-ui/src/common/menuData.js
  2. 5
      ruoyi-ui/src/router/routerCreater.js
  3. 15
      ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/img/arrowRight.svg
  4. 19
      ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/img/manageTotal.svg
  5. 285
      ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/index.vue
  6. 4
      ruoyi-ui/vue.config.js

21
ruoyi-ui/src/common/menuData.js

@ -193,20 +193,19 @@ export default [
path: "/datav/gisAndBim", path: "/datav/gisAndBim",
component: "datav/gisAndBim/index.vue", component: "datav/gisAndBim/index.vue",
}, },
// {
// title: "数字路网",
// name: "maintainQuery",
// path: "/datav/maintainQuery",
// component: "datav/maintainQuery/index.vue",
// },
{ {
title: "数字路网", title: "数字路网",
name: "maintainQuery", name: "roadNet",
path: "/datav/maintainQuery", path: "/datav/roadNet",
component: "datav/maintainQuery/index.vue", component: "datav/roadNet/index.vue",
hide:true
} }
// ,
// {
// title: "数字路网",
// name: "roadNet",
// path: "/datav/roadNet",
// component: "datav/roadNet/index.vue",
// hide:true
// }
], ],
}, },
{ {

5
ruoyi-ui/src/router/routerCreater.js

@ -67,11 +67,6 @@ function processNode(node) {
let childrenRoutes = processNode(menuData); let childrenRoutes = processNode(menuData);
let routes = [ let routes = [
{
path:"/test",
name:"test",
component: () => import("@/views/JiHeExpressway/pages/datav/roadNet"),
},
{ {
path: "/index", path: "/index",
name: "index", name: "index",

15
ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/img/arrowRight.svg

@ -1,6 +1,13 @@
<svg width="45" height="40" viewBox="0 0 45 40" fill="none" xmlns="http://www.w3.org/2000/svg"> <?xml version="1.0" encoding="utf-8"?>
<g id="Group 1142815364"> <!-- Generator: Adobe Illustrator 26.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<path id="Rectangle 3819" d="M20 2L40 20L20 38" stroke="#00D3FF" stroke-width="6"/> <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
<path id="Rectangle 3820" d="M15.0928 9.27246L27.2356 20.201L15.0928 31.1296" stroke="#00D3FF" stroke-opacity="0.5" stroke-width="4"/> viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;stroke:#00D3FF;stroke-width:6;}
.st1{fill:none;stroke:#00D3FF;stroke-width:4;stroke-opacity:0.5;}
</style>
<g id="Group_1142815364">
<path id="Rectangle_3819" class="st0" d="M12,2l20,18L12,38"/>
<path id="Rectangle_3820" class="st1" d="M7.1,9.3l12.1,10.9L7.1,31.1"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 668 B

19
ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/img/manageTotal.svg

@ -0,0 +1,19 @@
<svg width="367" height="112" viewBox="0 0 367 112" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Group 1142815322">
<g id="Group 1142815293">
<path id="Rectangle 3811" d="M24 0L342.5 0L366.5 56L342.5 112H24L0 56L24 0Z" fill="url(#paint0_linear_583_331)" fill-opacity="0.21"/>
<rect id="Rectangle 303" x="23.5" y="107.607" width="321" height="4.39216" fill="url(#paint1_linear_583_331)" fill-opacity="0.85"/>
</g>
</g>
<defs>
<linearGradient id="paint0_linear_583_331" x1="181.999" y1="5.34522e-07" x2="181.999" y2="112" gradientUnits="userSpaceOnUse">
<stop stop-color="#018BB6" stop-opacity="0"/>
<stop offset="1" stop-color="#1FCAF1"/>
</linearGradient>
<linearGradient id="paint1_linear_583_331" x1="14.2404" y1="112" x2="338.327" y2="112" gradientUnits="userSpaceOnUse">
<stop offset="0.032111" stop-color="#51B5FF" stop-opacity="0"/>
<stop offset="0.494792" stop-color="#51B5FF"/>
<stop offset="1" stop-color="#51B5FF" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 986 B

285
ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/index.vue

@ -1,14 +1,103 @@
<template> <template>
<div class='roadNet'> <div class="roadNet">
<div class="summary"> <div class="summary">
<div class="unit" v-for="item in summary"> <div class="summaryUnit" v-for="item in summary" :style="{'flex-basis' : item.width + 'px'}">
<p class="p01"> <div class="info info_01">
{{ item.dataAll.title }}<em class="blue">{{ item.dataAll.value }}</em><span>{{ item.dataAll.unit }}</span> <p v-if="item.dataAll"><span class="em">{{ item.dataAll.title }}:</span><em class="blue">{{ item.dataAll.value }}</em><i v-if="item.dataAll.unit">{{ item.dataAll.unit }}</i></p>
</p> </div>
<p class="p02"> <div class="info info_02">
{{ item.dataGreen.title }}<em class="green">{{ item.dataGreen.value }}</em><span>{{ item.dataGreen.unit }}</span> <p v-if="item.dataGreen"><span>{{ item.dataGreen.title }}:</span><em class="green">{{ item.dataGreen.value }}</em><i v-if="item.dataGreen.unit">{{ item.dataGreen.unit }}</i></p>
{{ item.dataRed.title }}<em class="red">{{ item.dataRed.value }}</em><span>{{ item.dataRed.unit }}</span> <p v-if="item.dataRed"><span>{{ item.dataRed.title }}:</span><em class="red">{{ item.dataRed.value }}</em><i v-if="item.dataRed.unit">{{ item.dataRed.unit }}</i></p>
</p> </div>
</div>
</div>
<div class="flow">
<div class="part sensor"></div>
<div class="part manage">
<img class="arrow arrow_01" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_02" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_03" src="./img/arrowRight.svg" alt="">
<div class="manageTotal">
<h4>济荷运管中心</h4>
<p>内存<em>20.79</em>/62.36GB CPU<em>1.00</em>/12<br>存储<em>25.68</em>/2328.93GB</p>
</div>
<ul class="manageDetail">
<li v-for="item in manage">
<div class="con">
<h4>{{ item.title }}</h4>
<p><em>{{ item.value }}</em><i></i></p>
</div>
</li>
</ul>
</div>
<div class="part partCalc">
<img class="arrow" src="./img/arrowRight.svg" alt="">
<div class="calcUnit small">
<h4>实时计算</h4>
<div class="con">
<p class="total">25,568,876</p>
<ul>
<li>节点</li>
<li>5/5</li>
<li>实时清洗</li>
<li>实时加工</li>
<li>实时汇报</li>
<li>实时分析</li>
</ul>
</div>
</div>
<div class="calcUnit big">
<h4>AI模型</h4>
<div class="con">
<p class="total">33,210</p>
<ul>
<li>实时交通态势感知模型</li>
<li>交通预警模型</li>
<li>在途车辆分析模型</li>
<li>应急指挥疏导模型</li>
<li>智能行车诱导模型</li>
<li>短临预报算法模型</li>
<li>交通综合指数模型</li>
<li>路网分析模型</li>
</ul>
</div>
</div>
<div class="calcUnit small">
<h4>离线计算</h4>
<div class="con">
<p class="total">2,017</p>
<ul>
<li>节点</li>
<li>6/6</li>
<li>实时清洗</li>
<li>批量加工</li>
<li>数据汇聚</li>
<li>数据分析</li>
</ul>
</div>
</div>
</div>
<div class="partRight">
<div class="part share">
<img class="arrow" src="./img/arrowRight.svg" alt="">
<div class="shareCon">
<img src="./img/shareCenter.svg" alt="" class="center">
<div class="item item_01">
<em>26805</em>
<span></span>
</div>
</div>
</div>
<div class="part apply">
<div class="applyUnit" v-for="item in apply" :key="item.title">
<div class="con">
<img src="./img/applyitem.svg" alt="">
<h4>{{ item.title }}</h4>
<p>调用<em>{{ item.value }}</em></p>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -21,7 +110,10 @@ export default {
name: 'dataVRoadNet', name: 'dataVRoadNet',
data(){ data(){
return { return {
summary:[] summary:[],
positionArr:[
]
} }
}, },
components: { components: {
@ -33,19 +125,182 @@ export default {
initData() { initData() {
this.summary = [ this.summary = [
{ {
width:287,
dataAll:{ title:"接入设备总数", value:3015, unit:"套"},
dataGreen:{ title:"设备类型数", value:55, unit:"类"},
dataRed:{ title:"故障数", value:207, unit:"套"}
},
{
width:376,
dataAll: { title: "接入数据总数", value: 1213213447, unit: "条" },
dataGreen: { title: "昨日接入数", value: 20624577, unit: "条" },
dataRed: { title: "环比", value: 0.04, unit: "%" }
},
{
width: 287,
dataAll: { title: "存储占用量", value: 86059, unit: "GB" },
dataGreen: { title: "昨日新增", value: 55, unit: "GB" },
dataRed: { title: "环比", value: 20.5, unit: "%" }
},
{
width: 376,
dataAll: { title: "服务调用总数", value: 43392688, unit: "次" },
dataGreen: { title: "昨日服务数", value: 1210345, unit: "次" },
dataRed: { title: "环比", value: 0.04, unit: "%" }
},
{
width:226,
dataAll: { title: "内存", value: "1274G/1800G", unit: "" },
dataGreen: { title: "使用率", value: 70.73, unit: "%" }
},
{
width: 226,
dataAll: { title: "CPU", value: "71/126", unit: "" },
dataGreen: { title: "使用率", value: 56.35, unit: "类" }
} }
] ];
this.manage = [
{ title : "ETC门架", value : 25800 },
{ title : "雷达", value : 25800 },
{ title : "一类交调站", value : 25800 },
{ title : "气象监测", value : 25800 },
{ title : "事件预警", value : 25800 },
{ title : "基础数据", value : 25800 },
{ title : "摄像机", value : 25800 },
{ title : "智能设备箱", value : 25800 }
];
this.apply = [
{ title : "设备资产",value : 45},
{ title : "智能行车诱导系统",value : 1},
{ title : "桥梁检测",value : 2137},
{ title : "情报板发布",value : 455},
{ title : "交通态势可视化",value : 73700},
{ title : "交通态势可视化监控",value : 1348},
{ title : "交通事件信息查询",value : 4545},
{ title : "设备运行监测",value : 626}
];
} }
} }
} }
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.roadNet{ h4, p, ul,li{ margin: 0; padding:0;}
.roadNet{ padding: 20px; display: flex; flex-direction: column;
.summary{ .summary{
display: flex; justify-content: space-between; display: flex; justify-content: space-between; height: 87px; align-items: stretch;
.unit{ border-left: 2px solid #00D1FF; background: linear-gradient( 180deg, rgba(6,66,88,0) 0%, #064258 93%);} .summaryUnit{ border-left: 2px solid #00D1FF; background: linear-gradient( -90deg, rgba(6,66,88,0) 0%, #064258 93%); box-sizing: border-box; padding: 0 20px; display: flex; flex-direction: column; justify-content: center; align-items: stretch;
.info{ display: flex; flex-direction: row; font-size: 14px; height: 32px; align-items: center;
p{ margin-right: 16px;
&:last-child{
margin-right: 0;
}
}
span{ font-size: 14px;
&.em{
font-size: 16px; font-family: PangMenZhengDao; letter-spacing: 1px;
}
}
em{ font-size: 19px; font-style: normal; font-family:PangMenZhengDao; margin: 0 2px;
&.blue{ color: #00D1FF;}
&.green{ color: #00EBC1;}
&.red{ color: #FF5F5F;}
}
i{ font-style: normal; font-size: 11px; opacity: 0.5;}
}
}
}
.flow{
flex:1; display: flex; justify-content: space-between; align-items: stretch; margin-top: 30px;
.part{ position: relative; background-image: linear-gradient( 180deg, #1FCAF100 0%, #1FCAFF32 100%); border: 1px dashed #00D1FF;
.arrow{ position: absolute; width: 40px; height: 36px;}
}
}
.sensor{
flex-basis: 260px;
&.part{ border: none; background-image: none;}
}
.manage{
flex-basis: 430px; display: flex; flex-direction: column; align-items: center;
.arrow_01{right: -40px; top:22%; }
.arrow_02{right: -40px; top:47% }
.arrow_03{right: -40px; top:72% }
.manageTotal{
width:366px; height:112px; background: url(./img/manageTotal.svg) no-repeat center center; text-align: center; margin-top: 30px;
h4{ color: #FFD15C; line-height: 50px; margin-bottom: 2px;}
p{ font-family: PangMenZhengDao;
em{ color: #00D1FF; font-style: normal;}
}
}
.manageDetail{
display: flex; flex-wrap: wrap; flex: 1; align-content: stretch; padding: 0; margin-top: 30px;
li{
flex-basis: 50%; list-style-type: none; display: flex; flex-direction: column; align-items: center; justify-content: center;
.con{ background: url(./img/sourceItem.svg) no-repeat; width: 166px; height: 136px; text-align: center;
h4{ font-size: 14px; line-height: 30px; margin: 0;}
p{
em{ font-size: 16px; color: #00D1FF; font-style: normal; font-family: PangMenZhengDao; margin: 0 3px;}
i{ font-size: 10px; opacity: 0.5; font-style: normal;}
}
}
}
}
}
.partCalc{
flex-basis: 256px; display: flex; flex-direction: column; justify-content: space-around; align-items: center; padding: 20px 0;
.arrow{right: -40px; top:20%}
.calcUnit{ font-size: 15px; text-align: center;
h4{font-family: PangMenZhengDao;}
.con{ background: url(./img/process.svg); background-size: 100% 100%;
p{ font-family: PangMenZhengDao; color: #FFD15C; }
ul{ list-style-type: none; margin-top: 6px;
li{ line-height: 24px; font-size: 14px; font-weight: 600;}
}
}
}
.calcUnit.small{ width: 172px; height: 215px;
h4{ height: 22px; line-height: 24px;}
.con{ height: 193px;
p{ line-height: 22px;}
}
}
.calcUnit.big{ width: 225px; height: 272px;
.con{ height: 250px;
p{ height: 30px; line-height: 30px; }
}
}
}
.partRight{
flex-basis: 816px; display: flex; flex-direction: column; justify-content: space-between;
}
.share{
height: 420px; display: flex; justify-content: center; align-items: center;
.arrow{ transform: rotateZ(90deg); left: 48%; top:calc(100% + 8px);}
.shareCon{
background-image: url(./img/ShareAll.svg); background-position: center center; background-size: contain; background-repeat: no-repeat; width: 756px; height: 245px; display: flex; align-items: center; justify-content: center;
.center{ width: 130px; height: 130px;}
.item{ position: absolute;}
.item_01{}
.item_02{}
.item_03{}
.item_04{}
.item_05{}
.item_06{}
.item_07{}
.item_08{}
}
}
.apply{
height: 390px; display: flex; flex-wrap: wrap; padding: 40px 45px; align-content: stretch;
.applyUnit{ flex-basis: 25%; display: flex; flex-direction: column; justify-content: center; align-items: center;
.con{ width: 140px; text-align: center; align-items: center; justify-content: center;
h4, p{ font-family: PangMenZhengDao; font-size: 15px; line-height: 22px; margin: 0; padding:0;
}
h4, p em{ color: #00D1FF; font-style: normal; margin: 0 3px; }
}
}
} }
} }
</style> </style>

4
ruoyi-ui/vue.config.js

@ -50,8 +50,8 @@ module.exports = {
// target: `http://10.0.81.204:8087`, //现场后台 刘文阁 // target: `http://10.0.81.204:8087`, //现场后台 刘文阁
// target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁 // target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁
// target: `http://10.168.78.135:8087`, //王钦 // target: `http://10.168.78.135:8087`, //王钦
// target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2 target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
target: `http://10.168.68.42:8087`, //王思祥 // target: `http://10.168.68.42:8087`, //王思祥
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "", ["^" + process.env.VUE_APP_BASE_API]: "",

Loading…
Cancel
Save