Browse Source

Merge branch 'develop' of http://39.106.31.193:9211/mengff/jihe-hs into develop

wangqin
zhangzhang 11 months ago
parent
commit
566c355d91
  1. 3
      ruoyi-ui/package.json
  2. 14664
      ruoyi-ui/pnpm-lock.yaml
  3. 2
      ruoyi-ui/public/static/systemConfig.js
  4. 4
      ruoyi-ui/src/assets/styles/JiHeExpressway.scss
  5. 2
      ruoyi-ui/src/components/Verifition/Verify.vue
  6. 4
      ruoyi-ui/src/components/Verifition/Verify/VerifySlide.vue
  7. 3
      ruoyi-ui/src/main.js
  8. 8
      ruoyi-ui/src/views/JiHeExpressway/components/Dialog/index.vue
  9. 8
      ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/index.vue
  10. BIN
      ruoyi-ui/src/views/JiHeExpressway/images/logo.png
  11. BIN
      ruoyi-ui/src/views/JiHeExpressway/images/title.png
  12. 4
      ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
  13. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue
  14. 28
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Intermodulation/index.vue
  15. 31
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue
  16. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
  17. 23
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js
  18. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
  19. 143
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/qbbDialog/index.vue
  20. 78
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue
  21. 22
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue
  22. 54
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js
  23. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/index.vue
  24. 7
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts3.js
  25. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue
  26. 29
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventSource/index.vue
  27. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/index.vue
  28. 7
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/index.vue
  29. 15
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/index.vue
  30. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/weaterData/index.vue
  31. 24
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/index.vue
  32. 72
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/index.vue
  33. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/classification/index.vue
  34. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/heightway/index.vue
  35. 20
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/situation/index.vue
  36. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/traffic/index.vue
  37. 73
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/index.vue
  38. 18
      ruoyi-ui/src/views/login.vue
  39. 4
      ruoyi-ui/vue.config.js

3
ruoyi-ui/package.json

@ -107,7 +107,8 @@
"vuedraggable": "2.24.3",
"vuescroll": "^4.18.1",
"vuex": "3.6.0",
"zrender": "^5.4.4"
"zrender": "^5.4.4",
"mitt": "^3.0.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",

14664
ruoyi-ui/pnpm-lock.yaml

File diff suppressed because it is too large

2
ruoyi-ui/public/static/systemConfig.js

@ -27,7 +27,7 @@ const systemConfig = {
title0: '管理系统',
url0: 'ry',
navBarShow0: {bigScreen: 'false', frontPage: 'true', doc: 'true',weather:'true',breadcrumb:'true'},
title1: '济菏数运营管理平台',
title1: '济菏数运营管理平台',
url1: "athena",
navBarShow1: {bigScreen: 'false', frontPage: 'false', doc: 'false',weather:'false',breadcrumb:'true'},

4
ruoyi-ui/src/assets/styles/JiHeExpressway.scss

@ -273,4 +273,8 @@
}
}
.el-time-range-picker{
.el-time-spinner__item.active{ color: #fff !important;}
}
}

2
ruoyi-ui/src/components/Verifition/Verify.vue

@ -466,7 +466,7 @@ export default {
background-size: contain;
}
.icon-right:before {
.icon-rig:before {
content: " ";
display: block;
width: 16px;

4
ruoyi-ui/src/components/Verifition/Verify/VerifySlide.vue

@ -178,7 +178,7 @@ export default {
moveBlockBackgroundColor: undefined,
leftBarBorderColor: "#ddd",
iconColor: undefined,
iconClass: "icon-right",
iconClass: "icon-rig",
status: false, //
isEnd: false, //
showRefresh: true,
@ -377,7 +377,7 @@ export default {
this.leftBarBorderColor = "#ddd";
this.moveBlockBackgroundColor = "#fff";
this.iconColor = "#000";
this.iconClass = "icon-right";
this.iconClass = "icon-rig";
this.isEnd = false;
this.getPictrue();

3
ruoyi-ui/src/main.js

@ -54,6 +54,8 @@ import eventDialog from "@/components/eventDialogTable/eventDialog.vue";
import eventDialogTable from "@/components/eventDialogTable";
import evtDialogOneThing from "@/components/eventDialogTable/evtDialogOneThing.vue";
import evtDialogVideo from "@/components/eventDialogTable/video.vue";
import mitt from "mitt";
const emitter = mitt();
// 大屏适配
import dataV from "@jiaminghi/data-view";
@ -103,6 +105,7 @@ Vue.prototype.selectDictLabels = selectDictLabels;
Vue.prototype.handleTree = handleTree;
Vue.prototype.socket = Socket;
Vue.prototype.numberMul = numberMul;
Vue.prototype.emitter = emitter;
// gis
Vue.prototype.$GlobalConfig = config.GlobalConfig;

8
ruoyi-ui/src/views/JiHeExpressway/components/Dialog/index.vue

@ -93,6 +93,14 @@ export default {
},
},
},
methods: {
updateDialogVisible(bool) {
this.modelVisible = bool;
},
},
mounted() {
this.emitter.on("updateDialogVisible", this.updateDialogVisible);
},
computed: {
modelVisible: {
get() {

8
ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/index.vue

@ -103,13 +103,13 @@ export default {
.title-img {
display: inline-block;
margin-left: 10px;
width: 373px;
height: 28px;
width: 370px;
height: 37px;
}
}
.leftMenu {
width: 560px;
width: 550px;
}
.rightMenu {
@ -117,7 +117,7 @@ export default {
}
.topButton{
width: 180px;
width: 190px;
}
.user {

BIN
ruoyi-ui/src/views/JiHeExpressway/images/logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
ruoyi-ui/src/views/JiHeExpressway/images/title.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 39 KiB

4
ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js

@ -94,6 +94,10 @@ export default{
} else {
publishToBoard(data).then(res => {
// this.saveLog(content);
this.$message({
type:"success",
message:"发布成功!"
});
this.____getDeviceInfo();
}).catch(err=>{

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue

@ -307,7 +307,7 @@ export default {
font-family: PangMenZhengDao-3, PangMenZhengDao-3;
font-weight: 400;
color: #FFCD4D;
text-align: left;
text-align: center;
font-style: normal;
text-transform: none;
}

28
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Intermodulation/index.vue

@ -9,18 +9,10 @@
</ElTabPane>
<ElTabPane label="设备参数" name="second">
<div class="content-second" style="height: 185px">
<RadioGroup
v-model="roadType"
:options="roadTypeList"
@input="changeRadio"
/>
<RadioGroup v-model="roadType" :options="roadTypeList" @input="changeRadio" />
<span>当前车流量: {{ carNum }}</span>
<LineChartForTraffic
style="flex: 1"
v-if="isShowCar && activeName === 'second'"
:xData="xData"
:yData="yData"
/>
<LineChartForTraffic style="flex: 1" v-if="isShowCar && activeName === 'second'" :xData="xData"
:yData="yData" />
</div>
</ElTabPane>
<ElTabPane label="在线率统计" name="third">
@ -148,13 +140,14 @@ export default {
// this.dialogData.brand = data.brand;
// })
if (this.dialogData.iotDeviceId) {
this.getPropertiesHistory(this.dialogData.iotDeviceId);
}
const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMark);
if (roadInfo) this.data.roadName = roadInfo.roadName;
if (this.dialogData.iotDeviceId) {
this.getPropertiesHistory(this.dialogData.iotDeviceId);
}
},
methods: {
changeRadio(value) {
@ -165,12 +158,9 @@ export default {
} else {
this.yData = this.hzYData;
}
// console.log('xdata', this.xData);
// console.log('ydata', this.hzYData);
// console.log('rdata', this.jnYData);
setTimeout(() => {
this.isShowCar = true;
}, 1000);
}, 0);
},
getPropertiesHistory(deviceId) {
this.xData = [];
@ -248,7 +238,7 @@ div.switcher {
align-items: center;
justify-content: end;
> div {
>div {
font-size: 16px;
padding: 6px 12px;
}

31
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue

@ -56,6 +56,8 @@ import {
} from "@screen/utils/enum.js";
// import { getRoadInfoByStakeMark, getProduct } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js"
import { dialogDelayVisible } from "./../mixin";
import { markerClusterIns } from "@screen/pages/Home/components/RoadAndEvents/utils/map.js";
import { eventMap } from "@screen/pages/Home/components/RoadAndEvents/utils/buttonEvent";
let vehicleTypeList = [];
@ -206,6 +208,35 @@ export default {
clearInterval(this.interval);
},
methods: {
onDelete() {
const id = this.dialogData.id;
id &&
this.$confirm("确定误报吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
request({
url: `/business/warning/delete`,
method: "post",
data: { id },
}).then((result) => {
if (result.code == 200) Message.success("成功!");
else Message.error(result?.msg);
const item = { title: "感知事件" };
eventMap[`事件专题/${item.title}_close`]?.call(
this,
item,
(item) => {
return item?.extData?.id == id;
},
"special"
);
// markerClusterIns.setData();
});
});
},
getVehicleTypeList() {
if (vehicleTypeList.length) return;

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue

@ -311,7 +311,7 @@ export default {
grid-auto-rows: 60px;
flex: 1;
max-height: 100%;
overflow: auto;
// overflow: auto;
position: relative;
gap: 6px;
transition: all .24s linear;

23
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js

@ -6,7 +6,7 @@ import {
import { delay } from "@screen/utils/common";
import { Message } from "element-ui";
import { EventTopics } from "@screen/utils/enum.js";
import { debounce, cloneDeep } from "lodash";
import { debounce, cloneDeep, find } from "lodash";
import Vue from "vue";
import { markerClusterIns, getContent, getLatAndLng } from "./map";
@ -278,14 +278,23 @@ export const eventMap = {
loadingMessage?.close();
cacheRemoveFunc[`事件专题/${item.title}`] = () => {
cbCall();
removeDataPreHandle(removeData);
markerClusterIns.removeData(removeData);
cacheRemoveFunc[`事件专题/${item.title}`] = (filter, type) => {
//type为special才重新赋值removeData
let handleData = removeData;
if (filter && type == "special") {
//走误报删除处理 只删除一个
const findItem = find(removeData, filter);
handleData = [findItem];
window.infoWindow.close();
this.emitter.emit("updateDialogVisible", false);
} else cbCall(); //非误报执行,需更新选中事件集合
removeDataPreHandle(handleData);
markerClusterIns.removeData(handleData);
};
},
"事件专题/感知事件_close"(item) {
cacheRemoveFunc[`事件专题/${item.title}`]?.();
"事件专题/感知事件_close"(item, filter, type) {
//感知事件 误报删除兼容
cacheRemoveFunc[`事件专题/${item.title}`]?.(filter, type);
},
};

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js

@ -121,7 +121,7 @@ export function getRoadInfoByStakeMark(stakeMark) {
url: `/business/stakeMark/query`,
method: "get",
params: {
id: stakeMark,
stakeMark: stakeMark,
direction: 1,
},
})

143
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/qbbDialog/index.vue

@ -1,66 +1,77 @@
<template>
<Dialog v-model="modelVisible" title="情报板确认">
<div v-if="type == 1" class="EventAddPlanDialog">
<h4>预案内容</h4>
<dev class="listBox disPid">
<div class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm">
<p class="btn">
<!-- <el-radio v-model="radio1" :label="1" @input="changeRadio(1)" /> -->
</p>
</div>
</div>
</dev>
<h4>自动生成</h4>
<dev class="listBox disPid">
<div class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm">
<p class="btn">
<!-- <el-radio v-model="radio1" :label="2" @input="changeRadio(2)" /> -->
</p>
</div>
</div>
</dev>
<h4>情报板模版</h4>
<vuescroll :ops="scrollOptions" class="listBox">
<div v-for="(item) in templateAvailable" :key="item.dictValue">
<h5>{{ item.dictLabel }}</h5>
<div v-for="(itm, indx) in item.list" :key="indx" class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="itm"></BoardTplPreview>
<div>
<Dialog v-model="modelVisible" title="情报板确认">
<div v-if="type == 1" class="EventAddPlanDialog">
<h4>预案内容</h4>
<dev class="listBox disPid">
<div class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm">
<p class="btn">
<el-radio v-model="radio1" :label="itm.id" @input="changeRadio(itm)" />
<el-radio v-model="radio1" :label="1" @input="changeRadio(automaticData)" />
</p>
<!-- <p @click="____onEditTemplate(automaticData)" class="btn btnEdit" /> -->
</div>
</div>
</div>
</vuescroll>
</div>
<div v-if="type == 2" class="EventAddPlanDialog">
<div v-for="(item, index) in Object.keys(originalData)" :key="index">
<h4>{{ item }}</h4>
</dev>
<h4>自动生成</h4>
<dev class="listBox disPid">
<div v-for="(it, idx) in originalData[item]" :key="idx" class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="it"></BoardTplPreview>
<div class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm">
<p class="btn">
<el-radio v-model="radio1" :label="2" @input="changeRadio(automaticData)" />
</p>
<!-- <p @click="____onEditTemplate(automaticData)" class="btn btnEdit" /> -->
</div>
</div>
</dev>
<h4>情报板模版</h4>
<vuescroll :ops="scrollOptions" class="listBox">
<div v-for="(item) in templateAvailable" :key="item.dictValue">
<h5>{{ item.dictLabel }}</h5>
<div v-for="(itm, indx) in item.list" :key="indx" class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="itm"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm">
<!-- <p class="btn">
<el-radio v-model="radio1" :label="itm.id" @input="changeRadio(itm)" />
</p> -->
<p @click="____onEditTemplate(itm)" class="btn btnEdit" />
</div>
</div>
</div>
</vuescroll>
</div>
<div v-if="type == 2" class="EventAddPlanDialog">
<div v-for="(item, index) in Object.keys(originalData)" :key="index">
<h4>{{ item }}</h4>
<dev class="listBox disPid">
<div v-for="(it, idx) in originalData[item]" :key="idx" class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="it"></BoardTplPreview>
</div>
</dev>
</div>
</div>
<template #footer v-if="type == 1">
<Button style="background: #C9C9C9;padding:0 24px;"
@click.native="modelVisible = false, submitting = false">取消</Button>
<Button style="padding:0 24px;" @click.native="handleSubmit" :loading="submitting">确认</Button>
</template>
</Dialog>
</div>
<template #footer v-if="type == 1">
<Button style="background: #C9C9C9;padding:0 24px;"
@click.native="modelVisible = false, submitting = false">取消</Button>
<Button style="padding:0 24px;" @click.native="handleSubmit" :loading="submitting">确认</Button>
</template>
</Dialog>
<BoardInfoEditor @afterSubmit="____onEditSubmit" :mode="editDialog.mode" :type="editDialog.type"
:visible.sync="editDialog.visible" :screenSize="selectedSize" :tpl="editDialog.tpl"></BoardInfoEditor>
</div>
</template>
<script>
import vuescroll from "vuescroll";
import scrollOptions from "@/common/scrollbar.js";
import BoardTplPreview from "@screen/components/infoBoard/BoardTplPreview.vue";
import BoardInfoEditor from "@screen/components/infoBoard/BoardInfoEditor";
import Dialog from "@screen/components/Dialog/index";
import Button from '@screen/components/Buttons/Button.vue';
import { getTemplateList } from "@/api/board/template";
@ -72,6 +83,7 @@ export default {
Button,
vuescroll,
BoardTplPreview,
BoardInfoEditor
},
model: {
prop: 'visible',
@ -101,6 +113,12 @@ export default {
itmData: {},
automaticData: {},
originalData: {},
editDialog: {
mode: "",
type: "",
visible: false,
tpl: {},
},
}
},
mounted() {
@ -174,6 +192,39 @@ export default {
}
});
},
____onEditTemplate(tpl) {
this.editDialog = {
visible: true,
mode: "edit",
type: "template",
tpl,
};
},
//
____onEditSubmit(para) {
this.editDialog.tpl = {};
this.editDialog.visible = false;
if (para.type == "device") {
if (para.mode == "edit") {
this.selectedBdMsg[this.boardItemEdtingIndex] = para.data;
} else {
this.selectedBdMsg.push(_.cloneDeep(para.data));
}
} else if (para.mode == "toDevice") {
this.selectedBdMsg.push(_.cloneDeep(para.data));
} else {
this.____refreshPageData(para);
}
},
____refreshPageData(para) {
if (para.type == "template") {
this.____getAllTemplate().then((res) => {
this.____setAvailableTemplate();
});
} else {
}
},
async getTemplateAutomatic() {
let data = await this.getAutomatic();
console.log('dataaaa', data);

78
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue

@ -4,47 +4,24 @@
<ElForm :model="formData" inline :rules="rules" ref="ruleForm">
<div class="first">
<el-form-item prop="eventCategory">
<el-radio-group
v-model="formData.eventCategory"
@input="changeRadio"
>
<el-radio-group v-model="formData.eventCategory" @input="changeRadio">
<el-radio-button :label="1">交通事件</el-radio-button>
<el-radio-button :label="2">感知事件</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item required label="预案名称:" prop="planName">
<el-input
v-model="formData.planName"
placeholder="请输入预案名称"
></el-input>
<el-input v-model="formData.planName" placeholder="请输入预案名称"></el-input>
</el-form-item>
<el-form-item required label="事件类型:" prop="eventType">
<el-select
v-model="formData.eventType"
placeholder="请选择事件类型"
@change="changeEventType"
>
<el-option
v-for="item in eventOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="formData.eventType" placeholder="请选择事件类型" @change="changeEventType">
<el-option v-for="item in eventOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触发类型:" prop="triggerMechanism">
<el-select
v-model="formData.triggerMechanism"
placeholder="请选择触发类型"
>
<el-option
v-for="item in mechanismOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="formData.triggerMechanism" placeholder="请选择触发类型">
<el-option v-for="item in mechanismOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
@ -56,10 +33,7 @@
<div class="text"><i style="color: red">*</i>执行操作:</div>
</el-col>
<el-col :span="22">
<FormTable
ref="secondFormTable"
:tableData="secondFormData"
></FormTable>
<FormTable ref="secondFormTable" :tableData="secondFormData" :type="1"></FormTable>
</el-col>
</el-row>
</div>
@ -69,10 +43,7 @@
<div class="text"><i style="color: red">*</i>恢复操作:</div>
</el-col>
<el-col :span="22">
<FormTable
ref="thirdFormTable"
:tableData="thirdFormData"
></FormTable>
<FormTable ref="thirdFormTable" :tableData="thirdFormData" :type="2"></FormTable>
</el-col>
</el-row>
</div>
@ -80,17 +51,9 @@
</div>
<template #footer>
<Button
style="background: #c9c9c9; padding: 0 24px"
@click.native="(modelVisible = false), (submitting = false)"
>取消</Button
>
<Button
style="padding: 0 24px"
@click.native="handleSubmit"
:loading="submitting"
>保存</Button
>
<Button style="background: #c9c9c9; padding: 0 24px"
@click.native="(modelVisible = false), (submitting = false)">取消</Button>
<Button style="padding: 0 24px" @click.native="handleSubmit" :loading="submitting">保存</Button>
</template>
</Dialog>
</template>
@ -131,14 +94,15 @@ export default {
},
provide() {
return {
loadData: throttle(this.loadData, 1000),
};
// loadData: throttle(this.loadData, 100)
loadData: this.loadData
}
},
props: {
visible: Boolean,
detail: {
type: Object,
default: () => {},
default: () => { },
},
},
data() {
@ -198,7 +162,7 @@ export default {
},
};
},
mounted() {},
mounted() { },
computed: {
modelVisible: {
get() {
@ -209,7 +173,7 @@ export default {
this.eventOptions = typeMap[this.detail.eventCategory];
this.mechanismOptions =
eventSubClassMap[this.detail.eventCategory || 1][
this.detail.eventType
this.detail.eventType
];
this.initData(this.detail.id);
} else {
@ -290,6 +254,12 @@ export default {
});
console.log("secondFormData", this.secondFormData);
})
// console.log('secondFormData', this.secondFormData)
// }).catch((err) => {
// console.log(err)
// Message.error("", err);
// })
.catch((err) => {
console.log(err);
Message.error("查询事件预案列表失败", err);
@ -318,7 +288,7 @@ export default {
this.eventOptions = typeMap[value];
this.changeEventType(1);
},
handleChange() {},
handleChange() { },
formatData(it, value = 1, id = "") {
let data = { ...it, actionType: value, emergencyPlansId: id };
if (

22
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue

@ -41,7 +41,7 @@
:value="item.id">
</el-option>
</el-select>
<el-input @click.native="clickQbb(scope.$index)" v-if="scope.row.deviceType == 2"
<el-input @click.native="clickQbb(scope.$index)" v-if="type == 1 && scope.row.deviceType == 2"
placeholder="请选择" v-model="scope.row.qbb" readonly>
<i slot="suffix" class="el-input__icon el-icon-search"></i>
</el-input>
@ -115,6 +115,7 @@ export default {
props: {
visible: Boolean,
eventType: Number,
type: Number,
tableData: {
type: Array,
default: () => [{
@ -219,10 +220,21 @@ export default {
index: 1
}
},
async created() {
let loadData = await this.loadData(1);
// console.log('aa',loadData)
this.sbOptions = loadData;
watch: {
async tableData(newValue) {
console.log('newValue', newValue)
if (newValue) {
const item = this.tableData.find(it => it.searchRule == 1);
console.log('item', item);
if (item && item.deviceType) {
let loadData = await this.loadData(item.deviceType);
console.log('aa', loadData)
this.sbOptions = loadData;
}
}
}
},
mounted() {
},
methods: {
initData() {

54
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/assets/charts.js

@ -15,16 +15,27 @@ let indicator = [
{ name: '180°全景摄像机', max: 100 },
{ name: '360°全景摄像机', max: 100 },
{ name: '高清网络枪型固定摄像机', max: 100 },
{ name: '高清网络球形摄像机', max: 100 },
{ name: '高清网络球形摄像机++++', max: 100 },
]
let data = [{
value: [60, 30, 50, 80, 90, 98, 50, 56],
name: "哈哈哈佛挡杀佛很多事"
}];
let counter = -1;
let options = {
tooltip:{
show: false
show: true,
trigger:"item",
backgroundColor:"rgba(20,89,119,0.9)",
borderColor:"rgba(78, 174, 204, 1)",
borderWidth:1,
padding:20,
textStyle:{
color:"#f4f4f4"
},
// formatter(params){
// }
},
radar: {
center: ['50%', '50%'],
@ -54,24 +65,33 @@ let options = {
lineStyle: {
color: '#2AD1BCCC'
}
},
axisLabel:{
show:true,
formatter: function (value, index) {
counter ++ ;
if(counter<6){
return value + "%";
}
}
}
},
series: [
{
type: 'radar',
data:[],
name: '设备在线率',
label: {
show: true,
formatter: function (params) {
return params.value + "%";
},
color: '#fff',
// position:[-20,-10,-10,-10],
align: 'right',
distance: 10,
align: 'right'
},
// name: '设备在线率',
// label: {
// show: true,
// formatter: function (params) {
// return params.value + "%";
// },
// color: '#fff',
// // position:[-20,-10,-10,-10],
// align: 'right',
// distance: 10,
// align: 'right'
// },
symbolSize: 10,
lineStyle: { //边缘颜色
width: 2,
@ -89,5 +109,7 @@ let options = {
}
]
};
export default options;
let counterReset = function(){
counter = -1;
}
export default {options, counterReset};

13
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/components/deviceUptime/index.vue

@ -11,7 +11,8 @@
<script>
import WgtTitle from "../../../../perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts";
import chartOptions from "./assets/charts";
let chartsStatistics = chartOptions.options;
export default {
name: 'DeviceUptime',
components: {
@ -39,9 +40,14 @@ export default {
let value = [];
let indicator = [];
let toolTip = "";
newD.forEach(element => {
value.push(+element.pctOnl.replace("%", ""));
indicator.push({ name: element.title, max: 100 });
toolTip += `<div style="display:flex; justify-content:space-between; line-height:2;">
<p>${element.title}</p>
<p style="font-weight:bold; margin-left:30px">${element.pctOnl}</p>
</div>`;
});
chartsStatistics.radar.indicator = indicator;
@ -50,10 +56,15 @@ export default {
name: "设备在线率"
}];
chartsStatistics.tooltip.formatter = (params)=>{
return toolTip;
}
this.isEmpty = false;
this.$nextTick(() => {
var myChart = echarts.init(this.$refs['deviceUptime']);
myChart.setOption(chartsStatistics);
chartOptions.counterReset();
});

7
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts3.js

@ -25,7 +25,7 @@ let options = {
left: "2%",
right: "4%",
top: "30px",
bottom: "5%",
bottom: "20px",
containLabel: true,
},
xAxis: {
@ -102,7 +102,7 @@ let options = {
type: "bar",
barWidth: "10px",
barGap: "-100%",
selectedMode: true,
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
@ -183,7 +183,8 @@ let options = {
},
symbol:
"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAACCpJREFUSEuFl+uPXVUZxn/rus9lru200zt2SrEJjQSlDWAipv2AGtQYouGDJhpDofgnmNhTv/pFjAItaGL8QtRojCbEaJXEBKUU4YNtKNCW0tqm6XRmembOZe91M2vP9AKWspJ9zsneZ69nvc9a7/M+r+BjRkpJ3HcYfRHGo2BaSFaX0DJgiAgnqbSkKyLdpmL2vW9zKQEizytE/nnLUT//4EiCBEnA3R3MwnpmnGZrCpj8PwWE/HFthGs3l28k6JM4r5ucu/Qt+jcji5sW8n/AnU6SnQOw5hlmMGyXAusDSMEVZZgLA+baLYbvnaWfgTasRzvPWDKMkdiYJGMikWJkkAQn557gnOgg6JBSyiQss1ADZzqFyN9wEMTTz7JTSrZiQQbmUuTdEcu8n0fE9vI7Nw/ZI7EJdI/Ugwk822NktRBElTiz/yLHOwdI+c1r4CuTLNPbOYj42SbuiYktIhGs4h0rOVtVSOeRl5cQq5ori+0jmARR5jdhboIwnVk/TbJ3EKvIHZXnziTRInJu9iJvpgP1DtZ7fyPig4jJ9dxtJTNJMhAVbyrJUmgi3AIqBmRMyGQRowaxCLTL5UX0JFFOEicrUneRaCYIZpa4MMFIK3FviDR15PT+fRzv1CHWVCfR6SB+PMVmbbmHQBwWvDrm6FUaFTwy9FAtjYoRWShU0ojBCtfCk5pA2SDIAVG3CL1A0J5gNDEa2t6xG4GSieNPXeRMpyNiDTz9I1p+nAcQtIXjrcYU75eXUe0W2vVQzqOjQkWJKgpkf4BsKMQQaGTQSGgZkoyEqsSbSXxvjmA24ovzhDjOljKyQwbcFsFfju3DC1ISU7/gruTYIRVzxSLHygLlNco7dENggkVHgRoBM4zI5FBJIawF54j5EMlEqIE1XoMzFt8f4m0T3zxN6G1kV0pMWsPbF74j3hL5RK97nr0+0haCoxauZoqrq5iGxCwW6DGNjRqtEiYJlHaoSiJwdQ4n4Yle4qXEK4HLwAs9nBrBWYGznlC1GE9DdktBuSVwREwdSusR7EqCpVHNKwOFKq9gQgttI0UwaOOxQWIVmAO72P3QJva1DXdJweii4/W35/njk3/nDwqcB6cNlRvijKMajuJMHz++FXf1v+yuo068IiZfSDtVZAbPycaQ94fjaNdAF32sr7BaY2WiyMAvPsxT2yZ4/FYaeGqB5x/7M8+oSBU0VZCUaoArCyp7BTeyFtd1bDOwDclpsfZwejBE1sjAq0bTHZbopsTMG2yOuGUpgsf+dA+P7lrLgY/S3qxDfzrNkz88xr8GjrLdpPQVZemoTMS11uGG80wowa4AV8Waw+mLMWJl4Ijsk6oxtAdjGxS6qqNuSEPxt6/xwqjlM7cBZtFxbM9v2BcjQ92kXOwxVJYq73kTnLXYJcfnjKQSU4fTV1JETK/ipStDTDVAuxI73qRYcthmpOkNxbHHeP12oPlZSHTv/y2fD31KM8LQl5SFpBzM4+YncVzET2/gC0GSxNRz6csJ5JVVvLRhHj0AUxisU1gdKFyO2NM4+k1ezofpY8DTfS9yX0wMtViOeFxT1fvcxY8W+IU2D6tEuk51FLyc6cjAzdE6cqtKGj5RSCiOfJ2fjxV8+rZUVxzb83ser4ElZRhSWks1LKnm5vCfmkFcGLL3GtUPAeMkXss5XB+ucUw5xPocdaTIEf/gAe5/ZIZDtztcb8xy8Mm/8rsgKL2kdCWl1HiTgT1uqs2E0uxKgVkx/WzaGRQzEU61ljhdp1OJtjmFwFxPp0Tx4pfY/5Hp1OX5R1/iGamp6pQqKUtLpRZxRUF1uYXf6NjiFTtE4JTYcChNVYIHhWD+8kaOTh9HN6cwVyp0obH1yVbYWGGUwj63h69un+SRTHuMLC053vnHBQ5//yivNsCFLB6BSmcF6+GGAVesxl1awK9u8lkhaBM4Jvh1smsW2BsFVgx5bcOQq+cL1JxGjQiMddggMKbA6IjOkpl1m4DIimkUyRuCKAlZMn2gUi1c2cdJg8+SOXsVn2lOkt0kelce50hdJFYf5pNCcJeILLQLjg5mUXU+N9DNCu0HmGjQVi6DpoQka3UFaJLIVyI4h897WvZwExrfN/hcHtst/ELJbi2ZsIqTF74rTtZlkZ9g11j2RoXJZdEqzrlJpJ9HtRpo36/rsra5SkXksAG2QolAwpDKXJ2yGVipUKbE99qErNHmMrHazOYU2aEC/anAP098TywtAydY+0tmYuBuPEFFXsvuI9udXB6DQo0EZDciGxKFRqTqhvcSGTRfitiPBHWTEega2saxW0p0EXlj30XOdzorFqg2eyvWR0pmVGIoh/xbFvSy9bnkkBNdVBxFpuEN63NNTUSDtNQjZv+1oIhrFDG7jwxqHfcKuWx9Lj3Bfz5k9mqvmS2oWHPN7EW8Dbxrm5x9r42YHiKDQ8beitkrVjx7m8QcyDZJzRFVjyTHSLHNHQPYJhNaWM7Nvs+bdERcduw3m70Vv5n919Mb2Slha16OZNnezpbMbfLI2EVcWA8bgAvZV68oirVEzsLSeiZF4M6oWK0FEcOZ/Wc5nunNgB8Avq5GKYk6jg5i/SY2x8j2AK1cRFAsisR5EouqSzfr7rvAJwLNpRbNKFiVPKukYVU29AJcI/H2uX2crluaD7UzHzDn9V5f854J1v2KVnBsUoHNSJoh1hzlKa53JnVLc5OOCoFPklNrRzlz4gSe2shnh5Wbhhu91C16pxudxfJ8y/RMHWKdiqxOijEH41aiM6CI+NwvaZiViUsTk3RPfENUWR9WTsEtG7f/ARqeIzUaHVUWAAAAAElFTkSuQmCC",
symbolSize: [26, 26],
// symbolSize: [26, 26],
symbolSize: [0, 0],
itemStyle: {
color: "#FFF",
shadowColor: "rgba(0, 255, 254, 0.53)",

4
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue

@ -613,8 +613,10 @@ export default {
.unit_con {
flex: 1;
height: 0; padding: 0;
margin: 95px 20px 30px; position: relative;
// &.unit_con_02{ margin: 105px 0px 20px; }
display: flex; align-items: center;
}
.empty {
@ -623,7 +625,7 @@ export default {
.chart_div {
width: 100%;
height: 100%;
height:200px;
}
}

29
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventSource/index.vue

@ -50,7 +50,7 @@ export default {
return {};
},
created() {},
created() { },
methods: {
changeReisze() {
this.myChart.resize();
@ -93,16 +93,16 @@ export default {
name: "扫码报警",
percent: 0.1,
},
{
average: 0,
name: "非机预警",
percent: 0.1,
},
// {
// average: 0,
// name: "",
// name: "",
// percent: 0.1,
// },
{
average: 0,
name: "气象监测器",
percent: 0.1,
},
];
data.forEach((it) => {
if (it.warningSource == 1) {
@ -120,12 +120,12 @@ export default {
if (it.warningSource == 5) {
chartData[4].average += it.number;
}
if (it.warningSource == 6) {
// if (it.warningSource == 6) {
// chartData[5].average += it.number;
// }
if (it.warningSource == 7) {
chartData[5].average += it.number;
}
// if (it.warningSource == 7) {
// chartData[6].average += it.number;
// }
// total ++;
// drawRoundRect(context, 231, 37 + (index * 27), 138, 20, 12, gr);
});
@ -239,12 +239,9 @@ export default {
border-radius: 5px 5px 5px 5px;
opacity: 1;
border: 1px solid;
border-image: linear-gradient(
360deg,
border-image: linear-gradient(360deg,
rgba(55, 231, 255, 0.3),
rgba(55, 231, 255, 0)
)
1 1;
rgba(55, 231, 255, 0)) 1 1;
display: flex;
justify-content: center;
align-items: center;

2
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/index.vue

@ -84,7 +84,7 @@ export default {
}
.row_02 {
flex: 1;
flex: 1; height: 0;
// pointer-events: none;
}
}

7
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/index.vue

@ -2,7 +2,7 @@
<div class='congestion'>
<WgtTitle :title="'气温变化趋势'"></WgtTitle>
<div class="board">
<div class="charts keep-ratio " id="temperatureTrend"></div>
<div class="charts" id="temperatureTrend"></div>
</div>
</div>
</template>
@ -51,10 +51,9 @@
<style lang='scss' scoped>
.congestion {
width: 100%;
display: flex; flex-direction: column;
.board{
height:260px;
width: 100%;
flex: 1;
padding: 0px 20px;
background: linear-gradient(180deg, rgba(6,66,88,0.2) 0%, #064258 100%);
border-radius: 5px 5px 5px 5px;

15
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/index.vue

@ -2,7 +2,7 @@
<div class='congestion'>
<WgtTitle :title="'能见度变化趋势'"></WgtTitle>
<div class="board">
<div class="charts keep-ratio " id="VisibilityTrends"></div>
<div class="charts" id="VisibilityTrends"></div>
</div>
</div>
</template>
@ -52,25 +52,22 @@
<style lang='scss' scoped>
.congestion {
width: 100%;
display: flex; flex-direction: column; align-items: stretch;
.board{
height:260px;
width: 100%;
flex: 1;
padding: 0px 20px;
background: linear-gradient(180deg, rgba(6,66,88,0.2) 0%, #064258 100%);
border-radius: 5px 5px 5px 5px;
opacity: 1;
border: 1px solid;
border-image: linear-gradient(360deg, rgba(55, 231, 255,0.3), rgba(55, 231, 255, 0)) 1 1;
display: flex;
justify-content: space-between;
align-items: center;
display: flex; flex-direction: column;
justify-content: center;
align-items: stretch;
}
}
.charts {
height:200px;
width: 100%;
}
</style>

13
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/weaterData/index.vue

@ -2,7 +2,7 @@
<div class='congestion'>
<WgtTitle :title="'气象监测数据'"></WgtTitle>
<div class="board">
<div class="showRoad" >
<div class="showRoad">
<div :class="it.type?it.type+' item':'item'" v-for="(it,index) in dataList" >
<span class="label" >{{ it.text }}</span>
<span class="text" >{{ it.value }}</span>
@ -100,9 +100,9 @@
<style lang='scss' scoped>
.congestion {
width: 100%;
width: 100%; display: flex;
.board{
height:260px;
flex: 1;
width: 100%;
padding: 0px 20px;
background: linear-gradient(180deg, rgba(6,66,88,0.2) 0%, #064258 100%);
@ -112,15 +112,12 @@
border-image: linear-gradient(360deg, rgba(55, 231, 255,0.3), rgba(55, 231, 255, 0)) 1 1;
display: flex;
justify-content: space-between;
align-items: flex-start;
align-items: center;
flex-direction: row;
overflow: auto;
.showRoad {
display: inline-flex;
width:100%;
height:35px;
flex-direction: row;
display: flex;
flex-wrap: wrap;
> .item {

24
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/index.vue

@ -1,6 +1,5 @@
<template>
<div class='congestion'>
<div class="board">
<div class="queryList" >
<Card v-for="(item, index) in data" :cardData="item" :keyMap="keyMap" :hasBtn="false" :gap="'10px'" :key="index">
<template #form-start="{ data }">
@ -15,7 +14,7 @@
<TemperatureTrend ref="temper" class="charts-ms" />
<VisibilityTrends ref="visibility" class="charts-ms" />
</div>
</div>
</div>
</template>
@ -107,22 +106,14 @@
.congestion {
width: 100%;
height:100%;
display: flex; flex-direction: column;
.board{
height: calc(100% - 235px);
width: 100%;
padding: 0px 0px;
border-radius: 5px 5px 5px 5px;
opacity: 1;
display: flex;
justify-content: space-between;
align-items: center;
flex-direction: column;
.queryCharts {
display: inline-flex;
width:100%;
height: 316px;
flex:1;
.charts-l {
width:30%;
@ -130,7 +121,7 @@
.charts-ms {
width:40%;
margin-left:20px;
margin-left:14px;
}
}
@ -159,12 +150,7 @@
}
}
}
}
.charts {
height:180px;
width: 100%;
}
</style>

72
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/index.vue

@ -1,11 +1,11 @@
<template>
<div class="TrafficFlow">
<section class="content">
<RoadNetwork class="content-l" />
<WeatherForecast class="content-l" style="margin-right: 0" />
<section class="row_01">
<RoadNetwork class="unit_01" />
<WeatherForecast class="unit_02" style="margin-right: 0" />
</section>
<section class="foot">
<el-tabs class="footTabs" v-model="activeName" @tab-click="changeTabs">
<section class="row_02">
<el-tabs class="full_tab" v-model="activeName" @tab-click="changeTabs">
<el-tab-pane label="短临预报" name="first">
<div class="foot-shot">
<SortFaceForecast />
@ -73,59 +73,31 @@ export default {
opacity: 0.1;
}
.footTabs {
display: inline;
.full_tab {
width: 100%;
height: 100%;
display: flex; flex-direction: column; flex: 1;
::v-deep .el-tabs__header{}
::v-deep .el-tabs__content{ flex: 1;
.el-tab-pane{ width: 100%; height: 100%;}
}
}
.TrafficFlow {
width: 100%;
height: 100%;
position: relative;
z-index: 6;
color: white;
.head {
width: 98%;
margin: auto;
margin-top: 15px;
}
.content {
width: 98%;
margin: auto;
display: flex;
flex: 1;
pointer-events: none;
margin-top: 19px;
> div {
pointer-events: auto;
}
.content-l {
width: calc(50%);
min-width: 460px;
margin-right: 20px;
}
.content-m {
display: inline-flex;
flex-direction: column;
width: calc(100% / 4);
margin-right: 20px;
.content-m-t {
width: 100%;
height: 240px;
margin-bottom: 20px;
}
}
.content-r {
width: 49.4%;
display: flex; align-items: stretch;
flex-direction: column;
padding: 14px;
.row_01 {
display: flex; flex-direction: row; align-items: stretch;
.unit_01,.unit_02{
flex-basis: 50%;
}
.unit_01{ margin-right: 14px;}
}
.foot {
width: 98%;
margin: auto;
.row_02 {
flex: 1;
display: flex;
justify-content: space-between;
flex: 1;

6
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/classification/index.vue

@ -130,11 +130,11 @@ export default {
<style lang="scss" scoped>
.classification {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.board {
height: 400px;
flex:1;
width: 100%;
padding: 0px 30px;
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%);

3
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/heightway/index.vue

@ -198,7 +198,10 @@ export default {
.heightway {
width: 100%;
display: flex;
flex-direction: column;
.board {
flex: 1;
height: 400px;
width: 100%;
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%);

20
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/situation/index.vue

@ -10,7 +10,9 @@
断面交通量Top10
</div>
</div>
<div class="charts keep-ratio" id="situationEchartBox"></div>
<div class="chart_box">
<div class="charts keep-ratio" id="situationEchartBox"></div>
</div>
</div>
</div>
</template>
@ -52,10 +54,9 @@ export default {
<style lang="scss" scoped>
.situation {
width: 100%;
display: flex; flex-direction: column;
.board {
height: 400px;
width: 100%;
flex: 1;
padding: 0px 30px;
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%);
border-radius: 5px 5px 5px 5px;
@ -69,13 +70,14 @@ export default {
1 1;
display: flex;
justify-content: flex-start;
align-items: center;
align-items: stretch;
flex-direction: column;
}
.charts {
// margin-top: -40px;
height: 400px;
width: 100%;
.chart_box{
flex: 1; display: flex; flex-direction: column; align-items: stretch; justify-content: center;
.charts {
flex-basis: 310px;
}
}
.tag {
margin-top: 15px;

5
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/traffic/index.vue

@ -49,11 +49,10 @@ export default {
<style lang='scss' scoped>
.traffic {
width: 100%;
display: flex; flex-direction: column;
.board {
height: 139px;
width: 100%;
flex: 1;
padding: 0px 70px;
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%);
border-radius: 5px 5px 5px 5px;

73
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/index.vue

@ -1,22 +1,20 @@
<template>
<div class="TrafficFlow">
<div class="TrafficFlow fl-col">
<!-- 交通路网状况 -->
<Traffic class="head" />
<section class="content">
<Traffic class="row_01" />
<section class="row_02">
<!-- 在途车流量车型分类 -->
<!-- 全路段拥堵状况 -->
<Congestion class="content-l"></Congestion>
<Congestion class="unit_01"></Congestion>
<!-- 畅通率 -->
<!-- <Unblocked class="content-m" /> -->
<!-- 全路车流量状况 -->
<Flowstate class="content-r" />
<Flowstate class="unit_02" />
</section>
<section class="foot">
<!-- 交通路段状态 -->
<Heightway class="foot-l" />
<Classification class="foot-m" />
<!-- 路段交通量情况 -->
<Situation class="foot-r" />
<section class="row_03">
<Heightway class="unit_01" />
<Classification class="unit_02" />
<Situation class="unit_03" />
</section>
</div>
</template>
@ -48,68 +46,45 @@ export default {
.TrafficFlow {
width: 100%;
height: 100%;
position: relative;
z-index: 6;
color: white;
padding: 14px;
.head {
width: 98%;
margin: auto;
margin-top: 15px;
}
.row_01 { height: 160px;}
.content {
--keep-ratio: scaleX(1);
width: 98%;
margin: auto;
.row_02 { overflow: hidden;
// --keep-ratio: scaleX(1);
display: flex;
flex: 1;
pointer-events: none;
margin-top: 19px;
margin-top: 14px;
> div {
pointer-events: auto;
}
.content-l {
width: 49.4%;
margin-right: 20px;
}
.content-m {
width: 260px;
}
.content-r {
width: 49.4%;
}
.unit_01{ flex-basis: 50%; margin-right: 14px;}
.unit_02{ flex-basis: 50%;}
}
.foot {
--keep-ratio: scaleX(1);
width: 98%;
margin: auto;
.row_03 {
display: flex;
flex: 1;
pointer-events: none;
margin-top: 19px;
margin-top: 14px;
> div {
pointer-events: auto;
}
.foot-l {
.unit_01 {
width: 756px;
margin-right: 20px;
margin-right: 14px;
}
.foot-m {
.unit_02 {
width: 580px;
margin-right: 20px;
margin-right: 14px;
}
.foot-r {
width: 500px;
.unit_03 {
flex:1;
}
}
}

18
ruoyi-ui/src/views/login.vue

@ -4,7 +4,7 @@
<div class="login-l">
<div class="logo"><img src="../assets/images/login/logo.png" /></div>
<span>山东高速</span>
<span>济菏数运营管理平台</span>
<span>济菏数运营管理平台</span>
</div>
<div class="login-r">
<span class="title">欢迎登录</span>
@ -273,14 +273,9 @@ export default {
font-weight: 400;
color: #999 !important;
margin-bottom: 10px;
margin-top: 20px;
margin-top: 6px;
}
// ::v-deep .el-form-item__error {
// position: absolute;
// top: 75px;
// }
::v-deep .el-input__inner::placeholder {
color: #999999;
}
@ -423,6 +418,12 @@ export default {
// }
// }
.login-form{
::v-deep .el-form-item{
margin-bottom: 22px;
}
}
.el-login-footer {
height: 40px;
line-height: 40px;
@ -456,7 +457,4 @@ export default {
.el-button--goon:hover {
}
::v-deep .el-form-item__error {
top: 62px;
}
</style>

4
ruoyi-ui/vue.config.js

@ -52,9 +52,9 @@ module.exports = {
// target: `http://10.0.81.204:8087`, //现场后台 刘文阁
// target: `http://10.168.69.255: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.65.156:8087`, //王思祥
target: `http://10.168.65.194:8087`, //赵祥龙
// target: `http://10.168.65.194:8087`, //赵祥龙
// target: `http://10.168.65.156:8097`, //孟
// target: `http://10.168.56.165:8087`, //王家宝

Loading…
Cancel
Save