Browse Source

修改禅道BUG

wangqin
王钦 6 months ago
parent
commit
b76cba9d35
  1. 2
      ruoyi-ui/src/api/menu.js
  2. 3
      ruoyi-ui/src/views/JiHeExpressway/components/Card2/Card.vue
  3. BIN
      ruoyi-ui/src/views/JiHeExpressway/components/Card2/效果图.png
  4. 2
      ruoyi-ui/src/views/JiHeExpressway/components/Title/index.vue
  5. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/components/DeviceControlDialog.vue
  6. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MillimeterWaveRadar/components/DeviceControlDialog.vue
  7. 8
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue
  8. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue
  9. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue
  10. 24
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/StatsDialog/index.vue
  11. 147
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/index.vue
  12. 33
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue
  13. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/index.vue
  14. 44
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/data.js
  15. 28
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/index.vue
  16. 231
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/index_back.vue
  17. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/data.js
  18. 44
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue
  19. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
  20. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue
  21. 8
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/index.vue
  22. 9
      ruoyi-ui/vue.config.js

2
ruoyi-ui/src/api/menu.js

@ -1,6 +1,6 @@
import request from '@/utils/request'
// 获取路由
// 获取路由 /getRouters/1',
export const getRouters = () => {
return request({
url: '/getRouters',

3
ruoyi-ui/src/views/JiHeExpressway/components/Card2/Card.vue

@ -1,6 +1,9 @@
<template>
<div class="Card">
<Title :title="title">
<template #prefix>
<slot name="title-prefix" />
</template>
<template #suffix>
<slot name="title-suffix" />
</template>

BIN
ruoyi-ui/src/views/JiHeExpressway/components/Card2/效果图.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

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

@ -3,7 +3,7 @@
<div class="left">
<img src="./images/icon.svg" />
<span>{{ title }}</span>
<!-- <slot name="prefix"/> -->
<slot name="prefix"/>
</div>
<div class="right">
<slot name="suffix" />

13
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/components/DeviceControlDialog.vue

@ -81,19 +81,20 @@ export default {
},
methods: {
async initData() {
console.log('ll', this.radio1, this.time)
let lastPath = 'deviceHour'
let _time = this.time;
if (this.pickerType == 'date') {
lastPath = 'deviceHour'
} else if (this.pickerType == 'month') {
lastPath = 'deviceDay'
_time += '-01'
} else if (this.pickerType == 'year') {
lastPath = 'deviceYears'
_time += '-01-01'
}
let qsData = await request({
url: `/dc/system/meteorologicalDetector/${lastPath}?deviceName=${this.deviceName}&specificDate=${this.time}`,
url: `/dc/system/meteorologicalDetector/${lastPath}?deviceName=${this.deviceName}&specificDate=${_time}`,
method: "get",
})
if (qsData.code !== 200) {
@ -132,17 +133,21 @@ export default {
this.$refs.DeviceParam?.handleSubmit();
},
onChangeRadio(value) {
this.time = '';
if (value == '1') {
this.pickerType = 'date'
this.valueFormat = 'yyyy-MM-dd'
this.time = new Date().format('yyyy-MM-dd');
} else if (value == '2') {
this.pickerType = 'month'
this.valueFormat = 'yyyy-MM'
this.time = new Date().format('yyyy-MM');
} else if (value == '3') {
this.pickerType = 'year'
this.valueFormat = 'yyyy'
this.time = new Date().format('yyyy');
}
this.initData();
}
},
};

1
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MillimeterWaveRadar/components/DeviceControlDialog.vue

@ -181,7 +181,6 @@ export default {
e.typename = WarningSubclass[e.warningType][e.warningSubclass]
e.stateName = warningStateMapping[e.warningState]
});
console.log(res.rows,'--------')
this.data = res.rows;
this.total = res.total;
})

8
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue

@ -20,7 +20,7 @@
<div class='chart LineChart' ref="chartRef" />
</ElTabPane>
<ElTabPane :label="item" :key="'UPS_'+item" :name="'UPS_'+item" v-for="item in upsList" v-if="dialogData.facilityType === 1">
<ElTabPane :label="'UPS'+(index+1)" :key="'UPS_'+item" :name="'UPS_'+item" v-for="(item,index) in upsList" v-if="dialogData.facilityType === 1">
<Descriptions labelWidth="142px" :list="upsForm" :data="upsData" style="gap: 12px" column="6" />
</ElTabPane>
@ -74,7 +74,7 @@ export default {
upsForm:[],
upsData:{},
// UPS
upsList:['SNMP']
upsList:[]
};
},
watch: {
@ -125,7 +125,7 @@ export default {
dData = { ...dData, ...otherConfig, ...pointList }
//echart
this.upsList=otherConfig.UPSList||[]
}
this.data = dData;
this.daterangeChangeTime = [moment().startOf('months').format('YYYY-MM-DD'), moment().endOf('months').format('YYYY-MM-DD')]
@ -135,6 +135,7 @@ export default {
methods: {
camClose(){
this.$refs.refVideo.closeContrl()
this.upsList =[]
},
bindUPS(id){
request({
@ -158,7 +159,6 @@ export default {
})
},
async bindListAsync() {
console.log('3333333333333')
let res = await request({
url: `sideSlope/GetPointDataListAsync`,
method: "get",

1
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue

@ -506,7 +506,6 @@ export default {
methods: {
onHide() {
this.tabAction = -1;
console.log(this.data,'-------********')
},
submitClick() {
this.$refs.ControlComponent?.handleSubmit();

9
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue

@ -59,13 +59,18 @@ export default {
return {
planId: "",
tableData: [],
subclass:""
subclass:"",
eventId: ""
};
},
watch: {
"provideData.detail"(newValue, oldValue) {
if(this.subclass !== newValue.subclass){
if(
this.subclass !== newValue.subclass
|| this.eventId !== newValue.id
){
this.subclass = newValue.subclass;
this.eventId = newValue.id;
this.initData(newValue)
}

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

@ -6,14 +6,14 @@
<el-table-column
prop="organizationName"
label="路管驻点"
width="180"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="difference"
label="距离"
width="180"
width="120"
align="center"
>
<template slot-scope="scope">
@ -30,12 +30,9 @@
>{{ item.name }}</el-checkbox
>
</el-checkbox-group>
<!-- <span v-for="item in scope.row.shiftsMap">
{{ item.shiftsName }}</span
> -->
</template>
</el-table-column>
<el-table-column label="车辆" align="center">
<el-table-column label="车辆" align="center" width="240">
<template slot-scope="scope">
<el-checkbox-group v-model="form.vehicle">
<el-checkbox
@ -59,9 +56,9 @@
style="background-color: rgba(0, 179, 204, 0.3)"
@click.native="(modelVisible = false), (submitting = false)"
>
取消
{{action===0?'取消':'关闭'}}
</Button>
<Button @click.native="handleSubmit" :loading="submitting"> 确定</Button>
<Button v-if="action===0" @click.native="handleSubmit" :loading="submitting"> 确定</Button>
</template>
</Dialog>
</template>
@ -84,12 +81,14 @@ export default {
prop: "visible",
event: "update:value",
},
inject: ["provideData"],
props: {
visible: Boolean,
data: Array,
employees: Array,
vehicle: Array,
id: Number,
action:Number
},
watch: {
employees(val, oldVal) {
@ -127,8 +126,6 @@ export default {
methods: {
handleSubmit() {
this.form.dispatchId = this.id;
console.log("data", this.data);
console.log("this.form,this.form", this.form);
let newEmployees = [];
let newVehiclesMap = [];
this.form.employees.forEach((item) => {
@ -159,9 +156,14 @@ export default {
}
}
});
this.form.eventId = this.provideData.detail.id
this.form.remark = this.provideData.detail.remark
this.form.employees = newEmployees;
this.form.vehicle = newVehiclesMap;
if(newVehiclesMap.length === 0 && newEmployees.length === 0){
this.$message.warning('未选择人员或车辆')
return;
}
postUpdateSource(this.form).then((res) => {
this.$emit("handleRefresh",'reload');
});

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

@ -17,17 +17,14 @@
</div>
</div>
<div class="dispatch-item">
<span class="label">值班领导</span>
<span class="label">交警人员</span>
<div
class="value"
v-if="dispatchData.shifts && dispatchData.shifts.length > 0"
v-if="dispatchData.trafficPolice && dispatchData.trafficPolice.length > 0"
>
<div v-for="item in dispatchData.shifts" class="value-item">
<span class="shiftsName">{{ item.shiftsName }}</span>
<span class="shiftsNumber">{{ item.shiftsNumber }}</span>
<!-- <span class="scheduling">
{{ item.scheduling == 1 ? "白班" : "夜班" }}</span
> -->
<div v-for="item in dispatchData.trafficPolice" class="value-item">
<span class="shiftsName">{{ item.name }}</span>
<span class="shiftsNumber">{{ item.contactNumber }}</span>
</div>
</div>
<div class="value" v-else>-</div>
@ -59,21 +56,54 @@
:employees="employeesChoice"
:vehicle="vehiclesChoice"
:id="dispatchData.id"
:action="statsDialogAction"
@update:value="handleClose"
@handleRefresh="getCommandDispatch"
/>
<!-- 智能调度弹窗 -->
<Dialog v-model="modelSmartVisible" title="智能调度" width="700px" top="40%">
<div class="modSmart">
<div>系统已为该事件自动分配</div>
<div v-if="modelSmartData.employeesName">路管人员<span>{{ modelSmartData.employeesName }}</span></div>
<div v-if="modelSmartData.employeesName && modelSmartData.vehiclesName"></div>
<div v-if="modelSmartData.vehiclesName">应急车辆<span>{{ modelSmartData.vehiclesName }}({{ modelSmartData.vehiclesTypeName }})</span></div>
</div>
<div class="modSmartAction">
<ButtonGradient
class="title-button special-button"
@click.native="handleClick"
style="background: linear-gradient(82deg, #e4b73b 0%, #fe861e 100%)"
>
修改
</ButtonGradient>
<ButtonGradient
class="title-button special-button"
@click.native="smartSubmit"
style="background: linear-gradient(82deg, #22a426 0%, #258c19 100%)"
>
确认
</ButtonGradient>
<ButtonGradient
class="title-button special-button"
@click.native="modelSmartVisible = false"
style="background-color: grey;"
>
关闭
</ButtonGradient>
</div>
</Dialog>
</Card>
</template>
<script>
import Card from "@screen/components/Card2/Card.vue";
import Dialog from "@screen/components/Dialog/index";
import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue";
import Descriptions from "@screen/components/Descriptions.vue";
import { provideMixin } from "./../../mixin";
import { postCommandDispatch } from "@/api/commandDispatch";
import StatsDialog from "./StatsDialog/index.vue";
import request from "@/utils/request";
export default {
name: "DispatchLiaison",
mixins: [provideMixin],
@ -82,6 +112,7 @@ export default {
ButtonGradient,
Descriptions,
StatsDialog,
Dialog
},
inject: ["provideData","reload"],
data() {
@ -93,32 +124,91 @@ export default {
staff: [],
vehicle: [],
statsDialogVisible: false,
statsDialogAction:0,//
employeesChoice: [],
vehiclesChoice: [],
modelSmartVisible:false,
modelSmartData:{},
};
},
watch: {
"provideData.detail"(newValue, oldValue) {
this.provideDetail = newValue;
this.getVehicleTypeList();
// console.log("", this.provideDetail);
},
},
methods: {
handleClick() {
this.modelSmartVisible = false;
this.$parent.$refs['CrowdnessIndicatorRankings'][0].active = []
this.statsDialogVisible = true;
},
handleClose() {
this.statsDialogVisible = false;
},
smartSubmit(){
request({
url: `/business/warning/insertDispatch`,
method: "post",
data: {
eventId: this.provideDetail.id,
remark:this.provideDetail.remark,
employeesId: this.modelSmartData.employeesId,
vehiclesId: this.modelSmartData.vehiclesId,
},
})
.then(result => {
if (result.code != 200) return $message.error(result?.msg);
this.$message.success("智能调度完成");
this.modelSmartVisible = false;
this.reload();
})
.catch((err) => {});
},
getCommandDispatch(type='init') {
let data = {
postCommandDispatch( {
stakeMark: this.provideDetail.stakeMark,
id: this.provideDetail.id,
};
postCommandDispatch(data).then((res) => {
}).then(async (res) => {
this.statsDialogAction = res.data.existence;
if(res.data.existence === 0){
const result = await request({
url: "/business/warning/intelligentSource",
method: "post",
data: {stakeMark:this.provideDetail.stakeMark},
});
if (result.code != 200) return $message.error(result?.msg);
this.dispatchData.trafficPolice = res.data.trafficPolice
const resIntell = result.data;
resIntell.selectData.forEach(e=>{
e.vehiclesMap.forEach((v) => {
v.vehicleText = "(" + _.find(this.vehicleTypeList,{dictValue:v.vehicleType.toString()}).dictLabel + ")"
})
})
this.dispatchList = resIntell.selectData;
if(resIntell.vehicles || resIntell.employees){
if(resIntell.employees){
this.employeesChoice = [resIntell.employees.employeesId]
}
this.modelSmartData = {...resIntell.vehicles,...resIntell.employees}
if(resIntell.vehicles){
this.vehiclesChoice = [resIntell.vehicles.vehiclesId]
if(resIntell.vehicles.vehiclesType){
this.modelSmartData.vehiclesTypeName = _.find(this.vehicleTypeList,{dictValue:resIntell.vehicles.vehiclesType}).dictLabel
}
}
this.modelSmartVisible = true;
} else {
this.handleClick();
}
return;
}
res.data.listData?.forEach((element) => {
if (element.vehiclesMap.length > 0) {
element.vehiclesMap.forEach((item) => {
@ -132,6 +222,7 @@ export default {
});
this.dispatchList = res.data.listData;
this.dispatchData = res.data.resource ? res.data.resource : {};
this.dispatchData.trafficPolice = res.data.trafficPolice
this.staff = [];
this.vehicle = [];
if (res.data && res.data.resource && res.data.resource.resource) {
@ -154,11 +245,9 @@ export default {
this.employeesChoice = [];
this.vehiclesChoice = [];
this.staff.forEach((element) => {
// this.employeesChoice.push(element);
this.employeesChoice.push(element.resourceId);
});
this.vehicle.forEach((element) => {
// this.vehiclesChoice.push(element);
this.vehiclesChoice.push(element.resourceId);
});
this.statsDialogVisible = false;
@ -168,8 +257,10 @@ export default {
});
},
getVehicleTypeList() {
if (this.vehicleTypeList.length) return;
if (this.vehicleTypeList.length > 0){
this.getCommandDispatch();
return;
};
request({
url: `/system/dict/data/type/vehicle_type`,
method: "GET",
@ -228,4 +319,24 @@ export default {
}
}
}
.modSmart{
display: flex;
span{
color: #38e4ff;
font-weight: bold;
}
}
.modSmartAction{
display: flex;
width: 100%;
gap: 9px;
justify-content: center;
align-items: center;
margin-top: 40px;
.special-button {
width: 100px !important;
padding: 0 24px;
}
}
</style>

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

@ -1,6 +1,13 @@
<template>
<div>
<Card class="DisposalProcess" title="处置过程">
<template #title-prefix>
<ButtonGradient v-for="(item,index) of linkEvent" @click.native="eventLink(index)"
class="title-button" :style="`margin-left: ${index===0?20:10}px;padding:0px 10px;border-radius: 5px;${index===linkEventIndex?'background:#fb781b;':''}`"
>
{{item.eventNature===1?'首因事件':'关联事件'}}{{ index===0?'':(index) }}
</ButtonGradient>
</template>
<template #title-suffix>
<ButtonGradient
v-if="detailData.eventState != 2"
@ -208,6 +215,8 @@ export default {
'已续报待终报',
'重要事件已报送'
],
linkEvent:[],
linkEventIndex:0
};
},
watch: {
@ -219,7 +228,6 @@ export default {
this.options.forEach((element) => {
if (newVlaue == element.nodeNode) {
if (element.commonPhrases != "undefined") {
console.log("element", element, element.commonPhrases);
this.phrasesOptions =
element?.commonPhrases.length > 0
? element?.commonPhrases.split(",")
@ -243,6 +251,10 @@ export default {
this.getImportantStatus();
await this.disposalRecords(this.eventId);
//
//
if(this.linkEventIndex === 0){
this.getLinkEvent();
}
},
},
methods: {
@ -256,7 +268,7 @@ export default {
this.$emit("fullHeight", "CrowdnessIndicatorRankings");
},
//
//
getImportantStatus(){
getImportantFileStatus(this.eventId).then(result=>{
if (result.code === 200){
@ -264,6 +276,17 @@ export default {
};
})
},
//
getLinkEvent(){
request({
url: `/dc/system/event/getLinkEvent/${this.eventId}`,
method: "GET",
params: {},
}).then((result) => {
if (result.code != 200) return $message.error(result?.msg);
this.linkEvent = result.data
})
},
//
getProcess() {
@ -422,6 +445,11 @@ export default {
handleUpdate(val) {
this.dialogType = val;
},
//
eventLink(index){
this.linkEventIndex = index;
this.reload(this.linkEvent[this.linkEventIndex].eventId)
}
},
async mounted() {
// const self = this;
@ -446,6 +474,7 @@ export default {
.special-button {
.icon {
background-repeat: no-repeat;
background-size: 100% 100%;
width: 20px;

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

@ -58,6 +58,7 @@ export default {
detail: null,
},
detailId: "",
linkId: ""
};
},
created() {
@ -76,10 +77,14 @@ export default {
this.getDetail();
},
methods: {
getDetail() {
getDetail(eventId) {
let _id = this.detailId
if(eventId && eventId !== ''){
_id = eventId;
}
// -
request({
url: `/dc/system/event/eventSubclass/${this.detailId}`,
url: `/dc/system/event/eventSubclass/${_id}`,
method: "GET",
})
.then((result) => {

44
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/data.js

@ -2,28 +2,28 @@ import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/Pr
import { merge, cloneDeep } from "lodash";
export const searchFormList = [
{
label: "事件状态:",
key: "eventState",
type: "RadioGroup",
default: "0",
options: {
options: [
{
key: "0",
label: "未解决",
},
{
key: "1",
label: "已解决",
},
{
key: "2",
label: "已关闭",
},
],
},
},
// {
// label: "事件状态:",
// key: "eventState",
// type: "RadioGroup",
// default: "0",
// options: {
// options: [
// {
// key: "0",
// label: "未解决",
// },
// {
// key: "1",
// label: "已解决",
// },
// {
// key: "2",
// label: "已关闭",
// },
// ],
// },
// },
PresetFormItems.eventSources,
PresetFormItems.eventType,
{

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

@ -11,7 +11,7 @@
<InputSearch
ref="searchComp"
style="width: 402px"
style="width: 500px"
:formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: '0' } }"
@handleSearch="handleSearch"
@ -26,7 +26,6 @@
:cardData="item"
:isShowLeft="false"
@firstBtnClick="firstBtnClick"
@lastBtnClick="lastBtnClick"
/>
</div>
@ -45,16 +44,9 @@
</Pagination>
</div>
<EventDetailDialog
:visible="eventDetailDialogVisible"
:formData="detailDialogFormData"
@update:value="handleClose"
/>
<EventDispatchDialog
:visible="eventDispatchDialogVisible"
@update:value="handleClose"
:eventId="eventId"
/>
<!-- "详情"弹出框 -->
<EventDetailDialog :visible="eventDetailDialogVisible" :formData="detailDialogFormData" activeName="2"
@update:value="handleClose" />
</div>
</template>
@ -63,8 +55,10 @@ import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue";
import Pagination from "@screen/components/Pagination.vue";
import InputSearch from "@screen/components/InputSearch/index.vue";
import RoadStateCard from "@screen/components/RoadStateCard/index.vue";
import EventDetailDialog from "./EventDetailDialog/index";
import EventDispatchDialog from "./EventDispatchDialog/index";
import EventDetailDialog from "../event/EventDetailDialog/index.vue";
import { searchFormList } from "./data";
import request from "@/utils/request";
@ -80,7 +74,6 @@ export default {
Pagination,
RoadStateCard,
InputSearch,
EventDispatchDialog,
EventDetailDialog,
ButtonGradient,
},
@ -111,7 +104,7 @@ export default {
initData() {
request({
// url: `/dc/system/event/dispatchEventList`,
url: "/dc/system/event/list",
url: "/dc/system/event/dispatchRecordEventList",
method: "get",
params: this.searchData,
}).then((result) => {
@ -143,14 +136,12 @@ export default {
}, 100);
},
firstBtnClick(id) {
console.log("id", id);
request({
url: `/dc/system/event/${id}`,
method: "get",
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
this.detailDialogFormData = result.data;
this.eventDetailDialogVisible = true;
});
},
@ -185,7 +176,6 @@ export default {
},
handleClose() {
this.eventDetailDialogVisible = false;
this.eventDispatchDialogVisible = false;
},
},
};

231
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/index_back.vue

@ -0,0 +1,231 @@
<template>
<div class="RoadNetworkMonitoring">
<!-- 搜索栏 -->
<div class="filter">
<ButtonGradient @click="onRefreshForm" class="refresh-btn">
<template #prefix>
<img src="./images/refresh.svg" />
</template>
刷新
</ButtonGradient>
<InputSearch
ref="searchComp"
style="width: 500px"
:formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: '0' } }"
@handleSearch="handleSearch"
/>
</div>
<!-- 内容 -->
<div class="body">
<RoadStateCard
v-for="(item, index) in data"
:key="index"
:cardData="item"
:isShowLeft="false"
@firstBtnClick="firstBtnClick"
@lastBtnClick="lastBtnClick"
/>
</div>
<!-- 分页 -->
<div class="footer">
<Pagination
@current-change="initData"
@size-change="onSizeChange"
width="'100%'"
:page-sizes="[12, 16, 20, 30, 50]"
:page-size="searchData.pageSize"
:current-page.sync="searchData.pageNum"
layout="total, sizes, prev, pager, next"
:total="total"
>
</Pagination>
</div>
<EventDetailDialog
:visible="eventDetailDialogVisible"
:formData="detailDialogFormData"
@update:value="handleClose"
/>
<EventDispatchDialog
:visible="eventDispatchDialogVisible"
@update:value="handleClose"
:eventId="eventId"
/>
</div>
</template>
<script>
import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue";
import Pagination from "@screen/components/Pagination.vue";
import InputSearch from "@screen/components/InputSearch/index.vue";
import RoadStateCard from "@screen/components/RoadStateCard/index.vue";
import EventDetailDialog from "./EventDetailDialog/index";
import EventDispatchDialog from "./EventDispatchDialog/index";
import { searchFormList } from "./data";
import request from "@/utils/request";
const directionMapping = {
1: "菏泽方向",
2: "双向",
3: "济南方向",
};
export default {
name: "RoadNetworkMonitoring",
components: {
Pagination,
RoadStateCard,
InputSearch,
EventDispatchDialog,
EventDetailDialog,
ButtonGradient,
},
data() {
return {
eventDetailDialogVisible: false,
eventDispatchDialogVisible: false,
searchFormList,
detailDialogFormData: {},
total: 0,
data: [],
eventId: "0",
searchData: {
pageSize: 16,
pageNum: 1,
eventState: "0",
},
};
},
created() {
this.initData();
},
methods: {
onRefreshForm() {
this.searchData.pageNum = 1;
this.$refs.searchComp.handleResetForm();
},
initData() {
request({
// url: `/dc/system/event/dispatchEventList`,
url: "/dc/system/event/dispatchRecordEventList",
method: "get",
params: this.searchData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
this.total = result.total;
result.rows.forEach((it) => {
it.stringDirection = directionMapping[it.direction] || it.direction;
});
this.data = result.rows;
});
},
onSizeChange(pageSize) {
this.searchData.pageSize = pageSize;
this.initData();
},
getStateCardBind(item) {
const { state, textColor, text } = tabMap[this.activeName];
return {
cardData: { ...item, state },
lastBtnColor: textColor,
lastBtnText: text,
};
},
onRefresh() {
this.data = [];
setTimeout(() => {
this.initData();
}, 100);
},
firstBtnClick(id) {
request({
url: `/dc/system/event/${id}`,
method: "get",
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
this.detailDialogFormData = result.data;
this.eventDetailDialogVisible = true;
});
},
lastBtnClick(id) {
console.log(id);
this.eventDispatchDialogVisible = true;
this.eventId = id;
},
handleSearch(data) {
console.log("data", data);
let daterange = data.daterange;
let dStakeMark = data.stakeMark;
let dendStakeMark = data.endStakeMark;
let stakeMark = dStakeMark[0] ? `K${dStakeMark[0]}+${dStakeMark[1]}` : "";
let endStakeMark = dendStakeMark[0]
? `K${dendStakeMark[0]}+${dendStakeMark[1]}`
: "";
this.searchData = {
...this.searchData,
eventState: data.eventState || 0,
eventType: data.eventType,
eventSources: data.eventSources,
startTime: daterange && daterange.length > 0 ? daterange[0] : "",
endTime: daterange && daterange.length > 0 ? daterange[1] : "",
stakeMark: stakeMark,
endStakeMark: endStakeMark,
};
this.initData();
},
handleClose() {
this.eventDetailDialogVisible = false;
this.eventDispatchDialogVisible = false;
},
},
};
</script>
<style lang="scss" scoped>
.RoadNetworkMonitoring {
padding: 21px;
height: 100%;
display: flex;
flex-direction: column;
z-index: 6;
.filter {
height: 38px;
display: flex;
// justify-content: flex-end;
justify-content: space-between;
.refresh-btn {
}
}
.body {
flex: 1;
overflow: auto;
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 20px;
// grid-row-gap: 9px;
// grid-column-gap: 9px;
grid-auto-rows: min-content;
}
.footer {
margin-top: 15px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
}
}
</style>

14
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/data.js

@ -61,6 +61,17 @@ export const _formList = [
disabled: true,
placeholder: "",
},
visible: (data) => {
return (data.actionSource !== '-1');
},
},
{
label: "事件类型:",
key: "actionSource",
type: "input",
visible: (data) => {
return false;
},
},
{
label: "发生时间:",
@ -79,6 +90,9 @@ export const _formList = [
disabled: true,
placeholder: "",
},
visible: (data) => {
return (data.actionSource !== '-1');
},
},
{
label: "水膜厚度(mm):",

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

@ -5,24 +5,20 @@
}">
<Form ref="FormConfigRef" :formList="formList" :dFormData="formData" label-width="100px" />
<div class="video-pic" :style="{
height: formData.component === 'VideoMulti' ? '242px' : undefined,
}">
<component :is="formData.component" 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" />
<div class="video-pic" v-if="formData.videoList && formData.videoList.length > 0" :style="{height: formData.component === 'VideoMulti' ? '242px' : undefined,}">
<component :is="formData.component"
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" />
<component :is="formData.component" v-if="activeName != '-1'" style="height: 100%; width: 380px"
:showHeader="false" :url="formData.videoList && formData.videoList.length > 0
? formData.videoList[1]
: ''
: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="[]" />
<Carousel v-if="activeName == '-1' && formData.videoList && formData.videoList.length > 0" style="flex: 1" :videos="formData.videoList" :pictures="[]" />
<Carousel v-if="activeName == '-1' && formData.pictures && formData.pictures.length > 0" style="flex: 1" :pictures="formData.pictures" :videos="[]" />
</div>
<!-- <div>{{ formData.videoList[0] }}</div> -->
<TimeLine1 v-if="activeName == '1' || activeName == '2'" :data="timeLine1List" />
@ -344,21 +340,6 @@ export default {
// }
},
onSubmit() {
// let url = "/business/plans/list/warning/type";
// if (this.activeName == "-1") {
// url = "/business/plans/list/warning/type";
// } else {
// url = "/business/plans/list/event/type";
// }
// request({
// url: url,
// method: "post",
// data: this.formData,
// }).then((result) => {
// if (result.code != 200) return Message.error(result?.msg);
// this.info = result.data;
// this.isShowDialog = true;
// });
let reData = {
id: this.formData.id,
@ -381,11 +362,16 @@ export default {
data: reData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
else Message.success("成功");
Message.success("成功,等待跳转调度页面。");
this.modelVisible = false;
this.$emit("queryData", true);
this.$root.$emit('refresh-event');
const self = this;
setTimeout(() => {
self.$router.push(`/control/event/commandDispatch?eventId=${self.formData.id}`);
}, 300);
});
} else if (this.activeName == '0') {
request({

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

@ -177,7 +177,6 @@ export default {
result.rows.forEach(it => {
it.stringEventSource = it?.warningSource ? warningSourceMapping[it?.warningSource] : '';
it.stringDirection = gzDirectionMapping[it.direction] || it.direction;
let strSub = '';
if (it.warningSubclass && warningSubclassTypeMapping[it.warningType][it.warningSubclass] || '') {
strSub = `(${warningSubclassTypeMapping[it.warningType][it.warningSubclass] || ''})`
@ -212,13 +211,14 @@ export default {
if (this.activeName == '0') {
it.startTime = it?.occurrenceTime || '';
} else if (this.activeName == '1') {
if(it.eventNature){
it.stakeMark = it.stakeMark+'         事件性质:'+(it.eventNature===1?'首因事件':'关联管制')
}
} else if (this.activeName == '2') {
it.startTime = it?.endTime || '';
}
})
console.log("id", result.rows);
this.data = result.rows;
this.total = result.total;
});
@ -259,7 +259,6 @@ export default {
responseType: 'blob'
})
.then((res) => {
console.log(res);
const url = window.URL.createObjectURL(new Blob([res]));
let link = document.createElement("a");
link.style.display = "none";
@ -310,11 +309,12 @@ export default {
// 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.actionSource = this.activeName
data.videoType = "mp4";
data.component = "Video";
this.detailDialogFormData = data;
// console.log('data', this.detailDialogFormData)
this.eventDetailDialogVisible = true;
});
} else {
@ -330,11 +330,11 @@ export default {
data.videoList = [];
data.component = "VideoMulti";
// const { downCamera, upCamera } = ((await getNearCameraNew(data.stakeMark))?.data || {});//
// data.downCamId = downCamera?.camId;
// data.upCamId = upCamera?.camId;
data.videoType = "flv";
data.actionSource = this.activeName
this.detailDialogFormData = data;

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

@ -202,7 +202,6 @@ export default {
dcArr.push(action);
});
console.log(dcArr,'---------')
this.tableData = dcArr;
})
// console.log('secondFormData', this.secondFormData)

8
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/index.vue

@ -150,7 +150,7 @@
(itm.netWorkStatus ? '' : 'c-namer')
"
>
{{ itm.switchName }}({{ index + 1 }})
{{ itm.switchName }}
</div></el-tooltip
>
@ -561,9 +561,9 @@ export default {
margin-top: -5px;
font-size: 14px;
border: 0px !important;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
// white-space: nowrap;
// overflow: hidden;
// text-overflow: ellipsis;
}
.c-namer {
background: linear-gradient(

9
ruoyi-ui/vue.config.js

@ -37,17 +37,12 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `http://127.0.0.1:8080`,
// target: `http://10.168.66.196:8080`,
// target: `http://10.168.77.128:8080`,
// target: `http://192.168.0.182:8080`,
// target: `http://192.168.0.194:8080`,
// target: `http://10.0.81.201:8080`,
// target: `http://10.168.66.196:8087`, //刘文阁
// target: `http://10.168.68.42:8087`, //王思祥
// target: `http://10.168.72.174:8087`, //赵祥龙
// target: `http://10.168.65.156:8097`, //孟凡峰
target: `http://10.168.76.181:8089`, //王家宝
// target: `http://10.168.77.128:8087`, //王兴琳
// target: `http://10.168.76.181:8089`, //王家宝
target: `http://10.168.77.128:8087`, //王兴琳
changeOrigin: true,
pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "",

Loading…
Cancel
Save