20 changed files with 2457 additions and 1514 deletions
@ -1,152 +1,157 @@ |
|||
import { publishToBoard, saveBoardReleaseLog } from '@/api/board/board' |
|||
import moment from 'moment/moment'; |
|||
import store from '@/store' |
|||
export default{ |
|||
data(){ |
|||
return { |
|||
import { publishToBoard, saveBoardReleaseLog } from "@/api/board/board"; |
|||
import moment from "moment/moment"; |
|||
import store from "@/store"; |
|||
import { Message } from "element-ui"; |
|||
export default { |
|||
data() { |
|||
return {}; |
|||
}, |
|||
methods: { |
|||
// 新增待下发
|
|||
____onAddDeviceItem() { |
|||
let arr = this.selectedSize.split("*"); |
|||
|
|||
} |
|||
}, |
|||
methods:{ |
|||
// 新增待下发
|
|||
____onAddDeviceItem() { |
|||
let arr = this.selectedSize.split("*"); |
|||
|
|||
this.editDialog = { |
|||
visible: true, |
|||
mode: "add", |
|||
type: "device", |
|||
tpl: { |
|||
"textContent": "", |
|||
"origin": { |
|||
displayAreaWidth: +arr[0], |
|||
displayAreaHeight: +arr[1] |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
// 从模板新增待下发
|
|||
____onTplToDevice(item, showDialog) { |
|||
|
|||
// if(this.checkedDeviceIds.length<=0){
|
|||
// this.$message.warning('未选择设备!');
|
|||
// return;
|
|||
// }
|
|||
|
|||
let arr = this.selectedSize.split("*"); |
|||
item.origin = { |
|||
displayAreaWidth: +arr[0], |
|||
displayAreaHeight: +arr[1] |
|||
} |
|||
|
|||
this.editDialog = { |
|||
visible: showDialog == false ? false : true, |
|||
mode: "toDevice", |
|||
type: "template", |
|||
tpl: item |
|||
} |
|||
this.editDialog = { |
|||
visible: true, |
|||
mode: "add", |
|||
type: "device", |
|||
tpl: { |
|||
textContent: "", |
|||
origin: { |
|||
displayAreaWidth: +arr[0], |
|||
displayAreaHeight: +arr[1], |
|||
}, |
|||
}, |
|||
// 发布信息
|
|||
____publishInfo() { |
|||
let deviceList = []; |
|||
if (this.selectedDevice){ |
|||
deviceList = [this.selectedDevice]; |
|||
}else{ |
|||
deviceList = this.selectedDevices; |
|||
} |
|||
this.$confirm('是否确定发布情报板?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
|
|||
let loading = this.$loading({ |
|||
lock: true, |
|||
text: 'Loading', |
|||
spinner: 'el-icon-loading', |
|||
background: 'rgba(0, 0, 0, 0.7)' |
|||
}) |
|||
}; |
|||
}, |
|||
// 从模板新增待下发
|
|||
____onTplToDevice(item, showDialog) { |
|||
// if(this.checkedDeviceIds.length<=0){
|
|||
// this.$message.warning('未选择设备!');
|
|||
// return;
|
|||
// }
|
|||
|
|||
let content = []; |
|||
let arr = this.selectedSize.split("*"); |
|||
item.origin = { |
|||
displayAreaWidth: +arr[0], |
|||
displayAreaHeight: +arr[1], |
|||
}; |
|||
|
|||
this.selectedBdMsg.forEach(item => { |
|||
content.push({ |
|||
STAY: item.playbackDuration, |
|||
ACTION: item.screenEntryMethod, |
|||
SPEED: item.fontSpacing || 0, |
|||
COLOR: item.foregroundColor, |
|||
FONT: item.font, |
|||
FONT_SIZE: item.fontSize, |
|||
CONTENT: item.textContent.replaceAll(',', '\\,').replaceAll('=', '\\=').replaceAll('\n', '\\\\n'), |
|||
width: item.displayAreaWidth, |
|||
height: item.displayAreaHeight, |
|||
formatStyle: item.verticalAlignment |
|||
}) |
|||
}) |
|||
this.editDialog = { |
|||
visible: showDialog == false ? false : true, |
|||
mode: "toDevice", |
|||
type: "template", |
|||
tpl: item, |
|||
}; |
|||
}, |
|||
// 发布信息
|
|||
____publishInfo() { |
|||
let deviceList = []; |
|||
if (this.isMultiControl && !this.selectItems.length) { |
|||
return Message.error("请至少选择一个设备!"); |
|||
} |
|||
const selectItems = this.selectItems.map((item) => JSON.parse(item)); |
|||
if (this.isMultiControl) deviceList = selectItems; |
|||
else { |
|||
if (this.selectedDevice) deviceList = [this.selectedDevice]; |
|||
else deviceList = this.selectedDevices; |
|||
} |
|||
|
|||
let data = { content: content, deviceList } |
|||
this.$confirm("是否确定发布情报板?", "提示", { |
|||
confirmButtonText: "确定", |
|||
cancelButtonText: "取消", |
|||
type: "warning", |
|||
}) |
|||
.then(() => { |
|||
let loading = this.$loading({ |
|||
lock: true, |
|||
text: "Loading", |
|||
spinner: "el-icon-loading", |
|||
background: "rgba(0, 0, 0, 0.7)", |
|||
}); |
|||
|
|||
if (IS_TESTING) { |
|||
// this.saveLog(content);
|
|||
this.____getDeviceInfo(); |
|||
loading.close() |
|||
let content = []; |
|||
|
|||
} else { |
|||
publishToBoard(data).then(res => { |
|||
// this.saveLog(content);
|
|||
this.$message({ |
|||
type:"success", |
|||
message:"发布成功!" |
|||
}); |
|||
this.____getDeviceInfo(); |
|||
}).catch(err=>{ |
|||
this.selectedBdMsg.forEach((item) => { |
|||
content.push({ |
|||
STAY: item.playbackDuration, |
|||
ACTION: item.screenEntryMethod, |
|||
SPEED: item.fontSpacing || 0, |
|||
COLOR: item.foregroundColor, |
|||
FONT: item.font, |
|||
FONT_SIZE: item.fontSize, |
|||
CONTENT: item.textContent |
|||
.replaceAll(",", "\\,") |
|||
.replaceAll("=", "\\=") |
|||
.replaceAll("\n", "\\\\n"), |
|||
width: item.displayAreaWidth, |
|||
height: item.displayAreaHeight, |
|||
formatStyle: item.verticalAlignment, |
|||
}); |
|||
}); |
|||
|
|||
}).finally(()=>{ |
|||
loading.close() |
|||
}); |
|||
} |
|||
let data = { content: content, deviceList }; |
|||
|
|||
}).catch(() => { |
|||
if (IS_TESTING) { |
|||
// this.saveLog(content);
|
|||
this.____getDeviceInfo(); |
|||
loading.close(); |
|||
} else { |
|||
publishToBoard(data) |
|||
.then((res) => { |
|||
// this.saveLog(content);
|
|||
this.$message({ |
|||
type: 'info', |
|||
message: '取消发布' |
|||
}) |
|||
}) |
|||
|
|||
}, |
|||
//
|
|||
saveLog(content){ |
|||
let time = moment().format("YYYY-MM-DD HH:mm:ss"); |
|||
let device = this.selectedDevices; |
|||
let data = { |
|||
"createBy": store.getters.name, |
|||
"createTime": time, |
|||
"deviceId": device.id, |
|||
"deviceName": device.deviceName, |
|||
"direction": device.direction, |
|||
"params": {}, |
|||
"platform": "", |
|||
"releaseContent": JSON.stringify(content), |
|||
"releaseDeptId": "", |
|||
"releaseDeptName": "", |
|||
"releaseIp": "", |
|||
"releaseStatus": "", |
|||
"releaseTime": time, |
|||
"releaseUserId": "", |
|||
"releaseUserName": "", |
|||
"remark": "", |
|||
"searchValue": "", |
|||
"stakeMark": device.stakeMark, |
|||
"updateBy": "", |
|||
"updateTime": time |
|||
} |
|||
saveBoardReleaseLog(data).then(res => { |
|||
if(res.code==200){ |
|||
console.log("情报板日志已保存:::" , data); |
|||
}else{ |
|||
console.log("情报板日志保存失败!"); |
|||
} |
|||
}) |
|||
type: "success", |
|||
message: "发布成功!", |
|||
}); |
|||
!isMultiControl && this.____getDeviceInfo(); |
|||
}) |
|||
.catch((err) => {}) |
|||
.finally(() => { |
|||
loading.close(); |
|||
}); |
|||
} |
|||
}) |
|||
.catch(() => { |
|||
this.$message({ |
|||
type: "info", |
|||
message: "取消发布", |
|||
}); |
|||
}); |
|||
}, |
|||
//
|
|||
saveLog(content) { |
|||
let time = moment().format("YYYY-MM-DD HH:mm:ss"); |
|||
let device = this.selectedDevices; |
|||
let data = { |
|||
createBy: store.getters.name, |
|||
createTime: time, |
|||
deviceId: device.id, |
|||
deviceName: device.deviceName, |
|||
direction: device.direction, |
|||
params: {}, |
|||
platform: "", |
|||
releaseContent: JSON.stringify(content), |
|||
releaseDeptId: "", |
|||
releaseDeptName: "", |
|||
releaseIp: "", |
|||
releaseStatus: "", |
|||
releaseTime: time, |
|||
releaseUserId: "", |
|||
releaseUserName: "", |
|||
remark: "", |
|||
searchValue: "", |
|||
stakeMark: device.stakeMark, |
|||
updateBy: "", |
|||
updateTime: time, |
|||
}; |
|||
saveBoardReleaseLog(data).then((res) => { |
|||
if (res.code == 200) { |
|||
console.log("情报板日志已保存:::", data); |
|||
} else { |
|||
console.log("情报板日志保存失败!"); |
|||
} |
|||
} |
|||
} |
|||
}); |
|||
}, |
|||
}, |
|||
}; |
|||
|
@ -0,0 +1,359 @@ |
|||
export const tabList = { |
|||
1: [ |
|||
{ |
|||
name: "基本信息", |
|||
key: "first", |
|||
labelWidth: "70px", |
|||
list: [ |
|||
{ |
|||
label: "站点名称", |
|||
key: "facilityName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "管制类型", |
|||
key: "controlType", |
|||
enum: "controlType", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "收费站总人数", |
|||
key: "stationTotal", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "所在城市", |
|||
key: "prefectureCity", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "所在桩号", |
|||
key: "stakeMark", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "收费站类型", |
|||
key: "stationType", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "经度", |
|||
key: "longitude", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "纬度", |
|||
key: "latitude", |
|||
gridColumn: "3", |
|||
}, |
|||
], |
|||
}, |
|||
{ |
|||
name: "车道信息", |
|||
key: "second", |
|||
labelWidth: "142px", |
|||
list: [ |
|||
{ |
|||
label: "收费站总车道数", |
|||
key: "stationLaneNumber", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "收费广场数量", |
|||
key: "stationSquareNumber", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "mtc车道数(入口)", |
|||
key: "mtcEntrance", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "mtc车道专用(出口)", |
|||
key: "mtcExport", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "etc车道数(入口)", |
|||
key: "etcEntrance", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "etc车道专用(出口)", |
|||
key: "etcExport", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "小计(入口)总车道数", |
|||
key: "countEntrance", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "小计(出口)总车道数", |
|||
key: "countExport", |
|||
gridColumn: "3", |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
2: [ |
|||
{ |
|||
name: "基本信息", |
|||
key: "first", |
|||
labelWidth: "70px", |
|||
list: [ |
|||
{ |
|||
label: "桥梁名称", |
|||
key: "facilityName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "桥梁桩号", |
|||
key: "stakeMark", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "路段名称", |
|||
key: "sectionName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "路线编码", |
|||
key: "routeCode", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "跨径组合", |
|||
key: "spanCombination", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "技术等级", |
|||
key: "technicalLevel", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "桥梁长度", |
|||
key: "bridgeLength", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "桥梁宽度", |
|||
key: "bridgeWidth", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "集团公司", |
|||
key: "groupCompany", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "管养公司", |
|||
key: "maintenanceAndOperatingCompany", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "功能名称", |
|||
key: "functionName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "桥梁方向", |
|||
key: "bridgeDirection", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "是否子桥", |
|||
key: "subBridge", |
|||
enum: "boolType", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "总跨径", |
|||
key: "totalSpan", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "经度", |
|||
key: "longitude", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "纬度", |
|||
key: "latitude", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "跨越类型", |
|||
key: "crossingType", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "最大跨径", |
|||
key: "maximumSpan", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "通车时间", |
|||
key: "openingTime", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "跨径类型名称", |
|||
key: "spanTypeName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "跨域结构名称", |
|||
key: "crossDomainStructureName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "上部结构名称", |
|||
key: "superstructureName", |
|||
gridColumn: "3", |
|||
}, |
|||
|
|||
{ |
|||
label: "分中心全称", |
|||
key: "branchCenterFullName", |
|||
gridColumn: "3", |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
4: [ |
|||
{ |
|||
name: "基本信息", |
|||
key: "first", |
|||
labelWidth: "70px", |
|||
list: [ |
|||
{ |
|||
label: "立交名称", |
|||
key: "facilityName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "方向数量", |
|||
key: "interchangeCount", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "北方方向", |
|||
key: "northDirection", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "北方道路", |
|||
key: "northernRoad", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "南方方向", |
|||
key: "southDirection", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "南方道路", |
|||
key: "southernRoad", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "东方方向", |
|||
key: "eastDirection", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "东方道路", |
|||
key: "eastRoad", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "西方方向", |
|||
key: "westDirection", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "西方道路", |
|||
key: "westRoad", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "经度", |
|||
key: "longitude", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "纬度", |
|||
key: "latitude", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "方向类型", |
|||
key: "directionType", |
|||
gridColumn: "3", |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
6: [ |
|||
{ |
|||
name: "简介", |
|||
key: "first", |
|||
labelWidth: "82px", |
|||
list: [ |
|||
{ |
|||
label: "服务区名称", |
|||
key: "facilityName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "位置桩号", |
|||
key: "stakeMark", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "服务区状态", |
|||
key: "serviceState", |
|||
enum: "controlType", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "服务类别", |
|||
key: "serviceType", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "经度", |
|||
key: "longitude", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "纬度", |
|||
key: "latitude", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "所在城市", |
|||
key: "location", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "所在区县", |
|||
key: "districtName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "方向名称", |
|||
key: "directionName", |
|||
gridColumn: "3", |
|||
}, |
|||
{ |
|||
label: "简介", |
|||
key: "introduction", |
|||
gridColumn: "6", |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
}; |
@ -0,0 +1,122 @@ |
|||
<template> |
|||
<Dialog v-model="obverseVisible" :title="dialogData._itemData && dialogData._itemData.title" width="500px" top="10%"> |
|||
<div class="RoadNetworkFacilities"> |
|||
<div class="header"> |
|||
<Video class="video-stream" :pileNum="dialogData.stakeMark" :showHeader="false" /> |
|||
</div> |
|||
|
|||
<div class="SolarEnergy"> |
|||
<ElTabs v-model="activeName" class="tabs"> |
|||
<ElTabPane v-for="item in formList" :key="item.key" :label="item.name" :name="item.key"> |
|||
<Descriptions :labelWidth="item.labelWidth" :list="item.list" :data="data" style="gap: 12px" column="6" /> |
|||
</ElTabPane> |
|||
</ElTabs> |
|||
</div> |
|||
|
|||
</div> |
|||
</Dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import Dialog from "@screen/components/Dialog/index.vue"; |
|||
import Descriptions from "@screen/components/Descriptions.vue"; |
|||
// import { getRoadInfoByStakeMark, getProduct } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js" |
|||
import Video from "@screen/components/VideoMulti"; |
|||
import request from "@/utils/request"; |
|||
import { dialogDelayVisible } from "./../mixin"; |
|||
import { tabList } from './data' |
|||
|
|||
// 所有交通事件的详情 |
|||
export default { |
|||
name: "RoadNetworkFacilities", |
|||
mixins: [dialogDelayVisible], |
|||
components: { |
|||
Dialog, |
|||
Descriptions, |
|||
Video, |
|||
}, |
|||
data() { |
|||
return { |
|||
tabList, |
|||
activeName: "first", |
|||
deviceControlVisible: false, |
|||
data: { |
|||
deviceType: "行车诱导", |
|||
deviceStation: "k094+079", |
|||
roadName: "G35济泽高速", |
|||
direction: "1", |
|||
deviceState: "0", |
|||
deviceVendors: "XXX厂家", |
|||
}, |
|||
formList: [] |
|||
}; |
|||
}, |
|||
async created() { |
|||
let dData = { ...this.dialogData }; |
|||
this.formList = tabList[dData.facilityType] |
|||
|
|||
if(dData.facilityType) |
|||
if (dData.otherConfig) { |
|||
let otherConfig = JSON.parse(dData.otherConfig); |
|||
dData.latitude = otherConfig.dimension |
|||
dData = { ...dData, ...otherConfig } |
|||
} |
|||
this.data = dData; |
|||
// console.log('this.data', this.data) |
|||
}, |
|||
methods: { |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.RoadNetworkFacilities { |
|||
width: 456px; |
|||
color: #fff; |
|||
display: flex; |
|||
flex-direction: column; |
|||
gap: 12px; |
|||
|
|||
.camera-video { |
|||
flex: 1.5; |
|||
} |
|||
|
|||
.header { |
|||
display: flex; |
|||
justify-content: center; |
|||
|
|||
>div.video-stream { |
|||
height: 255px; |
|||
} |
|||
} |
|||
|
|||
.tabs { |
|||
flex: 1; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
::v-deep { |
|||
.el-tabs__content { |
|||
flex: 1; |
|||
|
|||
.el-tab-pane { |
|||
height: 100%; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.bottom { |
|||
margin-top: 12px; |
|||
display: flex; |
|||
gap: 9px; |
|||
align-items: center; |
|||
justify-content: end; |
|||
|
|||
>div { |
|||
font-size: 16px; |
|||
padding: 6px 12px; |
|||
} |
|||
} |
|||
} |
|||
</style> |
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,39 @@ |
|||
|
|||
import request from '@/utils/request' |
|||
|
|||
export function addTaskRequest(devices, params, others) { |
|||
let data = { |
|||
...others, |
|||
devices: devices, |
|||
"functions": [ |
|||
{ |
|||
"functionId": "11", |
|||
"params": { |
|||
"size": "65535", |
|||
"fileName": "play012.lst" |
|||
} |
|||
}, |
|||
{ |
|||
"functionId": "13", |
|||
"params": params |
|||
}, |
|||
{ |
|||
"functionId": "1B", |
|||
"params": { |
|||
"fileId": "12" |
|||
} |
|||
} |
|||
|
|||
] |
|||
} |
|||
// console.log(JSON.stringify(data));
|
|||
return request({ |
|||
// url: '/business/board/batch/publish',
|
|||
url: `/business/dcBatchFunctionsJob`, |
|||
method: 'post', |
|||
// data: data
|
|||
data |
|||
}) |
|||
} |
|||
|
|||
|
Loading…
Reference in new issue