This commit is contained in:
chengdandan 2025-08-15 16:43:16 +08:00
parent 2d4337a2b4
commit 93979549ad
6 changed files with 338 additions and 80 deletions

Binary file not shown.

View File

@ -122,7 +122,7 @@ export function deviceStatus(data) {
}
})
}
//节目单接口旧
export function infoBoardTemplateList(data) {
return request({
url: '/json/iot/infoBoardTemplateList',
@ -133,6 +133,19 @@ export function infoBoardTemplateList(data) {
}
})
}
//节目单接口
export function getProgramTree(data) {
return request({
url: `/iotApi/informationPublish/program/getProgramTree`,
method: "post",
data: data,
headers:{
'Content-Type':'application/json',
}
});
}
export function warnList(data) {
return request({
url: '/json/warn/warnList',

View File

@ -503,6 +503,13 @@ export default {
item.imgUrl = imgForm['urls'][j.command]
}
})
}else if(that.dataForm.deviceType == '11'){
let imgForm = window.config.drapLeftElMap[that.dataForm.deviceType];
that.componentsList.forEach(item=>{
if(item.deviceId == that.dataForm.deviceId){
item.imgUrl = imgForm['urls'][j.command]
}
})
}else if(that.dataForm.deviceType == '40' || that.dataForm.deviceType == '41' || that.dataForm.deviceType == '42'){
that.iotKeyData = [];
const str1 = that.dataForm.iotKey.split('|');

View File

@ -502,15 +502,18 @@ export default {
1: {
left: 'K30+600',
right: 'K34+800',
length1: '4000',
length2: '2616',
// length1: '4000',
// length2: '2616',
length1: '2616',
length2: '2606',
width: 3436,
pileNumData: ['K31+294', 'K33+916'],
},
2: {
left: 'K58+176',
right: 'K60+976',
length1: '2800',
// length1: '2800',
length1: '2200',
length2: '2200',
width: 3436,
pileNumData: ['K58+476', 'K60+676'],

View File

@ -753,7 +753,7 @@
<p style="font-size: 16px; font-weight: bold; color: #b3ddef">
{{ filedFomatter(item1, deviceTypeList) }}控制
</p>
<div
<!-- <div
style="
padding-left: 10px;
line-height: 25px;
@ -764,13 +764,6 @@
<p v-for="item in planDetailMap[item1]" :key="item.id">
{{ filedFomatter(item.direction, directionList) }}
{{ item.id }}{{ item.pileNum }}
<!-- 指令:
<span style="color: #ee9837">{{filedFomatter(item.cmd,taskEnum[item1].taskList)}}</span>
<span style="margin-left: 10px" v-show="item.ret != undefined">
状态:
<span v-if="item.ret == -1 || item.ret == null">执行中</span>
<span style="color: #12b76d" v-else>{{filedFomatter(item.ret,taskEnum[item1].taskList)}}</span>
</span>-->
</p>
<el-select
@ -789,7 +782,36 @@
>
</el-option>
</el-select>
</div>
</div> -->
<!-- <el-tree
class="filter-tree"
:data="treeData"
:props="defaultProps"
default-expand-all
:filter-node-method="filterNode"
ref="tree"
show-checkbox
@check-change="handleCheckChange"
v-model="textInfoList"
>
<span class="custom-tree-node" slot-scope="{ node, data }">
<el-tooltip :content="node.label" placement="top">
<span class="label">{{ node.label }}</span>
</el-tooltip>
<span style="color: #a8a8a8; font-size: 12px"
v-if="node.displaySize">宽高:{{ node.displaySize }}
字体大小:{{ node.fontSize }}
字体颜色:{{node.fontColor}}</span>
<div class="icon">
<i
class="el-icon-plus node-actions"
:style="node.level == 1 ? 'display:none' : ''"
@click.self="handleAddToTable(node, data)"
></i>
</div>
</span>
</el-tree> -->
</div>
<div v-else>
<p style="font-size: 16px; font-weight: bold; color: #b3ddef">
@ -1450,8 +1472,7 @@
:label="item.id"
v-for="item in taskList"
:key="item.id"
>{{ item.name }}</el-radio
>
>{{ item.name }}</el-radio>
</el-radio-group>
</el-col>
</el-row>
@ -1479,29 +1500,51 @@
<p style="float: left"><el-radio v-model="dataFormBody.templateId" :label="item.id"><span></span></el-radio></p><p style="float: left" @input="addComment($event,item)" v-html="item.templateHtml"></p>
</div>
</div>-->
<el-checkbox-group v-model="textInfoList">
<!-- <el-checkbox-group v-model="textInfoList">
<div
v-for="item in infoBoardTemplateList"
:key="item.id"
:key="item.programId"
style="margin-bottom: 5px"
>
<el-checkbox :label="item.id">
<el-checkbox :label="item.programId">
<span
@input="addComment($event, item)"
v-html="item.templateHtml"
></span
><br />
<span style="color: #a8a8a8; font-size: 12px"
>:{{ item.cmsWidth }} :{{
item.cmsHeight
}}
>宽高:{{ item.displaySize }}
字体大小:{{ item.fontSize }} 字体颜色:{{
item.fontColor
}}</span
>
</el-checkbox>
</div>
</el-checkbox-group>
</el-checkbox-group> -->
<el-tree
class="filter-tree"
:data="treeData"
:props="defaultProps"
:filter-node-method="filterNode"
ref="tree"
show-checkbox
@check-change="handleCheckChange"
v-model="textInfoList"
@check="handleCheck"
>
<div class="custom-tree-node" slot-scope="{ node, data }">
<el-tooltip :content="node.label" placement="top">
<span class="label" v-if="node.level === 1">{{ data.name }}</span>
<span class="label" v-if="node.level !== 1">{{ data.content }}</span>
</el-tooltip>
<br />
<span style="color: #a8a8a8; font-size: 12px"
v-if="node.level !== 1">高宽:{{ data.displaySize }}
字体大小:{{ data.fontSize }} 字体颜色:{{getColor(data.fontColor)}}</span>
</div>
</el-tree>
</el-col>
</el-row>
</div>
@ -1927,7 +1970,7 @@
<p style="float: left"><el-radio v-model="dataFormBody.templateId" :label="item.id"><span></span></el-radio></p><p style="float: left" @input="addComment($event,item)" v-html="item.templateHtml"></p>
</div>
</div>-->
<el-checkbox-group v-model="textInfoList">
<!-- <el-checkbox-group v-model="textInfoList">
<div
v-for="item in infoBoardTemplateList"
:key="item.id"
@ -1946,11 +1989,10 @@
}}
字体大小:{{ item.fontSize }} 字体颜色:{{
item.fontColor
}}</span
>
}}</span>
</el-checkbox>
</div>
</el-checkbox-group>
</el-checkbox-group> -->
</el-col>
</el-row>
</div>
@ -2116,8 +2158,7 @@
background: #2b6bb6;
margin: 7px 5px 0 0;
"
></span
>批量控制
></span>批量控制
<el-button
type="primary"
@click="handleCommitClick(1)"
@ -2172,7 +2213,7 @@
<p style="float: left"><el-radio v-model="dataFormBody.templateId" :label="item.id"><span></span></el-radio></p><p style="float: left" @input="addComment($event,item)" v-html="item.templateHtml"></p>
</div>
</div>-->
<el-checkbox-group v-model="textInfoList">
<!-- <el-checkbox-group v-model="textInfoList">
<div
v-for="item in infoBoardTemplateList"
:key="item.id"
@ -2194,7 +2235,32 @@
>
</el-checkbox>
</div>
</el-checkbox-group>
</el-checkbox-group> -->
<el-tree
class="filter-tree"
:data="treeData"
:props="defaultProps"
:filter-node-method="filterNode"
ref="tree"
show-checkbox
@check-change="handleCheckChange"
v-model="textInfoList"
@check="handleCheck"
>
<div class="custom-tree-node" slot-scope="{ node, data }">
<el-tooltip :content="node.label" placement="top">
<span class="label" v-if="node.level === 1">{{ data.name }}</span>
<span class="label" v-if="node.level !== 1">{{ data.content }}</span>
</el-tooltip>
<br />
<span style="color: #a8a8a8; font-size: 12px;"
v-if="node.level !== 1">高宽:{{ data.displaySize }} </span>
<span style="color: #a8a8a8; font-size: 12px;" v-if="node.level !== 1">
大小:{{ data.fontSize }} 颜色:{{getColor(data.fontColor)}}</span>
</div>
</el-tree>
</el-col>
</el-row>
</div>
@ -2256,6 +2322,7 @@ import {
planDetail,
planExecute,
verify,
getProgramTree
} from '../../api'
import { tunnelLeftList, tunnelRightList } from '../../utils/pathJson'
@ -2271,6 +2338,8 @@ export default {
area: '2',
editable: '2',
},
treeData: [],
filterText: "",
areaList: window.config.areaList,
deviceTypeList: window.config.deivceTypeList,
deviceTypeList1: [
@ -2301,19 +2370,22 @@ export default {
warnTypeList: window.config.warnTypeList,
warnStatusList: window.config.warnStatusList,
deviceBarTypeList: [
{ id: '15', name: '情报板1' },
{ id: '15', name: '情报板' },
{ id: '11', name: '风机' },
{ id: '13', name: '车道指示灯' },
{ id: '14', name: '交通信号灯' },
{ id: '19', name: '卷帘门' },
/*{id: '16', name: '报警器'},*/ {
id: '17',
name: '广播电话系统',
url: window.config.typeUrlLink['17'],
},
{ id: '12', name: '照明系统', url: window.config.typeUrlLink['12'] },
{ id: '40', name: '消防泵房' },
{ id: '41', name: '污水泵房' },
/*{id: '16', name: '报警器'},*/
// {
// id: '17',
// name: '广',
// url: window.config.typeUrlLink['17'],
// },
// { id: '12', name: '', url: window.config.typeUrlLink['12'] }
// ,
],
taskEnum: window.config.taskEnum,
totalWidth: 1562,
totalHeight: 560,
@ -2343,8 +2415,10 @@ export default {
1: {
left: 'K30+600',
right: 'K34+800',
length1: '4000',
length2: '2616',
// length1: '4000',
// length2: '2616',
length1: '2616',
length2: '2606',
width: 5000,
pileNumData: ['K31+294', 'K33+916'],
n: 10,
@ -2352,7 +2426,8 @@ export default {
2: {
left: 'K58+176',
right: 'K60+976',
length1: '2800',
// length1: '2800',
length1: '2200',
length2: '2200',
width: 5000,
pileNumData: ['K58+476', 'K60+676'],
@ -2389,7 +2464,7 @@ export default {
pileNumList: [],
deviceForm: {},
warnShow: false,
warnShow: true,
planShow: false,
planList: [],
planDetailShow: false,
@ -2419,7 +2494,15 @@ export default {
tempMap: {},
controlShow: false,
multipleSelection: [],
warnList: [],
warnList: [{
id:'1',
status:1,
type:''
},{
id:'2',
status:2,
type:''
}],
componentsWarnList: [],
statusTimer: null,
deviceLoading: false,
@ -2440,6 +2523,13 @@ export default {
planLoading: false,
planSuccess: false,
planDeviceType: ['14', '13', '11', '15', '19'],
defaultProps: {
children: "children",
label: "name",
name:"name",
content: "content",
// displaySize: "displaySize",
},
listMedia: [
/*{
id:20,
@ -2649,21 +2739,23 @@ export default {
// console.log(item,item.direction,'xxxxxxxxxx')
if(item.direction == 2){ //
if(item.rotationDirection == null || item.rotationDirection == '正转'){
json.imgUrl = './lib/icon/112.gif'
}else if(item.rotationDirection == '反转'){
json.imgUrl = './lib/icon/111.gif'
}else if(item.rotationDirection == '反转'){
json.imgUrl = './lib/icon/112.gif'
} else if(item.rotationDirection == '停止'){
json.imgUrl = './lib/icon/11.png'
}
console.log("json.imgUrl",json.imgUrl)
}else if(item.direction == 1){ //
if(item.rotationDirection == null || item.rotationDirection == '正转'){
json.imgUrl = './lib/icon/112.gif'
}else if(item.rotationDirection == '反转'){
json.imgUrl = './lib/icon/111.gif'
}else if(item.rotationDirection == '反转'){
json.imgUrl = './lib/icon/112.gif'
} else if(item.rotationDirection == '停止'){
json.imgUrl = './lib/icon/11.png'
}
console.log("json.imgUrl",json.imgUrl)
}
}
//
@ -2926,6 +3018,7 @@ export default {
} else if (item.deviceType == '15' && item.modelId) {
if (j.body) {
j.dataFormBody = JSON.parse(j.body)
console.log("j.dataFormBody",j.dataFormBody)
that.loadinfoBoardTemplate(
3,
j.dataFormBody.textInfoList,
@ -3315,6 +3408,18 @@ export default {
}
})*/
},
handleCheckChange(data, checked, indeterminate) {
console.log(data, checked, indeterminate);
// this.addComment(data,data.programId)
},
handleCheck(checkedNodes) {
console.log(checkedNodes, "cscscscs");
// checkedKeys
// this.textInfoList = checkedNodes.push() // checkedKeysid
this.textInfoList.push(checkedNodes.programId)
console.log(this.textInfoList, "cscscscs");
},
loadWarnMarker(data) {
var that = this
that.componentsWarnList = []
@ -3770,8 +3875,10 @@ export default {
// 13
console.log('1111111111111111111111111', that.dataForm.deviceType)
if (that.dataForm.deviceType == '15') {
console.log("that.dataFormBody",that.dataFormBody)
if (that.dataForm.task) {
var j = JSON.parse(that.dataForm.task)
console.log("j.dataFormBody",j.dataFormBody)
that.$set(that.dataForm, 'taskName', j.command)
if (j.body) {
j.dataFormBody = JSON.parse(j.body)
@ -4068,7 +4175,7 @@ export default {
}
if (that.dataForm.deviceType == '15') {
//that.loadinfoBoardTemplate(1,j.dataFormBody.textInfoList);
// that.loadinfoBoardTemplate(1,j.dataFormBody.textInfoList);
} else if (that.dataForm.deviceType == '26') {
that.dataForm.speed26 = j.speed
that.dataForm.direction26 = j.direction == '0' ? '正向' : '反向'
@ -4202,12 +4309,55 @@ export default {
})
},
loadinfoBoardTemplate(index, list, modelId) {
console.log("index",index)
var that = this
getProgramTree({ name: this.filterText }).then((res) => {
console.log("this.treeData",res.data.data)
console.log("res.code",res.data.code)
if (res.data.code == 200) {
console.log("this.treeData",res.data.data)
res.data.data.forEach((item) => {
// this.count += item.children.length;
if (item.children) {
item.children.forEach((child) => {
if (child.dynamicValueNum > 0) {
console.log("大于0");
for (let i = 0; i < child.dynamicValueNum; i++) {
child["contentValue" + (i + 1)] =
child.dynamicValueList.length > 0
? child.dynamicValueList[i]
: "";
}
}
});
}
});
// this.treeData = res.data;
this.treeData = res.data.data;
// this.infoBoardTemplateList = res.data.data
console.log("this.treeData",this.treeData)
this.infoBoardTemplateList = []
const newArray = res.data.data.flatMap(item => item.children);
console.log("newArray",newArray)
this.infoBoardTemplateList = newArray
// res.data.data.forEach((item, i) => {
//
// var form = {
// ...item,
// templateHtml: that.domRender(item.textInfo),
// }
// that.infoBoardTemplateList.push(form)
// })
}
});
infoBoardTemplateList().then((res) => {
if (res.status == 200) {
if (res.data.retCode == 0) {
if (index == 1) {
that.templateHtmlList = []
console.log("res.data.result111111111111",res.data.result)
res.data.result.forEach((item, i) => {
list.forEach((item1) => {
if (item.id == item1.id) {
@ -4295,7 +4445,7 @@ export default {
that.templateDisplay(0) //
}
} else if (index == 2) {
that.infoBoardTemplateList = res.data.result
// that.infoBoardTemplateList = res.data.result
} else if (index == 3) {
that.templateHtmlList = []
res.data.result.forEach((item, i) => {
@ -4346,14 +4496,14 @@ export default {
that.templateDisplay(0, 3) //
}
} else {
that.infoBoardTemplateList = []
res.data.result.forEach((item, i) => {
var form = {
...item,
templateHtml: that.domRender(item.textInfo),
}
that.infoBoardTemplateList.push(form)
})
// that.infoBoardTemplateList = []
// res.data.result.forEach((item, i) => {
// var form = {
// ...item,
// templateHtml: that.domRender(item.textInfo),
// }
// that.infoBoardTemplateList.push(form)
// })
}
} else {
that.$message.warning(res.data.message)
@ -4373,6 +4523,29 @@ export default {
that.tempTimer = setTimeout(() => {
that.templateDisplay(nextIndex, m) //
}, nextTime)
},
handleAddToTable(node, data) {
console.log("添加至表格", node, data);
// let exists = this.tableData.find(
// (obj) => obj.programId === node.data.programId
// );
// if (exists) return this.$message("");
// this.tableData.push(data);
// console.log("", this.tableData);
},
filterNode(value, data) {
console.log(value, data);
if (!value) return true;
return data.name.indexOf(value) !== -1;
},
getColor(value){
if(value =="#7b5ba1"){
return '红'
}else if(value =="#008000"){
return '绿'
}else if(value =="#FFFF00"){
return '黄'
}
},
addComment(event, row) {
this.tempMap[row.id] = {
@ -4544,10 +4717,14 @@ export default {
let checkArr = [] //
if(that.textInfoList.length > 0){
that.textInfoList.forEach((item1) => {
checkArr.push(that.infoBoardTemplateList[item1-1])
that.infoBoardTemplateList.forEach((item) => {
if(item1==item.programId){
checkArr.push(item)
}
})
})
}
console.log(checkArr, '555555555555')
// let arr = [
// { id: 1, textInfo: '' },
// { id: 2, textInfo: '{}Km/h' },
@ -4555,16 +4732,15 @@ export default {
// { id: 4, textInfo: '3' },
// { id: 5, textInfo: '{}Km/h,{}Km/h,{}Km/h' },
// ];
let temp = this.tempMap
// checkArr
checkArr.forEach(item => {
let text = item.textInfo;
let text = item.content;
// temp id
if (temp[item.id]) {
let replacements = temp[item.id];
if (temp[item.programId]) {
let replacements = temp[item.programId];
let matchCount = 0;
// {}
@ -4583,8 +4759,9 @@ export default {
}
// checkArr textInfo
item.textInfo = text;
item.content = text;
});
let company = ''
if(that.dataForm.extraJson){
let extr = JSON.parse(that.dataForm.extraJson);
@ -4601,23 +4778,25 @@ export default {
let Size = (val.cmsWidth == 384 && val.cmsHeight == 288) ? '1' : (val.cmsWidth == 128 && val.cmsHeight == 80) ? '2' : (val.cmsWidth == 576 && val.cmsHeight == 48) ? '3' : (val.cmsWidth == 624 && val.cmsHeight == 48) ? '4' : (val.cmsWidth == 128 && val.cmsHeight == 64) ? '5' : ''
data.playProgramlist.push(
{
programId: val.id,
name: val.textInfo,
programType: "",
type: "",
displaySize: val.textInfo,
displayMode: Size,
displaySpeed: "",
fontFamily: val.fontName,
fontSize: this.convertFontSize(val.fontSize),
fontColor: this.getHexColor(val.fontColor),
alignment: val.fontFormat,
content: val.textInfo
programId: val.programId,
name: val.name,
programType: val.programType,
type: val.type,
displaySize: val.displaySize,
displayMode: val.displayMode,
displaySpeed: val.displaySpeed,
fontFamily: val.fontFamily,
// fontSize: this.convertFontSize(val.fontSize),
// fontColor: this.getHexColor(val.fontColor),
fontSize: val.fontSize,
fontColor: val.fontColor,
alignment: val.alignment,
content: val.content
}
)
console.log("data.playProgramlist",data.playProgramlist)
})
}
console.log(data, 'dadadada')
playManuallyTriggered(data, '/xjIotApi/iotServiceCommon/playManuallyTriggered').then((res)=>{
console.log(res, 'rrrr')
that.deviceLoading = false
@ -4713,6 +4892,7 @@ export default {
if (that.dataForm.deviceType == '12') {
that.$set(that.dataForm, 'light', b.light)
} else if (that.dataForm.deviceType == '15') {
console.log("b.textInfoList",b.textInfoList)
that.loadinfoBoardTemplate(1, b.textInfoList)
}
}
@ -5032,6 +5212,7 @@ export default {
that.warnTimer = null
}
},
}
</script>
@ -5059,7 +5240,51 @@ export default {
.infowindow {
position: absolute;
}
.el-tree {
padding: 10px;
}
::v-deep .el-tree-node__expand-icon {
// display: none !important;
// display: none !important;
}
.custom-tree-node {
// flex: 1;
// display: flex;
// align-items: center;
// justify-content: space-between;
font-size: 14px;
padding-right: 8px;
// line-height: 55px;
// display: inline-block;
position: relative;
.label{
flex: 1;
max-width: 200px !important;
display: inline-block;
white-space: nowrap; /* 防止文本换行 */
overflow: hidden; /* 隐藏溢出的文本 */
text-overflow: ellipsis; /* 显示省略号 */
// background: saddlebrown;
}
.icon{
height: 100%;
position: absolute;
right: 10px;
z-index: 9999 !important;
}
}
.custom-tree-node:hover .node-actions {
display: block;
position: absolute;
right: 0px;
top: 3px;
z-index: 9999 !important;
}
.node-actions {
display: none;
}
.header {
width: 100%;
height: 65px;
@ -5541,4 +5766,11 @@ export default {
zoom: 0.8;
}
}
.el-tree-node__content{
display: flex;
align-items: center;
height: 40px ;
cursor: pointer;
}
</style>

View File

@ -14,7 +14,8 @@ module.exports = {
//本地服务接口地址
// target: 'http://link.ser99.vip:8080/zhongkai',
// target: 'http://65.73.11.246:7774',
target: 'http://172.16.1.155:8009',
// target: 'http://172.16.1.155:8009',
target: 'http://172.16.1.103:8084',
// target: 'http://172.16.1.162:8233',
// target: 'http://192.168.13.138:8233',
// target: 'http://172.16.1.113:8012',
@ -27,7 +28,8 @@ module.exports = {
'/xjIotApi': {
//集采
// target: 'http://65.73.11.246:8083',
target: 'http://172.16.1.155:8080',
// target: 'http://172.16.1.155:8080',
target: 'http://172.16.1.103:8084',
ws: true,
https: true,
pathRewrite: {
@ -37,7 +39,8 @@ module.exports = {
'/iotApi': {
//平台
// target: 'http://65.73.11.246:8090',
target: 'http://172.16.1.155:8080',
// target: 'http://172.16.1.155:8080',
target: 'http://172.16.1.103:8080',
ws: true,
https: true,
pathRewrite: {