dev_xd
姜玉琦 2025-07-07 14:21:00 +08:00
commit c88e94c366
9 changed files with 226 additions and 95 deletions

View File

@ -30,7 +30,7 @@
<link rel="stylesheet" href="/cesium/Widgets/widgets.css" />
<!-- <script src="/cesium/jquery-3.0.0.min.js"></script> -->
<script src="/cesium/Cesium.js?v=20230913"></script>
<script src="/cesium/BIMGISEngine.js?v=20230920"></script>
<script src="/cesium/BIMGISEngine-min.js?v=20230920"></script>
<script src="/cesium/initApi.js?v=20230920"></script>
<!--<script src="/cdn/map/initApi.js"></script> -->
<script src="/cdn/map/mapmodle.js?v=2024032501"></script>

View File

@ -143,7 +143,7 @@ const ganttStyle = {
};
function initEngine(that) {
console.log("开始初始化引擎")
console.log("开始初始化引擎");
window.bim4DApi = new SAPI(
{
serverIP: window.config.serverIP, //服务ip地址
@ -240,6 +240,7 @@ function addModel(that, modelId, cb) {
that.viewPoint = p;
that.modelLoaded = true;
});
that.initPlay();
}, 1000);
}
);
@ -251,9 +252,8 @@ function showBim(that, index) {
if (index <= 0) {
index = getCurrentTaskIndex(that);
}
console.log(index);
let showFeatureIds = [];
let currFeatureId = [];
let currFeatureIds = [];
for (let i = 0; i <= that.taskList.length; i++) {
if (i <= index) {
that.taskList[i].gis.forEach((item) => {
@ -265,13 +265,20 @@ function showBim(that, index) {
}
}
if (showFeatureIds.length > 0) {
let featureId = showFeatureIds[0];
let modelId = featureId.split("_")[0];
let tmpsIds2 = showFeatureIds.splice(0, maxLen);
api.Model.original(modelId);
api.Feature.showFeatures(tmpsIds2.join("#"));
setFeatueVisible(showFeatureIds, true);
}
setTimeout(() => {
that.lastFeatureIds.forEach((it) => {
api.Feature.setColor(it, "rgba(255,255,255,1)");
});
currFeatureIds = that.taskList[index].gis.map((item) => item.featureId);
if (currFeatureIds.length > 0) {
currFeatureIds.forEach((it) => {
api.Feature.setColor(it, "rgba(255,0,255,1)");
});
}
that.lastFeatureIds = currFeatureIds;
}, 0);
}
function setFeatueVisible(featureIds, show) {
@ -299,10 +306,95 @@ function getCurrentTaskIndex(that) {
return index;
}
function resetScene(that) {
let api = bim4DApi;
api.Camera.stopImmersiveRoam();
api.Model.location(api.m_model.keys().toArray()[0]);
api.Plugin.deleteMiniMap();
if (that.viewPoint) {
api.Camera.setViewPort(that.viewPoint);
}
}
function original() {
let api = bim4DApi;
for (let modelId in api.m_model) {
api.Model.original(modelId);
}
}
function getFirstFeatureId(that) {
for (let i = 0; i < that.taskList.length; i++) {
let task = that.taskList[i];
if (task.gis.length > 0) {
return task.gis[0].featureId;
}
}
return "";
}
function preparePlay(that) {
let featureId = getFirstFeatureId(that);
if (!featureId) {
return;
}
let api = bim4DApi;
api.Feature.showFeatures(featureId);
api.Feature.setColor(featureId, "rgba(255,255,255,0)");
}
function playStop(that) {
let api = bim4DApi;
that.lastFeatureIds.forEach((it) => {
api.Feature.setColor(it, "rgba(255,255,255,1)");
});
}
function doPLay(that) {
that.playTimer = setInterval(() => {
that.playValue++;
if (that.playValue >= that.taskList.length) {
playStop(that);
that.doStop();
} else {
that.doPlayPan(that.playValue);
}
}, that.playTime);
}
function modelRotate(that) {
let api = bim4DApi;
if(that.isPlay!=0){
return;
}
if (that.models.length > 0) {
api.Model.getCenter(that.models[0].modelId, (data) => {
data.xx = 0.5;
api.Camera.autoRotate({
Speed: 0.5,
Position: data.position,
});
});
}
}
function modelClearRotate() {
let api = window.bim4DApi;
if (api) {
api.Camera.stopAutoRotate();
}
}
export default {
options,
ganttStyle,
initEngine,
initLoadModel,
showBim,
resetScene,
original,
getFirstFeatureId,
preparePlay,
playStop,
getCurrentTaskIndex,
doPLay,
modelRotate,
modelClearRotate,
};

View File

@ -11,7 +11,20 @@
<div class="icon" @click="doPlay">
<svg-icon icon-class="play" />
</div>
<div class="icon"><svg-icon icon-class="tools" /></div>
<el-popover title="" trigger="click" placement="top" ref="popSetting" @show="showSetting">
<div>
<div>
<i class="el-icon-info" style="color: orange"></i>
设置间隔时间(单位:毫秒,最小值为500)
</div>
<el-input v-model="playTime" placeholder="请输入播放速度" />
<div style="margin-top: 10px; text-align: right">
<el-button type="primary" size="mini" @click="doSaveSetting"></el-button>
<el-button size="mini" @click="doCancelSetting"></el-button>
</div>
</div>
<div class="icon" slot="reference"><svg-icon icon-class="tools" /></div>
</el-popover>
</template>
<template v-if="isPlay == 1">
@ -27,6 +40,9 @@
<div class="icon" @click="doContinue">
<svg-icon icon-class="play" />
</div>
<div class="icon" @click="doStop">
<svg-icon icon-class="stop" />
</div>
</template>
<el-slider v-model="playValue" :max="taskList.length" class="slider" @change="doSliderChange" />
@ -66,14 +82,36 @@ export default {
planStyle: bim4DTools.ganttStyle,
playValue: 0,
isPlay: 0,
playTime: 300,
playTime: 500,
showPlan: true,
lastFeatureIds: [],
};
},
beforeDestroy() {
document.body.classList.remove("is-sapi");
},
mounted() {
let timer;
const resetTimer = () => {
clearTimeout(timer);
bim4DTools.modelClearRotate();
timer = setTimeout(() => {
bim4DTools.modelRotate(this)
clearTimeout(timer);
}, 1000 * 60 * 5);
};
document.addEventListener('mousemove', resetTimer);
document.addEventListener('keydown', resetTimer);
resetTimer();
this.$once('hook:beforeDestroy', () => {
document.removeEventListener('mousemove', resetTimer);
document.removeEventListener('keydown', resetTimer);
clearTimeout(timer);
});
this.$store.dispatch("ChangeNav", 705);
this.dpi = this.$dpi();
window.addEventListener("resize", () => {
@ -97,6 +135,22 @@ export default {
window.D4App = this;
},
methods: {
doSaveSetting() {
if (isNaN(parseInt(this.playTime))) {
this.playTime = 500;
}
if (this.playTime < 500) {
this.playTime = 500;
}
this.$refs.popSetting.showPopper = false;
},
doCancelSetting() {
this.playTime = this.oldPlayTime;
this.$refs.popSetting.showPopper = false;
},
showSetting() {
this.oldPlayTime = this.playTime;
},
initEngine() {
this.elId++;
setTimeout(() => {
@ -106,6 +160,17 @@ export default {
doSwitchPlan() {
this.showPlan = !this.showPlan;
},
initPlay() {
if (!bim4DTools.getFirstFeatureId(this)) {
this.$message.error("未配置计划进度,无法播放!");
return;
}
let playIndex = bim4DTools.getCurrentTaskIndex(this);
if (playIndex > 0) {
bim4DTools.preparePlay(this);
this.doPlayPan(playIndex);
}
},
initPlanList() {
if (this.selProject?.id) {
this.$api.bim.getPlanList(this.selProject.id).then((res) => {
@ -116,6 +181,7 @@ export default {
label: item.taskName,
start: item.planStartDate,
end: item.planEndDate,
percent: 100,
duration: item.taskDuation * 24 * 60 * 60 * 1000,
days: item.taskDuation + "(天)",
collapsed: false,
@ -136,19 +202,23 @@ export default {
}
},
playPlay() {
this.playTimer = setInterval(() => {
this.playValue++;
if (this.playValue > this.taskList.length) {
this.doStop();
} else {
this.doSliderChange();
bim4DTools.original();
bim4DTools.resetScene(this);
this.lastFeatureIds = [];
if (!bim4DTools.getFirstFeatureId(this)) {
this.$message.error("未配置计划进度,无法播放!");
return;
}
}, this.playTime);
bim4DTools.preparePlay(this);
bim4DTools.doPLay(this);
},
doSliderChange() {
let task = this.taskList[this.playValue];
doPlayPan(playIndex) {
if (playIndex >= this.taskList.length) {
return;
}
let task = this.taskList[playIndex];
this.$refs.gantt.scrollToTime(this.$dt(task.start));
console.log(task.start);
let d = this.$dt(task.start).$d;
const current = +d;
const currentOffset = this.$refs.gantt.timeToPixelOffsetX(current);
@ -157,8 +227,21 @@ export default {
el.setAttribute("x1", currentOffset);
el.setAttribute("x2", currentOffset);
}
this.$refs.gantt.scrollTo(null, 36 * this.playValue);
bim4DTools.showBim(this, this.playValue);
this.$refs.gantt.scrollTo(null, 36 * playIndex);
bim4DTools.showBim(this, playIndex);
},
doSliderChange() {
this.isPlay = 0;
clearInterval(this.playTimer);
bim4DTools.original();
bim4DTools.resetScene(this);
this.lastFeatureIds = [];
if (!bim4DTools.getFirstFeatureId(this)) {
this.$message.error("未配置计划进度,无法播放!");
return;
}
bim4DTools.preparePlay(this);
this.doPlayPan(this.playValue);
},
doPlay() {
this.isPlay = 1;
@ -176,7 +259,7 @@ export default {
},
doContinue() {
this.isPlay = 1;
this.playPlay();
bim4DTools.doPLay(this);
},
},
};
@ -264,6 +347,7 @@ export default {
.svg-icon {
width: 24px;
height: 24px;
fill: deepskyblue;
}
}
.el-slider {
@ -291,12 +375,14 @@ export default {
}
.icon-switch-plan {
position: absolute;
top: 40px;
top: 100px;
right: 40px;
cursor: pointer;
z-index: 9999;
.svg-icon {
width: 30px;
height: 30px;
fill: darkturquoise;
}
}
}

View File

@ -278,7 +278,10 @@ export default {
resolve(nd);
setTimeout(() => {
document.querySelectorAll(".bim-briefing .model-tree .el-tree-node")[0].click();
let els = document.querySelectorAll(".bim-briefing .model-tree .el-tree-node");
if (els.length > 0) {
els[0].click();
}
}, 1000);
} else if (node.level == 1) {
let nd = [];

View File

@ -223,58 +223,6 @@
<span class="sp-text">电箱监控</span>
</div>
</div>
<div class="test-box">
<div class="tag-box box-type-3">
<div class="tag-txt">
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
<div class="data-item"><span class="data-label">高度</span><span class="data-value">15m</span></div>
</div>
<img src="bimImages/4.png" alt="" class="tag-bg-img" />
<img src="bimImages/towerMonitor.png" class="tag-img" />
</div>
</div>
<div class="test-box" style="left: 400px">
<div class="tag-box box-type-3">
<div class="tag-txt">
<table class="tb-power">
<tr>
<td></td>
<td width="150">电压</td>
<td width="150">电流</td>
<td width="150">功率</td>
</tr>
<tr>
<td>A向</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>A向</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>A向</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
</div>
<img src="bimImages/4.png" alt="" class="tag-bg-img" />
<img src="bimImages/towerMonitor.png" class="tag-img" />
</div>
</div>
<video-dialog ref="videoDlg"></video-dialog>
</div>
</template>

View File

@ -164,7 +164,10 @@ export default {
resolve(nd);
setTimeout(() => {
document.querySelectorAll(".bim-roaming .model-tree .el-tree-node")[0].click();
let els = document.querySelectorAll(".bim-roaming .model-tree .el-tree-node");
if (els.length > 0) {
els[0].click();
}
}, 1000);
} else if (node.level == 1) {
let nd = [];

View File

@ -767,7 +767,6 @@ export default {
},
],
}
console.log(option)
return option
},
renderChart7() {

View File

@ -318,7 +318,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select 'a' projectName, count(1) id ,'全部' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.infoType=#{infoType}
<include refid="countUserWhere"></include>
union
select 'b' projectName, count(1) id,'待整改' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.infoType=#{infoType}
select 'b' projectName, count(1) id,'待整改' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.infoType=#{infoType} and a.checkState in (0)
<include refid="countUserWhere"></include>
union
select 'c' projectName, count(1) id,'待复检' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.infoType=#{infoType} and a.checkState in (1)

View File

@ -58,11 +58,11 @@ public class SmzSspProblemmodifyController extends BaseController
SysUser user = SecurityUtils.getLoginUser().getSysUser();
where.setProjectId(user.getActiveProjectId());
//where.setComId(user.getActiveComId());
if(SecurityUtils.isAdmin(SecurityUtils.getUserId()) || SecurityUtils.isGSAdmin()) {
where.setCurrentUserId(null);
}else{
where.setCurrentUserId(user.getUserId());
}
// if(SecurityUtils.isAdmin(SecurityUtils.getUserId()) || SecurityUtils.isGSAdmin()) {
// where.setCurrentUserId(null);
// }else{
// where.setCurrentUserId(user.getUserId());
// }
startPage();
List<SmzSspProblemmodify> list = smzSspProblemmodifyService.selectList(where);
return getDataTable(list);
@ -98,11 +98,11 @@ public class SmzSspProblemmodifyController extends BaseController
SysUser user=SecurityUtils.getLoginUser().getSysUser();
where.setProjectId(user.getActiveProjectId());
//where.setComId(user.getActiveComId());
if(SecurityUtils.isAdmin(SecurityUtils.getUserId()) || SecurityUtils.isGSAdmin()) {
where.setCurrentUserId(null);
}else{
where.setCurrentUserId(user.getUserId());
}
// if(SecurityUtils.isAdmin(SecurityUtils.getUserId()) || SecurityUtils.isGSAdmin()) {
// where.setCurrentUserId(null);
// }else{
// where.setCurrentUserId(user.getUserId());
// }
List<SmzSspProblemmodify> result=smzSspProblemmodifyService.getListCount(where);
return AjaxResult.success(result);
}