七参数大屏-塔吊监测-升降机监测监控对接

This commit is contained in:
jxj_yjl 2023-07-21 14:52:03 +08:00
parent 67f6aea684
commit 212dee3e70
13 changed files with 175 additions and 113 deletions

View File

@ -14,9 +14,12 @@
<div id="domId" style="width: 100%; height: 98vh"></div>
<script src="https://static.bimface.com/api/BimfaceSDKLoader/BimfaceSDKLoader@latest-release.js" charset="utf-8"></script>
<script>
var token = JSON.parse(localStorage.getItem('bimToken'));
console.log('取到的token',token);
let viewer3D;
let app;
let viewToken = "044bb2418cfd43268ec175abae26dc62";
let viewToken = token;
console.log('viewToken',viewToken);
let loaderConfig = new BimfaceSDKLoaderConfig();
loaderConfig.viewToken = viewToken;
BimfaceSDKLoader.load(loaderConfig, successCallback, failureCallback);
@ -33,6 +36,7 @@
console.log(error);
}
</script>
</body>
</html>

View File

@ -43,6 +43,11 @@ export const getRelatedInfoApi = (params: {}) => {
return http.get(BASEURL + `/xmgl/lifter/getRelatedInfo`, params);
};
// 通过id查询升降机基本信息信息
export const getLifterQueryByIdApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/lifter/queryById`, params);
};

View File

@ -35,3 +35,9 @@ export const getRelatedInfoApi = (params: {}) => {
export const getNewestDataApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/towerCurrentData/getNewestTowerCurrentData`, params);
};
// 查询启用的视频配置
export const getUseProjectVideoConfigApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/projectVideoConfig/getUseProjectVideoConfig`, params);
};

View File

@ -10,24 +10,20 @@ import { getSelectProjectBimfaceList, getViewTokenByFileId } from "@/api/modules
import { ref, onMounted } from "vue";
const store = GlobalStore();
const url = ref("");
const iframe = ref(null);
const token = ref("");
// function load() {
// iframe.value.contentWindow.postMessage("Message from parentload complate");
// }
const token = ref("" as any);
//bim
function getBimfaceList() {
getSelectProjectBimfaceList({ projectSn: store.sn }).then(res => {
res.result.page.records.forEach(item => {
if (item.isEnable) {
token.value = res.result.viewToken;
console.log("token的值", token);
iframe.value.contentWindow.postMessage({ token });
// getBimfaceToken(item.fileId);
console.log("token的值", token.value);
localStorage.setItem('bimToken', JSON.stringify(token.value));
}
});
});
}
//token
// function getBimfaceToken(fileId) {
// getViewTokenByFileId({ projectSn: store.sn, fileId }).then(res => {

View File

@ -17,6 +17,7 @@
</div>
</div>
<div class="decivList">
<el-scrollbar style="height:90%">
<div class="menuDev" v-for="item in deviceData.list" :key="item.id" :class="item.isClosed != 0 ? 'online' : 'offline'">
<div class="decName">
<span v-show="item.isClosed != 0"><img src="@/assets/images/dustNoise/onlineImg.png" alt="" /></span>
@ -25,6 +26,9 @@
</div>
<div class="status">{{ item.isClosed != 0 ? "在线" : "离线" }}</div>
</div>
</el-scrollbar>
</div>
</div>
</div>
@ -424,30 +428,7 @@ const option = reactive({
}
]
});
// let deciData = reactive({
// devicList: [
// {
// decName: "1",
// status: 0
// },
// {
// decName: "2",
// status: 1
// },
// {
// decName: "3",
// status: 0
// },
// {
// decName: "4",
// status: 0
// },
// {
// decName: "5",
// status: 0
// }
// ]
// });
function drawChart() {
let leftTopEcharts = echarts.init(document.getElementById("topLeftEcharts"));
leftTopEcharts.setOption(option);
@ -562,5 +543,6 @@ onMounted(() => {
}
}
}
}
</style>

View File

@ -12,13 +12,14 @@
</template>
<script setup lang="ts">
import { ref, reactive, onMounted, onBeforeUnmount, getCurrentInstance, nextTick, watch, Ref } from "vue";
import { ElMessage, ElMessageBox, ElStep } from "element-plus";
import { ref, onMounted, onBeforeUnmount, getCurrentInstance, nextTick, Ref } from "vue";
import { ElMessage } from "element-plus";
import { GlobalStore } from "@/stores";
import { useRouter } from "vue-router";
const router = useRouter();
import { getLifterQueryByIdApi } from "@/api/modules/elevator";
import { getUseProjectVideoConfigApi } from "@/api/modules/tower";
import mitts from "@/utils/bus"; //
let shipinList = ref([] as any);
const store = GlobalStore();
const parentTitle = ref<string>("");
const playWndBox = ref(null);
let playWndHeight = ref("");
let playWndWidth = ref("");
@ -27,47 +28,45 @@ let initCount = ref(0);
let oWebControl = ref(null);
let cameraIndexCode = ref<Array<string>>([]);
let objData = ref({
appkey: "24017757", //appkey
ip: "182.101.141.23", //ip
secret: "VJz0FbzmE6drPQ7egsBi", //secret
port: 18443,
appkey: "23914849", //appkey
ip: "221.12.137.200", //ip
secret: "UV4xyujBtOGA4D0kvXG7", //secret
port: 444,
playMode: 0, // 0 1
layout: "1x1" //16
});
let eletorSelectId = ref("" as any);
const changeTreeFilter = async (item: {
data: { code: string | null; title: any; children: any[] };
parent: { data: { title: any } };
}) => {
console.log("我是你要的数据", item);
//
cameraIndexCode.value = [item.data.code];
parentTitle.value = item.parent.data.title || item.data.title;
};
//
const getVideo = async () => {
// await sendRequest({ code: cameraIndexCode.value });
// await getpreviewURL({ cameraIndexCode: cameraIndexCode.value });
};
//
watch(
() => store.editPassword,
val => {
val ? oWebControl.JS_HideWnd() : oWebControl.JS_ShowWnd();
//
const getTowerDetail = async () => {
const res: any = await getLifterQueryByIdApi({
id: eletorSelectId.value
});
if (res.result.videoList.length > 0) {
cameraIndexCode.value = res.result.videoList[0].serialNumber;
previewVideo(cameraIndexCode.value);
} else {
cameraIndexCode.value = "";
previewVideo();
}
// {
// immediate: true
// }
);
/** 设备列表的点击操作 */
// window.addEventListener("keyup", () => {
// oWebControl.JS_CuttingPartWindow(0, 0, 20, 20);
// });
};
//
const gerEletorUserVideo = async () => {
const res = await getUseProjectVideoConfigApi({
projectSn: store.sn
});
objData.value.appkey = res.result.appId;
objData.value.ip = res.result.account;
objData.value.secret = res.result.appSecret;
objData.value.port = res.result.password;
await getTowerDetail();
};
onMounted(async () => {
mitts.on("elevaTorSelectId", e => {
eletorSelectId.value = e;
gerEletorUserVideo();
});
// ee
const pageInstance = getCurrentInstance();
// dom
@ -79,7 +78,6 @@ onMounted(async () => {
window.addEventListener("scroll", () => {
if (oWebControl.value == undefined) {
oWebControl.JS_Resize(tagDomObj?.clientWidth, tagDomObj?.clientHeight);
// setWndCover();
}
});
@ -95,8 +93,8 @@ onMounted(async () => {
});
//
nextTick(() => {
initPlugin();
nextTick(async () => {
await initPlugin();
});
});
@ -213,6 +211,7 @@ const init = (callback: (() => void) | undefined) => {
argument: JSON.stringify({
appkey: appkey, //APIappkey
secret: secret, //APIsecret
// ip: ip + ":" + port, //APIIP
ip: ip, //APIIP
playMode: playMode, //
port: port, //
@ -264,6 +263,7 @@ const getPubKey = (callback: { (): void; (): void }) => {
//
//
const previewVideo = (data: string | null) => {
console.log("监控点编号值", data);
let cameraIndexCode = data; //
let streamMode = 0; // 0-1-
let transMode = 1; // 0-UDP1-TCP
@ -287,6 +287,7 @@ const previewVideo = (data: string | null) => {
};
</script>
<style lang="scss" scoped>
.main {
border-radius: 8px;

View File

@ -86,7 +86,7 @@ onMounted(() => {
margin: -1% 0% 2% 5%;
display: flex;
// overflow: scroll;
// white-space: nowrap;
// white-space: nowrap;
.carNum {
width: 13%;
height: 90%;
@ -121,6 +121,10 @@ onMounted(() => {
.text2 {
font-size: calc(100vw * 12 / 1920);
color: #65d7f9;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-left: 9%;
}
}
}

View File

@ -9,7 +9,7 @@
:key="index"
:label="item.devName"
:value="item.id"
@click="checkItem(item.devSn)"
@click="checkItem(item)"
/>
</el-select>
</div>
@ -127,6 +127,7 @@
</template>
<script lang="ts" setup>
import mitts from "@/utils/bus"; //
import Monitor from "@/views/sevenLargeScreen/elevatorMonitoring/eleMonitor.vue";
import {
getLifterListApi,
@ -143,7 +144,13 @@ let lifterDevSn = ref("" as any);
//
function checkItem(val: any) {
lifterDevSn.value = val;
console.log('下拉框选中',val);
lifterDevSn.value = val.devSn;
mitts.emit("elevaTorSelectId", val.id);
console.log('发送的id',val.id);
getLifterList()
}

View File

@ -75,13 +75,13 @@
>{{ towerSituationData.devCount.devOnline }}/{{ towerSituationData.devCount.devNum }}</span
>
</div>
<div class="towerList">
<el-scrollbar style="height: 50%">
<div class="menStyleList" v-for="item in towerSituationData.deviceList" :key="item.id">
<span class="text">{{ item.devName }}</span>
<span class="devState" v-if="item.devOnline == 1" style="color: #82fbea"> 在线 </span>
<span class="devState" v-else style="color: #ec6266"> 离线 </span>
</div>
</div>
</el-scrollbar>
</div>
</div>
</div>
@ -193,8 +193,8 @@ onMounted(async () => {
}
}
}
.towerList {
overflow: scroll;
height: 50px;
}
// .towerList {
// overflow: scroll;
// height: 50px;
// }
</style>

View File

@ -12,13 +12,12 @@
</template>
<script setup lang="ts">
import { ref,onMounted, onBeforeUnmount, getCurrentInstance, nextTick, Ref } from "vue";
import { ElMessage} from "element-plus";
import { ref, onMounted, onBeforeUnmount, getCurrentInstance, nextTick, Ref } from "vue";
import { ElMessage } from "element-plus";
import { GlobalStore } from "@/stores";
import { selectProjectVideoListApi} from "@/api/modules/video";
import { getQueryByIdApi, getUseProjectVideoConfigApi } from "@/api/modules/tower";
import mitts from "@/utils/bus"; //
let shipinList = ref([] as any);
const store = GlobalStore();
const playWndBox = ref(null);
let playWndHeight = ref("");
@ -35,30 +34,43 @@ let objData = ref({
playMode: 0, // 0 1
layout: "1x1" //16
});
let selectId = ref("" as any);
// //
// const checkVideo = async (item: any) => {
// cameraIndexCode.value = item.serialNumber;
// previewVideo(cameraIndexCode.value);
// };
//
const getVideoList = async () => {
const res = await selectProjectVideoListApi({
//
const getTowerDetail = async () => {
const res: any = await getQueryByIdApi({
id: selectId.value
});
if (res.result) {
cameraIndexCode.value = res.result.videoList[0].serialNumber;
console.log("塔吊监控点", cameraIndexCode.value);
previewVideo(cameraIndexCode.value);
}
};
//
const gerUserVideo = async () => {
const res = await getUseProjectVideoConfigApi({
projectSn: store.sn
});
shipinList.value = res.result.videoList[0].list;
objData.value.appkey = res.result.videoList[0].list[0].appId;
objData.value.ip = res.result.videoList[0].list[0].account;
objData.value.secret = res.result.videoList[0].list[0].appSecret;
objData.value.port = res.result.videoList[0].list[0].password;
cameraIndexCode.value = res.result.videoList[0].list[0].serialNumber;
console.log("视频列表", res);
previewVideo(res.result.videoList[0].list[0].serialNumber);
console.log("获取塔吊视频播放配置", res);
objData.value.appkey = res.result.appId;
objData.value.ip = res.result.account;
objData.value.secret = res.result.appSecret;
objData.value.port = res.result.password;
await getTowerDetail();
};
let serialNumberValue=ref("" as any)
onMounted(async () => {
setTimeout(() => {
getVideoList();
}, 1500);
mitts.on("serialNumberId", val => {
previewVideo(val);//
serialNumberValue.value=val
});
mitts.on("selectId", e => {
selectId.value = e;
gerUserVideo();
});
// ee
const pageInstance = getCurrentInstance();
// dom
@ -85,7 +97,7 @@ onMounted(async () => {
});
//
nextTick(async() => {
nextTick(async () => {
await initPlugin();
});
});
@ -255,6 +267,8 @@ const getPubKey = (callback: { (): void; (): void }) => {
//
//
const previewVideo = (data: string | null) => {
console.log("监控点编号值", data);
let cameraIndexCode = data; //
let streamMode = 0; // 0-1-
let transMode = 1; // 0-UDP1-TCP

View File

@ -191,6 +191,8 @@
import Monitor from "@/views/sevenLargeScreen/towerCraneMonitoring/monitor.vue";
import { onMounted, ref } from "vue";
// import * as echarts from "echarts";
import mitts from "@/utils/bus"; //
import {
getQueryByIdApi,
getTowerNumAndAlarmApi,
@ -227,7 +229,9 @@ function moveAnimation() {
//
function selectTower(e: any) {
console.log("选中", e);
mitts.emit("selectId", e);
console.log('发送的id',e);
getTowerDetail();
getTowerData();
}
@ -242,6 +246,7 @@ const getTowerDetail = async () => {
if (res.result) {
towerDetailData.value = res.result;
towerDevSn.value = res.result.devSn;
mitts.emit("serialNumberId", res.result.videoList[0].serialNumber);
console.log("塔吊信息详情", res.result);
}
};

View File

@ -26,6 +26,10 @@
<div>{{ item.releaseOperation }}</div>
<div>{{ item.vehicleStateName }}</div>
</div>
<div class="notoDta" v-if="vehicleData.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div>
</div>
</div>
@ -157,7 +161,7 @@ const list = reactive([
}
]);
let vehicleData = ref(null as any);
let vehicleData = ref([] as any);
const getVehicleList = async () => {
const res: any = await getEntryAndExitRecordsApi({
projectSn: store.sn
@ -235,4 +239,19 @@ onMounted(async () => {
}
}
}
.notoDta {
top: 73%;
width: 12%;
left: 44%;
position: absolute;
img {
width: 40%;
margin: 5% 30%;
}
p {
color: #fff;
font-size: calc(100vw * 14 / 1920);
margin: -6% 37%;
}
}
</style>

View File

@ -21,6 +21,10 @@
</div>
</div>
</el-scrollbar>
<div class="notoDta" v-if="shipinList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div>
</div>
<div class="right">
@ -63,7 +67,7 @@ let objData = ref({
secret: "UV4xyujBtOGA4D0kvXG7", //secret
port: 444,
playMode: 0, // 0 1
layout: "2x2" //16
layout: "1x1" //16
});
//
@ -419,5 +423,20 @@ const previewVideo = (data: string | null) => {
}
}
}
.notoDta {
top: 50%;
width: 12%;
left: 2%;
position: absolute;
img {
width: 40%;
margin: 5% 30%;
}
p {
color: #fff;
font-size: calc(100vw * 14 / 1920);
margin: -6% 37%;
}
}
}
</style>