Browse Source

增加组件显示

wangqin
Joe 10 months ago
parent
commit
d04b3e61f5
  1. 291
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/index.vue

291
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/index.vue

@ -1,164 +1,166 @@
<template> <template>
<div class="mask"> <Teleport>
<transition> <div class="mask">
<div v-if="visible" class="dialog_info"> <transition>
<div class="dialog_info_left"> <div v-if="visible" class="dialog_info">
<div class="dialog_head"> <div class="dialog_info_left">
<div class="tit">{{ dialogTit }}</div> <div class="dialog_head">
<img class="btnCls" src="@/assets/jihe/images/dialog/ibCls.png" alt="" @click="onClose"> <div class="tit">{{ dialogTit }}</div>
<img class="deco" src="@/assets/jihe/images/dialog/ibHeadDeco.png" alt=""> <img class="btnCls" src="@/assets/jihe/images/dialog/ibCls.png" alt="" @click="onClose">
</div> <img class="deco" src="@/assets/jihe/images/dialog/ibHeadDeco.png" alt="">
<div class="dialogContent">
<div v-if="selectedBdMsg.length > 0" class="dialogContent_box" style="height: 100%;">
<vuescroll :ops="scrollOptions" class="templateBox">
<div v-for="(itm, indx) in selectedBdMsg" :key="indx" class="tplItem">
<!-- 模板内容 -->
<BoardPreview class="boardPreview" :boardWH="selectedSize" :tpl="itm"></BoardPreview>
<!-- 操作按钮 -->
<div class="infoBtnBox">
<el-tooltip content="编辑" placement="top">
<p @click="____onEditBoardItem(itm, indx)" class="btn btnEdit"></p>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<p @click="____onDeleteBoardItem(indx)" class="btn btnDelete"></p>
</el-tooltip>
</div>
</div>
</vuescroll>
</div>
<div v-else class="dialogContent_box" style="height: 100%;">
<div class="dialogContent_box_empty">暂无数据</div>
</div> </div>
<div class="dialogContent_bottom"> <div class="dialogContent">
<el-tabs v-model="activeTab" @tab-click="tabClickFn"> <div v-if="selectedBdMsg.length > 0" class="dialogContent_box" style="height: 100%;">
<el-tab-pane label="详情信息" name="first"> <vuescroll :ops="scrollOptions" class="templateBox">
<div class="show_bottom_tab_box"> <div v-for="(itm, indx) in selectedBdMsg" :key="indx" class="tplItem">
<div class="show_bottom_tab_item"> <!-- 模板内容 -->
<div class="show_bottom_tab_item_l">设备名称</div> <BoardPreview class="boardPreview" :boardWH="selectedSize" :tpl="itm"></BoardPreview>
<div class="show_bottom_tab_item_r">{{ device.deviceName }}</div> <!-- 操作按钮 -->
</div> <div class="infoBtnBox">
<div class="show_bottom_tab_item"> <el-tooltip content="编辑" placement="top">
<div class="show_bottom_tab_item_l">设备桩号</div> <p @click="____onEditBoardItem(itm, indx)" class="btn btnEdit"></p>
<div class="show_bottom_tab_item_r">{{ device.stakeMarkId }}</div> </el-tooltip>
</div> <el-tooltip content="删除" placement="top">
<div class="show_bottom_tab_item"> <p @click="____onDeleteBoardItem(indx)" class="btn btnDelete"></p>
<div class="show_bottom_tab_item_l">屏幕像素</div> </el-tooltip>
<div class="show_bottom_tab_item_r">{{ JSON.parse(device.otherConfig).screenSize }}</div>
</div> </div>
<!-- <div class="show_bottom_tab_item" v-for="item in tabDataInfoList" :key="item.id"> </div>
</vuescroll>
</div>
<div v-else class="dialogContent_box" style="height: 100%;">
<div class="dialogContent_box_empty">暂无数据</div>
</div>
<div class="dialogContent_bottom">
<el-tabs v-model="activeTab" @tab-click="tabClickFn">
<el-tab-pane label="详情信息" name="first">
<div class="show_bottom_tab_box">
<div class="show_bottom_tab_item">
<div class="show_bottom_tab_item_l">设备名称</div>
<div class="show_bottom_tab_item_r">{{ device.deviceName }}</div>
</div>
<div class="show_bottom_tab_item">
<div class="show_bottom_tab_item_l">设备桩号</div>
<div class="show_bottom_tab_item_r">{{ device.stakeMarkId }}</div>
</div>
<div class="show_bottom_tab_item">
<div class="show_bottom_tab_item_l">屏幕像素</div>
<div class="show_bottom_tab_item_r">{{ JSON.parse(device.otherConfig).screenSize }}</div>
</div>
<!-- <div class="show_bottom_tab_item" v-for="item in tabDataInfoList" :key="item.id">
<div class="show_bottom_tab_item_l">{{ item.tit }}: </div> <div class="show_bottom_tab_item_l">{{ item.tit }}: </div>
<div class="show_bottom_tab_item_r" :style="{ 'color': item.col }"> {{ item.txt }}</div> <div class="show_bottom_tab_item_r" :style="{ 'color': item.col }"> {{ item.txt }}</div>
</div> --> </div> -->
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="设备参数" name="second">设备参数</el-tab-pane> <el-tab-pane label="设备参数" name="second">设备参数</el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<div class="dialogContent_bottom_btn"> <div class="dialogContent_bottom_btn">
<div class="show_bottom_btn_add" @click="____onAddDeviceItem">添加信息</div> <div class="show_bottom_btn_add" @click="____onAddDeviceItem">添加信息</div>
<div class="show_bottom_btn_del" @click="InformationReleaseFn">信息发布</div> <div class="show_bottom_btn_del" @click="InformationReleaseFn">信息发布</div>
</div> </div>
<div class="sideSwitch" @click="showSidePanel"> <div class="sideSwitch" @click="showSidePanel">
<img class="img" src="@/assets/screen/xtb/leftd.png" alt="" <img class="img" src="@/assets/screen/xtb/leftd.png" alt=""
:style="{ 'transform': isShowTemplate ? 'rotate(0deg)' : 'rotate(180deg)' }"> :style="{ 'transform': isShowTemplate ? 'rotate(0deg)' : 'rotate(180deg)' }">
<div class="txt">信息模板</div> <div class="txt">信息模板</div>
</div> </div>
<!-- 原型图上没有附近相机代码里暂时关闭 <!-- 原型图上没有附近相机代码里暂时关闭
<div class="sideSwitch" style="top:36%;" @click="showCameraInfoFn"> <div class="sideSwitch" style="top:36%;" @click="showCameraInfoFn">
<img class="img" src="@/assets/screen/xtb/leftd.png" alt="" <img class="img" src="@/assets/screen/xtb/leftd.png" alt=""
:style="{ 'transform': dialogInfoCamera ? 'rotate(0deg)' : 'rotate(180deg)' }"> :style="{ 'transform': dialogInfoCamera ? 'rotate(0deg)' : 'rotate(180deg)' }">
<div class="txt">附近像机</div> <div class="txt">附近像机</div>
</div> --> </div> -->
</div>
</div> </div>
</div>
<!-- 信息模板 --> <!-- 信息模板 -->
<div v-if="isShowTemplate" class="dialog_info_right"> <div v-if="isShowTemplate" class="dialog_info_right">
<vuescroll :ops="scrollOptions" class="templateBox"> <vuescroll :ops="scrollOptions" class="templateBox">
<div v-for="(item, index) in templateAvailable" :key="item.dictValue"> <div v-for="(item, index) in templateAvailable" :key="item.dictValue">
<!-- 原来是<el-collapse v-model="activeNames"> --> <!-- 原来是<el-collapse v-model="activeNames"> -->
<h3>{{ item.dictLabel }}</h3> <h3>{{ item.dictLabel }}</h3>
<div v-for="(itm, indx) in item.list" :key="indx" class="tplItem"> <div v-for="(itm, indx) in item.list" :key="indx" class="tplItem">
<!-- 模板内容 --> <!-- 模板内容 -->
<BoardTplPreview class="boardPreview" :boardWH="selectedSize" :tpl="itm"></BoardTplPreview> <BoardTplPreview class="boardPreview" :boardWH="selectedSize" :tpl="itm"></BoardTplPreview>
<!-- <div class="infoPreview"> <!-- <div class="infoPreview">
<div class="infoBox" :style="____boardBgStyle"> <div class="infoBox" :style="____boardBgStyle">
<span class="infoTxt" :style="____boardTxtStyle(itm)" v-html="itm.content.replace(/\n|\r\n/g, '<br>').replace(/ /g, '&nbsp')"></span> <span class="infoTxt" :style="____boardTxtStyle(itm)" v-html="itm.content.replace(/\n|\r\n/g, '<br>').replace(/ /g, '&nbsp')"></span>
</div> </div>
</div> --> </div> -->
<!-- 操作按钮 --> <!-- 操作按钮 -->
<div class="infoBtnBox"> <div class="infoBtnBox">
<el-tooltip content="加入待下发信息" placement="top"> <el-tooltip content="加入待下发信息" placement="top">
<p @click="____onAddToDevice(itm)" class="btn btnApply"></p> <p @click="____onAddToDevice(itm)" class="btn btnApply"></p>
</el-tooltip> </el-tooltip>
</div>
</div> </div>
</div> </div>
</div> </vuescroll>
</vuescroll> </div>
</div>
<!-- 附近相机 --> <!-- 附近相机 -->
<div v-if="dialogInfoCamera" class="dialog_info_right" style="padding:0;"> <div v-if="dialogInfoCamera" class="dialog_info_right" style="padding:0;">
<div class="dialog_head" style="height:4vh;"> <div class="dialog_head" style="height:4vh;">
<div class="tit">摄像机设备</div> <div class="tit">摄像机设备</div>
<img class="btnCls" src="@/assets/jihe/images/dialog/ibCls.png" alt="" @click="closeCameraBtnFn"> <img class="btnCls" src="@/assets/jihe/images/dialog/ibCls.png" alt="" @click="closeCameraBtnFn">
<img class="deco" src="@/assets/jihe/images/dialog/ibHeadDeco.png" alt=""> <img class="deco" src="@/assets/jihe/images/dialog/ibHeadDeco.png" alt="">
</div>
<div class="info_right_camera">
<div class="info_right_camera_top">
<!-- 视频组件 -->
<videoView :url="videoUrl" />
</div> </div>
<div class="info_right_camera_bom"> <div class="info_right_camera">
<div class="camera_bom_left"> <div class="info_right_camera_top">
<div class="camera_bom_left_item"> <!-- 视频组件 -->
<div class="camera_bom_left_item_txt">选择相机: </div> <videoView :url="videoUrl" />
<div class="camera_bom_left_item_val">
<el-select v-model="cameraVal" placeholder="请选择" size="mini" style="width:130px"
@change="cameraValChangeFn">
<el-option v-for="item in cameraOptList" :key="item.camId" :label="item.camName"
:value="item.camId">
</el-option>
</el-select>
</div>
</div>
<div class="camera_bom_left_item" v-for="item in cameraDataVideoList" :key="item.id">
<div class="camera_bom_left_item_txt">{{ item.txt }}: </div>
<div class="camera_bom_left_item_val">{{ item.val }}</div>
</div>
</div> </div>
<div class="camera_bom_right"> <div class="info_right_camera_bom">
<div class="camera_bom_right_t"> <div class="camera_bom_left">
<div class="camera_bom_right_t_box"></div> <div class="camera_bom_left_item">
<div class="camera_bom_right_t_h_po" v-for="item in cameraBtnList" :key="item.id" <div class="camera_bom_left_item_txt">选择相机: </div>
@click="cameraControlBtnFn(item)" <div class="camera_bom_left_item_val">
:style="{ 'left': item.le, top: item.to, 'transform': 'rotate(' + item.ro + 'deg)' }"></div> <el-select v-model="cameraVal" placeholder="请选择" size="mini" style="width:130px"
@change="cameraValChangeFn">
<el-option v-for="item in cameraOptList" :key="item.camId" :label="item.camName"
:value="item.camId">
</el-option>
</el-select>
</div>
</div>
<div class="camera_bom_left_item" v-for="item in cameraDataVideoList" :key="item.id">
<div class="camera_bom_left_item_txt">{{ item.txt }}: </div>
<div class="camera_bom_left_item_val">{{ item.val }}</div>
</div>
</div> </div>
<div class="camera_bom_right_b"> <div class="camera_bom_right">
<div class="camera_bom_right_b_btn" v-for="item in cameraControlList" :key="item.id"> <div class="camera_bom_right_t">
<div class="camera_bom_right_b_btn_l" @click="cameraControlLeFn(item.numL)"></div> <div class="camera_bom_right_t_box"></div>
<div class="camera_bom_right_b_btn_c">{{ item.txt }}</div> <div class="camera_bom_right_t_h_po" v-for="item in cameraBtnList" :key="item.id"
<div class="camera_bom_right_b_btn_r" @click="cameraControlLeFn(item.numR)"></div> @click="cameraControlBtnFn(item)"
:style="{ 'left': item.le, top: item.to, 'transform': 'rotate(' + item.ro + 'deg)' }"></div>
</div>
<div class="camera_bom_right_b">
<div class="camera_bom_right_b_btn" v-for="item in cameraControlList" :key="item.id">
<div class="camera_bom_right_b_btn_l" @click="cameraControlLeFn(item.numL)"></div>
<div class="camera_bom_right_b_btn_c">{{ item.txt }}</div>
<div class="camera_bom_right_b_btn_r" @click="cameraControlLeFn(item.numR)"></div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</transition> </transition>
<BoardInfoEditor @afterSubmit="____onEditSubmit" :mode="editDialog.mode" :type="editDialog.type" <BoardInfoEditor @afterSubmit="____onEditSubmit" :mode="editDialog.mode" :type="editDialog.type"
:visible.sync="editDialog.visible" :screenSize="selectedSize" :tpl="editDialog.tpl"></BoardInfoEditor> :visible.sync="editDialog.visible" :screenSize="selectedSize" :tpl="editDialog.tpl"></BoardInfoEditor>
<!-- 情报板弹框中的弹框 --> <!-- 情报板弹框中的弹框 -->
<addBoard ref="addinfo" @addInfo="addInfo" /> <addBoard ref="addinfo" @addInfo="addInfo" />
<editBoard v-if="showEmit" :boardEmitItem="boardEmitItem" @receiveForm="receiveForm" @dialogClose="dialogClose" /> <editBoard v-if="showEmit" :boardEmitItem="boardEmitItem" @receiveForm="receiveForm" @dialogClose="dialogClose" />
</div> </div>
</Teleport>
</template> </template>
<script> <script>
@ -174,6 +176,7 @@ import BoardInfoEditor from '@screen/components/infoBoard/BoardInfoEditor'
import vuescroll from 'vuescroll' import vuescroll from 'vuescroll'
import scrollOptions from '@/common/scrollbar.js' import scrollOptions from '@/common/scrollbar.js'
import Teleport from '@screen/components/Teleport.vue'
import { getTemplateList } from '@/api/board/template' import { getTemplateList } from '@/api/board/template'
@ -307,7 +310,7 @@ export default {
immediate: false immediate: false
} }
}, },
components: { addBoard, editBoard, BoardPreview, BoardTplPreview, BoardInfoEditor, vuescroll }, components: { addBoard, editBoard, BoardPreview, BoardTplPreview, BoardInfoEditor, vuescroll, Teleport },
created() { created() {
this.____getTemplateCategory(); this.____getTemplateCategory();
this.____getAllTemplate(); this.____getAllTemplate();
@ -418,9 +421,9 @@ export default {
____onAddToDevice(item) { ____onAddToDevice(item) {
let arr = this.selectedSize.split("*"); let arr = this.selectedSize.split("*");
item.origin = { item.origin = {
displayAreaWidth: +arr[0], displayAreaWidth: +arr[0],
displayAreaHeight: +arr[1] displayAreaHeight: +arr[1]
} }
this.editDialog = { this.editDialog = {
visible: true, visible: true,
mode: "toDevice", mode: "toDevice",
@ -431,19 +434,19 @@ export default {
____onAddDeviceItem() { ____onAddDeviceItem() {
let arr = this.selectedSize.split("*"); let arr = this.selectedSize.split("*");
this.editDialog = { this.editDialog = {
visible: true, visible: true,
mode: "add", mode: "add",
type: "device", type: "device",
tpl: { tpl: {
"textContent": "", "textContent": "",
origin : { origin: {
displayAreaWidth: +arr[0], displayAreaWidth: +arr[0],
displayAreaHeight: +arr[1] displayAreaHeight: +arr[1]
}
} }
} }
}, }
},
@ -579,7 +582,7 @@ export default {
type: 'warning' type: 'warning'
}) })
.then(() => { .then(() => {
return ; return;
let loading = this.$loading({ let loading = this.$loading({
lock: true, lock: true,
text: 'Loading', text: 'Loading',

Loading…
Cancel
Save