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. 51
      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. 7
      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 Video
}, },
props: { props: {
// ID
camId: { camId: {
type: String, type: String,
default: null default: null
}, },
//
pileNum: { pileNum: {
type: String, type: String,
default: null default: null

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

@ -21,6 +21,7 @@
<script> <script>
import Card from "@screen/components/Card2/Card.vue";; import Card from "@screen/components/Card2/Card.vue";;
import AMapContainer from "@screen/pages/Home/components/AMapContainer/index.vue" import AMapContainer from "@screen/pages/Home/components/AMapContainer/index.vue"
import { provideMixin } from "./../../mixin"
export default { export default {
name: 'CrowdnessIndicatorRankings', name: 'CrowdnessIndicatorRankings',
@ -28,6 +29,7 @@ export default {
Card, Card,
AMapContainer AMapContainer
}, },
mixins: [provideMixin],
data() { data() {
return { return {
active: "weather", 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 Card from "@screen/components/Card2/Card.vue";
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue'; import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Descriptions from '@screen/components/Descriptions.vue'; import Descriptions from '@screen/components/Descriptions.vue';
import { provideMixin } from "./../../mixin"
export default { export default {
name: 'DispatchLiaison', name: 'DispatchLiaison',
mixins: [provideMixin],
components: { components: {
Card, Card,
ButtonGradient, 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 { CanvasFlow } from "./utils";
import { merge } from "lodash"; import { merge } from "lodash";
import { provideMixin } from "./../../mixin"
function getDefaultBlockOption() { function getDefaultBlockOption() {
return { return {
@ -46,6 +47,7 @@ const status = {
export default { export default {
name: 'DisposalPlan', name: 'DisposalPlan',
mixins: [provideMixin],
components: { components: {
Card Card
}, },

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

@ -26,6 +26,7 @@
<TimeLine1 :data="timeLine1List" :filterDistance="filterDistance" /> <TimeLine1 :data="timeLine1List" :filterDistance="filterDistance" />
<TimeLine2 :data="timeLine2List" style="flex: 1;" /> <TimeLine2 :data="timeLine2List" style="flex: 1;" />
<ElEmpty v-if="!timeLine2List.length" description="暂无数据" />
<div class="bottom"> <div class="bottom">
<ElSelect placeholder="请选择关键点" /> <ElSelect placeholder="请选择关键点" />
<RadioGroup :options="[{ key: 'input', label: '输入' }, { key: 'upload', label: '上传' }]" value="input" <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 TimeLine1 from "@screen/components/TimeLine/TimeLine1/index";
import TimeLine2 from "@screen/components/TimeLine/TimeLine2/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 { export default {
name: 'DisposalProcess', name: 'DisposalProcess',
inject: ["adpScale"], inject: ["adpScale"],
mixins: [provideMixin],
components: { components: {
Card, Card,
ButtonGradient, ButtonGradient,
@ -65,7 +69,7 @@ export default {
data() { data() {
return { return {
test: null, test: null,
timeLine1List, timeLine1List: [],
// timeLine2List: Array.from({ length: 6 }).map(() => ({ // timeLine2List: Array.from({ length: 6 }).map(() => ({
// title: "", // title: "",
// time: "2023-12-21 16:35:44", // time: "2023-12-21 16:35:44",
@ -73,7 +77,7 @@ export default {
// desc: "", // desc: "",
// posts: '' // posts: ''
// })), // })),
timeLine2List, timeLine2List: [],
isFullHeight: false isFullHeight: false
} }
}, },
@ -85,7 +89,48 @@ export default {
this.isFullHeight = !this.isFullHeight; this.isFullHeight = !this.isFullHeight;
this.$emit('fullHeight', 'CrowdnessIndicatorRankings') 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> </script>

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

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

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

@ -1,15 +1,18 @@
<template> <template>
<Card class='RealTimeVideo' title="实时视频"> <Card class='RealTimeVideo' title="实时视频">
<Video class="item-video" /> <Video class="item-video" :pileNum="detailData.stakeMark" />
<Video class="item-video" /> <!-- <Video class="item-video" /> -->
</Card> </Card>
</template> </template>
<script> <script>
import Card from "@screen/components/Card2/Card.vue";; import Card from "@screen/components/Card2/Card.vue";;
import Video from "@screen/components/Video" import Video from "@screen/components/Video"
import { provideMixin } from "./../../mixin"
export default { export default {
name: 'RealTimeVideo', name: 'RealTimeVideo',
mixins: [provideMixin],
components: { components: {
Card, Card,
Video Video

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 Form from '@screen/components/FormConfig';
import CheckboxGroup from '@screen/components/FormConfig/components/ElCheckboxGroup.vue'; import CheckboxGroup from '@screen/components/FormConfig/components/ElCheckboxGroup.vue';
import Descriptions from '@screen/components/Descriptions.vue'; import Descriptions from '@screen/components/Descriptions.vue';
import { provideMixin } from "./../../mixin"
export default { export default {
name: 'ReleaseInformation', name: 'ReleaseInformation',
mixins: [provideMixin],
components: { components: {
Card, Card,
ButtonGradient, 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 Card from "@screen/components/Card2/Card.vue";
import RadioGroup from '@screen/components/FormConfig/components/RadioGroup/index.vue'; import RadioGroup from '@screen/components/FormConfig/components/RadioGroup/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue'; import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import { provideMixin } from "./../../mixin"
export default { export default {
name: 'TrafficControl', name: 'TrafficControl',
mixins: [provideMixin],
components: { components: {
Card, Card,
RadioGroup, RadioGroup,

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

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