This commit is contained in:
luoshiwen 2023-03-23 09:41:33 +08:00
commit 255481f009
4 changed files with 314 additions and 266 deletions

View File

@ -1,237 +1,237 @@
<template> <template>
<!-- 触发类型 --> <!-- 触发类型 -->
<div class="setion"> <div class="setion">
<!-- <p class="chartTitle"><span class="titleIcon"></span> {{ componentName }} {{ triggerType }}</p> --> <!-- <p class="chartTitle"><span class="titleIcon"></span> {{ componentName }} {{ triggerType }}</p> -->
<!-- 触发数据数值渲染 --> <!-- 触发数据数值渲染 -->
<div class="typeContent"> <div class="typeContent">
<div v-if="newDataArr && newDataArr.length != 0 && newDataArr != undefined"> <div v-if="newDataArr && newDataArr.length != 0 && newDataArr != undefined">
<div v-if="title == '类型'" style="display:flex"> <div v-if="title == '类型'" style="display:flex">
<el-card v-for="(n, i) in newDataArr[0].type_data" :key="i" <el-card v-for="(n, i) in newDataArr[0].type_data" :key="i"
style="width: 150px; margin-bottom: 20px; text-align: center"> style="width: 150px; margin-bottom: 20px; text-align: center">
<div> <div>
<span style="font-size: 15px;">{{ n.name }}</span><br /> <span style="font-size: 15px;">{{ n.name }}</span><br />
<span style="font-size: 30px; font-weight: bold">{{ n.quantity }}</span> <span style="font-size: 30px; font-weight: bold">{{ n.quantity }}</span>
</div> </div>
<div> <div>
<div> <div>
{{ newDataArr[0].time ? newDataArr[0].time : '' }} {{ newDataArr[0].time ? newDataArr[0].time : '' }}
</div> </div>
</div> </div>
</el-card> </el-card>
</div> </div>
</div> </div>
<el-card v-show="echartArr.includes('数值')" style="width: 150px; margin-bottom: 20px; text-align: center"> <el-card v-show="echartArr.includes('数值')" style="width: 150px; margin-bottom: 20px; text-align: center">
<div v-if="newDataArr && newDataArr.length != 0 && newDataArr != undefined"> <div v-if="newDataArr && newDataArr.length != 0 && newDataArr != undefined">
<div v-if="title == '类型'"> <div v-if="title == '类型'">
<span style="font-size: 15px;">类型数量总和</span><br /> <span style="font-size: 15px;">类型数量总和</span><br />
<span style="font-size: 30px; font-weight: bold"> <span style="font-size: 30px; font-weight: bold">
{{ getTotal(newDataArr) }} {{ getTotal(newDataArr) }}
</span> </span>
</div> </div>
<div style="font-size: 30px; font-weight: bold" <div style="font-size: 30px; font-weight: bold"
v-if="title == '速度' && dataArr.length != 0 && dataArr != undefined"> v-if="title == '速度' && dataArr.length != 0 && dataArr != undefined">
<span style="font-size: 15px;">速度</span><br /> <span style="font-size: 15px;">速度</span><br />
<!-- <span style="font-size: 30px; font-weight: bold">{{ typeValue.speed }}</span> --> <!-- <span style="font-size: 30px; font-weight: bold">{{ typeValue.speed }}</span> -->
<span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].speed }}</span> <span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].speed }}</span>
</div> </div>
<div style="font-size: 30px; font-weight: bold" <div style="font-size: 30px; font-weight: bold"
v-if="title == '流量' && dataArr.length != 0 && dataArr != undefined"> v-if="title == '流量' && dataArr.length != 0 && dataArr != undefined">
<span style="font-size: 15px;">流量</span><br /> <span style="font-size: 15px;">流量</span><br />
<span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].flow }}</span> <span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].flow }}</span>
</div> </div>
<div style="font-size: 30px; font-weight: bold" v-if="title == '车头时距'"> <div style="font-size: 30px; font-weight: bold" v-if="title == '车头时距'">
<span style="font-size: 15px;">车头时距</span><br /> <span style="font-size: 15px;">车头时距</span><br />
<span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].headway }}</span> <span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].headway }}</span>
</div> </div>
<div style="font-size: 30px; font-weight: bold" v-if="title == '排队数'"> <div style="font-size: 30px; font-weight: bold" v-if="title == '排队数'">
<span style="font-size: 15px;">排队数</span><br /> <span style="font-size: 15px;">排队数</span><br />
<span style="font-size: 30px; font-weight: bold">{{ queue }}</span> <span style="font-size: 30px; font-weight: bold">{{ queue }}</span>
</div> </div>
<div style="font-size: 30px; font-weight: bold" v-if="title == '检测数'"> <div style="font-size: 30px; font-weight: bold" v-if="title == '检测数'">
<span style="font-size: 15px;">检测数</span><br /> <span style="font-size: 15px;">检测数</span><br />
<span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].n_stay }}</span> <span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].n_stay }}</span>
</div> </div>
<div style="font-size: 30px; font-weight: bold" v-if="title == '延误'"> <div style="font-size: 30px; font-weight: bold" v-if="title == '延误'">
<span style="font-size: 15px;">延误</span><br /> <span style="font-size: 15px;">延误</span><br />
<span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].ave_delay }}</span> <span style="font-size: 30px; font-weight: bold">{{ newDataArr[0].ave_delay }}</span>
</div> </div>
<div> <div>
<div> <div>
{{ newDataArr[0].time ? newDataArr[0].time : '' }} {{ newDataArr[0].time ? newDataArr[0].time : '' }}
</div> </div>
</div> </div>
</div> </div>
<div v-else> <div v-else>
<el-empty :image-size="100"></el-empty> <el-empty :image-size="100"></el-empty>
</div> </div>
</el-card> </el-card>
</div> </div>
<div v-show="echartArr.includes('表格')"> <div v-show="echartArr.includes('表格')">
<div class="tableTitle" v-if="newDataArr && newDataArr.length != 0 && newDataArr != undefined"> <div class="tableTitle" v-if="newDataArr && newDataArr.length != 0 && newDataArr != undefined">
<div> <div>
<span <span
style="width: 10px;height:10px;border-radius: 50%;background-color: #3297ff;display: inline-block;vertical-align: middle;margin-right: 8px;"></span> style="width: 10px;height:10px;border-radius: 50%;background-color: #3297ff;display: inline-block;vertical-align: middle;margin-right: 8px;"></span>
<span style="font-size:18px;">{{ this.chartName + '-' + this.componentName + '-' + '表格' + '-' + <span style="font-size:18px;">{{ this.chartName + '-' + this.componentName + '-' + '表格' + '-' +
triggerType }}</span> triggerType }}</span>
</div> </div>
<div class="tableTime"> <div class="tableTime">
{{ newDataArr[0].time ? newDataArr[0].time : '' }} {{ newDataArr[0].time ? newDataArr[0].time : '' }}
</div> </div>
</div> </div>
<div v-if="pageType == '断面'" style="margin-bottom: 20px; border: 1px solid #e4e7ed"> <div v-if="pageType == '断面'" style="margin-bottom: 20px; border: 1px solid #e4e7ed">
<tableShow :msg="newDataArr" :triggerType="triggerType" /> <tableShow :msg="newDataArr" :triggerType="triggerType" />
</div> </div>
<div v-if="pageType == '区域'"> <div v-if="pageType == '区域'">
<regionTable :msg="newDataArr" :triggerType="triggerType" /> <regionTable :msg="newDataArr" :triggerType="triggerType" />
</div> </div>
</div> </div>
<div class="border" v-if="echartArr.includes('曲线图')"> <div class="border" v-if="echartArr.includes('曲线图')">
<detailDialog /> <detailDialog />
<lineChart :componentName="componentName" :chartName="chartName" :pageType="pageType" :list="newDataArr" <lineChart :componentName="componentName" :chartName="chartName" :pageType="pageType" :list="newDataArr"
:status="triggerType" :title="title" :typeValue="typeValue" ref="lineChartRef" /> :status="triggerType" :title="title" :typeValue="typeValue" ref="lineChartRef" />
</div> </div>
<div class="border" v-if="echartArr.includes('饼状图')"> <div class="border" v-if="echartArr.includes('饼状图')">
<detailDialog /> <detailDialog />
<pieChart :componentName="componentName" :chartName="chartName" :pageType="pageType" :list="newDataArr" <pieChart :componentName="componentName" :chartName="chartName" :pageType="pageType" :list="newDataArr"
:status="triggerType" :title="title" :typeValue="typeValue" ref="pieChartRef" /> :status="triggerType" :title="title" :typeValue="typeValue" ref="pieChartRef" />
</div> </div>
<div class="border" v-if="echartArr.includes('均值图')"> <div class="border" v-if="echartArr.includes('均值图')">
<detailDialog /> <detailDialog />
<avgChart ref="avgChartRef" :componentName="componentName" :chartName="chartName" :pageType="pageType" <avgChart ref="avgChartRef" :componentName="componentName" :chartName="chartName" :pageType="pageType"
:list="newDataArr" :status="triggerType" :title="title" :typeValue="typeValue" /> :list="newDataArr" :status="triggerType" :title="title" :typeValue="typeValue" />
</div> </div>
<div class="border" v-if="echartArr.includes('直方图')"> <div class="border" v-if="echartArr.includes('直方图')">
<detailDialog /> <detailDialog />
<barChart :componentName="componentName" :chartName="chartName" :pageType="pageType" :list="newDataArr" <barChart :componentName="componentName" :chartName="chartName" :pageType="pageType" :list="newDataArr"
:status="triggerType" :title="title" :typeValue="typeValue" ref="barChartRef" /> :status="triggerType" :title="title" :typeValue="typeValue" ref="barChartRef" />
</div> </div>
<div class="border" v-if="echartArr.includes('矩阵图')"> <div class="border" v-if="echartArr.includes('矩阵图')">
<detailDialog /> <detailDialog />
<thermalChart :componentName="componentName" :pageType="pageType" :list="newDataArr" <thermalChart :componentName="componentName" :pageType="pageType" :list="newDataArr"
:status="triggerType" :title="title" :typeValue="typeValue" ref="ODChartRef" /> :status="triggerType" :title="title" :typeValue="typeValue" ref="ODChartRef" />
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import avgChart from '../chart/avgChart.vue'; import avgChart from '../chart/avgChart.vue';
import lineChart from '../chart/lineChart.vue'; import lineChart from '../chart/lineChart.vue';
import barChart from '../chart/barChart.vue'; import barChart from '../chart/barChart.vue';
import tableShow from '../chart/tableShow.vue'; import tableShow from '../chart/tableShow.vue';
import pieChart from '../chart/pieChart.vue'; import pieChart from '../chart/pieChart.vue';
import detailDialog from '../chart/detailDialog.vue'; import detailDialog from '../chart/detailDialog.vue';
import regionTable from '../chart/regionTable.vue'; import regionTable from '../chart/regionTable.vue';
import thermalChart from '../chart/thermalChart.vue'; import thermalChart from '../chart/thermalChart.vue';
export default { export default {
name: 'typeChart', // name: 'typeChart', //
props: ['typeValue', 'pageType', 'triggerType', 'dataArr', 'echartArr', 'componentName', 'title', 'chartName','startEndData'], props: ['typeValue', 'pageType', 'triggerType', 'dataArr', 'echartArr', 'componentName', 'title', 'chartName','startEndData'],
components: { components: {
lineChart, lineChart,
barChart, barChart,
tableShow, tableShow,
detailDialog, detailDialog,
regionTable, regionTable,
pieChart, pieChart,
avgChart, avgChart,
thermalChart thermalChart
}, },
data() { data() {
return { return {
// //
total: 0, total: 0,
// //
speed: 0, speed: 0,
// //
flow: 0, flow: 0,
isRefer: true, isRefer: true,
valueShow: {}, valueShow: {},
// //
queue: '', queue: '',
newDataArr: [] newDataArr: []
}; };
}, },
created() { created() {
}, },
methods: { methods: {
// //
getDataArr(val) { getDataArr(val) {
this.newDataArr = val this.newDataArr = val
this.getNewQueue(this.newDataArr) this.getNewQueue(this.newDataArr)
}, },
getTotal(dataArr) { getTotal(dataArr) {
if (this.title == '类型') { if (this.title == '类型') {
return dataArr[0].type_data.reduce(function (prev, cur) { return dataArr[0].type_data.reduce(function (prev, cur) {
return cur.quantity + prev; return cur.quantity + prev;
}, 0); }, 0);
} }
}, },
getNewQueue(val) { getNewQueue(val) {
if (val[0].n_queue) { if (val[0].n_queue) {
this.queue = val[0].n_queue; this.queue = val[0].n_queue;
} }
if (val[0].ave_queue) { if (val[0].ave_queue) {
this.queue = val[0].ave_queue; this.queue = val[0].ave_queue;
} }
if (val[0].headway) { if (val[0].headway) {
this.newDataArr[0].headway = val[0].headway; this.newDataArr[0].headway = val[0].headway;
} }
if (val[0].ave_headway) { if (val[0].ave_headway) {
this.newDataArr[0].headway = val[0].ave_headway; this.newDataArr[0].headway = val[0].ave_headway;
} }
if (val[0].n_stay) { if (val[0].n_stay) {
this.newDataArr[0].n_stay = val[0].n_stay; this.newDataArr[0].n_stay = val[0].n_stay;
} }
if (val[0].ave_stay) { if (val[0].ave_stay) {
this.newDataArr[0].n_stay = val[0].ave_stay; this.newDataArr[0].n_stay = val[0].ave_stay;
} }
}, },
}, },
computed: { computed: {
// //
}, },
mounted() { }, mounted() { },
watch: { watch: {
// //
// dataArr: { // dataArr: {
// handler(newVal) { // handler(newVal) {
// // console.log('dataArr', newVal); // // console.log('dataArr', newVal);
// if (newVal != undefined && newVal.length != 0) { // if (newVal != undefined && newVal.length != 0) {
// this.getNewQueue(newVal); // this.getNewQueue(newVal);
// } // }
// }, // },
// immediate: true // immediate: true
// } // }
// typeValue:{ // typeValue:{
// handler(newVal) { // handler(newVal) {
// // console.log('dataArr', newVal); // // console.log('dataArr', newVal);
// }, // },
// immediate: true // immediate: true
// } // }
} }
}; };
</script> </script>
<style scoped> <style scoped>
.tableTitle { .tableTitle {
background: #f7f8fa; background: #f7f8fa;
margin-bottom: 5px; margin-bottom: 5px;
padding: 8px; padding: 8px;
} }
.typeContent { .typeContent {
box-sizing: border-box; box-sizing: border-box;
} }
.border { .border {
width: 100%; width: 100%;
margin-bottom: 20px; margin-bottom: 20px;
position: relative; position: relative;
} }
</style> </style>

View File

@ -24,7 +24,7 @@ export default {
//编辑保存组件弹窗传参 //编辑保存组件弹窗传参
setHostName: 'http://172.16.1.168:5000/api/SetHostName', setHostName: 'http://172.16.1.168:5000/api/SetHostName',
setHostTime: 'http://172.16.1.168:5000/api/SetHostTime', setHostTime: 'http://172.16.1.168:5000/api/SetHostTime',
// changePassowrd:'http://172.16.1.168:5000/api/ChangePassword' changePassowrd:'http://172.16.1.168:5000/api/ChangePassword'
// `http://${ipUurl}:5000/api/AddShipjk` // `http://${ipUurl}:5000/api/AddShipjk`
// dataUrl: `http://${ipUurl}:5000/api/AddShipjk`, // dataUrl: `http://${ipUurl}:5000/api/AddShipjk`,
// getSpareElementOrder: `http://${ipUurl}:5000/api/Upload`, // getSpareElementOrder: `http://${ipUurl}:5000/api/Upload`,

View File

@ -757,8 +757,8 @@ export default {
OnSceneload(newV) { OnSceneload(newV) {
var ip = window.location.host; var ip = window.location.host;
this.ipData = 'http://' + ip.split(':')[0] + ':5000'; this.ipData = 'http://' + ip.split(':')[0] + ':5000';
this.$refs.analysisWeb.contentWindow.getIpData('http://172.16.1.168:5000'); // this.$refs.analysisWeb.contentWindow.getIpData('http://172.16.1.168:5000');
// this.$refs.analysisWeb.contentWindow.getIpData(this.ipData); this.$refs.analysisWeb.contentWindow.getIpData(this.ipData);
this.$refs.analysisWeb.contentWindow.getDianwei(this.$route.query.id); this.$refs.analysisWeb.contentWindow.getDianwei(this.$route.query.id);
this.unityDone = true; this.unityDone = true;
window.publish('Custom',JSON.stringify({"type":'getImage',"videoid":this.$route.query.id})); window.publish('Custom',JSON.stringify({"type":'getImage',"videoid":this.$route.query.id}));

View File

@ -270,24 +270,37 @@ export default {
let valdata2 = value.split('/')[1]; let valdata2 = value.split('/')[1];
console.log("valdata",valdata) console.log("valdata",valdata)
console.log("valdata2",valdata2) console.log("valdata2",valdata2)
let valdata3 = value.split('/')[2];
let isCorrect = true; let isCorrect = true;
if (valdata.length) { if (valdata.length) {
for (let i = 0; i < valdata.length; i++) { for (let i = 0; i < valdata.length; i++) {
if (regexp.test(valdata[i]) == false) { const re = /^[0-9]*[1-9][0-9]*$/;
if (!Number(valdata2)) { const rsCheck = re.test(value);
// callback(new Error('[1,32]')); // if (regexp.test(valdata[i]) == false&&!Number(valdata2)&&(valdata2 < 1 || valdata2 > 32)&&valdata3&&!rsCheck) {
if (regexp.test(valdata[i]) == false) {
isCorrect = false;
callback(new Error('请输入正确的IP地址'));
}else{
if (!Number(valdata2)) {
isCorrect = false; isCorrect = false;
callback(new Error('请输入正确的IP地址')); callback(new Error('请输入正确的IP地址'));
} else { } else {
if (valdata2 < 1 || valdata2 > 32) { if (valdata2 < 1 || valdata2 > 32) {
callback(new Error('请输入整数,值为[1,32]')); callback(new Error('请输入整数,值为[1,32]'));
isCorrect = false; isCorrect = false;
} else { }
callback(); if(valdata3){
isCorrect = false;
callback(new Error('请输入正确的IP地址'));
} }
} }
} }
} }
} }
} }
@ -362,7 +375,7 @@ export default {
} }
], ],
sizeForm: { sizeForm: {
name: 'eth0', name: '',
region: '00:11:14:1a:62:fe', region: '00:11:14:1a:62:fe',
MTU: '1500', MTU: '1500',
date2: '', date2: '',
@ -432,8 +445,8 @@ export default {
}, },
options: [ options: [
{ {
value: 'eth0', value: '',
label: 'eth0' label: ''
}, },
// { // {
// value: 'wlan0', // value: 'wlan0',
@ -443,7 +456,7 @@ export default {
// //
netWork:[ netWork:[
{ {
name: 'eth0', name: '',
region: '00:11:14:1a:62:fe', region: '00:11:14:1a:62:fe',
MTU: '1500', MTU: '1500',
date2: '', date2: '',
@ -544,12 +557,12 @@ export default {
}, },
created() { created() {
this.createMqtt() this.createMqtt()
setTimeout(() => {
this.publishClient()
}, 1000 * 3 );
}, },
mounted() { mounted() {
// window.setInterval( () => { //30 this.getdata()
// this.publishClient()
// }, 1000 * 5 )
}, },
methods:{ methods:{
// //
@ -569,7 +582,7 @@ export default {
var ner = { var ner = {
type:"netplanSet", type:"netplanSet",
ethName:"eth0", ethName:sizeForm.name,
dhcp4: false, dhcp4: false,
addresses:tableDataN,// addresses:tableDataN,//
gateway4:sizeForm.gateway4, gateway4:sizeForm.gateway4,
@ -582,12 +595,49 @@ export default {
type: 'warning' type: 'warning'
}) })
.then(() => { .then(() => {
// this.$message({ this.$message({
// type: 'success', type: 'success',
// message: '!' message: '设置成功!'
// }); });
console.log("JSON.stringify(ner)",JSON.stringify(ner)) console.log("JSON.stringify(ner)",JSON.stringify(ner))
// window.publish('Contorl_client',JSON.stringify(ner)); window.publish('Contorl_client',JSON.stringify(ner));
this.sizeForm={
name: '',
region: '00:11:14:1a:62:fe',
MTU: '1500',
date2: '',
delivery: false,
type: [],
resource: '',
desc: true,
ip: '192.168.1.5/24',
ip1: '192.168.50.10/24',
ip2: 'e.g.192.168.50.10/24',
ip3: 'e.g.192.168.50.10/24',
ip4: 'e.g.192.168.50.10/24',
dns1: 'e.g.1.1.1.1',
dns2: 'e.g.1.0.0.1',
dns3: 'e.g.1.0.0.1',
status:'NO',
gateway4: '',
mtu:'',
mac:'',
moren:'',
speed:'',
tableRouter: [],
tableData: [],
tableDataDNS: [],
}
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
setTimeout(() => {
loading.close();
this.publishClient()
}, 5000);
}) })
.catch(() => { .catch(() => {
this.$message({ this.$message({
@ -648,9 +698,7 @@ export default {
// //
var topicSends = ['Contorl_server']; var topicSends = ['Contorl_server'];
window.PubScribe(topicSends,-1,this.realInfo); window.PubScribe(topicSends,-1,this.realInfo);
setTimeout(() => {
this.publishClient()
}, 5000);
}, },
publishClient(){ publishClient(){
window.publish('Contorl_client',JSON.stringify({"type":"getNet"})); window.publish('Contorl_client',JSON.stringify({"type":"getNet"}));
@ -684,9 +732,9 @@ export default {
changeNetstates(msg){ changeNetstates(msg){
console.log("msg",msg) console.log("msg",msg)
// var optionsDataN = this.optionsData // var optionsDataN = this.optionsData
// this.sizeForm.mtu = msg.netstatesthis.optionsData}.mtu console.log(" msg.netstates[this.optionsData]",this.optionsData)
console.log(" msg.netstates[this.optionsData]",msg.netstates[this.optionsData])
if(msg.netstates[this.optionsData]!=undefined){ if(msg.netstates[this.optionsData]!=undefined){
this.sizeForm.name = this.optionsData
this.sizeForm.mtu = msg.netstates[this.optionsData].mtu this.sizeForm.mtu = msg.netstates[this.optionsData].mtu
var data = msg.netaddres[this.optionsData] var data = msg.netaddres[this.optionsData]
this.sizeForm.speed = msg.netstates[this.optionsData].speed this.sizeForm.speed = msg.netstates[this.optionsData].speed