Browse Source

调度记录接口联调

wangqin
Joe 10 months ago
parent
commit
7436e78bce
  1. 2
      ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue
  2. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
  3. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/index.vue
  4. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalPlan/index.vue
  5. 53
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue
  6. 28
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/EventInformation/index.vue
  7. 47
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/RealTimeVideo/index.vue
  8. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/ReleaseInformation/index.vue
  9. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/TrafficControl/index.vue
  10. 30
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/index.vue
  11. 19
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/mixin.js

2
ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue

@ -28,10 +28,12 @@ export default {
Video
},
props: {
// ID
camId: {
type: String,
default: null
},
//
pileNum: {
type: String,
default: null

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue

@ -21,6 +21,7 @@
<script>
import Card from "@screen/components/Card2/Card.vue";;
import AMapContainer from "@screen/pages/Home/components/AMapContainer/index.vue"
import { provideMixin } from "./../../mixin"
export default {
name: 'CrowdnessIndicatorRankings',
@ -28,6 +29,7 @@ export default {
Card,
AMapContainer
},
mixins: [provideMixin],
data() {
return {
active: "weather",

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/index.vue

@ -27,9 +27,11 @@
import Card from "@screen/components/Card2/Card.vue";
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Descriptions from '@screen/components/Descriptions.vue';
import { provideMixin } from "./../../mixin"
export default {
name: 'DispatchLiaison',
mixins: [provideMixin],
components: {
Card,
ButtonGradient,

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalPlan/index.vue

@ -9,6 +9,7 @@ import Card from "@screen/components/Card2/Card.vue";;
import { CanvasFlow } from "./utils";
import { merge } from "lodash";
import { provideMixin } from "./../../mixin"
function getDefaultBlockOption() {
return {
@ -46,6 +47,7 @@ const status = {
export default {
name: 'DisposalPlan',
mixins: [provideMixin],
components: {
Card
},

53
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue

@ -26,6 +26,7 @@
<TimeLine1 :data="timeLine1List" :filterDistance="filterDistance" />
<TimeLine2 :data="timeLine2List" style="flex: 1;" />
<ElEmpty v-if="!timeLine2List.length" description="暂无数据" />
<div class="bottom">
<ElSelect placeholder="请选择关键点" />
<RadioGroup :options="[{ key: 'input', label: '输入' }, { key: 'upload', label: '上传' }]" value="input"
@ -49,11 +50,14 @@ import RadioGroup from '@screen/components/FormConfig/components/RadioGroup/inde
import TimeLine1 from "@screen/components/TimeLine/TimeLine1/index";
import TimeLine2 from "@screen/components/TimeLine/TimeLine2/index";
import { timeLine1List, timeLine2List } from "./data";
import { provideMixin } from "./../../mixin"
import { timeLine2List } from "./data";
import request from "@/utils/request";
export default {
name: 'DisposalProcess',
inject: ["adpScale"],
mixins: [provideMixin],
components: {
Card,
ButtonGradient,
@ -65,7 +69,7 @@ export default {
data() {
return {
test: null,
timeLine1List,
timeLine1List: [],
// timeLine2List: Array.from({ length: 6 }).map(() => ({
// title: "",
// time: "2023-12-21 16:35:44",
@ -73,7 +77,7 @@ export default {
// desc: "",
// posts: ''
// })),
timeLine2List,
timeLine2List: [],
isFullHeight: false
}
},
@ -85,7 +89,48 @@ export default {
this.isFullHeight = !this.isFullHeight;
this.$emit('fullHeight', 'CrowdnessIndicatorRankings')
}
},
async detailChange(data) {
const timelineData = await this.getDetail(data);
let processIdMap = {}
this.timeLine2List = timelineData.map(item => {
processIdMap[item.processId] = new Date(item.operationTime).toLocaleTimeString();
return {
// title: "",
time: item.operationTime ? new Date(item.operationTime).toLocaleString() : null,
name: item.operator,
desc: item.context,
// posts: ''
}
});
this.timeLine1List = data.processConfigList.map((item) => {
return {
time: processIdMap[item.nodeNode],
label: item.processNode,
isActive: !!processIdMap[item.nodeNode],
};
});
},
getDetail(data) {
return request({
url: `/system/process/list`,
method: "GET",
params: {
eventId: data.id
}
})
.then((result) => {
if (result.code != 200) return [];
return result.rows || []
})
.catch((err) => []);
},
}
}
</script>

28
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/EventInformation/index.vue

@ -9,11 +9,12 @@
</ButtonGradient>
</template>
<Descriptions :list="list" style="gap: 15px;" />
<Descriptions :list="list" :data="detailData" style="gap: 15px;" />
<div class="road-lane">
<div v-for="i in 11">
<img v-if="i != 6" src="./images/normal.svg">
<!-- <img v-if="i != 6" src="./images/congestion.svg"> -->
</div>
</div>
<div class="bottom-info">
@ -29,9 +30,11 @@ import Card from "@screen/components/Card2/Card.vue";
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Descriptions from '@screen/components/Descriptions.vue';
import EditEventInformationDialog from "./components/EditEventInformationDialog/index"
import { provideMixin } from "./../../mixin"
export default {
name: 'EventInformation',
mixins: [provideMixin],
components: {
Card,
ButtonGradient,
@ -43,34 +46,41 @@ export default {
list: [
{
label: '情报时间',
text: '2024-01-03 14:00:21',
// text: '2024-01-03 14:00:21',
key: "occurrenceTime",
gridColumn: 2
},
{
label: '情报来源',
text: '96659',
// text: '96659',
key: "stringEventSource",
gridColumn: 2
},
{
label: '事件类型',
text: '交通事故',
// text: '',
key: 'eventName'
},
{
label: '所属路线',
text: 'G34济菏高速',
// text: 'G34',
key: 'roadName'
},
{
label: '道路方向',
text: '菏泽方向',
// text: '',
key: 'direction',
enum: 'CameraDirectionEnum'
},
{
label: '桩号:',
text: "K266+001",
label: '桩号',
// text: "K266+001",
key: 'stakeMark'
}
],
editEventInformationDialogVisible: false
}
},
}
}
</script>

47
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/RealTimeVideo/index.vue

@ -1,37 +1,40 @@
<template>
<Card class='RealTimeVideo' title="实时视频">
<Video class="item-video" />
<Video class="item-video" />
</Card>
<Card class='RealTimeVideo' title="实时视频">
<Video class="item-video" :pileNum="detailData.stakeMark" />
<!-- <Video class="item-video" /> -->
</Card>
</template>
<script>
import Card from "@screen/components/Card2/Card.vue";;
import Video from "@screen/components/Video"
import { provideMixin } from "./../../mixin"
export default {
name: 'RealTimeVideo',
components: {
Card,
Video
}
name: 'RealTimeVideo',
mixins: [provideMixin],
components: {
Card,
Video
}
}
</script>
<style lang='scss' scoped>
.RealTimeVideo {
::v-deep {
.content {
display: flex;
align-items: center;
justify-content: space-between;
gap: 9px;
}
}
::v-deep {
.content {
display: flex;
align-items: center;
justify-content: space-between;
gap: 9px;
}
}
.item-video {
flex: 1;
width: calc(50% - 4.5px);
height: 100%;
}
.item-video {
flex: 1;
width: calc(50% - 4.5px);
height: 100%;
}
}
</style>

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/ReleaseInformation/index.vue

@ -41,9 +41,11 @@ import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Form from '@screen/components/FormConfig';
import CheckboxGroup from '@screen/components/FormConfig/components/ElCheckboxGroup.vue';
import Descriptions from '@screen/components/Descriptions.vue';
import { provideMixin } from "./../../mixin"
export default {
name: 'ReleaseInformation',
mixins: [provideMixin],
components: {
Card,
ButtonGradient,

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/TrafficControl/index.vue

@ -19,9 +19,11 @@ background: linear-gradient(82deg, #FFCD48 0%, #FE861E 100%);">
import Card from "@screen/components/Card2/Card.vue";
import RadioGroup from '@screen/components/FormConfig/components/RadioGroup/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import { provideMixin } from "./../../mixin"
export default {
name: 'TrafficControl',
mixins: [provideMixin],
components: {
Card,
RadioGroup,

30
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/index.vue

@ -6,6 +6,7 @@
</template>
<script>
import request from "@/utils/request";
const files = require.context('./Cards', true, /[^/]+\/index\.vue$/);
@ -31,15 +32,44 @@ export default {
components: {
...components,
},
props: {
detailId: {
type: [String, Number],
default: 2
}
},
provide() {
return {
provideData: this.provideData,
}
},
data() {
return {
gridAreaMap: {
...originGridArea
},
row: 24,
provideData: {
detail: null
}
}
},
created() {
this.getDetail();
},
methods: {
getDetail() {
request({
url: `/dc/system/event/${this.detailId}`,
method: "GET",
})
.then((result) => {
if (result.code != 200) return;
this.provideData.detail = result.data
})
.catch((err) => { });
},
handleFullHeight(key, opacityKey) {
if (this.gridAreaMap[key] !== originGridArea[key]) {
this.gridAreaMap[key] = originGridArea[key];

19
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/mixin.js

@ -0,0 +1,19 @@
export const provideMixin = {
inject: ["provideData"],
data() {
return {
detailData: {},
};
},
watch: {
"provideData.detail": {
handler(data) {
if (!data) return;
this.detailData = data;
this.detailChange?.(data);
},
immediate: true,
},
},
};
Loading…
Cancel
Save