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. 59
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/qbbDialog/index.vue
  20. 76
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue
  21. 20
      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. 70
      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. 16
      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", "vuedraggable": "2.24.3",
"vuescroll": "^4.18.1", "vuescroll": "^4.18.1",
"vuex": "3.6.0", "vuex": "3.6.0",
"zrender": "^5.4.4" "zrender": "^5.4.4",
"mitt": "^3.0.1"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "4.4.6", "@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: '管理系统', title0: '管理系统',
url0: 'ry', url0: 'ry',
navBarShow0: {bigScreen: 'false', frontPage: 'true', doc: 'true',weather:'true',breadcrumb:'true'}, navBarShow0: {bigScreen: 'false', frontPage: 'true', doc: 'true',weather:'true',breadcrumb:'true'},
title1: '济菏数运营管理平台', title1: '济菏数运营管理平台',
url1: "athena", url1: "athena",
navBarShow1: {bigScreen: 'false', frontPage: 'false', doc: 'false',weather:'false',breadcrumb:'true'}, 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; background-size: contain;
} }
.icon-right:before { .icon-rig:before {
content: " "; content: " ";
display: block; display: block;
width: 16px; width: 16px;

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

@ -178,7 +178,7 @@ export default {
moveBlockBackgroundColor: undefined, moveBlockBackgroundColor: undefined,
leftBarBorderColor: "#ddd", leftBarBorderColor: "#ddd",
iconColor: undefined, iconColor: undefined,
iconClass: "icon-right", iconClass: "icon-rig",
status: false, // status: false, //
isEnd: false, // isEnd: false, //
showRefresh: true, showRefresh: true,
@ -377,7 +377,7 @@ export default {
this.leftBarBorderColor = "#ddd"; this.leftBarBorderColor = "#ddd";
this.moveBlockBackgroundColor = "#fff"; this.moveBlockBackgroundColor = "#fff";
this.iconColor = "#000"; this.iconColor = "#000";
this.iconClass = "icon-right"; this.iconClass = "icon-rig";
this.isEnd = false; this.isEnd = false;
this.getPictrue(); 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 eventDialogTable from "@/components/eventDialogTable";
import evtDialogOneThing from "@/components/eventDialogTable/evtDialogOneThing.vue"; import evtDialogOneThing from "@/components/eventDialogTable/evtDialogOneThing.vue";
import evtDialogVideo from "@/components/eventDialogTable/video.vue"; import evtDialogVideo from "@/components/eventDialogTable/video.vue";
import mitt from "mitt";
const emitter = mitt();
// 大屏适配 // 大屏适配
import dataV from "@jiaminghi/data-view"; import dataV from "@jiaminghi/data-view";
@ -103,6 +105,7 @@ Vue.prototype.selectDictLabels = selectDictLabels;
Vue.prototype.handleTree = handleTree; Vue.prototype.handleTree = handleTree;
Vue.prototype.socket = Socket; Vue.prototype.socket = Socket;
Vue.prototype.numberMul = numberMul; Vue.prototype.numberMul = numberMul;
Vue.prototype.emitter = emitter;
// gis // gis
Vue.prototype.$GlobalConfig = config.GlobalConfig; 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: { computed: {
modelVisible: { modelVisible: {
get() { get() {

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

@ -103,13 +103,13 @@ export default {
.title-img { .title-img {
display: inline-block; display: inline-block;
margin-left: 10px; margin-left: 10px;
width: 373px; width: 370px;
height: 28px; height: 37px;
} }
} }
.leftMenu { .leftMenu {
width: 560px; width: 550px;
} }
.rightMenu { .rightMenu {
@ -117,7 +117,7 @@ export default {
} }
.topButton{ .topButton{
width: 180px; width: 190px;
} }
.user { .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 { } else {
publishToBoard(data).then(res => { publishToBoard(data).then(res => {
// this.saveLog(content); // this.saveLog(content);
this.$message({
type:"success",
message:"发布成功!"
});
this.____getDeviceInfo(); this.____getDeviceInfo();
}).catch(err=>{ }).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-family: PangMenZhengDao-3, PangMenZhengDao-3;
font-weight: 400; font-weight: 400;
color: #FFCD4D; color: #FFCD4D;
text-align: left; text-align: center;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
} }

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

@ -9,18 +9,10 @@
</ElTabPane> </ElTabPane>
<ElTabPane label="设备参数" name="second"> <ElTabPane label="设备参数" name="second">
<div class="content-second" style="height: 185px"> <div class="content-second" style="height: 185px">
<RadioGroup <RadioGroup v-model="roadType" :options="roadTypeList" @input="changeRadio" />
v-model="roadType"
:options="roadTypeList"
@input="changeRadio"
/>
<span>当前车流量: {{ carNum }}</span> <span>当前车流量: {{ carNum }}</span>
<LineChartForTraffic <LineChartForTraffic style="flex: 1" v-if="isShowCar && activeName === 'second'" :xData="xData"
style="flex: 1" :yData="yData" />
v-if="isShowCar && activeName === 'second'"
:xData="xData"
:yData="yData"
/>
</div> </div>
</ElTabPane> </ElTabPane>
<ElTabPane label="在线率统计" name="third"> <ElTabPane label="在线率统计" name="third">
@ -148,13 +140,14 @@ export default {
// this.dialogData.brand = data.brand; // this.dialogData.brand = data.brand;
// }) // })
if (this.dialogData.iotDeviceId) {
this.getPropertiesHistory(this.dialogData.iotDeviceId);
}
const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMark); const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMark);
if (roadInfo) this.data.roadName = roadInfo.roadName; if (roadInfo) this.data.roadName = roadInfo.roadName;
if (this.dialogData.iotDeviceId) {
this.getPropertiesHistory(this.dialogData.iotDeviceId);
}
}, },
methods: { methods: {
changeRadio(value) { changeRadio(value) {
@ -165,12 +158,9 @@ export default {
} else { } else {
this.yData = this.hzYData; this.yData = this.hzYData;
} }
// console.log('xdata', this.xData);
// console.log('ydata', this.hzYData);
// console.log('rdata', this.jnYData);
setTimeout(() => { setTimeout(() => {
this.isShowCar = true; this.isShowCar = true;
}, 1000); }, 0);
}, },
getPropertiesHistory(deviceId) { getPropertiesHistory(deviceId) {
this.xData = []; this.xData = [];
@ -248,7 +238,7 @@ div.switcher {
align-items: center; align-items: center;
justify-content: end; justify-content: end;
> div { >div {
font-size: 16px; font-size: 16px;
padding: 6px 12px; 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"; } from "@screen/utils/enum.js";
// import { getRoadInfoByStakeMark, getProduct } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js" // import { getRoadInfoByStakeMark, getProduct } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js"
import { dialogDelayVisible } from "./../mixin"; 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 = []; let vehicleTypeList = [];
@ -206,6 +208,35 @@ export default {
clearInterval(this.interval); clearInterval(this.interval);
}, },
methods: { 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() { getVehicleTypeList() {
if (vehicleTypeList.length) return; 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; grid-auto-rows: 60px;
flex: 1; flex: 1;
max-height: 100%; max-height: 100%;
overflow: auto; // overflow: auto;
position: relative; position: relative;
gap: 6px; gap: 6px;
transition: all .24s linear; 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 { delay } from "@screen/utils/common";
import { Message } from "element-ui"; import { Message } from "element-ui";
import { EventTopics } from "@screen/utils/enum.js"; import { EventTopics } from "@screen/utils/enum.js";
import { debounce, cloneDeep } from "lodash"; import { debounce, cloneDeep, find } from "lodash";
import Vue from "vue"; import Vue from "vue";
import { markerClusterIns, getContent, getLatAndLng } from "./map"; import { markerClusterIns, getContent, getLatAndLng } from "./map";
@ -278,14 +278,23 @@ export const eventMap = {
loadingMessage?.close(); loadingMessage?.close();
cacheRemoveFunc[`事件专题/${item.title}`] = () => { cacheRemoveFunc[`事件专题/${item.title}`] = (filter, type) => {
cbCall(); //type为special才重新赋值removeData
removeDataPreHandle(removeData); let handleData = removeData;
markerClusterIns.removeData(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) { "事件专题/感知事件_close"(item, filter, type) {
cacheRemoveFunc[`事件专题/${item.title}`]?.(); //感知事件 误报删除兼容
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`, url: `/business/stakeMark/query`,
method: "get", method: "get",
params: { params: {
id: stakeMark, stakeMark: stakeMark,
direction: 1, direction: 1,
}, },
}) })

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

@ -1,4 +1,7 @@
<template> <template>
<div>
<Dialog v-model="modelVisible" title="情报板确认"> <Dialog v-model="modelVisible" title="情报板确认">
<div v-if="type == 1" class="EventAddPlanDialog"> <div v-if="type == 1" class="EventAddPlanDialog">
<h4>预案内容</h4> <h4>预案内容</h4>
@ -7,8 +10,9 @@
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview> <BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm"> <div class="infoBtnBox infoBtnBoxSm">
<p class="btn"> <p class="btn">
<!-- <el-radio v-model="radio1" :label="1" @input="changeRadio(1)" /> --> <el-radio v-model="radio1" :label="1" @input="changeRadio(automaticData)" />
</p> </p>
<!-- <p @click="____onEditTemplate(automaticData)" class="btn btnEdit" /> -->
</div> </div>
</div> </div>
</dev> </dev>
@ -18,8 +22,9 @@
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview> <BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="automaticData"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm"> <div class="infoBtnBox infoBtnBoxSm">
<p class="btn"> <p class="btn">
<!-- <el-radio v-model="radio1" :label="2" @input="changeRadio(2)" /> --> <el-radio v-model="radio1" :label="2" @input="changeRadio(automaticData)" />
</p> </p>
<!-- <p @click="____onEditTemplate(automaticData)" class="btn btnEdit" /> -->
</div> </div>
</div> </div>
</dev> </dev>
@ -30,9 +35,10 @@
<div v-for="(itm, indx) in item.list" :key="indx" class="tplItem"> <div v-for="(itm, indx) in item.list" :key="indx" class="tplItem">
<BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="itm"></BoardTplPreview> <BoardTplPreview class="boardPreview" boardWH="1400*200" :tpl="itm"></BoardTplPreview>
<div class="infoBtnBox infoBtnBoxSm"> <div class="infoBtnBox infoBtnBoxSm">
<p class="btn"> <!-- <p class="btn">
<el-radio v-model="radio1" :label="itm.id" @input="changeRadio(itm)" /> <el-radio v-model="radio1" :label="itm.id" @input="changeRadio(itm)" />
</p> </p> -->
<p @click="____onEditTemplate(itm)" class="btn btnEdit" />
</div> </div>
</div> </div>
</div> </div>
@ -55,12 +61,17 @@
<Button style="padding:0 24px;" @click.native="handleSubmit" :loading="submitting">确认</Button> <Button style="padding:0 24px;" @click.native="handleSubmit" :loading="submitting">确认</Button>
</template> </template>
</Dialog> </Dialog>
<BoardInfoEditor @afterSubmit="____onEditSubmit" :mode="editDialog.mode" :type="editDialog.type"
:visible.sync="editDialog.visible" :screenSize="selectedSize" :tpl="editDialog.tpl"></BoardInfoEditor>
</div>
</template> </template>
<script> <script>
import vuescroll from "vuescroll"; import vuescroll from "vuescroll";
import scrollOptions from "@/common/scrollbar.js"; import scrollOptions from "@/common/scrollbar.js";
import BoardTplPreview from "@screen/components/infoBoard/BoardTplPreview.vue"; import BoardTplPreview from "@screen/components/infoBoard/BoardTplPreview.vue";
import BoardInfoEditor from "@screen/components/infoBoard/BoardInfoEditor";
import Dialog from "@screen/components/Dialog/index"; import Dialog from "@screen/components/Dialog/index";
import Button from '@screen/components/Buttons/Button.vue'; import Button from '@screen/components/Buttons/Button.vue';
import { getTemplateList } from "@/api/board/template"; import { getTemplateList } from "@/api/board/template";
@ -72,6 +83,7 @@ export default {
Button, Button,
vuescroll, vuescroll,
BoardTplPreview, BoardTplPreview,
BoardInfoEditor
}, },
model: { model: {
prop: 'visible', prop: 'visible',
@ -101,6 +113,12 @@ export default {
itmData: {}, itmData: {},
automaticData: {}, automaticData: {},
originalData: {}, originalData: {},
editDialog: {
mode: "",
type: "",
visible: false,
tpl: {},
},
} }
}, },
mounted() { 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() { async getTemplateAutomatic() {
let data = await this.getAutomatic(); let data = await this.getAutomatic();
console.log('dataaaa', data); console.log('dataaaa', data);

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

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

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

@ -41,7 +41,7 @@
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </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> placeholder="请选择" v-model="scope.row.qbb" readonly>
<i slot="suffix" class="el-input__icon el-icon-search"></i> <i slot="suffix" class="el-input__icon el-icon-search"></i>
</el-input> </el-input>
@ -115,6 +115,7 @@ export default {
props: { props: {
visible: Boolean, visible: Boolean,
eventType: Number, eventType: Number,
type: Number,
tableData: { tableData: {
type: Array, type: Array,
default: () => [{ default: () => [{
@ -219,10 +220,21 @@ export default {
index: 1 index: 1
} }
}, },
async created() { watch: {
let loadData = await this.loadData(1); async tableData(newValue) {
// console.log('aa',loadData) 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; this.sbOptions = loadData;
}
}
}
},
mounted() {
}, },
methods: { methods: {
initData() { 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: '180°全景摄像机', max: 100 },
{ name: '360°全景摄像机', max: 100 }, { name: '360°全景摄像机', max: 100 },
{ name: '高清网络枪型固定摄像机', max: 100 }, { name: '高清网络枪型固定摄像机', max: 100 },
{ name: '高清网络球形摄像机', max: 100 }, { name: '高清网络球形摄像机++++', max: 100 },
] ]
let data = [{ let data = [{
value: [60, 30, 50, 80, 90, 98, 50, 56], value: [60, 30, 50, 80, 90, 98, 50, 56],
name: "哈哈哈佛挡杀佛很多事" name: "哈哈哈佛挡杀佛很多事"
}]; }];
let counter = -1;
let options = { let options = {
tooltip:{ 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: { radar: {
center: ['50%', '50%'], center: ['50%', '50%'],
@ -54,24 +65,33 @@ let options = {
lineStyle: { lineStyle: {
color: '#2AD1BCCC' color: '#2AD1BCCC'
} }
},
axisLabel:{
show:true,
formatter: function (value, index) {
counter ++ ;
if(counter<6){
return value + "%";
}
}
} }
}, },
series: [ series: [
{ {
type: 'radar', type: 'radar',
data:[], data:[],
name: '设备在线率', // name: '设备在线率',
label: { // label: {
show: true, // show: true,
formatter: function (params) { // formatter: function (params) {
return params.value + "%"; // return params.value + "%";
}, // },
color: '#fff', // color: '#fff',
// position:[-20,-10,-10,-10], // // position:[-20,-10,-10,-10],
align: 'right', // align: 'right',
distance: 10, // distance: 10,
align: 'right' // align: 'right'
}, // },
symbolSize: 10, symbolSize: 10,
lineStyle: { //边缘颜色 lineStyle: { //边缘颜色
width: 2, width: 2,
@ -89,5 +109,7 @@ let options = {
} }
] ]
}; };
let counterReset = function(){
export default options; counter = -1;
}
export default {options, counterReset};

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

@ -11,7 +11,8 @@
<script> <script>
import WgtTitle from "../../../../perception/widgets/title"; import WgtTitle from "../../../../perception/widgets/title";
import * as echarts from "echarts"; import * as echarts from "echarts";
import chartsStatistics from "./assets/charts"; import chartOptions from "./assets/charts";
let chartsStatistics = chartOptions.options;
export default { export default {
name: 'DeviceUptime', name: 'DeviceUptime',
components: { components: {
@ -39,9 +40,14 @@ export default {
let value = []; let value = [];
let indicator = []; let indicator = [];
let toolTip = "";
newD.forEach(element => { newD.forEach(element => {
value.push(+element.pctOnl.replace("%", "")); value.push(+element.pctOnl.replace("%", ""));
indicator.push({ name: element.title, max: 100 }); 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; chartsStatistics.radar.indicator = indicator;
@ -50,10 +56,15 @@ export default {
name: "设备在线率" name: "设备在线率"
}]; }];
chartsStatistics.tooltip.formatter = (params)=>{
return toolTip;
}
this.isEmpty = false; this.isEmpty = false;
this.$nextTick(() => { this.$nextTick(() => {
var myChart = echarts.init(this.$refs['deviceUptime']); var myChart = echarts.init(this.$refs['deviceUptime']);
myChart.setOption(chartsStatistics); 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%", left: "2%",
right: "4%", right: "4%",
top: "30px", top: "30px",
bottom: "5%", bottom: "20px",
containLabel: true, containLabel: true,
}, },
xAxis: { xAxis: {
@ -102,7 +102,7 @@ let options = {
type: "bar", type: "bar",
barWidth: "10px", barWidth: "10px",
barGap: "-100%", barGap: "-100%",
selectedMode: true, selectedMode: false,
select: { select: {
itemStyle: { itemStyle: {
opacity: 1, opacity: 1,
@ -183,7 +183,8 @@ let options = {
}, },
symbol: symbol:
"image://data:image/png;base64,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", "image://data:image/png;base64,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",
symbolSize: [26, 26], // symbolSize: [26, 26],
symbolSize: [0, 0],
itemStyle: { itemStyle: {
color: "#FFF", color: "#FFF",
shadowColor: "rgba(0, 255, 254, 0.53)", 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 { .unit_con {
flex: 1; flex: 1;
height: 0; padding: 0;
margin: 95px 20px 30px; position: relative; margin: 95px 20px 30px; position: relative;
// &.unit_con_02{ margin: 105px 0px 20px; } // &.unit_con_02{ margin: 105px 0px 20px; }
display: flex; align-items: center;
} }
.empty { .empty {
@ -623,7 +625,7 @@ export default {
.chart_div { .chart_div {
width: 100%; 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 {}; return {};
}, },
created() {}, created() { },
methods: { methods: {
changeReisze() { changeReisze() {
this.myChart.resize(); this.myChart.resize();
@ -93,16 +93,16 @@ export default {
name: "扫码报警", name: "扫码报警",
percent: 0.1, percent: 0.1,
}, },
{
average: 0,
name: "非机预警",
percent: 0.1,
},
// { // {
// average: 0, // average: 0,
// name: "", // name: "",
// percent: 0.1, // percent: 0.1,
// }, // },
{
average: 0,
name: "气象监测器",
percent: 0.1,
},
]; ];
data.forEach((it) => { data.forEach((it) => {
if (it.warningSource == 1) { if (it.warningSource == 1) {
@ -120,12 +120,12 @@ export default {
if (it.warningSource == 5) { if (it.warningSource == 5) {
chartData[4].average += it.number; 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; chartData[5].average += it.number;
} }
// if (it.warningSource == 7) {
// chartData[6].average += it.number;
// }
// total ++; // total ++;
// drawRoundRect(context, 231, 37 + (index * 27), 138, 20, 12, gr); // drawRoundRect(context, 231, 37 + (index * 27), 138, 20, 12, gr);
}); });
@ -239,12 +239,9 @@ export default {
border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px;
opacity: 1; opacity: 1;
border: 1px solid; border: 1px solid;
border-image: linear-gradient( border-image: linear-gradient(360deg,
360deg,
rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0.3),
rgba(55, 231, 255, 0) rgba(55, 231, 255, 0)) 1 1;
)
1 1;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;

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

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

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

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

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

@ -1,6 +1,5 @@
<template> <template>
<div class='congestion'> <div class='congestion'>
<div class="board">
<div class="queryList" > <div class="queryList" >
<Card v-for="(item, index) in data" :cardData="item" :keyMap="keyMap" :hasBtn="false" :gap="'10px'" :key="index"> <Card v-for="(item, index) in data" :cardData="item" :keyMap="keyMap" :hasBtn="false" :gap="'10px'" :key="index">
<template #form-start="{ data }"> <template #form-start="{ data }">
@ -15,7 +14,7 @@
<TemperatureTrend ref="temper" class="charts-ms" /> <TemperatureTrend ref="temper" class="charts-ms" />
<VisibilityTrends ref="visibility" class="charts-ms" /> <VisibilityTrends ref="visibility" class="charts-ms" />
</div> </div>
</div>
</div> </div>
</template> </template>
@ -107,22 +106,14 @@
.congestion { .congestion {
width: 100%; width: 100%;
height: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 { .queryCharts {
display: inline-flex; display: inline-flex;
width:100%; width:100%;
height: 316px; flex:1;
.charts-l { .charts-l {
width:30%; width:30%;
@ -130,7 +121,7 @@
.charts-ms { .charts-ms {
width:40%; width:40%;
margin-left:20px; margin-left:14px;
} }
} }
@ -160,11 +151,6 @@
} }
} }
}
.charts {
height:180px;
width: 100%;
}
</style> </style>

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

@ -1,11 +1,11 @@
<template> <template>
<div class="TrafficFlow"> <div class="TrafficFlow">
<section class="content"> <section class="row_01">
<RoadNetwork class="content-l" /> <RoadNetwork class="unit_01" />
<WeatherForecast class="content-l" style="margin-right: 0" /> <WeatherForecast class="unit_02" style="margin-right: 0" />
</section> </section>
<section class="foot"> <section class="row_02">
<el-tabs class="footTabs" v-model="activeName" @tab-click="changeTabs"> <el-tabs class="full_tab" v-model="activeName" @tab-click="changeTabs">
<el-tab-pane label="短临预报" name="first"> <el-tab-pane label="短临预报" name="first">
<div class="foot-shot"> <div class="foot-shot">
<SortFaceForecast /> <SortFaceForecast />
@ -73,59 +73,31 @@ export default {
opacity: 0.1; opacity: 0.1;
} }
.footTabs { .full_tab {
display: inline;
width: 100%; 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 { .TrafficFlow {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: relative; display: flex; align-items: stretch;
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; flex-direction: column;
width: calc(100% / 4); padding: 14px;
margin-right: 20px; .row_01 {
display: flex; flex-direction: row; align-items: stretch;
.content-m-t { .unit_01,.unit_02{
width: 100%; flex-basis: 50%;
height: 240px;
margin-bottom: 20px;
}
} }
.content-r { .unit_01{ margin-right: 14px;}
width: 49.4%;
} }
} .row_02 {
.foot { flex: 1;
width: 98%;
margin: auto;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
flex: 1; 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> <style lang="scss" scoped>
.classification { .classification {
width: 100%; display: flex;
height: 100%; flex-direction: column;
.board { .board {
height: 400px; flex:1;
width: 100%; width: 100%;
padding: 0px 30px; padding: 0px 30px;
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%); 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 { .heightway {
width: 100%; width: 100%;
display: flex;
flex-direction: column;
.board { .board {
flex: 1;
height: 400px; height: 400px;
width: 100%; width: 100%;
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%); background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%);

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

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

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

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

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

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

4
ruoyi-ui/vue.config.js

@ -52,9 +52,9 @@ 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.65.156:8087`, //王思祥 // 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.65.156:8097`, //孟
// target: `http://10.168.56.165:8087`, //王家宝 // target: `http://10.168.56.165:8087`, //王家宝

Loading…
Cancel
Save