Browse Source

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

wangqin
zhangzhang 8 months ago
parent
commit
6dcf2aaf8a
  1. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceControlDialog.vue
  2. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue
  3. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/components/PeopleCard/index.vue
  4. 26
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/components/AddNEditDialog.vue
  5. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/index.vue
  6. 79
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/EventInformation/images/lane.svg
  7. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/EventInformation/index.vue
  8. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/index.vue
  9. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/Carousel/index.vue
  10. 103
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue
  11. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
  12. 71
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue
  13. 127
      ruoyi-ui/src/views/JiHeExpressway/utils/enum.js
  14. 2
      ruoyi-ui/vue.config.js

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/FatigueWakesUp/components/DeviceControlDialog.vue

@ -431,7 +431,7 @@ export default {
//
await request({
url: `/business/device/batchLaserFatigueInvokedFunction`,
url: `/business/device/batchFunctions`,
method: "post",
data: {
deviceId: this.deviceId,

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

@ -3,8 +3,9 @@
<div class="PerceiveEvent">
<!-- <Video class="item-video" /> -->
<div class="video-pic">
<Video style="height: 100%; flex: 1" :showHeader="false" :url="dialogData.formData.videoList[0]"
videoType="mp4" />
<!-- <Video style="height: 100%; flex: 1" :showHeader="false" :url="dialogData.formData.videoList[0]"
videoType="mp4" /> -->
<Carousel style="flex: 1; height: 100%;max-width: 350px;" :videos="dialogData.formData.videoList" />
<Carousel style="flex: 1; height: 100%;max-width: 300px;" :pictures="dialogData.formData.pictures" />
</div>
<LineChart class="chart" />

5
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/components/PeopleCard/index.vue

@ -42,6 +42,10 @@ export default {
key: "name",
label: "姓名"
},
{
key: "type",
label: "类型"
},
{
key: "postName",
label: "岗位"
@ -72,6 +76,7 @@ export default {
display: flex;
flex-direction: column;
gap: 6px;
font-size: 14px;
}
.btns {

26
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/components/AddNEditDialog.vue

@ -7,7 +7,7 @@
ref="FormConfigRef"
:formList="formList"
column="1"
labelWidth="90px"
labelWidth="100px"
/>
</div>
@ -68,6 +68,24 @@ export default {
},
],
},
{
label: "人员类型:",
key: "employeesType",
required: true,
type: "select",
options: {
options: [
{
key: 1,
label: "路管人员",
},
{
key: 2,
label: "应急人员",
},
],
},
},
{
label: "岗位:",
key: "postId",
@ -127,7 +145,7 @@ export default {
getSelectOptionsStation(2),
]).then(([post, organization]) => {
if (post.status === "fulfilled" && post.value.code == 200) {
this.formList[2].options.options = post.value.data.map((item) => ({
this.formList[3].options.options = post.value.data.map((item) => ({
key: item.postId + "",
label: item.postName,
}));
@ -137,7 +155,7 @@ export default {
organization.status === "fulfilled" &&
Array.isArray(organization.value)
) {
this.formList[3].options.options = organization.value;
this.formList[4].options.options = organization.value;
}
});
},
@ -181,7 +199,7 @@ export default {
<style lang="scss" scoped>
.AddNEditDialog {
width: 450px;
height: 150px;
height: 200px;
display: flex;
flex-direction: column;
gap: 15px;

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/index.vue

@ -203,7 +203,7 @@ export default {
grid-gap: 9px;
// grid-auto-flow: row;
justify-content: space-between;
grid-auto-rows: minmax(270px, max-content);
grid-auto-rows: minmax(280px, max-content);
position: relative;
}
}

79
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/EventInformation/images/lane.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.6 MiB

After

Width:  |  Height:  |  Size: 2.6 KiB

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

@ -18,7 +18,7 @@
</div>
</div>
<div class="bottom-info">
<div class="tag">拥堵五级事件</div>
<div class="tag" >{{ detailData.eventLevel || '暂无事件等级' }}</div>
</div>
<EditEventInformationDialog v-model="editEventInformationDialogVisible" />
@ -69,8 +69,7 @@ export default {
{
label: '道路方向',
// text: '',
key: 'direction',
enum: 'CameraDirectionEnum'
key: 'direction'
},
{
label: '桩号',
@ -99,9 +98,10 @@ export default {
background-image: url(./images/lane.svg);
flex: 1;
background-repeat: no-repeat;
background-size: 100% 100%;
background-size: 100% auto;
// background-size: auto auto;
display: grid;
grid-template-columns: 1.2fr 1fr 1fr 1fr 1fr 0.6fr 1fr 1fr 1fr 1fr 1.2fr;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr .5fr 1fr 1fr 1fr 1fr 1fr;
>div {
display: flex;

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

@ -65,15 +65,14 @@ export default {
},
methods: {
getDetail() {
// -
request({
url: `/dc/system/event/${this.detailId}`,
method: "GET",
})
.then((result) => {
if (result.code != 200) return;
this.provideData.detail = result.data;
console.log("事件详情", this.provideData.detail);
})
.catch((err) => {});
},

13
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/Carousel/index.vue

@ -11,6 +11,12 @@
</div>
</VueSlickCarousel>
<VueSlickCarousel v-if="videos.length > 0" v-bind="settings" ref="CarouselRef" class="vueSlickCarousel">
<div v-for="(item, index) in videos " :key="index" class="item">
<Video style="height: 100%;" :showHeader="false" :url="item || ''" videoType="mp4" />
</div>
</VueSlickCarousel>
<img src="./images/arrow.svg" @click="nextSlide" class="arrow" />
</div>
</template>
@ -21,10 +27,11 @@ import VueSlickCarousel from 'vue-slick-carousel'
import 'vue-slick-carousel/dist/vue-slick-carousel.css'
// optional style for arrows & dots
import 'vue-slick-carousel/dist/vue-slick-carousel-theme.css'
import Video from "@screen/components/Video";
export default {
name: "Carousel",
components: { VueSlickCarousel },
components: { VueSlickCarousel,Video },
props: {
pictures: {
type: Array,
@ -39,6 +46,10 @@ export default {
// "require('@screen/images/shareWith/weChat-active.svg')"
]
},
videos: {
type: Array,
default: () => []
},
},
data() {
return {

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

@ -1,89 +1,44 @@
<template>
<Dialog v-model="modelVisible" title="事件详情" width="890px" top="11%">
<div
class="EventDetail"
:style="{
height: activeName == '-1' || activeName == '0' ? '380px' : '598px',
}"
>
<div class="EventDetail" :style="{
height: activeName == '-1' || activeName == '0' ? '380px' : '598px',
}">
<Form :formList="formList" :dFormData="formData" label-width="100px" />
<div class="video-pic">
<Video
style="height: 100%; width: 380px"
:showHeader="false"
:url="
formData.videoList && formData.videoList.length > 0
? formData.videoList[0]
: ''
"
:camId="formData.upCamId"
:pileNum="formData.stakeMark"
rangeIndex="upCamera"
:videoType="formData.videoType"
/>
<Video
v-if="activeName != '-1'"
style="height: 100%; width: 380px"
:showHeader="false"
:url="
formData.videoList && formData.videoList.length > 0
? formData.videoList[1]
: ''
"
:camId="formData.downCamId"
:pileNum="formData.stakeMark"
rangeIndex="downCamera"
:videoType="formData.videoType"
/>
<Carousel v-else style="flex: 1" :pictures="formData.pictures" />
<Video v-if="activeName != '-1'" style="height: 100%; width: 380px" :showHeader="false" :url="formData.videoList && formData.videoList.length > 0
? formData.videoList[0] : ''" :camId="formData.upCamId" :pileNum="formData.stakeMark" rangeIndex="upCamera"
:videoType="formData.videoType" />
<Video v-if="activeName != '-1'" style="height: 100%; width: 380px" :showHeader="false" :url="formData.videoList && formData.videoList.length > 0
? formData.videoList[1] : ''" :camId="formData.downCamId" :pileNum="formData.stakeMark" rangeIndex="downCamera"
:videoType="formData.videoType" />
<Carousel v-if="activeName == '-1'" style="flex: 1" :videos="formData.videoList" :pictures="[]"/>
<Carousel v-if="activeName == '-1'" style="flex: 1" :pictures="formData.pictures" :videos="[]"/>
</div>
<!-- <div>{{ formData.videoList[0] }}</div> -->
<TimeLine1
v-if="activeName == '1' || activeName == '2'"
:data="timeLine1List"
/>
<TimeLine2
v-if="activeName == '1' || activeName == '2'"
:data="timeLine2List"
style="flex: 1"
/>
<TimeLine1 v-if="activeName == '1' || activeName == '2'" :data="timeLine1List" />
<TimeLine2 v-if="activeName == '1' || activeName == '2'" :data="timeLine2List" style="flex: 1" />
</div>
<!-- 确认弹窗 -->
<EventPlanDialog
:visible="isShowDialog"
:info="info"
:eventFormData="formData"
:activeName="activeName"
@reInitData="
() => {
this.$emit('update:value', false);
this.$emit('queryData', true);
}
"
@close="onCloseAddNew"
/>
<EventPlanDialog :visible="isShowDialog" :info="info" :eventFormData="formData" :activeName="activeName"
@reInitData="() => {
this.$emit('update:value', false);
this.$emit('queryData', true);
}
" @close="onCloseAddNew" />
<template #footer>
<Button
v-if="activeName == '-1' || activeName == '0'"
style="padding: 0 24px"
@click.native="onDelete"
>误报</Button
>
<Button
:style="{ backgroundColor: '#C9C9C9', padding: '0 24px' }"
@click.native="modelVisible = false"
>取消</Button
>
<Button
v-if="activeName == '-1' || activeName == '0'"
style="padding: 0 24px"
@click.native="onSubmit"
>确认</Button
>
<Button v-if="activeName == '-1' || activeName == '0'" style="padding: 0 24px"
@click.native="onDelete">误报</Button>
<Button :style="{ backgroundColor: '#C9C9C9', padding: '0 24px' }"
@click.native="modelVisible = false">取消</Button>
<Button v-if="activeName == '-1' || activeName == '0'" style="padding: 0 24px"
@click.native="onSubmit">确认</Button>
</template>
</Dialog>
</template>
@ -124,7 +79,7 @@ export default {
activeName: String,
formData: {
type: Object,
default: () => {},
default: () => { },
},
},
data() {

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

@ -294,8 +294,9 @@ export default {
data.visibility = otherConfig.visibility;
data.pictures = otherConfig.pictures || [];
data.videoList = otherConfig.videoList || []
// data.videoList = otherConfig.videoList || ['https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-480p.mp4']
data.videoList = otherConfig.videoList || [];
// data.videoList = ['https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-480p.mp4',
// 'https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-480p.mp4']
}
data.videoType = "mp4";
this.detailDialogFormData = data;

71
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,11 +33,7 @@
<div class="text"><i style="color: red">*</i>执行操作:</div>
</el-col>
<el-col :span="22">
<FormTable
ref="secondFormTable"
:tableData="secondFormData"
:type="1"
></FormTable>
<FormTable ref="secondFormTable" :tableData="secondFormData" :type="1"></FormTable>
</el-col>
</el-row>
</div>
@ -70,11 +43,7 @@
<div class="text"><i style="color: red">*</i>恢复操作:</div>
</el-col>
<el-col :span="22">
<FormTable
ref="thirdFormTable"
:tableData="thirdFormData"
:type="2"
></FormTable>
<FormTable ref="thirdFormTable" :tableData="thirdFormData" :type="2"></FormTable>
</el-col>
</el-row>
</div>
@ -82,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>
@ -111,7 +72,7 @@ import {
gzmsMap,
eventSubClassMap,
trafficKV,
perceptionKV,
WarningTypeList as perceptionKV,
} from "@screen/utils/enum.js";
const typeMap = {
@ -141,7 +102,7 @@ export default {
visible: Boolean,
detail: {
type: Object,
default: () => {},
default: () => { },
},
},
data() {
@ -201,7 +162,7 @@ export default {
},
};
},
mounted() {},
mounted() { },
computed: {
modelVisible: {
get() {
@ -212,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 {
@ -327,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 (

127
ruoyi-ui/src/views/JiHeExpressway/utils/enum.js

@ -163,21 +163,7 @@ export const WarningType = {
99: "其他事件",
};
// 交通事件主类
export const trafficType = {
1: "交通事故",
2: "车辆故障",
3: "交通管制",
4: "交通拥堵",
5: "非法上路",
6: "路障清除",
7: "施工建设",
8: "服务区异常",
9: "设施设备隐患",
10: "异常天气",
11: "其他事件",
};
//========= 感知事件 主类(key vulue) [{value: 1, label: '交通拥堵'}]=========
export const WarningTypeList = Object.keys(WarningType).map((key) => {
return {
value: key * 1,
@ -185,6 +171,11 @@ export const WarningTypeList = Object.keys(WarningType).map((key) => {
};
});
// 交通事件主类 {1: "交通事故" } 格式
export const trafficType = Object.keys(EventTopics).reduce((prev, now) => {
return { ...prev, [EventTopics[now]]: now };
}, {});
// 感知事件主类的子类(上方) warningSubclass
export const WarningSubclass = {
1: {
@ -262,104 +253,14 @@ export const WarningSubclass = {
},
};
//========= 交通事件 主类(key vulue)=========
export const trafficKV = [
{
value: 1,
label: "交通事故",
},
{
value: 2,
label: "车辆故障",
},
{
value: 3,
label: "交通管制",
},
{
value: 4,
label: "交通拥堵",
},
{
value: 5,
label: "非法上路",
},
{
value: 6,
label: "路障清除",
},
{
value: 7,
label: "施工建设",
},
{
value: 8,
label: "服务区异常",
},
{
value: 9,
label: "设施设备隐患",
},
{
value: 10,
label: "异常天气",
},
{
value: 11,
label: "其他事件",
},
];
//========= 感知事件 主类(key vulue)=========
export const perceptionKV = [
{
value: 1,
label: "交通拥堵",
},
{
value: 2,
label: "行人",
},
{
value: 3,
label: "非机动车",
},
{
value: 4,
label: "停车",
},
{
value: 5,
label: "违规驾驶",
},
{
value: 6,
label: "路障",
},
{
value: 7,
label: "道路施工",
},
{
value: 8,
label: "异常天气",
},
{
value: 9,
label: "护栏碰撞",
},
{
value: 10,
label: "交通事故",
},
{
value: 11,
label: "车辆故障",
},
{
value: 99,
label: "其他事件",
},
];
//========= 交通事件 主类(key vulue) =========
export const trafficKV = Object.keys(trafficType).map((key) => {
return {
value: key * 1,
label: trafficType[key],
};
});
//交通事件、感知事件 子类(key vulue)预案使用
export const eventSubClassMap = {
1: {

2
ruoyi-ui/vue.config.js

@ -31,7 +31,7 @@ module.exports = {
devServer: {
host: "0.0.0.0",
port: port,
// https: true,
https: true,
open: true,
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy

Loading…
Cancel
Save