唐润平:解决了编辑模式bug(合并后)

This commit is contained in:
trp
2023-12-30 13:37:27 +08:00
parent 697773bae4
commit 1d73f0f8b8
3 changed files with 14 additions and 146 deletions

View File

@@ -66,7 +66,7 @@ import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader";
import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader"; import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader";
import { onMounted, reactive, ref, toRaw, watch } from "vue"; import { onMounted, reactive, ref, toRaw, watch } from "vue";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { deleteEquipment, initData } from "./request";
import { useModelSceneStore } from "@/store/modelSceneStore"; import { useModelSceneStore } from "@/store/modelSceneStore";
// 获取html标签跟随组件dom // 获取html标签跟随组件dom
const content = ref(null); const content = ref(null);
@@ -130,10 +130,11 @@ async function handleMounted() {
); );
// modelList.value = await initData(params.tunnelId, params.form); // modelList.value = await initData(params.tunnelId, params.form);
console.log("test", modelList.value); console.log("test", modelList.value);
demo.editTunnelInit(modelList.value); demo.editTunnelInit(toRaw(modelList.value));
} catch (err) { } catch (err) {
console.log(err);
ElMessage({ ElMessage({
message: "场景初始化异常!", message: "场景初始化异常---",
type: "warning", type: "warning",
}); });
} }

View File

@@ -1,133 +0,0 @@
import { apiSaveEquipment, initSceneData } from "@/api/tunnelScene";
import { toRaw } from "vue";
let modelEquipmentList = [];
// 初始化当前隧道数据并保存在本地
export const initData = (tunnelId, otherInfo) => {
modelEquipmentList = [];
return new Promise((resolve, reject) => {
initSceneData(tunnelId)
.then((res) => {
if (res.data.tunnelThreeConfig) {
modelEquipmentList = JSON.parse(res.data.tunnelThreeConfig);
resolve(modelEquipmentList);
}
originData = toRaw(otherInfo);
})
.catch((Error) => {
ElMessage.error("设备初始化异常!");
reject();
});
});
};
//保存数据并提交
export const saveEquipment = (equipmentInfo, pointGap) => {
const {
constructionLength,
isDefault,
remarks,
serialNumber,
siteId,
totalLength,
tunnelId,
tunnelName,
} = originData;
let tempModelEquipmentList = [...modelEquipmentList]; //数组克隆
const obj = toRaw(equipmentInfo);
tempModelEquipmentList.push(obj);
return new Promise((resolve, reject) => {
apiSaveEquipment({
constructionLength: autoComputeConstructionLength(
tempModelEquipmentList,
pointGap
),
isDefault,
modelEquipmentList: tempModelEquipmentList,
remarks,
serialNumber,
tunnelId,
tunnelLength: totalLength,
tunnelName,
})
.then((res) => {
if (res?.code === 1000) {
modelEquipmentList = [...tempModelEquipmentList]; //存入本地
resolve();
}
})
.catch((err) => {
reject();
});
});
};
// 删除
export const deleteEquipment = (equipmentId, pointGap) => {
let tempModelEquipmentList = [...modelEquipmentList]; //数组克隆
tempModelEquipmentList = tempModelEquipmentList.filter(
(item) => item.equipmentId != equipmentId
);
console.log(
"del",
modelEquipmentList,
tempModelEquipmentList,
"id",
equipmentId
);
const {
constructionLength,
isDefault,
remarks,
serialNumber,
siteId,
totalLength,
tunnelId,
tunnelName,
} = originData;
return new Promise((resolve, reject) => {
apiSaveEquipment({
constructionLength: autoComputeConstructionLength(
tempModelEquipmentList,
pointGap
),
isDefault,
modelEquipmentList: tempModelEquipmentList,
remarks,
serialNumber,
tunnelId,
tunnelLength: totalLength,
tunnelName,
})
.then((res) => {
if (res?.code === 1000) {
console.log("删除成功");
modelEquipmentList = modelEquipmentList.filter(
(item) => item.equipmentId != equipmentId
);
resolve();
}
reject(res);
})
.catch((err) => {
reject();
});
});
};
function autoComputeConstructionLength(modelEquipmentList, pointGap) {
let maxLength = 0;
modelEquipmentList.forEach((item) => {
const length =
Number(
item.position.substring(
item.position.indexOf("_") + 1,
item.position.lastIndexOf("_")
) - 1
) * pointGap;
if (length > maxLength) {
maxLength = length;
}
});
return maxLength;
}

View File

@@ -12,7 +12,7 @@ function addEquipment(targetPoint, formInfo) {
if (targetPoint.hasDevice) { if (targetPoint.hasDevice) {
return; return;
} }
console.log("info", formInfo);
switch (formInfo.equipmentType) { switch (formInfo.equipmentType) {
case "frequency": case "frequency":
handleFanEqu.call(this, targetPoint, formInfo); handleFanEqu.call(this, targetPoint, formInfo);
@@ -36,7 +36,7 @@ function addEquipment(targetPoint, formInfo) {
// function handleValveEqu(targetPoint, equipmentInfo) { // function handleValveEqu(targetPoint, equipmentInfo) {
// } // }
let allline = new Array // let allline = new Array();
// 其他传感器 // 其他传感器
function handleOtherEqu(targetPoint, equipmentInfo) { function handleOtherEqu(targetPoint, equipmentInfo) {
const equMesh = this.equMap.get("equ_sensors").clone(); const equMesh = this.equMap.get("equ_sensors").clone();
@@ -69,14 +69,14 @@ function handleOtherEqu(targetPoint, equipmentInfo) {
targetPoint.visible = false; targetPoint.visible = false;
targetPoint.hasWall = true; targetPoint.hasWall = true;
//处理风压阀的代码片段 //处理风压阀的代码片段
let lineIndex = targetPoint.name.slice(7, 9) // let lineIndex = targetPoint.name.slice(7, 9);
if (allline.includes(Number(lineIndex))) { // if (allline.includes(Number(lineIndex))) {
allline.slice(array.indexOf(lineIndex), 1) // allline.slice(array.indexOf(lineIndex), 1);
console.log('dadad'); // console.log("dadad");
} else { // } else {
allline.push(Number(lineIndex)) // allline.push(Number(lineIndex));
} // }
console.log(allline); // console.log(allline);
// console.log(allline); // console.log(allline);
// allline.forEach((item, index, array) => { // allline.forEach((item, index, array) => {
// if (array.includes(item)) { // if (array.includes(item)) {