修改模型的懒加载
parent
ca25764569
commit
8c25c8d18a
|
@ -22,7 +22,8 @@
|
|||
}"
|
||||
node-key="key"
|
||||
@check="onCheckTree"
|
||||
:data="modelTrees"
|
||||
:load="loadNode"
|
||||
lazy
|
||||
show-checkbox></el-tree>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -261,6 +262,72 @@ export default {
|
|||
this.initEngine();
|
||||
},
|
||||
methods: {
|
||||
loadNode(node, resolve) {
|
||||
let that = this;
|
||||
if (node.level == 0) {
|
||||
let nd = [
|
||||
{
|
||||
title: "项目模型",
|
||||
level: 0,
|
||||
type: "root",
|
||||
key: "root",
|
||||
children: [],
|
||||
hadLoad: true,
|
||||
},
|
||||
];
|
||||
|
||||
resolve(nd);
|
||||
setTimeout(() => {
|
||||
document.querySelectorAll(".bim-briefing .model-tree .el-tree-node")[0].click();
|
||||
}, 1000);
|
||||
} else if (node.level == 1) {
|
||||
let nd = [];
|
||||
that.models.forEach((d) => {
|
||||
let mnd = {
|
||||
title: d.modelName,
|
||||
level: 1,
|
||||
type: "model",
|
||||
hasLoad: false,
|
||||
modelId: d.lightweightName,
|
||||
key: d.lightweightName,
|
||||
externalId: "0",
|
||||
glid: "",
|
||||
children: [],
|
||||
data: d,
|
||||
};
|
||||
nd.push(mnd);
|
||||
});
|
||||
resolve(nd);
|
||||
} else {
|
||||
this.getTreeChildren(node, resolve);
|
||||
}
|
||||
},
|
||||
getTreeChildren(node, resolve) {
|
||||
let that = this;
|
||||
let data = node.data;
|
||||
this.$api.bim.getModelTree(data.modelId, data.glid).then((d) => {
|
||||
let tmps = (d.data || []).map((it) => {
|
||||
let title = it.externalId == 0 ? it.name : it.externalId;
|
||||
title = title.replaceAll('"', "").replaceAll("'", "").replaceAll("\\", "");
|
||||
it.title = title;
|
||||
it.key = it.glid;
|
||||
it.modelId = data.modelId;
|
||||
it.type = "data";
|
||||
it.leaf = +it.externalId != 0;
|
||||
let o = this.convertFeatureInfo(it, data.modelId);
|
||||
return o;
|
||||
});
|
||||
resolve(tmps);
|
||||
});
|
||||
},
|
||||
convertFeatureInfo(o, modelId) {
|
||||
o.modelId = modelId;
|
||||
o.featureId = o.modelId + "^" + o.externalId;
|
||||
o.name = o.name || "";
|
||||
o.name = o.name.replaceAll('"', "").replaceAll("'", "").replaceAll("\\", "");
|
||||
o.info = `[${o.externalId}]${o.groupname}-${o.name}`;
|
||||
return o;
|
||||
},
|
||||
doSelectMenu(index) {
|
||||
this.selectMenu = index;
|
||||
briefingTools.clearEvent(this);
|
||||
|
@ -301,69 +368,77 @@ export default {
|
|||
break;
|
||||
}
|
||||
},
|
||||
onCheckTree(node, event) {
|
||||
async onCheckTree(node, event) {
|
||||
let api = bimBriefingApi;
|
||||
let that = this;
|
||||
if (!this.modelLoaded) {
|
||||
this.$message.error("模型未加载完成,请稍后重试");
|
||||
return;
|
||||
}
|
||||
this.playCancle();
|
||||
let checked = event.checkedNodes.includes(node);
|
||||
console.log(node, event, checked);
|
||||
if (node.type == "root") {
|
||||
//bimBriefingApi
|
||||
node.children.forEach((m) => {
|
||||
if (bimBriefingApi.m_model.has(m.modelId)) {
|
||||
bimBriefingApi.Model.remove(m.modelId);
|
||||
}
|
||||
if (checked) {
|
||||
this.addModel(m.modelId);
|
||||
}
|
||||
that.models.forEach((it) => {
|
||||
api.Model.setVisible(it.modelId, true);
|
||||
api.Model.original(it.modelId);
|
||||
});
|
||||
} else {
|
||||
that.models.forEach((it) => {
|
||||
api.Model.setVisible(it.modelId, false);
|
||||
});
|
||||
}
|
||||
} else if (node.type == "model") {
|
||||
if (bimBriefingApi.m_model.has(node.modelId)) {
|
||||
bimBriefingApi.Model.remove(node.modelId);
|
||||
}
|
||||
if (checked) {
|
||||
this.addModel(node.modelId);
|
||||
api.Model.setVisible(node.modelId, true);
|
||||
api.Model.original(node.modelId);
|
||||
} else {
|
||||
api.Model.setVisible(node.modelId, false);
|
||||
}
|
||||
} else {
|
||||
if (bimBriefingApi.m_model.size == 0) {
|
||||
let modelId = checkNode.modelId;
|
||||
this.addModel(modelId, () => {
|
||||
this.showItem(node, event, checked);
|
||||
});
|
||||
let isPartLoad = false;
|
||||
if (event.checkedKeys.length == 1 && checked) {
|
||||
isPartLoad = true;
|
||||
}
|
||||
let selFeatureIds = [];
|
||||
if (node.leaf) {
|
||||
selFeatureIds = [node.featureId];
|
||||
} else {
|
||||
this.showItem(node, event, checked);
|
||||
if (!node.leafs) {
|
||||
let leafs = await this.getNodeLeafs(node);
|
||||
node.leafs = leafs;
|
||||
}
|
||||
selFeatureIds = node.leafs.map((f) => f.featureId);
|
||||
}
|
||||
let tmps = selFeatureIds;
|
||||
if (!checked) {
|
||||
this.setFeatueVisible(tmps, false);
|
||||
} else {
|
||||
if (isPartLoad) {
|
||||
api.Model.setVisible(node.modelId, true);
|
||||
api.Model.original(node.modelId);
|
||||
let tmpsIds2 = tmps.splice(0, 1000);
|
||||
api.Feature.showFeatures(tmpsIds2.join("#"));
|
||||
this.setFeatueVisible(tmps, true);
|
||||
} else {
|
||||
this.setFeatueVisible(tmps, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async showItem(checkNode, event, checked) {
|
||||
setFeatueVisible(featureIds, show) {
|
||||
let len = 1000;
|
||||
let api = bimBriefingApi;
|
||||
api.Model.setVisible(checkNode.modelId, true);
|
||||
let externalId = checkNode.externalId;
|
||||
if (externalId != 0) {
|
||||
if (checked) {
|
||||
this.visibleList.push(externalId);
|
||||
api.Feature.setVisible(this.visibleList.join("#"), true, checkNode.modelId, false);
|
||||
} else {
|
||||
this.visibleList = this.visibleList.filter((item) => item !== externalId);
|
||||
api.Feature.setVisible(externalId, false, checkNode.modelId);
|
||||
}
|
||||
} else {
|
||||
const res = await this.$api.bim.getTreeAllLeafChild(checkNode.modelId, checkNode.glid);
|
||||
let nodes = res.data || [];
|
||||
if (nodes.length > 0) {
|
||||
if (checked) {
|
||||
this.visibleList = MergeArray(nodes, this.visibleList);
|
||||
api.Model.setVisible(checkNode.modelId, true);
|
||||
api.Feature.setVisible(this.visibleList.join("#"), true, checkNode.modelId, false);
|
||||
} else {
|
||||
this.visibleList = DelArray(this.visibleList, nodes);
|
||||
api.Feature.setVisible(nodes.join("#"), false, checkNode.modelId);
|
||||
}
|
||||
}
|
||||
let cnt = featureIds.length;
|
||||
for (let i = 0; i < cnt; i += len) {
|
||||
api.Feature.setVisible(featureIds.slice(i, i + len).join("#"), show);
|
||||
}
|
||||
},
|
||||
async getNodeLeafs(node) {
|
||||
const res = await this.$api.bim.getTreeAllLeafChild(node.modelId, node.glid);
|
||||
return (res.data || []).map((f) => {
|
||||
return this.convertFeatureInfo(f, node.modelId);
|
||||
});
|
||||
},
|
||||
arrowRetract() {
|
||||
if (this.leftShow == true) {
|
||||
this.rightSrc = "./images/arrow_right_open.png";
|
||||
|
@ -458,10 +533,15 @@ export default {
|
|||
this.$message.error("暂无模型,请先关联模型");
|
||||
} else {
|
||||
this.models.forEach((item) => {
|
||||
item.modelId = item.lightweightName;
|
||||
item.gis = JSON.parse(item.gisJson);
|
||||
this.addModel(item.lightweightName);
|
||||
this.loadModelTree();
|
||||
this.doSelectMenu(7);
|
||||
setTimeout(() => {
|
||||
this.$refs.tree.setChecked(item.lightweightName, true, true);
|
||||
}, 3000);
|
||||
});
|
||||
this.treeKey++;
|
||||
}
|
||||
});
|
||||
this.init();
|
||||
|
|
|
@ -472,7 +472,8 @@ export default {
|
|||
}
|
||||
this.getProjectInfo();
|
||||
this.costOutputSelectYearAndMonth();
|
||||
this.groupByCraftType();
|
||||
//this.groupByCraftType();
|
||||
this.loadAttendanceData();
|
||||
this.getRootScheduleNode();
|
||||
this.getFinishRate();
|
||||
this.selectLastPhotography();
|
||||
|
@ -553,6 +554,60 @@ export default {
|
|||
this.prj.accumulatedCost = d.totalMonth || 0;
|
||||
});
|
||||
},
|
||||
loadAttendanceData() {
|
||||
if (this.selProject.vendorsCode != "uni") {
|
||||
this.loadJhAttendanceData();
|
||||
} else {
|
||||
this.loadUniAttendanceData();
|
||||
}
|
||||
},
|
||||
loadJhAttendanceData() {
|
||||
let data = {
|
||||
id: 0,
|
||||
projectId: this.selProject.id,
|
||||
attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD"),
|
||||
};
|
||||
let ajax = this.$api.detail.groupAllByComany;
|
||||
|
||||
ajax(data).then((d) => {
|
||||
let tmps = d.data || [];
|
||||
const func = (ids) => {
|
||||
let sum = 0;
|
||||
tmps
|
||||
.filter((it) => ids.includes(it.companyTypeId))
|
||||
.map((it) => it.id)
|
||||
.forEach((it) => {
|
||||
sum += it * 1;
|
||||
});
|
||||
return sum;
|
||||
};
|
||||
|
||||
|
||||
this.workerInfo = [
|
||||
{ text: "劳务人员", value: func(["4", "5"]) },
|
||||
{ text: "监理人员", value: func(["2"]) },
|
||||
{ text: "总包人员", value: func(["1"]) },
|
||||
];
|
||||
console.log(this.attendanceData)
|
||||
});
|
||||
},
|
||||
loadUniAttendanceData() {
|
||||
let ajax = this.$api.detail.groupByCraftType;
|
||||
let posData = {
|
||||
comId: this.selProject.comId,
|
||||
projectId: this.selProject.id,
|
||||
};
|
||||
|
||||
ajax(posData).then((d) => {
|
||||
this.workerInfo = (d.data || []).map((it) => {
|
||||
return {
|
||||
text: it.createBy,
|
||||
value: it.id || 0,
|
||||
id: it.craftType,
|
||||
};
|
||||
});
|
||||
});
|
||||
},
|
||||
groupByCraftType() {
|
||||
let ajax = this.$api.detail.groupByCraftType;
|
||||
let posData = {
|
||||
|
@ -1078,7 +1133,8 @@ export default {
|
|||
td,
|
||||
th {
|
||||
border: solid 1px #6ea9ab68;
|
||||
padding: 4px;
|
||||
padding: 7px 4px;
|
||||
font-size: 12px;
|
||||
}
|
||||
th {
|
||||
color: #b0cfff;
|
||||
|
@ -1380,7 +1436,7 @@ export default {
|
|||
th {
|
||||
border: solid 1px #6ea9ab68;
|
||||
padding: 4px;
|
||||
font-size: 12px;
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1560,8 +1616,8 @@ export default {
|
|||
td,
|
||||
th {
|
||||
border: solid 1px #6ea9ab68;
|
||||
padding: 8px;
|
||||
font-size: 24px;
|
||||
padding: 10px;
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,10 +19,12 @@
|
|||
:props="{
|
||||
children: 'children',
|
||||
label: 'title',
|
||||
isLeaf: 'leaf',
|
||||
}"
|
||||
node-key="key"
|
||||
@check="onCheckTree"
|
||||
:data="modelTrees"
|
||||
:load="loadNode"
|
||||
lazy
|
||||
show-checkbox></el-tree>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -122,9 +124,11 @@ export default {
|
|||
roamingLoading: true,
|
||||
selectedRoam: null,
|
||||
modelLoaded: false,
|
||||
isPlay:false,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
window.bimRoaming = this;
|
||||
this.$store.dispatch("ChangeNav", 702);
|
||||
this.dpi = this.$dpi();
|
||||
window.addEventListener("resize", () => {
|
||||
|
@ -144,15 +148,84 @@ export default {
|
|||
this.initEngine();
|
||||
},
|
||||
methods: {
|
||||
loadNode(node, resolve) {
|
||||
let that = this;
|
||||
if (node.level == 0) {
|
||||
let nd = [
|
||||
{
|
||||
title: "项目模型",
|
||||
level: 0,
|
||||
type: "root",
|
||||
key: "root",
|
||||
children: [],
|
||||
hadLoad: true,
|
||||
},
|
||||
];
|
||||
|
||||
resolve(nd);
|
||||
setTimeout(() => {
|
||||
document.querySelectorAll(".bim-roaming .model-tree .el-tree-node")[0].click();
|
||||
}, 1000);
|
||||
} else if (node.level == 1) {
|
||||
let nd = [];
|
||||
that.models.forEach((d) => {
|
||||
let mnd = {
|
||||
title: d.modelName,
|
||||
level: 1,
|
||||
type: "model",
|
||||
hasLoad: false,
|
||||
modelId: d.lightweightName,
|
||||
key: d.lightweightName,
|
||||
externalId: "0",
|
||||
glid: "",
|
||||
children: [],
|
||||
data: d,
|
||||
};
|
||||
nd.push(mnd);
|
||||
});
|
||||
resolve(nd);
|
||||
} else {
|
||||
this.getTreeChildren(node, resolve);
|
||||
}
|
||||
},
|
||||
getTreeChildren(node, resolve) {
|
||||
let that = this;
|
||||
let data = node.data;
|
||||
this.$api.bim.getModelTree(data.modelId, data.glid).then((d) => {
|
||||
let tmps = (d.data || []).map((it) => {
|
||||
let title = it.externalId == 0 ? it.name : it.externalId;
|
||||
title = title.replaceAll('"', "").replaceAll("'", "").replaceAll("\\", "");
|
||||
it.title = title;
|
||||
it.key = it.glid;
|
||||
it.modelId = data.modelId;
|
||||
it.type = "data";
|
||||
it.leaf = +it.externalId != 0;
|
||||
let o = this.convertFeatureInfo(it, data.modelId);
|
||||
return o;
|
||||
});
|
||||
resolve(tmps);
|
||||
});
|
||||
},
|
||||
convertFeatureInfo(o, modelId) {
|
||||
o.modelId = modelId;
|
||||
o.featureId = o.modelId + "^" + o.externalId;
|
||||
o.name = o.name || "";
|
||||
o.name = o.name.replaceAll('"', "").replaceAll("'", "").replaceAll("\\", "");
|
||||
o.info = `[${o.externalId}]${o.groupname}-${o.name}`;
|
||||
return o;
|
||||
},
|
||||
playIRPause(data) {
|
||||
data.play = 2;
|
||||
this.isPlay=false;
|
||||
bimRoadmApi.Camera.pauseImmersiveRoam(false);
|
||||
},
|
||||
playContinue(data) {
|
||||
data.play = 1;
|
||||
this.isPlay=true;
|
||||
bimRoadmApi.Camera.pauseImmersiveRoam(true);
|
||||
},
|
||||
playCancle(data) {
|
||||
this.isPlay = false;
|
||||
if (data) {
|
||||
data.play = 0;
|
||||
this.selectedRoam = null;
|
||||
|
@ -188,80 +261,93 @@ export default {
|
|||
api.Camera.startImmersiveRoam([65.702301, 670.785328, 851.817162]);
|
||||
setTimeout(() => {
|
||||
this.selectedRoam = data;
|
||||
this.isPlay=true;
|
||||
api.Camera.playImmersiveRoam({
|
||||
records: record,
|
||||
isLoopPlay: this.autoPlay,
|
||||
complete: function () {
|
||||
this.selectedRoam = null;
|
||||
data.play = 0;
|
||||
this.isPlay=false;
|
||||
},
|
||||
});
|
||||
}, 400);
|
||||
}, 100);
|
||||
},
|
||||
onCheckTree(node, event) {
|
||||
async onCheckTree(node, event) {
|
||||
let api = bimRoadmApi;
|
||||
let that = this;
|
||||
if (!this.modelLoaded) {
|
||||
this.$message.error("模型未加载完成,请稍后重试");
|
||||
return;
|
||||
}
|
||||
if(this.isPlay){
|
||||
this.playCancle();
|
||||
}
|
||||
let checked = event.checkedNodes.includes(node);
|
||||
console.log(node, event, checked);
|
||||
if (node.type == "root") {
|
||||
//bimRoadmApi
|
||||
node.children.forEach((m) => {
|
||||
if (bimRoadmApi.m_model.has(m.modelId)) {
|
||||
bimRoadmApi.Model.remove(m.modelId);
|
||||
}
|
||||
if (checked) {
|
||||
this.addModel(m.modelId);
|
||||
}
|
||||
that.models.forEach((it) => {
|
||||
api.Model.setVisible(it.modelId, true);
|
||||
api.Model.original(it.modelId);
|
||||
});
|
||||
} else {
|
||||
that.models.forEach((it) => {
|
||||
api.Model.setVisible(it.modelId, false);
|
||||
});
|
||||
}
|
||||
} else if (node.type == "model") {
|
||||
if (bimRoadmApi.m_model.has(node.modelId)) {
|
||||
bimRoadmApi.Model.remove(node.modelId);
|
||||
}
|
||||
if (checked) {
|
||||
this.addModel(node.modelId);
|
||||
api.Model.setVisible(node.modelId, true);
|
||||
api.Model.original(node.modelId);
|
||||
} else {
|
||||
api.Model.setVisible(node.modelId, false);
|
||||
}
|
||||
} else {
|
||||
if (bimRoadmApi.m_model.size == 0) {
|
||||
let modelId = checkNode.modelId;
|
||||
this.addModel(modelId, () => {
|
||||
this.showItem(node, event, checked);
|
||||
});
|
||||
let isPartLoad = false;
|
||||
if (event.checkedKeys.length == 1 && checked) {
|
||||
isPartLoad = true;
|
||||
}
|
||||
let selFeatureIds = [];
|
||||
if (node.leaf) {
|
||||
selFeatureIds = [node.featureId];
|
||||
} else {
|
||||
this.showItem(node, event, checked);
|
||||
if (!node.leafs) {
|
||||
let leafs = await this.getNodeLeafs(node);
|
||||
node.leafs = leafs;
|
||||
}
|
||||
selFeatureIds = node.leafs.map((f) => f.featureId);
|
||||
}
|
||||
let tmps = selFeatureIds;
|
||||
if (!checked) {
|
||||
this.setFeatueVisible(tmps, false);
|
||||
} else {
|
||||
if (isPartLoad) {
|
||||
api.Model.setVisible(node.modelId, true);
|
||||
api.Model.original(node.modelId);
|
||||
let tmpsIds2 = tmps.splice(0, 1000);
|
||||
api.Feature.showFeatures(tmpsIds2.join("#"));
|
||||
this.setFeatueVisible(tmps, true);
|
||||
} else {
|
||||
this.setFeatueVisible(tmps, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async showItem(checkNode, event, checked) {
|
||||
setFeatueVisible(featureIds, show) {
|
||||
let len = 1000;
|
||||
let api = bimRoadmApi;
|
||||
api.Model.setVisible(checkNode.modelId, true);
|
||||
let externalId = checkNode.externalId;
|
||||
if (externalId != 0) {
|
||||
if (checked) {
|
||||
this.visibleList.push(externalId);
|
||||
api.Feature.setVisible(this.visibleList.join("#"), true, checkNode.modelId, false);
|
||||
} else {
|
||||
this.visibleList = this.visibleList.filter((item) => item !== externalId);
|
||||
api.Feature.setVisible(externalId, false, checkNode.modelId);
|
||||
}
|
||||
} else {
|
||||
const res = await this.$api.bim.getTreeAllLeafChild(checkNode.modelId, checkNode.glid);
|
||||
let nodes = (res.data || []).map((item) => item.glid);
|
||||
if (nodes.length > 0) {
|
||||
if (checked) {
|
||||
this.visibleList = MergeArray(nodes, this.visibleList);
|
||||
api.Model.setVisible(checkNode.modelId, true);
|
||||
api.Feature.setVisible(this.visibleList.join("#"), true, checkNode.modelId, false);
|
||||
} else {
|
||||
this.visibleList = DelArray(this.visibleList, nodes);
|
||||
api.Feature.setVisible(nodes.join("#"), false, checkNode.modelId);
|
||||
}
|
||||
}
|
||||
let cnt = featureIds.length;
|
||||
for (let i = 0; i < cnt; i += len) {
|
||||
api.Feature.setVisible(featureIds.slice(i, i + len).join("#"), show);
|
||||
}
|
||||
},
|
||||
async getNodeLeafs(node) {
|
||||
const res = await this.$api.bim.getTreeAllLeafChild(node.modelId, node.glid);
|
||||
return (res.data || []).map((f) => {
|
||||
return this.convertFeatureInfo(f, node.modelId);
|
||||
});
|
||||
},
|
||||
|
||||
arrowRetract() {
|
||||
if (this.leftShow == true) {
|
||||
|
@ -352,9 +438,14 @@ export default {
|
|||
this.$modal.error("暂无模型,请先关联模型");
|
||||
} else {
|
||||
this.models.forEach((item) => {
|
||||
item.modelId = item.lightweightName;
|
||||
item.gis = JSON.parse(item.gisJson);
|
||||
this.addModel(item.lightweightName);
|
||||
this.loadModelTree();
|
||||
setTimeout(() => {
|
||||
this.$refs.tree.setChecked(item.lightweightName, true, true);
|
||||
}, 3000);
|
||||
});
|
||||
this.treeKey++;
|
||||
}
|
||||
});
|
||||
this.init();
|
||||
|
|
|
@ -414,6 +414,7 @@
|
|||
<img class="weather-img" :src="weathers[2].img" />
|
||||
<span class="weather-temp">{{ weathers[2].highTemp }} ~ {{ weathers[2].lowTemp }}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="weather-info">
|
||||
<el-row>
|
||||
|
@ -422,10 +423,10 @@
|
|||
<svg-icon icon-class="pressure"></svg-icon>
|
||||
</div>
|
||||
<div class="wi-data">
|
||||
<div class="wi-label">当前气压</div>
|
||||
<div class="wi-label">当前噪音</div>
|
||||
<div class="wi-data-unit">
|
||||
<span class="wi-txt">{{ weatherInfo.pressure }}</span>
|
||||
<span class="wi-unit">hPa</span>
|
||||
<span class="wi-txt">67.2</span>
|
||||
<span class="wi-unit">dB</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
|
|
|
@ -29,16 +29,7 @@
|
|||
</template>
|
||||
</a-tree>-->
|
||||
<div class="scroll-box">
|
||||
<a-tree
|
||||
ref="tree"
|
||||
v-model:expandedKeys="expandedKeys"
|
||||
@check="onCheckTree"
|
||||
v-model:selectedKeys="selectedKeys"
|
||||
:tree-data="modelTrees"
|
||||
checkable
|
||||
default-expand-all
|
||||
:load-data="loadTree"
|
||||
></a-tree>
|
||||
<a-tree ref="tree" v-model:expandedKeys="expandedKeys" @check="onCheckTree" v-model:selectedKeys="selectedKeys" :tree-data="modelTrees" checkable default-expand-all :load-data="loadTree"></a-tree>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -124,6 +115,7 @@ export default {
|
|||
externalId: e.externalId,
|
||||
modelId: a.modelId,
|
||||
type: "data",
|
||||
featureId: a.modelId + "^" + e.externalId,
|
||||
children: [],
|
||||
hasLoad: false,
|
||||
isLeaf: e.externalId != 0,
|
||||
|
@ -145,7 +137,7 @@ export default {
|
|||
cb && cb();
|
||||
this.$emit("change");
|
||||
setTimeout(() => {
|
||||
api.Camera.getViewPort(p=>{
|
||||
api.Camera.getViewPort((p) => {
|
||||
this.$emit("modelAdd", p);
|
||||
});
|
||||
}, 1000);
|
||||
|
@ -214,13 +206,63 @@ export default {
|
|||
if (api.m_model.size == 0) {
|
||||
let modelId = checkNode.modelId;
|
||||
this.addModel(modelId, () => {
|
||||
this.showItem(e);
|
||||
this.showItem(e, heckedKeys);
|
||||
});
|
||||
} else {
|
||||
this.showItem(e);
|
||||
this.showItem(e, heckedKeys);
|
||||
}
|
||||
},
|
||||
async showItem(e) {
|
||||
async showItem(e, checkedKeys) {
|
||||
const node = e.node.dataRef;
|
||||
const checked = e.checked;
|
||||
let isPartLoad = false;
|
||||
if (checkedKeys.length == 1 && checked) {
|
||||
isPartLoad = true;
|
||||
}
|
||||
let selFeatureIds = [];
|
||||
if (node.isLeaf) {
|
||||
selFeatureIds.push(node.featureId);
|
||||
} else {
|
||||
if (!node.leafs) {
|
||||
let leafs = await this.getNodeLeafs(node);
|
||||
node.leafs = leafs;
|
||||
}
|
||||
selFeatureIds = node.leafs.map((f) => f.featureId);
|
||||
}
|
||||
let tmps = selFeatureIds;
|
||||
if (!checked) {
|
||||
this.setFeatueVisible(tmps, false);
|
||||
} else {
|
||||
if (isPartLoad) {
|
||||
api.Model.setVisible(node.modelId, true);
|
||||
api.Model.original(node.modelId);
|
||||
let tmpsIds2 = tmps.splice(0, 1000);
|
||||
api.Feature.showFeatures(tmpsIds2.join("#"));
|
||||
this.setFeatueVisible(tmps, true);
|
||||
} else {
|
||||
this.setFeatueVisible(tmps, true);
|
||||
}
|
||||
}
|
||||
},
|
||||
setFeatueVisible(featureIds, show) {
|
||||
let len = 1000;
|
||||
let cnt = featureIds.length;
|
||||
for (let i = 0; i < cnt; i += len) {
|
||||
api.Feature.setVisible(featureIds.slice(i, i + len).join("#"), show);
|
||||
}
|
||||
},
|
||||
async getNodeLeafs(node) {
|
||||
const res = await getTreeAllLeafChild(node.modelId, node.glid);
|
||||
return (res.data || []).map((o) => {
|
||||
o.modelId = node.modelId;
|
||||
o.featureId = o.modelId + "^" + o.externalId;
|
||||
o.name = o.name || "";
|
||||
o.name = o.name.replaceAll('"', "").replaceAll("'", "").replaceAll("\\", "");
|
||||
o.info = `[${o.externalId}]${o.groupname}-${o.name}`;
|
||||
return o;
|
||||
});
|
||||
},
|
||||
async showItem2(e) {
|
||||
const checkNode = e.node.dataRef;
|
||||
const checked = e.checked;
|
||||
api.Model.setVisible(checkNode.modelId, true);
|
||||
|
@ -229,36 +271,21 @@ export default {
|
|||
if (externalId != 0) {
|
||||
if (checked) {
|
||||
this.visibleList.push(externalId);
|
||||
api.Feature.setVisible(
|
||||
this.visibleList.join("#"),
|
||||
true,
|
||||
checkNode.modelId,
|
||||
false
|
||||
);
|
||||
api.Feature.setVisible(this.visibleList.join("#"), true, checkNode.modelId, false);
|
||||
} else {
|
||||
this.visibleList = this.visibleList.filter(
|
||||
(item) => item !== externalId
|
||||
);
|
||||
this.visibleList = this.visibleList.filter((item) => item !== externalId);
|
||||
api.Feature.setVisible(externalId, false, checkNode.modelId);
|
||||
}
|
||||
} else {
|
||||
e.node.disableCheckbox = true;
|
||||
const res = await getTreeAllLeafChild(
|
||||
checkNode.modelId,
|
||||
checkNode.glid
|
||||
);
|
||||
const res = await getTreeAllLeafChild(checkNode.modelId, checkNode.glid);
|
||||
let nodes = (res.data || []).map((d) => d.glid);
|
||||
if (nodes.length > 0) {
|
||||
if (checked) {
|
||||
this.visibleList = this.MergeArray(nodes, this.visibleList);
|
||||
api.Model.setVisible(checkNode.modelId, true);
|
||||
this.$emit("change");
|
||||
api.Feature.setVisible(
|
||||
this.visibleList.join("#"),
|
||||
true,
|
||||
checkNode.modelId,
|
||||
false
|
||||
);
|
||||
api.Feature.setVisible(this.visibleList.join("#"), true, checkNode.modelId, false);
|
||||
} else {
|
||||
this.visibleList = this.DelArray(this.visibleList, nodes);
|
||||
api.Feature.setVisible(nodes.join("#"), false, checkNode.modelId);
|
||||
|
|
|
@ -21,8 +21,6 @@ function selectFeature(that, featureId) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function getHideFeatures(that) {
|
||||
let result = [];
|
||||
that.readlyParts.forEach((d) => {
|
||||
|
@ -232,7 +230,6 @@ function getModelFeatures(that, modelId) {
|
|||
that.allFeatures.push(o);
|
||||
});
|
||||
|
||||
console.log("====>", that.allFeatures);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -263,11 +260,12 @@ function onCheckTree(that, node, event) {
|
|||
setTreeNodeChecked(that, node, event);
|
||||
}
|
||||
}
|
||||
|
||||
let maxLen=1000;
|
||||
//根据选择控制构件的隐藏和显示
|
||||
async function setTreeNodeChecked(that, node, event) {
|
||||
let api = bimSelectionDlgApi;
|
||||
let checked = event.checkedNodes.includes(node);
|
||||
console.log("===>", checked, node);
|
||||
if (node.type == "root") {
|
||||
if (checked) {
|
||||
that.models.forEach((it) => {
|
||||
|
@ -287,8 +285,10 @@ async function setTreeNodeChecked(that, node, event) {
|
|||
api.Model.setVisible(node.modelId, false);
|
||||
}
|
||||
} else {
|
||||
api.Model.original(node.modelId);
|
||||
console.log("---->", node);
|
||||
let isPartLoad = false;
|
||||
if (event.checkedKeys.length == 1 && checked) {
|
||||
isPartLoad = true;
|
||||
}
|
||||
let selFeatureIds = [];
|
||||
if (node.leaf) {
|
||||
selFeatureIds = [node.featureId];
|
||||
|
@ -299,15 +299,41 @@ async function setTreeNodeChecked(that, node, event) {
|
|||
}
|
||||
selFeatureIds = node.leafs.map((f) => f.featureId);
|
||||
}
|
||||
if (checked) {
|
||||
that.hideFeatures = DelArray(that.hideFeatures, selFeatureIds);
|
||||
let selitemsFeatureIds = that.selectItems.map((it) => it.featureId);
|
||||
let tmps = selFeatureIds
|
||||
.filter((it) => !that.hideFeatures.includes(it))
|
||||
.filter((it) => !that.readlyParts.includes(it))
|
||||
.filter((it) => !selitemsFeatureIds.includes(it));
|
||||
if (!checked) {
|
||||
setFeatueVisible(tmps,false);
|
||||
} else {
|
||||
that.hideFeatures = MergeArray(that.hideFeatures, selFeatureIds);
|
||||
if (isPartLoad) {
|
||||
api.Model.setVisible(node.modelId, true);
|
||||
api.Model.original(node.modelId);
|
||||
selitemsFeatureIds.forEach((it) => {
|
||||
tmps.push(it);
|
||||
});
|
||||
let tmpsIds2=tmps.splice(0,maxLen);
|
||||
api.Feature.showFeatures(tmpsIds2.join("#"));
|
||||
setFeatueVisible(tmps,true)
|
||||
} else {
|
||||
setFeatueVisible(tmps,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
setFeatueShowOrHide(that);
|
||||
}
|
||||
|
||||
function setFeatueVisible(featureIds,show){
|
||||
let len=maxLen;
|
||||
let api = bimSelectionDlgApi;
|
||||
let cnt=featureIds.length;
|
||||
for(let i=0;i<cnt;i+=len){
|
||||
api.Feature.setVisible(featureIds.slice(i,i+len).join("#"),show);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async function getNodeLeafs(that, node) {
|
||||
const res = await getTreeAllLeafChild(node.modelId, node.glid);
|
||||
return (res.data || []).map((f) => {
|
||||
|
@ -321,7 +347,7 @@ async function getNodeLeafs(that, node) {
|
|||
featureId: o.featureId,
|
||||
info: o.info,
|
||||
});
|
||||
return f;
|
||||
return o;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -334,7 +360,7 @@ function setFeatueShowOrHide(that) {
|
|||
|
||||
//标注已选择的构件
|
||||
that.selectItems.forEach((it) => {
|
||||
api.Feature.setColor(it, "rgba(255,0,255,1)");
|
||||
api.Feature.setColor(it.featureId, "rgba(255,0,255,1)");
|
||||
if (!that.showMode) {
|
||||
api.Feature.setVisible(it, false);
|
||||
}
|
||||
|
@ -363,7 +389,7 @@ function loadModels(that) {
|
|||
function boxSelection(that) {
|
||||
let api = bimSelectionDlgApi;
|
||||
api.Feature.getByEvent(false);
|
||||
ElMessage.info("右键取消选择")
|
||||
ElMessage.info("右键取消选择");
|
||||
api.Public.event("RIGHT_CLICK", (res) => {
|
||||
api.Feature.closeBoxSelect();
|
||||
that.activeMenu = -1;
|
||||
|
@ -395,7 +421,6 @@ function loadNode(that, node, resolve) {
|
|||
if (!that.show) {
|
||||
return;
|
||||
}
|
||||
console.log("node->", node);
|
||||
if (node.level == 0) {
|
||||
let nd = [
|
||||
{
|
||||
|
@ -459,7 +484,7 @@ function getTreeChildren(that, node, resolve) {
|
|||
}
|
||||
}
|
||||
|
||||
return it;
|
||||
return o;
|
||||
});
|
||||
//addToAllFeatures(that, tmps);
|
||||
resolve(tmps);
|
||||
|
|
|
@ -100,7 +100,7 @@ import useUserStore from "@/store/modules/user";
|
|||
import { listBimModel } from "@/api/bim/bimModel";
|
||||
import bimTools from "./bimSelectTools2";
|
||||
import { updateBimInfo, getPlanAllBimInfo } from "@/api/bim/bim";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { ElMessage, ElMessageBox, ElStep } from "element-plus";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
@ -165,7 +165,7 @@ export default {
|
|||
},
|
||||
doModeChange() {
|
||||
let api = bimSelectionDlgApi;
|
||||
api.Feature.setVisible(this.selectItems.map(f=>f.featureId).join("#"), this.showMode);
|
||||
api.Feature.setVisible(this.selectItems.map((f) => f.featureId).join("#"), this.showMode);
|
||||
},
|
||||
delSelectItem(idx) {
|
||||
this.$modal.confirm("确定删除吗?").then(() => {
|
||||
|
@ -329,6 +329,7 @@ export default {
|
|||
}).then((d) => {
|
||||
this.models = (d.rows || []).map((it) => {
|
||||
it.modelId = it.lightweightName;
|
||||
it.checked = true;
|
||||
it.gis = this.$tryToJson(it.gisJson || "{}", {});
|
||||
return it;
|
||||
});
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
<el-table-column label="负责人" align="center" prop="operator" width="120" />
|
||||
<el-table-column label="班组名称" align="center" prop="groupName" width="120" />
|
||||
</el-table>
|
||||
<bim-selection-dialog ref="bimDlg" @success="doSelectSuccess"></bim-selection-dialog>"
|
||||
<bim-selection-dialog ref="bimDlg" @success="doSelectSuccess"></bim-selection-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
Loading…
Reference in New Issue