开发大屏BIM应用
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 13 KiB |
|
@ -49,7 +49,8 @@
|
|||
<script src="/cdn/hkplug/jsencrypt.min.js"></script>
|
||||
<script src="/cdn/hkplug/jsWebControl-1.0.0.min.js"></script>
|
||||
<script src="./easyplayer/EasyWasmPlayer.js"></script>
|
||||
|
||||
<script src="/cdn/bim/sapi/BIMGISEngine.js"></script>
|
||||
<script src="/cdn/bim/sapi/config.js"></script>
|
||||
<style type="text/css">
|
||||
#webpack-dev-server-client-overlay {
|
||||
display: none;
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
import request from "@/utils/request";
|
||||
//获取项目的模型列表
|
||||
const listBimModel=query=>{
|
||||
return request({
|
||||
url: "/manage/bim/bimModel/list",
|
||||
method: "get",
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
//获取BIM设备位置
|
||||
const devicePositionGet=data=>{
|
||||
return request({
|
||||
url: "/manage/api/bim/devicePosition/get",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
//BIM沙盘查询监控数据
|
||||
const videoMonitorBimData=query=>{
|
||||
return request({
|
||||
url: "/manage/api/videoMonitor/bimGetData",
|
||||
method: "get",
|
||||
params: query,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
//BIM沙盘查询塔机数据
|
||||
const devTowerBimData=query=>{
|
||||
return request({
|
||||
url: "/manage/api/devTower/bimGetData",
|
||||
method: "get",
|
||||
params: query,
|
||||
})
|
||||
|
||||
}
|
||||
//BIM沙盘查询配电箱数据
|
||||
const devIotBimData=query=>{
|
||||
return request({
|
||||
url: "/manage/api/devIot/bimGetData",
|
||||
method: "get",
|
||||
params: query,
|
||||
})
|
||||
|
||||
}
|
||||
export default{
|
||||
listBimModel,
|
||||
devicePositionGet,
|
||||
devTowerBimData,
|
||||
videoMonitorBimData,
|
||||
devIotBimData
|
||||
}
|
|
@ -11,6 +11,7 @@ import powerIot from "./powerIot";
|
|||
import aiWarning from "./aiWarning";
|
||||
import planSchedule from "./planSchedule";
|
||||
import labor from "./labor";
|
||||
import bim from "./bim"
|
||||
export default {
|
||||
http: axios,
|
||||
downFile: download,
|
||||
|
@ -26,4 +27,5 @@ export default {
|
|||
aiWarning,
|
||||
planSchedule,
|
||||
labor,
|
||||
bim,
|
||||
};
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2562"><path d="M1002.7584 475.776L566.2784 39.68 537.1584 10.24a35.584 35.584 0 0 0-50.176 0L21.2544 475.776A72.192 72.192 0 0 0 0.0064 527.744a72.96 72.96 0 0 0 73.28 71.488h48v367.872h781.44V599.232h49.024c19.264 0 37.44-7.552 51.136-21.184 13.696-13.696 21.12-31.872 21.12-51.2 0-19.2-7.552-37.376-21.248-51.072z m-427.52 410.048H448.7744v-230.4h126.464v230.4z m246.144-367.872v367.872h-173.824V628.288a45.184 45.184 0 0 0-45.184-45.184H421.6384a45.184 45.184 0 0 0-45.184 45.184v257.536H202.6304V517.952H94.2144l417.92-417.6 26.048 26.112 391.68 391.488h-108.48z" p-id="2563"></path></svg>
|
After Width: | Height: | Size: 782 B |
|
@ -0,0 +1,2 @@
|
|||
<svg class="icon" style="width: 1.0400390625em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1065 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7908">
|
||||
<path d="M0 1024V250.6656h101.978163a623.725473 623.725473 0 0 0-5.774667 85.596129c0 285.33408 194.290925 517.180818 433.468623 517.180818s433.448146-231.273367 433.448147-517.180818a641.807143 641.807143 0 0 0-5.75419-85.596129h101.281926v773.3344z m379.592209-250.542735a219.212095 219.212095 0 0 1-105.295525-24.962124 200.41371 200.41371 0 0 1-16.054393-80.968204 198.181658 198.181658 0 0 0 16.054393 80.968204c-51.193857-83.609807-27.910891-215.710435 69.726033-303.743391l106.954206-101.240971a29.323841 29.323841 0 0 1 37.187217 0l69.746511 52.873015v4.402672c-32.538815 35.200896-67.412071 83.630284-92.988522 114.448986s-18.614086 44.026717-4.668879 57.214254a36.675279 36.675279 0 0 0 46.504499 4.402672l13.945207-8.805344a1190.707675 1190.707675 0 0 0 120.817502-88.053433h4.648402l55.821781 66.040075a25.658361 25.658361 0 0 1 0 35.221373l-106.954205 101.220494a311.258649 311.258649 0 0 1-215.50566 90.981722z m78.920449-221.157461c-2.313962-12.675599-1.33104-15.41959 10.50498-30.122465a191.731232 191.731232 0 0 1 23.876815-24.573052s23.221533-26.41603 37.187217-39.624045a984.335 984.335 0 0 1 93.008999-101.240971l186.017998-145.390553 4.627925-4.382194 4.259328-4.095509a90.387873 90.387873 0 0 1 0.389074-31.16682s7.146662-46.893573 18.614086-107.650441v-6.798545l2.293485-6.593768 0.901012-2.559693 1.433428-6.470904c0.143343-0.675759 0.307163-1.310563 0.430028-2.047754H841.627005c0-3.194497 0-4.095509 1.822501-6.040875 0.880534-3.74739 1.802024-7.597168 2.805423-11.528857 0-4.423149 4.689357-8.825821 4.689358-13.208015a9.74731 9.74731 0 0 1 9.276327-8.825821 16.648242 16.648242 0 0 1 9.317281 4.402672 15.66532 15.66532 0 0 1 4.648403 13.228493l-4.648403 17.590209a443.707395 443.707395 0 0 0-27.91089 105.66412 88.811103 88.811103 0 0 1-4.8327 26.41603 13.719954 13.719954 0 0 1-1.781547 5.549414l-2.682558 7.658601a19.924649 19.924649 0 0 0 4.66888 26.436508l9.296804 13.187537a22.791505 22.791505 0 0 0 27.931369 4.402672 77.814662 77.814662 0 0 1 41.815142-13.208015 510.91469 510.91469 0 0 0 111.623085-26.41603l18.593609-8.825821a17.692597 17.692597 0 0 1 13.945206 4.361717c4.648402 4.423149 4.648402 4.423149 4.648403 8.825821a9.767788 9.767788 0 0 1-9.296805 8.82582 467.563732 467.563732 0 0 1-134.865096 35.200896 101.302404 101.302404 0 0 0-51.193857 17.610687l-4.689357 4.402672c0 4.402672-4.648402 4.402672-9.296804 8.784866l-162.75551 154.093508c-55.821781 48.429388-84.387953 68.825021-132.366836 105.664121a302.658081 302.658081 0 0 1-59.630604 41.671799c-8.191017 3.849778-10.648322 6.716634-17.569732 6.716634a28.66856 28.66856 0 0 1-24.777826-20.047514zM892.779906 61.739791v-4.382194c0-4.402672 4.66888-8.825821 4.66888-13.228492L906.745591 17.713074h4.689357a964.16462 964.16462 0 0 1 139.472543 132.080151v4.382194l-27.890413 8.805343c-4.66888 4.402672-9.317282 4.402672-18.614086 4.402672a1235.348718 1235.348718 0 0 0-111.623086-105.643643z m-53.487341-10.99644z" p-id="7909"></path></svg>
|
After Width: | Height: | Size: 3.1 KiB |
|
@ -1,17 +1,2 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" xml:space="preserve">
|
||||
|
||||
<g transform="matrix(1 0 0 1 540 540)" id="7e597b96-e20c-460b-8139-75c72d5b54b0" >
|
||||
<rect style="stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill-rule: nonzero; opacity: 1; visibility: hidden;" vector-effect="non-scaling-stroke" x="-540" y="-540" rx="0" ry="0" width="1080" height="1080" />
|
||||
</g>
|
||||
<g transform="matrix(1 0 0 1 540 540)" id="0efec865-77d6-48e6-b9a3-7a8833b9c564" >
|
||||
</g>
|
||||
<g transform="matrix(0.73 0 0 0.98 421.96 576.65)" >
|
||||
<path style="stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill-rule: nonzero; opacity: 1;" transform=" translate(-511.99, -512)" d="M 568.618695 342.954495 L 820.171262 2.381529 L 482.496301 2.381529 L 203.814391 547.450347 L 410.806546 547.306882 L 222.565344 1021.618471 L 818.564447 343.02622699999995 z M 796.054696 352.753194" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.61 0 0 0.61 728.16 373.78)" >
|
||||
<path style="stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill-rule: nonzero; opacity: 1;" transform=" translate(-511.99, -512)" d="M 568.618695 342.954495 L 820.171262 2.381529 L 482.496301 2.381529 L 203.814391 547.450347 L 410.806546 547.306882 L 222.565344 1021.618471 L 818.564447 343.02622699999995 z M 796.054696 352.753194" stroke-linecap="round" />
|
||||
</g>
|
||||
</svg>
|
||||
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5537" data-spm-anchor-id="a313x.search_index.i1.i2.30073a81HnVMdv">
|
||||
<path d="M768 42.666667H256C209.066667 42.666667 170.666667 81.066667 170.666667 128v682.666667c0 46.933333 38.4 85.333333 85.333333 85.333333v42.666667c0 23.466667 19.2 42.666667 42.666667 42.666666h85.333333c23.466667 0 42.666667-19.2 42.666667-42.666666v-42.666667h170.666666v42.666667c0 23.466667 19.2 42.666667 42.666667 42.666666h85.333333c23.466667 0 42.666667-19.2 42.666667-42.666666v-42.666667c46.933333 0 85.333333-38.4 85.333333-85.333333V128c0-46.933333-38.4-85.333333-85.333333-85.333333zM309.333333 170.666667h405.333334c17.066667 0 32 14.933333 32 32s-14.933333 32-32 32h-405.333334c-17.066667 0-32-14.933333-32-32S292.266667 170.666667 309.333333 170.666667z m0 554.666666c17.066667 0 32 14.933333 32 32s-14.933333 32-32 32-32-14.933333-32-32 14.933333-32 32-32z m106.666667 64c-17.066667 0-32-14.933333-32-32s14.933333-32 32-32 32 14.933333 32 32-14.933333 32-32 32z m106.666667 0c-17.066667 0-32-14.933333-32-32s14.933333-32 32-32 32 14.933333 32 32-14.933333 32-32 32z m-42.666667-115.2c-8.533333 12.8-25.6 8.533333-23.466667-6.4L469.333333 512h-72.533333c-14.933333 0-23.466667-17.066667-12.8-29.866667l136.533333-172.8c8.533333-12.8 25.6-8.533333 23.466667 6.4l-14.933333 155.733334h72.533333c14.933333 0 23.466667 17.066667 12.8 29.866666l-134.4 172.8z" p-id="5538"></path></svg>
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1 @@
|
|||
<svg class="icon" style="width: 1.263671875em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1294 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1101"><path d="M0 727.578947l188.631579 0 0 296.421053-188.631579 0 0-296.421053ZM269.473684 565.894737l188.631579 0 0 458.105263-188.631579 0 0-458.105263ZM565.894737 377.263158l161.684211 0 0 646.736842-161.684211 0 0-646.736842ZM835.368421 188.631579l188.631579 0 0 835.368421-188.631579 0 0-835.368421ZM1104.842105 0l188.631579 0 0 1024-188.631579 0 0-1024Z" p-id="1102"></path></svg>
|
After Width: | Height: | Size: 586 B |
|
@ -0,0 +1,3 @@
|
|||
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3533">
|
||||
<path d="M905.5 363.9L357.2 143l-199 108.5v64.2h-65V212.9l260.4-142 577.2 233.2zM502.7 953.1H249.8V504.3h65v383.8h123V504.3h64.9zM835.7 777c-52.4 0-95.1-42.7-95.1-95.1 0-17.9 14.5-32.5 32.5-32.5s32.5 14.5 32.5 32.5c0 16.7 13.5 30.2 30.2 30.2s30.2-13.5 30.2-30.2-13.5-30.2-30.2-30.2h-32.5l-3.9-32.5V503.7c0-17.9 14.5-32.5 32.5-32.5 17.9 0 32.5 14.5 32.5 32.5v88.1c39.5 12.7 66.6 48.3 66.6 90.1-0.2 52.4-42.9 95.1-95.3 95.1z" p-id="3534"></path>
|
||||
<path d="M855.9 536.1H168.1c-41.3 0-74.9-33.6-74.9-74.9V304.1h837.6v157.1c0 41.4-33.6 74.9-74.9 74.9z m-697.7-167v92.2c0 5.5 4.5 9.9 10 9.9H856c5.5 0 10-4.4 10-9.9v-92.2H158.2zM177.2 888.1h412.1V953H177.2z" p-id="3535"></path></svg>
|
After Width: | Height: | Size: 875 B |
|
@ -0,0 +1,4 @@
|
|||
<svg class="icon"
|
||||
style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1709">
|
||||
<path d="M902.4 678.4L870.4 768c-2.133333 6.4-8.533333 10.666667-14.933333 6.4L55.466667 484.266667c-12.8 32 4.266667 70.4 38.4 81.066666L298.666667 640l-14.933334 42.666667c-4.266667 12.8-14.933333 21.333333-29.866666 21.333333H106.666667v-53.333333c0-17.066667-14.933333-32-32-32S42.666667 633.6 42.666667 650.666667v170.666666c0 17.066667 14.933333 32 32 32S106.666667 838.4 106.666667 821.333333V768h151.466666c36.266667 0 70.4-23.466667 81.066667-57.6l17.066667-49.066667 488.533333 179.2c32 12.8 68.266667-4.266667 81.066667-38.4l14.933333-40.533333c10.666667-34.133333-6.4-70.4-38.4-83.2zM951.466667 407.466667L253.866667 153.6c-44.8-17.066667-93.866667 6.4-110.933334 51.2L85.333333 364.8c-17.066667 44.8 6.4 93.866667 51.2 108.8L714.666667 682.666667c32 12.8 70.4 2.133333 93.866666-23.466667l164.266667-183.466667c17.066667-21.333333 8.533333-57.6-21.333333-68.266666z" p-id="1710">
|
||||
</path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -1,462 +1,456 @@
|
|||
<template>
|
||||
<div class="div-header">
|
||||
<el-row>
|
||||
<el-col :span="8" style="margin-left:20px;width:calc(33.33% - 20px);">
|
||||
<div class="head-title-tab">
|
||||
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)" v-if="1==2">项目概况</div>
|
||||
<div :class="nav == 2 ? 'head-nav active' : 'head-nav'" @click="doNav(2)" v-if="1==2">项目详情</div>
|
||||
<div :class="nav == 7 ? 'head-nav active' : 'head-nav'" @click="doNav(7)" v-if="1==2">劳务管理</div>
|
||||
<div class="div-header">
|
||||
<el-row>
|
||||
<el-col :span="8" style="margin-left: 20px; width: calc(33.33% - 20px)">
|
||||
<div class="head-title-tab">
|
||||
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)" v-if="1 == 2">项目概况</div>
|
||||
<div :class="nav == 2 ? 'head-nav active' : 'head-nav'" @click="doNav(2)" v-if="1 == 2">项目详情</div>
|
||||
<div :class="nav == 7 ? 'head-nav active' : 'head-nav'" @click="doNav(7)" v-if="1 == 2">劳务管理</div>
|
||||
|
||||
<div :class="(nav >= 100 && nav < 200) || nav == 1 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
|
||||
<div>项目概况</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
|
||||
<button type="button" :class="nav == 101 ? 'active' : ''" class="sub-btn" @click="doNav(101)">项目详情</button>
|
||||
<button type="button" :class="nav == 102 ? 'active' : ''" class="sub-btn" @click="doNav(102)">劳务管理</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="(nav >= 100 && nav < 200) || nav == 1 ? 'head-nav active' : 'head-nav'" style="position: relative" class="has-submenu">
|
||||
<div>项目概况</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left">
|
||||
<button type="button" :class="nav == 101 ? 'active' : ''" class="sub-btn" @click="doNav(101)">项目详情</button>
|
||||
<button type="button" :class="nav == 102 ? 'active' : ''" class="sub-btn" @click="doNav(102)">劳务管理</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div :class="(nav >= 300 && nav < 400) || nav == 3 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
|
||||
<div>安全管理</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
|
||||
<button type="button" :class="nav == 301 ? 'active' : ''" class="sub-btn" @click="doNav(301)">安全隐患排查</button>
|
||||
<!-- <button type="button" :class="nav == 302 ? 'active' : ''" class="sub-btn" @click="doNav(302)">教育培训</button> -->
|
||||
<button type="button" :class="nav == 303 ? 'active' : ''" class="sub-btn" @click="doNav(303)">基坑监测</button>
|
||||
<button type="button" :class="nav == 304 ? 'active' : ''" class="sub-btn" @click="doNav(304)">塔机监测</button>
|
||||
</div>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
|
||||
<!-- <button type="button" :class="nav == 305 ? 'active' : ''" class="sub-btn" @click="doNav(305)">高支模监测</button> -->
|
||||
<button type="button" :class="nav == 306 ? 'active' : ''" class="sub-btn" @click="doNav(306)">配电箱监测</button>
|
||||
<!-- <button type="button" :class="nav == 307 ? 'active' : ''" class="sub-btn" @click="doNav(307)">爬架监测</button>
|
||||
<div :class="(nav >= 300 && nav < 400) || nav == 3 ? 'head-nav active' : 'head-nav'" style="position: relative" class="has-submenu">
|
||||
<div>安全管理</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left">
|
||||
<button type="button" :class="nav == 301 ? 'active' : ''" class="sub-btn" @click="doNav(301)">安全隐患排查</button>
|
||||
<!-- <button type="button" :class="nav == 302 ? 'active' : ''" class="sub-btn" @click="doNav(302)">教育培训</button> -->
|
||||
<button type="button" :class="nav == 303 ? 'active' : ''" class="sub-btn" @click="doNav(303)">基坑监测</button>
|
||||
<button type="button" :class="nav == 304 ? 'active' : ''" class="sub-btn" @click="doNav(304)">塔机监测</button>
|
||||
</div>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left">
|
||||
<!-- <button type="button" :class="nav == 305 ? 'active' : ''" class="sub-btn" @click="doNav(305)">高支模监测</button> -->
|
||||
<button type="button" :class="nav == 306 ? 'active' : ''" class="sub-btn" @click="doNav(306)">配电箱监测</button>
|
||||
<!-- <button type="button" :class="nav == 307 ? 'active' : ''" class="sub-btn" @click="doNav(307)">爬架监测</button>
|
||||
<button type="button" :class="nav == 308 ? 'active' : ''" class="sub-btn" @click="doNav(308)">升降机监测</button>-->
|
||||
</div>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
|
||||
<button type="button" :class="nav == 309 ? 'active' : ''" class="sub-btn" @click="doNav(309)">视频监控</button>
|
||||
<button type="button" :class="nav == 310 ? 'active' : ''" class="sub-btn" @click="doNav(310)">AI预警</button>
|
||||
<!-- <button type="button" :class="nav == 311 ? 'active' : ''" class="sub-btn" @click="doNav(311)">标准化管理</button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="(nav >= 400 && nav < 500) || nav == 4 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
|
||||
<div>质量管理</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
|
||||
<button type="button" :class="nav == 401 ? 'active' : ''" class="sub-btn" @click="doNav(401)">质量隐患排查</button>
|
||||
<!--
|
||||
</div>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left">
|
||||
<button type="button" :class="nav == 309 ? 'active' : ''" class="sub-btn" @click="doNav(309)">视频监控</button>
|
||||
<button type="button" :class="nav == 310 ? 'active' : ''" class="sub-btn" @click="doNav(310)">AI预警</button>
|
||||
<!-- <button type="button" :class="nav == 311 ? 'active' : ''" class="sub-btn" @click="doNav(311)">标准化管理</button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="(nav >= 400 && nav < 500) || nav == 4 ? 'head-nav active' : 'head-nav'" style="position: relative" class="has-submenu">
|
||||
<div>质量管理</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left">
|
||||
<button type="button" :class="nav == 401 ? 'active' : ''" class="sub-btn" @click="doNav(401)">质量隐患排查</button>
|
||||
<!--
|
||||
<button type="button" :class="nav == 402 ? 'active' : ''" class="sub-btn" @click="doNav(402)">材料取样复试</button>
|
||||
<button type="button" :class="nav == 403 ? 'active' : ''" class="sub-btn" @click="doNav(403)">举牌验收</button>
|
||||
<button type="button" :class="nav == 404 ? 'active' : ''" class="sub-btn" @click="doNav(404)">标养室监测</button>-->
|
||||
</div>
|
||||
<!--
|
||||
</div>
|
||||
<!--
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
|
||||
<button type="button" :class="nav == 405 ? 'active' : ''" class="sub-btn" @click="doNav(405)">标准化管理</button>
|
||||
<button type="button" :class="nav == 406 ? 'active' : ''" class="sub-btn" @click="doNav(406)">混泥土监测</button>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="(nav >= 500 && nav < 600) || nav == 5 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
|
||||
<div>进度管理</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
|
||||
<button type="button" :class="nav == 502 ? 'active' : ''" class="sub-btn" @click="doNav(502)">进度管理</button>
|
||||
<button type="button" :class="nav == 501 ? 'active' : ''" class="sub-btn" @click="doNav(501)">延时摄影</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="(nav >= 500 && nav < 600) || nav == 5 ? 'head-nav active' : 'head-nav'" style="position: relative" class="has-submenu">
|
||||
<div>进度管理</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style>
|
||||
<div class="header-btn-list-padding menu-row1" style="text-align: left">
|
||||
<button type="button" :class="nav == 502 ? 'active' : ''" class="sub-btn" @click="doNav(502)">进度管理</button>
|
||||
<button type="button" :class="nav == 501 ? 'active' : ''" class="sub-btn" @click="doNav(501)">延时摄影</button>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="header-center">
|
||||
<img class="prj-logo" :src="selProject.setting.orgLogo" v-if="selProject && selProject.setting && selProject.setting.orgLogo" />
|
||||
<span class="sp-title">{{ selProject?.setting?.orgName ||selProject?.projectName|| '数字建安施工管理平台' }}</span>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="head-title-tab" style="display: inline-block">
|
||||
<div :class="nav == 6 ? 'head-nav active' : 'head-nav'" @click="doNav(6)">绿碳中心</div>
|
||||
</div>
|
||||
<div class="header-title-user-info" style="display:inline-block;float:right;">
|
||||
<el-select v-model="selProjectId" popper-class="header-sel-project-pop" @change="doProjectSelect">
|
||||
<el-option v-for="it in projects" :key="it.id" :label="it.projectName" :value="it.id"></el-option>
|
||||
</el-select>
|
||||
<span class="command" @click="doLogout">
|
||||
{{ nickName }}
|
||||
<i class="el-icon-switch-button"></i>
|
||||
</span>
|
||||
</div>
|
||||
<i class="set-fullscreen set-font-size" style="margin-left: 16px;position: absolute;top: 0px;right: 24px;" @click="toggleFullScreen">
|
||||
<svg
|
||||
class="icon"
|
||||
v-if="!isFullScreen"
|
||||
style="width: 20px; vertical-align: middle;fill: currentColor;overflow: hidden;"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="3304"
|
||||
>
|
||||
<path
|
||||
d="M145.066667 85.333333h153.6c25.6 0 42.666667-17.066667 42.666666-42.666666S324.266667 0 298.666667 0H34.133333C25.6 0 17.066667 8.533333 8.533333 17.066667 0 25.6 0 34.133333 0 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666666s42.666667-17.066667 42.666666-42.666666V145.066667l230.4 230.4c17.066667 17.066667 42.666667 17.066667 59.733334 0 17.066667-17.066667 17.066667-42.666667 0-59.733334L145.066667 85.333333z m170.666666 563.2L162.133333 802.133333l-76.8 76.8V725.333333C85.333333 699.733333 68.266667 682.666667 42.666667 682.666667s-42.666667 17.066667-42.666667 42.666666v256c0 25.6 17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666666-42.666667s-17.066667-42.666667-42.666666-42.666666H145.066667l76.8-76.8 153.6-153.6c17.066667-17.066667 17.066667-42.666667 0-59.733334-17.066667-17.066667-42.666667-17.066667-59.733334 0z m665.6 34.133334c-25.6 0-42.666667 17.066667-42.666666 42.666666v153.6l-76.8-76.8-153.6-153.6c-17.066667-17.066667-42.666667-17.066667-59.733334 0-17.066667 17.066667-17.066667 42.666667 0 59.733334l153.6 153.6 76.8 76.8H725.333333c-25.6 0-42.666667 17.066667-42.666666 42.666666s17.066667 42.666667 42.666666 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666666z m0-682.666667h-256c-25.6 0-42.666667 17.066667-42.666666 42.666667s17.066667 42.666667 42.666666 42.666666h153.6l-76.8 76.8-153.6 153.6c-17.066667 17.066667-17.066667 42.666667 0 59.733334 17.066667 17.066667 42.666667 17.066667 59.733334 0l153.6-153.6 76.8-76.8v153.6c0 25.6 17.066667 42.666667 42.666666 42.666666s42.666667-17.066667 42.666667-42.666666v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
|
||||
fill
|
||||
p-id="3305"
|
||||
/>
|
||||
</svg>
|
||||
<svg
|
||||
class="icon"
|
||||
v-else
|
||||
style="width: 24px; vertical-align: middle;fill: currentColor;overflow: hidden;"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="3952"
|
||||
>
|
||||
<path
|
||||
d="M384 597.333333h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h153.6L17.066667 947.2c-17.066667 17.066667-17.066667 42.666667 0 59.733333 17.066667 17.066667 42.666667 17.066667 59.733333 0L341.333333 742.4v153.6c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z m358.4 85.333334h153.6c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667V742.4l264.533333 264.533333c17.066667 17.066667 42.666667 17.066667 59.733333 0 17.066667-17.066667 17.066667-42.666667 0-59.733333L742.4 682.666667zM640 426.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667H742.4L1006.933333 76.8c17.066667-17.066667 17.066667-42.666667 0-59.733333-17.066667-17.066667-42.666667-17.066667-59.733333 0L682.666667 281.6V128c0-25.6-17.066667-42.666667-42.666667-42.666667s-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667z m-256-341.333334c-25.6 0-42.666667 17.066667-42.666667 42.666667v153.6L76.8 8.533333C59.733333 0 25.6 0 8.533333 8.533333 0 25.6 0 59.733333 8.533333 76.8L281.6 341.333333H128c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
|
||||
p-id="3953"
|
||||
/>
|
||||
</svg>
|
||||
</i>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="header-center">
|
||||
<img class="prj-logo" :src="selProject.setting.orgLogo" v-if="selProject && selProject.setting && selProject.setting.orgLogo" />
|
||||
<span class="sp-title">{{ selProject?.setting?.orgName || selProject?.projectName || "数字建安施工管理平台" }}</span>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<div class="head-title-tab" style="display: inline-flex">
|
||||
<div :class="nav == 6 ? 'head-nav active' : 'head-nav'" @click="doNav(6)">绿碳中心</div>
|
||||
<div :class="nav == 7 ? 'head-nav active' : 'head-nav'" @click="doNav(7)">BIM应用</div>
|
||||
</div>
|
||||
<div class="header-title-user-info" style="display: inline-block; float: right">
|
||||
<el-select v-model="selProjectId" popper-class="header-sel-project-pop" @change="doProjectSelect">
|
||||
<el-option v-for="it in projects" :key="it.id" :label="it.projectName" :value="it.id"></el-option>
|
||||
</el-select>
|
||||
<span class="command" @click="doLogout">
|
||||
{{ nickName }}
|
||||
<i class="el-icon-switch-button"></i>
|
||||
</span>
|
||||
</div>
|
||||
<i class="set-fullscreen set-font-size" style="margin-left: 16px; position: absolute; top: 0px; right: 24px" @click="toggleFullScreen">
|
||||
<svg class="icon" v-if="!isFullScreen" style="width: 20px; vertical-align: middle; fill: currentColor; overflow: hidden" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3304">
|
||||
<path
|
||||
d="M145.066667 85.333333h153.6c25.6 0 42.666667-17.066667 42.666666-42.666666S324.266667 0 298.666667 0H34.133333C25.6 0 17.066667 8.533333 8.533333 17.066667 0 25.6 0 34.133333 0 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666666s42.666667-17.066667 42.666666-42.666666V145.066667l230.4 230.4c17.066667 17.066667 42.666667 17.066667 59.733334 0 17.066667-17.066667 17.066667-42.666667 0-59.733334L145.066667 85.333333z m170.666666 563.2L162.133333 802.133333l-76.8 76.8V725.333333C85.333333 699.733333 68.266667 682.666667 42.666667 682.666667s-42.666667 17.066667-42.666667 42.666666v256c0 25.6 17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666666-42.666667s-17.066667-42.666667-42.666666-42.666666H145.066667l76.8-76.8 153.6-153.6c17.066667-17.066667 17.066667-42.666667 0-59.733334-17.066667-17.066667-42.666667-17.066667-59.733334 0z m665.6 34.133334c-25.6 0-42.666667 17.066667-42.666666 42.666666v153.6l-76.8-76.8-153.6-153.6c-17.066667-17.066667-42.666667-17.066667-59.733334 0-17.066667 17.066667-17.066667 42.666667 0 59.733334l153.6 153.6 76.8 76.8H725.333333c-25.6 0-42.666667 17.066667-42.666666 42.666666s17.066667 42.666667 42.666666 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666666z m0-682.666667h-256c-25.6 0-42.666667 17.066667-42.666666 42.666667s17.066667 42.666667 42.666666 42.666666h153.6l-76.8 76.8-153.6 153.6c-17.066667 17.066667-17.066667 42.666667 0 59.733334 17.066667 17.066667 42.666667 17.066667 59.733334 0l153.6-153.6 76.8-76.8v153.6c0 25.6 17.066667 42.666667 42.666666 42.666666s42.666667-17.066667 42.666667-42.666666v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
|
||||
fill
|
||||
p-id="3305" />
|
||||
</svg>
|
||||
<svg class="icon" v-else style="width: 24px; vertical-align: middle; fill: currentColor; overflow: hidden" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3952">
|
||||
<path
|
||||
d="M384 597.333333h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h153.6L17.066667 947.2c-17.066667 17.066667-17.066667 42.666667 0 59.733333 17.066667 17.066667 42.666667 17.066667 59.733333 0L341.333333 742.4v153.6c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z m358.4 85.333334h153.6c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667V742.4l264.533333 264.533333c17.066667 17.066667 42.666667 17.066667 59.733333 0 17.066667-17.066667 17.066667-42.666667 0-59.733333L742.4 682.666667zM640 426.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667H742.4L1006.933333 76.8c17.066667-17.066667 17.066667-42.666667 0-59.733333-17.066667-17.066667-42.666667-17.066667-59.733333 0L682.666667 281.6V128c0-25.6-17.066667-42.666667-42.666667-42.666667s-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667z m-256-341.333334c-25.6 0-42.666667 17.066667-42.666667 42.666667v153.6L76.8 8.533333C59.733333 0 25.6 0 8.533333 8.533333 0 25.6 0 59.733333 8.533333 76.8L281.6 341.333333H128c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
|
||||
p-id="3953" />
|
||||
</svg>
|
||||
</i>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
nav: 1,
|
||||
selProject: null,
|
||||
selProjectId: '',
|
||||
projects: [],
|
||||
isFullScreen: false,
|
||||
}
|
||||
data() {
|
||||
return {
|
||||
nav: 1,
|
||||
selProject: null,
|
||||
selProjectId: "",
|
||||
projects: [],
|
||||
isFullScreen: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
nickName() {
|
||||
return this.$store.getters.nickName;
|
||||
},
|
||||
computed: {
|
||||
nickName() {
|
||||
return this.$store.getters.nickName
|
||||
},
|
||||
curNav() {
|
||||
return this.$store.getters.nav
|
||||
},
|
||||
curNav() {
|
||||
return this.$store.getters.nav;
|
||||
},
|
||||
watch: {
|
||||
curNav(n, o) {
|
||||
this.nav = this.$store.getters.nav
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
curNav(n, o) {
|
||||
this.nav = this.$store.getters.nav;
|
||||
},
|
||||
mounted() {
|
||||
window.xapp = this
|
||||
let prjTitle = localStorage.getItem('prj_title')
|
||||
document.title = prjTitle || document.title
|
||||
this.$api.project.findMyProjectList().then((d) => {
|
||||
this.projects = d.rows || []
|
||||
if (this.projects.length > 0) {
|
||||
let id = localStorage.getItem('selProj') || this.projects[0].id
|
||||
this.selProjectId = +id
|
||||
this.doProjectSelect()
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
window.xapp = this;
|
||||
let prjTitle = localStorage.getItem("prj_title");
|
||||
document.title = prjTitle || document.title;
|
||||
this.$api.project.findMyProjectList().then((d) => {
|
||||
this.projects = d.rows || [];
|
||||
if (this.projects.length > 0) {
|
||||
let id = localStorage.getItem("selProj") || this.projects[0].id;
|
||||
this.selProjectId = +id;
|
||||
this.doProjectSelect();
|
||||
}
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
toggleFullScreen() {
|
||||
let el = document.body;
|
||||
this.$toggleFullScreen(el);
|
||||
setTimeout(() => {
|
||||
this.isFullScreen = document.fullscreenElement == el;
|
||||
}, 400);
|
||||
},
|
||||
doProjectSelect() {
|
||||
let tmps = this.projects.filter((d) => d.id == this.selProjectId);
|
||||
if (tmps.length > 0) {
|
||||
this.$store.dispatch("SetSelProject", tmps[0]);
|
||||
this.selProject = tmps[0];
|
||||
this.selProject.vendorsCode = "uni";
|
||||
document.title = this.selProject.projectName + " - 大屏";
|
||||
} else {
|
||||
this.$store.dispatch("SetSelProject", null);
|
||||
this.selProject = null;
|
||||
document.title = "大屏";
|
||||
}
|
||||
localStorage.setItem("selProj", this.selProjectId);
|
||||
localStorage.setItem("prj_title", document.title);
|
||||
},
|
||||
doNav(n) {
|
||||
if (this.nav == n) {
|
||||
return;
|
||||
}
|
||||
this.nav = n;
|
||||
switch (n) {
|
||||
case 1:
|
||||
this.$router.push("/index");
|
||||
break;
|
||||
case 101:
|
||||
this.$router.push("/detail");
|
||||
break;
|
||||
case 3:
|
||||
//this.$router.push('/prjSafety')
|
||||
break;
|
||||
case 309:
|
||||
this.$router.push("/videoMonitor");
|
||||
break;
|
||||
case 301:
|
||||
this.$router.push("/safetyCheck");
|
||||
break;
|
||||
case 304:
|
||||
this.$router.push("/towerCrane");
|
||||
break;
|
||||
case 306:
|
||||
this.$router.push("/powerIot");
|
||||
break;
|
||||
case 308:
|
||||
this.$router.push("/dumbwaiter");
|
||||
break;
|
||||
case 310:
|
||||
this.$router.push("/aiWarning");
|
||||
break;
|
||||
case 4:
|
||||
//this.$router.push('/prjQuality')
|
||||
break;
|
||||
case 5:
|
||||
//this.$router.push('/prjProgress')
|
||||
break;
|
||||
case 6:
|
||||
this.$router.push("/greenCarbon");
|
||||
break;
|
||||
case 7:
|
||||
this.$router.push("/bimManage");
|
||||
break;
|
||||
case 102:
|
||||
this.$router.push("/labor");
|
||||
break;
|
||||
case 501:
|
||||
this.$router.push("/photography");
|
||||
break;
|
||||
case 502:
|
||||
this.$router.push("/planSchedule");
|
||||
break;
|
||||
}
|
||||
},
|
||||
doLogout() {
|
||||
this.$confirm("确定注销并退出系统吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
})
|
||||
.then(() => {
|
||||
this.$store.dispatch("LogOut").then(() => {
|
||||
location.href = window.XDBSAPP;
|
||||
});
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
methods: {
|
||||
toggleFullScreen() {
|
||||
let el = document.body
|
||||
this.$toggleFullScreen(el)
|
||||
setTimeout(() => {
|
||||
this.isFullScreen = document.fullscreenElement == el
|
||||
}, 400)
|
||||
},
|
||||
doProjectSelect() {
|
||||
let tmps = this.projects.filter((d) => d.id == this.selProjectId)
|
||||
if (tmps.length > 0) {
|
||||
this.$store.dispatch('SetSelProject', tmps[0])
|
||||
this.selProject = tmps[0]
|
||||
this.selProject.vendorsCode = 'uni'
|
||||
document.title = this.selProject.projectName + ' - 大屏'
|
||||
} else {
|
||||
this.$store.dispatch('SetSelProject', null)
|
||||
this.selProject = null
|
||||
document.title = '大屏'
|
||||
}
|
||||
localStorage.setItem('selProj', this.selProjectId)
|
||||
localStorage.setItem('prj_title', document.title)
|
||||
},
|
||||
doNav(n) {
|
||||
if (this.nav == n) {
|
||||
return
|
||||
}
|
||||
this.nav = n
|
||||
switch (n) {
|
||||
case 1:
|
||||
this.$router.push('/index')
|
||||
break
|
||||
case 101:
|
||||
this.$router.push('/detail')
|
||||
break
|
||||
case 3:
|
||||
//this.$router.push('/prjSafety')
|
||||
break
|
||||
case 309:
|
||||
this.$router.push('/videoMonitor')
|
||||
break
|
||||
case 301:
|
||||
this.$router.push('/safetyCheck')
|
||||
break
|
||||
case 304:
|
||||
this.$router.push('/towerCrane')
|
||||
break
|
||||
case 306:
|
||||
this.$router.push('/powerIot')
|
||||
break
|
||||
case 308:
|
||||
this.$router.push('/dumbwaiter')
|
||||
break
|
||||
case 310:
|
||||
this.$router.push('/aiWarning')
|
||||
break
|
||||
case 4:
|
||||
//this.$router.push('/prjQuality')
|
||||
break
|
||||
case 5:
|
||||
//this.$router.push('/prjProgress')
|
||||
break
|
||||
case 6:
|
||||
this.$router.push('/greenCarbon')
|
||||
break
|
||||
case 102:
|
||||
this.$router.push('/labor')
|
||||
break
|
||||
case 501:
|
||||
this.$router.push('/photography')
|
||||
break
|
||||
case 502:
|
||||
this.$router.push('/planSchedule')
|
||||
break
|
||||
}
|
||||
},
|
||||
doLogout() {
|
||||
this.$confirm('确定注销并退出系统吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
})
|
||||
.then(() => {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
location.href = window.XDBSAPP
|
||||
})
|
||||
})
|
||||
.catch(() => {})
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.div-header {
|
||||
line-height: 100px;
|
||||
.header-title-user-info {
|
||||
font-size: 20px;
|
||||
line-height: 100px;
|
||||
.header-title-user-info {
|
||||
font-size: 20px;
|
||||
|
||||
.el-select {
|
||||
transform: scale(1.25);
|
||||
margin-right: 30px;
|
||||
position: relative;
|
||||
top: -5px;
|
||||
width: 250px;
|
||||
right: 10px;
|
||||
}
|
||||
.el-select {
|
||||
transform: scale(1.25);
|
||||
margin-right: 30px;
|
||||
position: relative;
|
||||
top: -5px;
|
||||
width: 200px;
|
||||
right: 10px;
|
||||
}
|
||||
.sp-title {
|
||||
line-height: 40px;
|
||||
display: inline-block;
|
||||
}
|
||||
.sp-title {
|
||||
line-height: 40px;
|
||||
display: inline-block;
|
||||
}
|
||||
.header-center {
|
||||
text-align: center;
|
||||
color: #3da2ff;
|
||||
font-size: 32px;
|
||||
font-weight: bold;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 113px;
|
||||
|
||||
.prj-logo {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
vertical-align: middle;
|
||||
border-radius: 30px;
|
||||
}
|
||||
.header-center {
|
||||
text-align: center;
|
||||
color: #3da2ff;
|
||||
font-size: 32px;
|
||||
font-weight: bold;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 113px;
|
||||
}
|
||||
|
||||
.prj-logo {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
vertical-align: middle;
|
||||
border-radius: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.head-title-tab {
|
||||
.has-submenu {
|
||||
&:hover {
|
||||
.header-btn-list {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.header-btn-list {
|
||||
display: none;
|
||||
|
||||
.header-btn-list-item {
|
||||
.header-btn-list-padding {
|
||||
padding: 0px;
|
||||
|
||||
button {
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
&.menu-row2 {
|
||||
.sub-btn {
|
||||
color: #fff;
|
||||
|
||||
&:hover {
|
||||
color: #ccc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.menu-row1 {
|
||||
.sub-btn {
|
||||
color: rgb(1, 169, 255);
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sub-btn {
|
||||
&.active {
|
||||
color: #ffffffaa;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1921px) and (max-width: 2560px) {
|
||||
.div-header {
|
||||
.head-nav {
|
||||
font-size: 18px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: 5px 40px;
|
||||
position: relative;
|
||||
top: -8px;
|
||||
|
||||
.prj-logo {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
vertical-align: middle;
|
||||
border-radius: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.sp-title {
|
||||
line-height: 48px !important;
|
||||
font-size: 36px;
|
||||
}
|
||||
.header-center {
|
||||
font-size: 42px !important;
|
||||
padding: 0px 60px;
|
||||
}
|
||||
|
||||
.header-title-user-info {
|
||||
font-size: 20px !important;
|
||||
|
||||
.el-select {
|
||||
transform: scale(1.5) !important;
|
||||
margin-right: 60px !important;
|
||||
|
||||
width: 260px !important;
|
||||
right: 10px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.header-sel-project-pop {
|
||||
transform: scale(1.5);
|
||||
width: 330px;
|
||||
min-width: unset !important;
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.head-title-tab {
|
||||
.head-title-tab {
|
||||
.has-submenu {
|
||||
&:hover {
|
||||
.header-btn-list {
|
||||
top: 40px;
|
||||
left: 40px;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.header-btn-list {
|
||||
display: none;
|
||||
|
||||
.header-btn-list-item {
|
||||
.header-btn-list-padding {
|
||||
padding: 0px;
|
||||
|
||||
button {
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
&.menu-row2 {
|
||||
.sub-btn {
|
||||
color: #fff;
|
||||
|
||||
&:hover {
|
||||
color: #ccc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.menu-row1 {
|
||||
.sub-btn {
|
||||
color: rgb(1, 169, 255);
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sub-btn {
|
||||
font-size: 18px;
|
||||
width: 140px !important;
|
||||
line-height: 40px;
|
||||
height: 40px;
|
||||
&.active {
|
||||
color: #ffffffaa;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.header-sel-project-pop {
|
||||
top: 60px !important;
|
||||
}
|
||||
@media (min-width: 1921px) and (max-width: 2560px) {
|
||||
.header-sel-project-pop {
|
||||
top: 68px !important;
|
||||
}
|
||||
.div-header {
|
||||
.head-nav {
|
||||
font-size: 18px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: 5px 40px;
|
||||
position: relative;
|
||||
top: -8px;
|
||||
|
||||
.prj-logo {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
vertical-align: middle;
|
||||
border-radius: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.sp-title {
|
||||
line-height: 48px !important;
|
||||
font-size: 36px;
|
||||
}
|
||||
.header-center {
|
||||
font-size: 42px !important;
|
||||
padding: 0px 60px;
|
||||
}
|
||||
|
||||
.header-title-user-info {
|
||||
font-size: 20px !important;
|
||||
|
||||
.el-select {
|
||||
transform: scale(1.5) !important;
|
||||
margin-right: 60px !important;
|
||||
|
||||
width: 220px !important;
|
||||
right: 10px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.header-sel-project-pop {
|
||||
transform: scale(1.5);
|
||||
width: 330px;
|
||||
min-width: unset !important;
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.head-title-tab {
|
||||
.header-btn-list {
|
||||
top: 40px;
|
||||
left: 40px;
|
||||
|
||||
.sub-btn {
|
||||
font-size: 18px;
|
||||
width: 140px !important;
|
||||
line-height: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 2561px) {
|
||||
.header-center {
|
||||
font-size: 52px !important;
|
||||
padding: 0px 60px;
|
||||
.prj-logo {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
vertical-align: middle;
|
||||
border-radius: 50px;
|
||||
}
|
||||
.header-sel-project-pop {
|
||||
top: 78px !important;
|
||||
}
|
||||
.header-center {
|
||||
font-size: 52px !important;
|
||||
padding: 0px 60px;
|
||||
.prj-logo {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
vertical-align: middle;
|
||||
border-radius: 50px;
|
||||
}
|
||||
.sp-title {
|
||||
line-height: 50px !important;
|
||||
font-size: 40px;
|
||||
}
|
||||
.header-title-user-info {
|
||||
font-size: 30px !important;
|
||||
}
|
||||
.sp-title {
|
||||
line-height: 50px !important;
|
||||
font-size: 40px;
|
||||
}
|
||||
.header-title-user-info {
|
||||
font-size: 30px !important;
|
||||
|
||||
.el-select {
|
||||
transform: scale(2) !important;
|
||||
margin-right: 100px !important;
|
||||
width: 273px !important;
|
||||
right: 40px !important;
|
||||
}
|
||||
.el-select {
|
||||
transform: scale(2) !important;
|
||||
margin-right: 100px !important;
|
||||
width: 273px !important;
|
||||
right: 40px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.header-sel-project-pop {
|
||||
transform: scale(2);
|
||||
width: 300px;
|
||||
min-width: unset !important;
|
||||
margin-left: 100px;
|
||||
}
|
||||
|
||||
.head-title-tab {
|
||||
.header-btn-list {
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
|
||||
.sub-btn {
|
||||
font-size: 24px;
|
||||
width: 160px !important;
|
||||
line-height: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
.header-sel-project-pop {
|
||||
transform: scale(2);
|
||||
width: 300px;
|
||||
min-width: unset !important;
|
||||
margin-left: 100px;
|
||||
}
|
||||
|
||||
.head-title-tab {
|
||||
.header-btn-list {
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
|
||||
.sub-btn {
|
||||
font-size: 24px;
|
||||
width: 160px !important;
|
||||
line-height: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
@ -49,9 +49,16 @@ const routes = [
|
|||
{
|
||||
path: "/greenCarbon",
|
||||
name: "greenCarbon",
|
||||
meta: { nav: 23 },
|
||||
meta: { nav: 6 },
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "progress" */ "../views/greenCarbon.vue"),
|
||||
import(/* webpackChunkName: "greenCarbon" */ "../views/greenCarbon.vue"),
|
||||
},
|
||||
{
|
||||
path: "/bimManage",
|
||||
name: "bimManage",
|
||||
meta: { nav: 7 },
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "bimManage" */ "../views/bimManage.vue"),
|
||||
},
|
||||
{
|
||||
path: "/videoMonitor",
|
||||
|
|
|
@ -0,0 +1,552 @@
|
|||
<template>
|
||||
<div class="bim-manage main-page">
|
||||
<div id="bimManage" :key="elId">
|
||||
<div id="bimManageContainer" class="bimManageContainer"></div>
|
||||
</div>
|
||||
<div class="div-left data-content">
|
||||
<div class="div-row">
|
||||
<div class="row-title">
|
||||
<svg-icon icon-class="signal"></svg-icon>
|
||||
项目概况
|
||||
</div>
|
||||
</div>
|
||||
<div class="div-row">
|
||||
<div class="row-title">
|
||||
<svg-icon icon-class="signal"></svg-icon>
|
||||
成本产值
|
||||
</div>
|
||||
</div>
|
||||
<div class="div-row">
|
||||
<div class="row-title"><svg-icon icon-class="signal"></svg-icon> 人员</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="div-right data-content">
|
||||
<div class="div-row">
|
||||
<div class="row-title">
|
||||
<svg-icon icon-class="signal"></svg-icon>
|
||||
工程进度
|
||||
</div>
|
||||
</div>
|
||||
<div class="div-row">
|
||||
<div class="row-title">
|
||||
<svg-icon icon-class="signal"></svg-icon>
|
||||
安全检查
|
||||
</div>
|
||||
</div>
|
||||
<div class="div-row">
|
||||
<div class="row-title">
|
||||
<svg-icon icon-class="signal"></svg-icon>
|
||||
项目全景
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="div-tools">
|
||||
<div class="tool-item" @click="resetScene">
|
||||
<div class="icon">
|
||||
<svg-icon icon-class="home" />
|
||||
</div>
|
||||
<span class="sp-text">默认视点</span>
|
||||
</div>
|
||||
|
||||
<div class="tool-item" @click="changeDevicType(1)" :class="{ 'is-active': devicTypes.includes(1) }">
|
||||
<div class="icon">
|
||||
<svg-icon icon-class="videoMonitor" />
|
||||
</div>
|
||||
<span class="sp-text">视频监控</span>
|
||||
</div>
|
||||
<div class="tool-item" @click="changeDevicType(2)" :class="{ 'is-active': devicTypes.includes(2) }">
|
||||
<div class="icon">
|
||||
<svg-icon icon-class="pitMonitor" />
|
||||
</div>
|
||||
<span class="sp-text">基坑监控</span>
|
||||
</div>
|
||||
<div class="tool-item" @click="changeDevicType(3)" :class="{ 'is-active': devicTypes.includes(3) }">
|
||||
<div class="icon">
|
||||
<svg-icon icon-class="towerMonitor" />
|
||||
</div>
|
||||
<span class="sp-text">塔机监控</span>
|
||||
</div>
|
||||
<div class="tool-item" @click="changeDevicType(4)" :class="{ 'is-active': devicTypes.includes(4) }">
|
||||
<div class="icon">
|
||||
<svg-icon icon-class="power" />
|
||||
</div>
|
||||
<span class="sp-text">电箱监控</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="test-box">
|
||||
<div class="tag-box">
|
||||
<img :src="'bimImages/3.png'" alt="" />
|
||||
<img class="tag-img" :src="'bimImages/videoMonitor.png'" style="" />
|
||||
<span class="tag-txt" style="color: #ffffff; font-size: 14px"> aaa</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const css = `<style>
|
||||
.tag-box {
|
||||
position: relative;
|
||||
}
|
||||
.tag-img{
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left:50%;
|
||||
bottom:18px;
|
||||
margin-left:-10px;
|
||||
}
|
||||
.tag-txt {
|
||||
position: absolute;
|
||||
top: 30%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
}
|
||||
.box-type-1 .tag-bg-img{
|
||||
position: absolute;
|
||||
bottom:0;
|
||||
left:50%;
|
||||
margin-left:-11px;
|
||||
}
|
||||
.box-type-1{
|
||||
height:60px;
|
||||
width:60px;
|
||||
}
|
||||
.box-type-1 .tag-txt{display:none;}
|
||||
</style>`;
|
||||
import debounce from "lodash.debounce";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dpi: "",
|
||||
elId: 1,
|
||||
devicTypes: [1],
|
||||
viewPoint: null,
|
||||
project: null,
|
||||
addLabels: [],
|
||||
devices: [],
|
||||
showDevices: [],
|
||||
videoData: [],
|
||||
towerData: [],
|
||||
iotData: [],
|
||||
};
|
||||
},
|
||||
beforeDestroy() {
|
||||
document.body.classList.remove("is-sapi");
|
||||
},
|
||||
mounted() {
|
||||
this.$store.dispatch("ChangeNav", 7);
|
||||
this.dpi = this.$dpi();
|
||||
window.addEventListener("resize", () => {
|
||||
if (this.dpi != this.$dpi()) {
|
||||
this.dpi = this.$dpi();
|
||||
}
|
||||
});
|
||||
this.$bus.$on(
|
||||
"projectChange",
|
||||
debounce((prj) => {
|
||||
this.selProject = prj;
|
||||
})
|
||||
);
|
||||
this.selProject = this.$store.getters.selProject;
|
||||
console.log("----mount--->");
|
||||
document.body.classList.add("is-sapi");
|
||||
this.initEngine();
|
||||
},
|
||||
methods: {
|
||||
loadDevicePosition() {
|
||||
this.$api.bim
|
||||
.devicePositionGet({
|
||||
projectId: this.selProject.id,
|
||||
})
|
||||
.then((res) => {
|
||||
let cnt = 0;
|
||||
this.devices = (res.data || [])
|
||||
.map((item) => {
|
||||
item.show = item.enabled != 0;
|
||||
item.position = this.$tryToJson(item.position, []);
|
||||
item.elId = (item.deviceId ? item.deviceId : cnt++) + "-" + item.deviceType;
|
||||
return item;
|
||||
})
|
||||
.filter((item) => item.position.length == 3);
|
||||
this.showDevices = this.devices.filter((item) => this.devicTypes.includes(item.deviceType));
|
||||
this.clearLabels();
|
||||
this.addDeviceLabel();
|
||||
setTimeout(() => {
|
||||
this.loadDeviceData();
|
||||
}, 100);
|
||||
});
|
||||
},
|
||||
changeDevicType(n) {
|
||||
let devs = this.devices.filter((d) => d.devicType == n);
|
||||
if (this.devicTypes.includes(n)) {
|
||||
let idx = this.devicTypes.indexOf(n);
|
||||
this.devicTypes.splice(idx, 1);
|
||||
devs.forEach(item=>{
|
||||
bimMgrApi.Label.removeBalloon({id:item.elId});
|
||||
});
|
||||
} else {
|
||||
this.devicTypes.push(n);
|
||||
devs.forEach(item=>{
|
||||
this.AddLable(item)
|
||||
});
|
||||
}
|
||||
this.showDevices = this.devices.filter((item) => this.devicTypes.includes(item.deviceType));
|
||||
// this.clearLabels();
|
||||
// this.addDeviceLabel();
|
||||
// setTimeout(() => {
|
||||
// this.loadDeviceData();
|
||||
// }, 100);
|
||||
},
|
||||
AddLable: function (item) {
|
||||
let bg = "2.png";
|
||||
let img = "videoMonitor";
|
||||
if (item.deviceType == 1) {
|
||||
img = "videoMonitor";
|
||||
bg = "3.png";
|
||||
} else if (item.deviceType == 2) {
|
||||
img = "pitMonitor";
|
||||
} else if (item.deviceType == 3) {
|
||||
img = "towerMonitor";
|
||||
} else if (item.deviceType == 4) {
|
||||
img = "power";
|
||||
}
|
||||
|
||||
let html =
|
||||
css +
|
||||
`
|
||||
<div class='tag-box box-type-${item.deviceType}' title='${item.name}'>
|
||||
<img src='bimImages/${bg}' alt='' class="tag-bg-img">
|
||||
<img src='bimImages/${img}.png' class="tag-img">
|
||||
<span class='tag-txt' style='color:#ffffff;font-size:14px'>
|
||||
${item.name} - 数据加载中。。。
|
||||
</span>
|
||||
</div>`;
|
||||
|
||||
window.bimMgrApi.Label.addBalloon({
|
||||
Html: html,
|
||||
ID: item.elId,
|
||||
Pivot: "2",
|
||||
Position: item.position,
|
||||
Title: item.name,
|
||||
MaxDistance: 1e6,
|
||||
onClick: (opt) => this.deviceClick(item, opt),
|
||||
});
|
||||
this.addLabels.push(item.elId);
|
||||
},
|
||||
deviceClick(item, opt) {
|
||||
console.log(item, opt);
|
||||
},
|
||||
addDeviceLabel() {
|
||||
this.showDevices.forEach((d) => {
|
||||
if (d.position && d.position.length > 0) {
|
||||
this.AddLable(d);
|
||||
}
|
||||
});
|
||||
},
|
||||
removeLabel(lbl) {
|
||||
if (this.addLabels.includes(lbl)) {
|
||||
window.bimMgrApi.Label.removeBalloon(lbl);
|
||||
let idx = this.addLabels.indexOf(lbl);
|
||||
this.addLabels.splice(idx, 1);
|
||||
}
|
||||
},
|
||||
clearLabels() {
|
||||
this.addLabels.forEach((id) => {
|
||||
window.bimMgrApi.Label.removeBalloon(id);
|
||||
});
|
||||
this.addLabels = [];
|
||||
},
|
||||
initEngine() {
|
||||
this.elId++;
|
||||
this.activeMenu = 0;
|
||||
setTimeout(() => {
|
||||
this.loadEngine();
|
||||
}, 10);
|
||||
},
|
||||
loadEngine() {
|
||||
window.bimMgrApi = new SAPI(
|
||||
{
|
||||
serverIP: window.config.serverIP, //服务ip地址
|
||||
port: window.config.port, //HTTP端口
|
||||
useHttps: window.config.useHttps, //使用Https
|
||||
container: "bimManageContainer", //[必须]容器id
|
||||
secretKey: window.config.secretKey,
|
||||
openEarth: window.config.openEarth, //[可选]开启Gis场景
|
||||
bgColor: window.config.bgColor, //[可选]bim场景背景色, 传值即为纯色天空盒
|
||||
tintColor: window.config.tintColor, //[可选]osgb单体化颜色
|
||||
sceneTime: window.config.sceneTime, //[可选]分别为当前时间、日出时间、日落时间
|
||||
cadMode: window.config.cadMode, // 是否是Cad图纸预览模式
|
||||
},
|
||||
() => {
|
||||
this.initSuccess = true;
|
||||
console.log("初始化成功");
|
||||
setTimeout(() => {
|
||||
this.initLoadModel();
|
||||
}, 10);
|
||||
let mapOptions = {
|
||||
imgs: {
|
||||
// 六面图片
|
||||
top: "/cdn/bim/sapi/img/top.png",
|
||||
bottom: "/cdn/bim/sapi/img/under.png",
|
||||
east: "/cdn/bim/sapi/img/east.png",
|
||||
south: "/cdn/bim/sapi/img/south.png",
|
||||
west: "/cdn/bim/sapi/img/west.png",
|
||||
north: "/cdn/bim/sapi/img/north.png",
|
||||
},
|
||||
offset: {
|
||||
// 屏幕坐标偏移
|
||||
corner: GLENavigationCube.RightTop,
|
||||
x: 25,
|
||||
y: 20,
|
||||
},
|
||||
cube: {
|
||||
hoverColor: "#7193dc", // 立方导航快鼠标移过显示颜色
|
||||
size: 32, // 导航立方尺寸
|
||||
hotPointSize: 7, // 导航立方棱角热点区域尺寸
|
||||
cubeTextColor: "#4c4c4ccc", // cube 各个面文字颜色
|
||||
cubeStrokeColor: "#374769cc", // cube 各个面边框颜色
|
||||
cubeFillColor: "#374769cc", // cube 各个面填充颜色
|
||||
},
|
||||
zoomRatios: 1, // 缩放倍率
|
||||
show: true, // 是否显示
|
||||
showAxes: true, // 是否显示XYZ轴线
|
||||
};
|
||||
bimMgrApi.Plugin.initNavCube(mapOptions);
|
||||
}
|
||||
);
|
||||
},
|
||||
initLoadModel() {
|
||||
this.$api.bim
|
||||
.listBimModel({
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
comId: this.currentComId,
|
||||
projectId: this.currentPrjId,
|
||||
})
|
||||
.then((d) => {
|
||||
this.models = d.rows || [];
|
||||
if (this.models.length == 0) {
|
||||
this.$modal.msgError("暂无模型,请先关联模型");
|
||||
} else {
|
||||
this.models.forEach((item) => {
|
||||
this.addModel(item.lightweightName);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
addModel(modelId, cb) {
|
||||
let url = `${window.config.modelUrl}/Tools/output/model/${modelId}/root.glt`;
|
||||
console.log(modelId, url);
|
||||
bimMgrApi.Model.add(
|
||||
url,
|
||||
modelId,
|
||||
() => {},
|
||||
() => {
|
||||
cb && cb();
|
||||
console.log("加载模型成功");
|
||||
this.loadDevicePosition();
|
||||
setTimeout(() => {
|
||||
bimMgrApi.Camera.getViewPort((p) => {
|
||||
this.viewPoint = p;
|
||||
});
|
||||
}, 1000);
|
||||
}
|
||||
);
|
||||
},
|
||||
resetScene() {
|
||||
bimMgrApi.Camera.stopImmersiveRoam();
|
||||
bimMgrApi.Model.location(bimMgrApi.m_model.keys().toArray()[0]);
|
||||
bimMgrApi.Plugin.deleteMiniMap();
|
||||
if (this.viewPoint) {
|
||||
bimMgrApi.Camera.setViewPort(this.viewPoint);
|
||||
}
|
||||
},
|
||||
loadDeviceData() {
|
||||
if (this.loadDevDatatimeOut) {
|
||||
clearTimeout(this.loadDevDatatimeOut);
|
||||
this.loadDevDatatimeOut = null;
|
||||
}
|
||||
let prjId = this.selProject.id;
|
||||
if (this.devicTypes.includes(1)) {
|
||||
this.$api.bim.videoMonitorBimData({ projectId: prjId }).then((res) => {
|
||||
this.videoData = res.data || [];
|
||||
});
|
||||
}
|
||||
if (this.devicTypes.includes(3)) {
|
||||
this.$api.bim.devTowerBimData({ projectId: prjId }).then((res) => {
|
||||
this.towerData = res.data || [];
|
||||
console.log("towerData", this.towerData);
|
||||
this.towerData.forEach((item) => {
|
||||
let id = item.cfgId + "-3";
|
||||
let html = this.getTowerHtml(item);
|
||||
bimMgrApi.Label.updateBalloon({
|
||||
ID: id,
|
||||
Html: html,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
if (this.devicTypes.includes(4)) {
|
||||
this.$api.bim.devIotBimData({ projectId: prjId }).then((res) => {
|
||||
this.iotData = res.data || [];
|
||||
this.iotData.forEach((item) => {
|
||||
let id = item.cfgId + "-4";
|
||||
let html = this.getIotHtml(item);
|
||||
bimMgrApi.Label.updateBalloon({
|
||||
ID: id,
|
||||
Html: html,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
this.loadDevDatatimeOut = setTimeout(this.loadDeviceData, 60 * 1000);
|
||||
},
|
||||
getTowerHtml(item) {
|
||||
let bg = "2.png";
|
||||
let img = "towerMonitor";
|
||||
|
||||
return (
|
||||
css +
|
||||
`
|
||||
<div class='tag-box box-type-3'>
|
||||
<img src='bimImages/${bg}' alt='' class="tag-bg-img">
|
||||
<img src='bimImages/${img}.png' class="tag-img">
|
||||
<span class='tag-txt' style='color:#ffffff;font-size:14px'>
|
||||
|
||||
</span>
|
||||
</div>`
|
||||
);
|
||||
},
|
||||
getIotHtml(item) {
|
||||
let bg = "2.png";
|
||||
let img = "power";
|
||||
|
||||
return (
|
||||
css +
|
||||
`
|
||||
<div class='tag-box box-type-3'>
|
||||
<img src='bimImages/${bg}' alt='' class="tag-bg-img">
|
||||
<img src='bimImages/${img}.png' class="tag-img">
|
||||
<span class='tag-txt' style='color:#ffffff;font-size:14px'>
|
||||
|
||||
</span>
|
||||
</div>`
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.bim-manage {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
#bimManage {
|
||||
height: 100%;
|
||||
#bimManageContainer {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.data-content {
|
||||
position: absolute;
|
||||
height: 70vh;
|
||||
width: 20%;
|
||||
border: solid 1px #75fbfdaa;
|
||||
background-color: #06445b81;
|
||||
&.div-left {
|
||||
top: 10vh;
|
||||
left: 5%;
|
||||
}
|
||||
&.div-right {
|
||||
top: 10vh;
|
||||
right: 5%;
|
||||
}
|
||||
.div-row {
|
||||
height: 33%;
|
||||
.row-title {
|
||||
background: linear-gradient(0deg, #105696, #c0dafb00, #1765ae);
|
||||
padding-left: 10px;
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
.svg-icon {
|
||||
fill: #75fbfd;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.div-tools {
|
||||
position: absolute;
|
||||
bottom: 20vh;
|
||||
left: 50%;
|
||||
margin-left: -200px;
|
||||
display: flex;
|
||||
background: #00000080;
|
||||
border-radius: 10px;
|
||||
.tool-item {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
padding: 10px;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
&.is-active {
|
||||
.icon {
|
||||
background: #097fca94;
|
||||
.svg-icon {
|
||||
fill: #75fbfd;
|
||||
}
|
||||
}
|
||||
.sp-text {
|
||||
color: #75fbfd;
|
||||
}
|
||||
}
|
||||
.icon {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background: #c0c4cca1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 15px;
|
||||
.svg-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
}
|
||||
.sp-text {
|
||||
margin-top: 4px;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.test-box {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
.tag-box {
|
||||
position: relative;
|
||||
}
|
||||
.tag-img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 18px;
|
||||
margin-left: -10px;
|
||||
}
|
||||
.tag-txt {
|
||||
position: absolute;
|
||||
top: 30%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -144,6 +144,11 @@ export default {
|
|||
console.log("加载模型成功");
|
||||
cb && cb();
|
||||
this.$emit("change");
|
||||
setTimeout(()=>{
|
||||
api.Camera.getViewPort(p=>{
|
||||
this.$emit("modelAdd",p);
|
||||
});
|
||||
},1000);
|
||||
}
|
||||
);
|
||||
},
|
||||
|
|
|
@ -1,55 +1,30 @@
|
|||
<template>
|
||||
<div class="bim-setting-page app-container2">
|
||||
<div id="bimSettingContainer"></div>
|
||||
<model-floor-tree
|
||||
ref="modelFloorTree"
|
||||
@change="doChange"
|
||||
:projectMessage="models"
|
||||
v-if="showTree"
|
||||
></model-floor-tree>
|
||||
<model-floor-tree ref="modelFloorTree" @change="doChange" @modelAdd="modelAdded" :projectMessage="models" v-if="showTree"></model-floor-tree>
|
||||
<div class="footer-box" v-if="showModels.length > 0">
|
||||
<a-tooltip placement="top" title="主视图">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(0)"
|
||||
:class="activeMenu == 0 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(0)" :class="activeMenu == 0 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="home" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="第一人称漫游">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(1)"
|
||||
:class="activeMenu == 1 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(1)" :class="activeMenu == 1 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="roam" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="自定义视点漫游">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(2)"
|
||||
:class="activeMenu == 2 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(2)" :class="activeMenu == 2 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="view" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="视点管理">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(3)"
|
||||
:class="activeMenu == 3 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(3)" :class="activeMenu == 3 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="camera" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="构件隐藏">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(4)"
|
||||
:class="activeMenu == 4 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(4)" :class="activeMenu == 4 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="hide" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
|
@ -62,23 +37,11 @@
|
|||
<svg-icon icon-class="hide" v-if="activeMenu == 4" />
|
||||
{{ param.title }}
|
||||
</div>
|
||||
<el-icon
|
||||
@click="doToolsClose"
|
||||
style="color: #000; font-size: 20px; cursor: pointer"
|
||||
class="tools-close"
|
||||
>
|
||||
<el-icon @click="doToolsClose" style="color: #000; font-size: 20px; cursor: pointer" class="tools-close">
|
||||
<Close />
|
||||
</el-icon>
|
||||
<person-roaming
|
||||
v-if="activeMenu == 1"
|
||||
ref="personRoaming"
|
||||
:me="this"
|
||||
></person-roaming>
|
||||
<custom-viewpoint
|
||||
v-if="activeMenu == 2"
|
||||
ref="customViewpoint"
|
||||
:me="this"
|
||||
></custom-viewpoint>
|
||||
<person-roaming v-if="activeMenu == 1" ref="personRoaming" :me="this"></person-roaming>
|
||||
<custom-viewpoint v-if="activeMenu == 2" ref="customViewpoint" :me="this"></custom-viewpoint>
|
||||
<viewpoint v-if="activeMenu == 3" ref="viewpoint" :me="this"></viewpoint>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -113,6 +76,7 @@ export default {
|
|||
activeMenu: 0,
|
||||
showModels: [],
|
||||
param: {},
|
||||
viewPoint:null,
|
||||
};
|
||||
},
|
||||
beforeUnmount() {
|
||||
|
@ -128,6 +92,9 @@ export default {
|
|||
this.initEngine();
|
||||
},
|
||||
methods: {
|
||||
modelAdded(point){
|
||||
this.viewPoint=point;
|
||||
},
|
||||
doChange() {
|
||||
this.showModels = api.m_model.keys().toArray();
|
||||
console.log("--change--");
|
||||
|
@ -139,6 +106,9 @@ export default {
|
|||
api.Camera.stopImmersiveRoam();
|
||||
api.Model.location(api.m_model.keys().toArray()[0]);
|
||||
api.Plugin.deleteMiniMap();
|
||||
if(this.viewPoint){
|
||||
api.Camera.setViewPort(this.viewPoint);
|
||||
}
|
||||
},
|
||||
doMenu(n) {
|
||||
if (n == this.activeMenu) {
|
||||
|
|
|
@ -1,54 +1,31 @@
|
|||
<template>
|
||||
<div class="bim-sand-table-setting app-container2">
|
||||
<div id="bimSandTableSetting" :key="elId">
|
||||
<div
|
||||
id="bimSandTableSettingContainer"
|
||||
class="bimSandTableSettingContainer"
|
||||
></div>
|
||||
<div id="bimSandTableSettingContainer" class="bimSandTableSettingContainer"></div>
|
||||
</div>
|
||||
<div class="footer-box" v-if="models.length > 0">
|
||||
<a-tooltip placement="top" title="主视图">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(0)"
|
||||
:class="activeMenu == 0 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(0)" :class="activeMenu == 0 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="home" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="视频监控">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(1)"
|
||||
:class="activeMenu == 1 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(1)" :class="activeMenu == 1 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="videoMonitor" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="基坑监控">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(2)"
|
||||
:class="activeMenu == 2 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(2)" :class="activeMenu == 2 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="pitMonitor" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="塔机监控">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(3)"
|
||||
:class="activeMenu == 3 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(3)" :class="activeMenu == 3 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="towerMonitor" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<a-tooltip placement="top" title="电箱监控">
|
||||
<div
|
||||
class="footer-btn"
|
||||
@click="doMenu(4)"
|
||||
:class="activeMenu == 4 ? 'is-active' : ''"
|
||||
>
|
||||
<div class="footer-btn" @click="doMenu(4)" :class="activeMenu == 4 ? 'is-active' : ''">
|
||||
<svg-icon icon-class="power" />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
|
@ -61,11 +38,7 @@
|
|||
<svg-icon icon-class="power" v-if="activeMenu == 4" />
|
||||
{{ title }}
|
||||
</div>
|
||||
<el-icon
|
||||
@click="doToolsClose"
|
||||
style="color: #000; font-size: 20px; cursor: pointer"
|
||||
class="tools-close"
|
||||
>
|
||||
<el-icon @click="doToolsClose" style="color: #000; font-size: 20px; cursor: pointer" class="tools-close">
|
||||
<Close />
|
||||
</el-icon>
|
||||
<div class="device-list scroll">
|
||||
|
@ -78,11 +51,7 @@
|
|||
{{ item.name }}
|
||||
</div>
|
||||
<el-switch v-model="item.show" size="small" />
|
||||
<svg-icon
|
||||
icon-class="position"
|
||||
class="guide"
|
||||
@click="getPosition(item, index)"
|
||||
/>
|
||||
<svg-icon icon-class="position" class="guide" @click="getPosition(item, index)" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="tools-bottom">
|
||||
|
@ -93,10 +62,7 @@
|
|||
<div class="tag-box">
|
||||
<img :src="'images/2.png'" alt="" />
|
||||
<span class="tag-txt" style="color: #ffffff; font-size: 14px">
|
||||
<img
|
||||
:src="'images/videoMonitor.svg'"
|
||||
style="width: 20px; height: 20px"
|
||||
/>
|
||||
<img :src="'images/videoMonitor.svg'" style="width: 20px; height: 20px" />
|
||||
aaa</span
|
||||
>
|
||||
</div>
|
||||
|
@ -109,11 +75,7 @@ import useUserStore from "@/store/modules/user";
|
|||
import { listBimModel } from "@/api/bim/bimModel";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { emitter } from "@/router/index.js";
|
||||
import {
|
||||
devicePositionGet,
|
||||
devicePositionAddItems,
|
||||
devicePositionUpdateItems,
|
||||
} from "@/api/bim/bim.js";
|
||||
import { devicePositionGet, devicePositionAddItems, devicePositionUpdateItems } from "@/api/bim/bim.js";
|
||||
import icons from "./icons.js";
|
||||
export default {
|
||||
name: "SandTableSetting",
|
||||
|
@ -133,6 +95,7 @@ export default {
|
|||
selItem: null,
|
||||
iconVideo: "",
|
||||
addLabels: [],
|
||||
viewPoint:null,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
@ -171,6 +134,7 @@ export default {
|
|||
return {
|
||||
deviceId: item.deviceId,
|
||||
deviceType: item.deviceType,
|
||||
projectId: this.currentPrjId,
|
||||
position: JSON.stringify(item.position),
|
||||
enabled: item.show ? 1 : 0,
|
||||
currentUser: this.userStore.name,
|
||||
|
@ -281,8 +245,11 @@ export default {
|
|||
resetScene() {
|
||||
this.clearLabels();
|
||||
sandSettingApi.Camera.stopImmersiveRoam();
|
||||
sandSettingApi.Model.location(api.m_model.keys().toArray()[0]);
|
||||
sandSettingApi.Model.location(sandSettingApi.m_model.keys().toArray()[0]);
|
||||
sandSettingApi.Plugin.deleteMiniMap();
|
||||
if(this.viewPoint){
|
||||
sandSettingApi.Camera.setViewPort(this.viewPoint);
|
||||
}
|
||||
},
|
||||
doMenu(n) {
|
||||
if (n == this.activeMenu) {
|
||||
|
@ -404,6 +371,11 @@ export default {
|
|||
() => {
|
||||
cb && cb();
|
||||
console.log("加载模型成功");
|
||||
setTimeout(()=>{
|
||||
sandSettingApi.Camera.getViewPort(p=>{
|
||||
this.viewPoint=p;
|
||||
});
|
||||
},1000);
|
||||
}
|
||||
);
|
||||
},
|
||||
|
|