diff --git a/src/api/tunnelScene.js b/src/api/tunnelScene.js index 5b1aa0a..43b4edc 100644 --- a/src/api/tunnelScene.js +++ b/src/api/tunnelScene.js @@ -42,3 +42,12 @@ export const saveEquipment = ( }, }); }; + +// 保存模型(新增) +export const apiSaveEquipment = (data) => { + return request({ + url: "/tunnel/model/details", + method: "put", + data, + }); +}; diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue index 46d8b06..7435789 100644 --- a/src/components/content/tunnelScene/PreviewScene.vue +++ b/src/components/content/tunnelScene/PreviewScene.vue @@ -47,15 +47,14 @@ import { import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader"; import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader"; -import { onMounted, reactive, ref } from "vue"; +import { onMounted, reactive, ref, toRaw, getCurrentInstance } from "vue"; import { ElMessage } from "element-plus"; -import { useModelSceneStore } from "@/store/modelSceneStore"; -import { toRaw } from "vue" +import { deleteEquipment, initData } from "./request"; // 获取html标签跟随组件dom const content = ref(null); const info = ref(null); const edit = ref(null); -const store = useModelSceneStore(); +let modelList = ref(null); let demo; //定义demo全局变量 // const loader = new OBJLoader(); const loader = new OBJLoader(); @@ -69,6 +68,16 @@ const params = defineProps(["isedit", "tunnelId"]); //接收参数看是不是 let isedit = ref(params.isedit) +// watch( +// () => params.tunnelId, +// (now) => { +// params.tunnelId = now +// console.log(params.tunnelId); + +// }, +// { deep: true } +// ) + onMounted(handleMounted); // 挂载后回调 async function handleMounted() { @@ -89,7 +98,7 @@ async function handleMounted() { watch( () => params.tunnelId, async () => { - const text = await store.initData(params.tunnelId); + const text = await initData(params.tunnelId); } ); // 初始化设备模型 @@ -100,14 +109,38 @@ async function handleMounted() { map.set("equ_sensors", await loadModel("/devicesModel/sensors.obj")); // 给对象初加载设备模型 demo.initDevicesModel(map); - const equipmentList = await store.getEquipmentList(); - demo.previewtunnelModeInit(equipmentList); - // previewEquInfProcess(equipmentList) + // const equipmentList = await store.getEquipmentList(); + modelList.value = await initData(params.tunnelId); + // console.log("init", params.tunnelId); + demo.previewtunnelModeInit(modelList.value); + watch( + () => params.tunnelId, + (now) => { + params.tunnelId = now + // console.log(params.tunnelId); + checkTunnelInit(modelList.value) + demo.previewtunnelModeInit(modelList.value); + }, + { deep: true } + ) + // demo.previewtunnelModeInit(equipmentList); + // previewEquInfProcess(modelList.value, targetP.value) } catch (err) { console.log(err); } } + +function checkTunnelInit(equipmentList) { + equipmentList.forEach((item) => { + let equipment = toRaw(item) + console.log("我要清理掉之前的设备!!!"); + console.log(equipment); + console.log(demo.scene.getObjectByName(equipment.position)); + demo.removeEquipment(demo.scene.getObjectByName(equipment.position)); + }); +} + // 每个模型加载回调 function loadModel(path) { return new Promise((resolve, reject) => { @@ -163,46 +196,31 @@ function lClickCallback(demo) { } let pointNum = ref(0); -let targetP; +let targetP = ref({}); // 右键点击附着点后调函数 function rClickCallback(demo) { function editDev(targetPoint = null) { - hasDevice = targetPoint.hasDevice; - targetP = targetPoint; - //点击之后马上调用这个函数,变成回调,然后进行处理处理在传给preview表单 - const equipmentList = store.getEquipmentList().then((result) => { - previewEquInfProcess(result, targetP) - }); + hasDevice.value = targetPoint.hasDevice; + targetP.value = targetPoint; + const equipmentList = initData(params.tunnelId) + equipmentList.then((result) => { + previewEquInfProcess(result, targetP.value) + }) pointNum.value = Number( targetPoint.name.substring( targetPoint.name.indexOf("_") + 1, targetPoint.name.lastIndexOf("_") ) - 1 ); - if (!targetPoint.info) return; editDevInfo(targetPoint.info); } demo.addFunction("editDev", editDev); - } // 添加设备 function handleAddEqu(formInfo) { - if (!formInfo.equipmentType) { - ElMessage({ - message: "请选择传感器!", - type: "warning", - }); - return; - } - //表单信息 - //这里利用处理请求 - demo.addEquipment(targetP, formInfo); - ElMessage({ - message: "添加成功!", - type: "success", - }); + demo.addEquipment(targetP.value, formInfo); } const centerDialogVisible = ref(false); @@ -219,12 +237,22 @@ function handleRemoveEqu() { } // 对话框确认删除 function handleConfirmAddEqu() { - demo.removeEquipment(targetP); - centerDialogVisible.value = false; - ElMessage({ - message: "删除成功!", - type: "success", - }); + console.log("target:", targetP.value.info); + deleteEquipment(targetP.value.info.equipmentId, pointGap) + .then((res) => { + demo.removeEquipment(targetP.value); + centerDialogVisible.value = false; + ElMessage({ + message: "删除成功!", + type: "success", + }); + }) + .catch((res) => { + ElMessage({ + message: "删除失败!", + type: "warning", + }); + }); } // 处理取消关闭编辑框事件 function handleCancel() { @@ -242,11 +270,10 @@ let equipmentValue = ref(0) function previewEquInfProcess(equipmentList, targetP) { for (const equipment of equipmentList) { - // console.log(equipment); if (equipment.position == targetP.name) { equipmentType.value = equipment.equipmentType //需要将获取到的设备列表进行序列化 - equipmentName.value = toRaw(equipment.chooseEquipment).label + equipmentName.value = equipment.equipmentName equipmentValue.value = equipment.threshold if (equipmentType.value == 'frequency') { equipmentType.value = '风机' diff --git a/src/components/content/tunnelScene/TunnelScene.vue b/src/components/content/tunnelScene/TunnelScene.vue index 77738bb..b0add02 100644 --- a/src/components/content/tunnelScene/TunnelScene.vue +++ b/src/components/content/tunnelScene/TunnelScene.vue @@ -3,17 +3,34 @@
- - + + " + >

是否确定删除该设备

@@ -49,45 +66,38 @@ import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader"; import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader"; import { onMounted, reactive, ref, watch } from "vue"; import { ElMessage } from "element-plus"; -import { useModelSceneStore } from "@/store/modelSceneStore"; +import { deleteEquipment, initData } from "./request"; // 获取html标签跟随组件dom const content = ref(null); const info = ref(null); const edit = ref(null); -const store = useModelSceneStore(); - +let modelList = ref(null); let demo; //定义demo对象 const loader = new OBJLoader(); let hdrLoader = new RGBELoader(); let backColorSet = three.sRGBEncoding; -const params = defineProps(["isedit", "tunnelId", "tunnelLength"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理 - +const params = defineProps(["isedit", "tunnelId", "tunnelLength", "form"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理 let isedit = ref(params.isedit); - let tunnelId = reactive(params.tunnelId); -console.log(tunnelId); -console.log(params.tunnelLength); watch( () => params.tunnelLength, (now) => { - params.tunnelLength = now + params.tunnelLength = now; console.log(params.tunnelLength); - pointGap = now / 20 + pointGap = now / 20; }, { deep: true } -) +); let pointGap = reactive(params.tunnelLength); - onMounted(handleMounted); // 挂载后回调 async function handleMounted() { - const doms = [info.value.$el, edit.value.$el]; demo = new ThreeDScene(three, content.value); //看是不是预览模式,然后继续相关的操作(会在demo中的初始化中进行) @@ -106,12 +116,7 @@ async function handleMounted() { //加载HDR背景图片 demo.loadBackground(hdrLoader, backColorSet); - watch( - () => params.tunnelId, - async () => { - const text = await store.initData(params.tunnelId); - } - ); + // 初始化设备模型 try { const map = new Map(); @@ -119,16 +124,15 @@ async function handleMounted() { map.set("equ_sensors", await loadModel("/devicesModel/sensors.obj")); demo.initDevicesModel(map); // 初始化 - const equipmentList = await store.getEquipmentList(); - demo.editTunnelInit(equipmentList); + modelList.value = await initData(params.tunnelId, params.form); + console.log("init", params.tunnelId); + demo.editTunnelInit(modelList.value); } catch (err) { ElMessage({ - message: "场景加载异常!", + message: "场景初始化异常!", type: "warning", }); } - - } // 每个模型加载回调 @@ -139,7 +143,7 @@ function loadModel(path) { (obj) => { resolve(obj); }, - (xhr) => { }, + (xhr) => {}, (err) => { reject(err); } @@ -225,8 +229,7 @@ function handleRemoveEqu() { // 对话框确认删除 function handleConfirmAddEqu() { console.log("target:", targetP.value.info); - store - .deleteEquipment(10000, params.tunnelId, targetP.value.info.equipmentId) + deleteEquipment(targetP.value.info.equipmentId, pointGap) .then((res) => { demo.removeEquipment(targetP.value); centerDialogVisible.value = false; @@ -235,9 +238,9 @@ function handleConfirmAddEqu() { type: "success", }); }) - .catch((err) => { + .catch((res) => { ElMessage({ - message: "请求异常!", + message: "删除失败!", type: "warning", }); }); diff --git a/src/components/content/tunnelScene/editEquComp/editDialog.vue b/src/components/content/tunnelScene/editEquComp/editDialog.vue index b188143..16434de 100644 --- a/src/components/content/tunnelScene/editEquComp/editDialog.vue +++ b/src/components/content/tunnelScene/editEquComp/editDialog.vue @@ -48,9 +48,8 @@ import InputNum from "./childComps/InputNum.vue"; import SelectInput from "./childComps/SelectInput.vue"; import { getEquipmentType, getEquipment } from "@/api/tunnelScene"; import { reactive, computed, defineEmits, defineProps, watch, ref } from "vue"; -import { useModelSceneStore } from "@/store/modelSceneStore"; import { ElMessage } from "element-plus"; - +import { saveEquipment, initData } from "../request"; const emit = defineEmits(["cancel", "removeEquipment", "addEquipment"]); const params = defineProps([ "pointNum", @@ -58,33 +57,60 @@ const params = defineProps([ "tunnelId", "position", "hasEquipment", + "form", ]); -// 当前风压 let p = ref(57); const equipment = ref(null); const equipmentType = ref(null); -const store = useModelSceneStore(); + +let maxConstructionLength = ref(0); //计算锚点之间距离 const pointDistance_str = computed( () => - `${params.pointGap}米*${params.pointNum}=${ + `${params.pointGap}米*${params.pointNum}=${( params.pointGap * params.pointNum - }米` + ).toFixed(2)}米` +); + +watch( + () => params.form, + () => { + initData(params.tunnelId, params.form); + }, + { + deep: true, + } ); // 请求数据模型 const equipmentSetting = reactive({ + equipmentId: null, + equipmentName: "", equipmentType: "", //设备类型 - chooseEquipment: null, //设备选择(设备名称) + position: "", threshold: "", //阈值 + typeKey: null, //设备选择(设备名称) }); +function resetEquipmentSetting() { + equipmentSetting.equipmentId = null; + equipmentSetting.equipmentName = ""; + equipmentSetting.equipmentType = ""; + equipmentSetting.position = ""; + equipmentSetting.threshold = ""; + equipmentSetting.typeKey = null; + equipment.value.reset(); + equipmentType.value.reset(); +} + // 绑定选择的设备类型 function handleTypeChange(optionItem) { equipmentSetting.equipmentType = optionItem.value; } function handleEquipmentChange(equipmentItem) { - equipmentSetting.chooseEquipment = equipmentItem; + equipmentSetting.equipmentName = equipmentItem.label; + equipmentSetting.equipmentId = equipmentItem.equipmentId; + equipmentSetting.typeKey = equipmentItem.value; } // 设备类型选项参数 let options = reactive([{ label: "暂无数据", value: "" }]); @@ -127,11 +153,7 @@ function handelInput(e) { // 处理取消事件 function handleCancel() { - equipmentSetting.equipmentType = ""; - equipmentSetting.chooseEquipment = null; - equipmentSetting.threshold = ""; - equipment.value.reset(); - equipmentType.value.reset(); + resetEquipmentSetting(); // 发射事件给tunnel父组件 emit("cancel"); } @@ -150,35 +172,37 @@ function addEquipment() { }); return; } - if (!equipmentSetting.equipmentType || !equipmentSetting.chooseEquipment) { + if (!equipmentSetting.equipmentType || !equipmentSetting.equipmentId) { ElMessage({ message: "选项不能为空!", type: "warning", }); return; } - equipmentSetting.position = params.position; // 合法请求 - store - .saveSceneData(10000, 1, equipmentSetting) + saveEquipment(equipmentSetting, params.pointGap) .then((res) => { emit("addEquipment", equipmentSetting); - equipmentSetting.chooseEquipment = null; - equipmentSetting.equipmentType = ""; - equipmentSetting.threshold = ""; - equipment.value.reset(); - equipmentType.value.reset(); ElMessage({ message: "添加成功!", type: "success", }); + resetEquipmentSetting(); }) .catch((err) => { - ElMessage({ - message: "请求异常!", - type: "warning", - }); + if (err === 3000) { + ElMessage({ + message: "该设备已添加!", + type: "warning", + }); + resetEquipmentSetting(); + } else { + ElMessage({ + message: "添加异常!", + type: "warning", + }); + } }); } diff --git a/src/components/content/tunnelScene/request/index.js b/src/components/content/tunnelScene/request/index.js new file mode 100644 index 0000000..babe138 --- /dev/null +++ b/src/components/content/tunnelScene/request/index.js @@ -0,0 +1,145 @@ +import { apiSaveEquipment, initSceneData } from "@/api/tunnelScene"; +import { toRaw } from "vue"; +let modelEquipmentList = []; +let originData = null; +// 初始化当前隧道数据并保存在本地 +export const initData = (tunnelId, otherInfo) => { + return new Promise((resolve, reject) => { + initSceneData(tunnelId) + .then((res) => { + originData = toRaw(otherInfo); + if (res.data.tunnelThreeConfig) { + console.log("data", res.data); + modelEquipmentList = JSON.parse(res.data.tunnelThreeConfig); + } + console.log("test", modelEquipmentList, originData); + resolve(modelEquipmentList); + }) + .catch((Error) => { + ElMessage.error("场景初始化异常!"); + reject(); + }); + }); +}; + +//保存数据并提交 +export const saveEquipment = (equipmentInfo, pointGap) => { + const { + constructionLength, + isDefault, + remarks, + serialNumber, + siteId, + totalLength, + tunnelId, + tunnelName, + } = originData; + let tempModelEquipmentList = [...modelEquipmentList]; //数组克隆 + tempModelEquipmentList.push(toRaw(equipmentInfo)); + return new Promise((resolve, reject) => { + console.log("equId", equipmentInfo.equipmentId); + hasEquipment(equipmentInfo.equipmentId) + ? reject(3000) + : apiSaveEquipment({ + constructionLength: autoComputeConstructionLength( + tempModelEquipmentList, + pointGap + ), + isDefault, + modelEquipmentList: tempModelEquipmentList, + remarks, + serialNumber, + tunnelId, + tunnelLength: totalLength, + tunnelName, + }) + .then((res) => { + if (res?.code === 1000) { + modelEquipmentList.push(toRaw(equipmentInfo)); //存入本地 + resolve(); + } + console.log("add", res); + reject(res); + }) + .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) { + 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; +} + +function hasEquipment(equipmentId) { + let result = false; + modelEquipmentList.forEach((item) => { + if (item.equipmentId === equipmentId) result = true; + }); + return result; +} diff --git a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js index b6d0156..070fdfe 100644 --- a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js +++ b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js @@ -12,10 +12,10 @@ function addEquipment(targetPoint, formInfo) { if (targetPoint.hasDevice) { return; } - + console.log("info", formInfo); switch (formInfo.equipmentType) { case "frequency": - handleFanEqu.call(this, targetPoint, formInfo.chooseEquipment); + handleFanEqu.call(this, targetPoint, formInfo); break; // 还没有风压阀的模型,所以先用其他设备传感器实现 // case "valve": @@ -23,7 +23,7 @@ function addEquipment(targetPoint, formInfo) { // break; case "windPressure": case "sensor": - handleOtherEqu.call(this, targetPoint, formInfo.chooseEquipment); + handleOtherEqu.call(this, targetPoint, formInfo); break; default: break; @@ -36,10 +36,7 @@ function addEquipment(targetPoint, formInfo) { // function handleValveEqu(targetPoint, equipmentInfo) { // } - - - - +let allline = new Array // 其他传感器 function handleOtherEqu(targetPoint, equipmentInfo) { const equMesh = this.equMap.get("equ_sensors").clone(); @@ -47,8 +44,7 @@ function handleOtherEqu(targetPoint, equipmentInfo) { equMesh.position.copy(worldP); //设备添加标签 - const tag = EquipmentTag(equipmentInfo.label); - console.log(equipmentInfo); + const tag = EquipmentTag(equipmentInfo.equipmentName); equMesh.getObjectByName("tag").material = tag; if (/tr$/.test(targetPoint.name)) { equMesh.rotation.z = -Math.PI / 2; @@ -71,42 +67,24 @@ function handleOtherEqu(targetPoint, equipmentInfo) { targetPoint.scale.set(0.03, 0.06, 0.05); this.scene.add(equMesh); targetPoint.visible = false; - targetPoint.hasWall = true + targetPoint.hasWall = true; //处理风压阀的代码片段 let lineIndex = targetPoint.name.slice(7, 9) - for (let line = Number(lineIndex); line <= 20; line++) { - if (line < 10) { - let wall = 'wall_' + '0' + line - this.scene.getObjectByName(wall).visible = true - let point = 'point_' + '00' + line + '_tc' - console.log(this.scene.getObjectByName(point)); - this.scene.getObjectByName(point).visible = false - this.scene.getObjectByName(point).layers.set(-2) - if (this.scene.getObjectByName(point).hasDevice == true) { - let EquID = this.scene.getObjectByName(point).info.id - this.scene.getObjectById(EquID).visible = false - } - } else if (line >= 10) { - let wall = 'wall_' + line - this.scene.getObjectByName(wall).visible = true - let point = 'point_' + '0' + line + '_tc' - this.scene.getObjectByName(point).visible = false - this.scene.getObjectByName(point).layers.set(-2) - if (this.scene.getObjectByName(point).hasDevice == true) { - let EquID = this.scene.getObjectByName(point).info.id - this.scene.getObjectById(EquID).visible = false - } - } - //处理21行的设备和附着点 - let point = 'point_' + '0' + 21 + '_tc' - this.scene.getObjectByName(point).visible = false - this.scene.getObjectByName(point).layers.set(-2) - if (this.scene.getObjectByName(point).hasDevice == true) { - let EquID = this.scene.getObjectByName(point).info.id - this.scene.getObjectById(EquID).visible = false - } + if (allline.includes(Number(lineIndex))) { + allline.slice(array.indexOf(lineIndex), 1) + console.log('dadad'); + } else { + allline.push(Number(lineIndex)) } - // this.scene.getObjectByName('wall_01').visible = true + console.log(allline); + // console.log(allline); + // allline.forEach((item, index, array) => { + // if (array.includes(item)) { + // array.slice(array.indexOf(item), 1) + // array.slice(array.indexOf(item), 1) + // console.log(array); + // } + // }) // console.log(this.scene); // 保存该设备模型id,后期直接从附附着点进行删除 targetPoint.info = { @@ -117,7 +95,6 @@ function handleOtherEqu(targetPoint, equipmentInfo) { // 1.先取出当前点击添加设备锚点的行数 // 2.再进行字符串拼接出墙的名字,使用scene.getObjectByName(墙名去获取) // 3.加上循环,固定到20结束就可以了,将点击的函数到20的函数的墙全部设为visable设为可见,还需要将中间的那行设备和附着点全部设为隐藏,且层级变低,无法选中 - } // 风机 @@ -153,7 +130,6 @@ function handleFanEqu( fanSpin.onUpdate((obj) => { fanLeaf.rotation.z = obj.rotation; }); - this.fanSpinArray.push(fanSpin); } @@ -161,43 +137,44 @@ function handleFanEqu( function removeEquipment(targetPoint) { //删除设备这里需要再进行处理,就是根据附着点(附着点一定保存了当前添加设备的信息了)判断是不是分压阀,然后继续一样的隐藏 if (!targetPoint.hasDevice) return; - if (targetPoint.hasWall == true) { - let lineIndex = targetPoint.name.slice(7, 9) - for (let line = Number(lineIndex); line <= 20; line++) { - if (line < 10) { - let wall = 'wall_' + '0' + line - this.scene.getObjectByName(wall).visible = false - let point = 'point_' + '00' + line + '_tc' - console.log(this.scene.getObjectByName(point)); - this.scene.getObjectByName(point).visible = true - this.scene.getObjectByName(point).layers.set(0) - if (this.scene.getObjectByName(point).hasDevice == true) { - this.scene.getObjectByName(point).visible = false - let EquID = this.scene.getObjectByName(point).info.id - this.scene.getObjectById(EquID).visible = true - } - } else if (line >= 10) { - let wall = 'wall_' + line - this.scene.getObjectByName(wall).visible = false - let point = 'point_' + '0' + line + '_tc' - this.scene.getObjectByName(point).visible = true - this.scene.getObjectByName(point).layers.set(0) - if (this.scene.getObjectByName(point).hasDevice == true) { - this.scene.getObjectByName(point).visible = false - let EquID = this.scene.getObjectByName(point).info.id - this.scene.getObjectById(EquID).visible = true - } - } - //处理21行的设备和附着点 - let point = 'point_' + '0' + 21 + '_tc' - this.scene.getObjectByName(point).visible = true - this.scene.getObjectByName(point).layers.set(0) - if (this.scene.getObjectByName(point).hasDevice == true) { - let EquID = this.scene.getObjectByName(point).info.id - this.scene.getObjectById(EquID).visible = true - } - } - } + // if (targetPoint.hasWall == true) { + // let lineIndex = targetPoint.name.slice(7, 9); + // for (let line = Number(lineIndex); line <= 20; line++) { + // if (line < 10) { + // let wall = "wall_" + "0" + line; + // this.scene.getObjectByName(wall).visible = false; + // let point = "point_" + "00" + line + "_tc"; + // console.log(this.scene.getObjectByName(point)); + // this.scene.getObjectByName(point).visible = true; + // this.scene.getObjectByName(point).layers.set(0); + // if (this.scene.getObjectByName(point).hasDevice == true) { + // this.scene.getObjectByName(point).visible = false; + // let EquID = this.scene.getObjectByName(point).info.id; + // this.scene.getObjectById(EquID).visible = true; + // } + // } else if (line >= 10) { + // let wall = "wall_" + line; + // this.scene.getObjectByName(wall).visible = false; + // let point = "point_" + "0" + line + "_tc"; + // this.scene.getObjectByName(point).visible = true; + // this.scene.getObjectByName(point).layers.set(0); + // if (this.scene.getObjectByName(point).hasDevice == true) { + // this.scene.getObjectByName(point).visible = false; + // let EquID = this.scene.getObjectByName(point).info.id; + // this.scene.getObjectById(EquID).visible = true; + // } + // } + // //处理21行的设备和附着点 + // let point = "point_" + "0" + 21 + "_tc"; + // this.scene.getObjectByName(point).visible = true; + // this.scene.getObjectByName(point).layers.set(0); + // if (this.scene.getObjectByName(point).hasDevice == true) { + // let EquID = this.scene.getObjectByName(point).info.id; + // this.scene.getObjectById(EquID).visible = true; + // } + // } + // } + console.log("测试是不是删除了"); const mesh = this.scene.getObjectById(targetPoint.info.id); this.scene.remove(mesh); targetPoint.visible = true; diff --git a/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js b/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js index c916e58..ca82c02 100644 --- a/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js +++ b/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js @@ -1,21 +1,6 @@ export function editTunnelInit(equipmentList) { //初始化将墙壁隐藏起来 - // for (let line = 1; line <= 20; line++) { - // if (line < 10) { - // let wall = 'wall_' + '0' + line - // this.scene.getObjectByName(wall).visible = false - // } else if (line >= 10) { - // let wall = 'wall_' + line - // this.scene.getObjectByName(wall).visible = false - // } - // } - equipmentList.forEach((item) => { - const formInfo = { - equipmentType: item.equipmentType, //设备类型 - chooseEquipment: item.chooseEquipment, //设备选择(设备名称) - threshold: item.threshold, - }; - this.addEquipment(this.scene.getObjectByName(item.position), formInfo); + this.addEquipment(this.scene.getObjectByName(item.position), item); }); } diff --git a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js index 1dfa150..8ea6300 100644 --- a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js +++ b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js @@ -1,3 +1,4 @@ + export default function previewtunnelModeInit(equipmentList) { //初始化将墙壁隐藏起来 // for (let line = 1; line <= 20; line++) { @@ -9,14 +10,8 @@ export default function previewtunnelModeInit(equipmentList) { // this.scene.getObjectByName(wall).visible = false // } // } - equipmentList.forEach((item) => { - const formInfo = { - equipmentType: item.equipmentType, //设备类型 - chooseEquipment: item.chooseEquipment, //设备选择(设备名称) - threshold: item.threshold, - }; - this.addEquipment(this.scene.getObjectByName(item.position), formInfo); + this.addEquipment(this.scene.getObjectByName(item.position), item); }); //进行预览和编辑模式的一些操作 if (this.isedit == false) { diff --git a/src/store/modelSceneStore.js b/src/store/modelSceneStore.js index 9b101ef..60178a4 100644 --- a/src/store/modelSceneStore.js +++ b/src/store/modelSceneStore.js @@ -3,23 +3,22 @@ import { ref } from "vue"; import { saveEquipment, initSceneData } from "../api/tunnelScene"; import { ElMessage } from "element-plus"; export const useModelSceneStore = defineStore("modelSceneData", () => { - let equipmentList = ref("[]"); + let equipmentList = ref([]); let allEditList = ref({}); function initData(tunnelId = 1) { initSceneData(tunnelId) .then((res) => { - equipmentList.value = res.data.tunnelThreeConfig; + // equipmentList.value = res.data.tunnelThreeConfig; + console.log("初始化的数据"); }) .catch((Error) => { ElMessage.error("场景初始化异常!"); }); } //默认初始化1号隧道 - function saveSceneData(constructionLength, tunnelId, modelData) { - const temp = JSON.parse(equipmentList.value); - temp.push(modelData); - equipmentList.value = JSON.stringify(temp); - console.log("save:", equipmentList.value); + function saveSceneData(data) { + equipmentList.value.push(data); + return saveEquipment(constructionLength, tunnelId, equipmentList.value); } // 删除设备 @@ -39,7 +38,7 @@ export const useModelSceneStore = defineStore("modelSceneData", () => { resolve(JSON.parse(equipmentList.value)); }) .catch((Error) => { - ElMessage.error("场景初始化异常!"); + // ElMessage.error("场景初始化异常!"); reject(); }); }); @@ -49,6 +48,6 @@ export const useModelSceneStore = defineStore("modelSceneData", () => { initData, saveSceneData, deleteEquipment, - getEquipmentList + getEquipmentList, }; }); diff --git a/src/views/edit/edit.vue b/src/views/edit/edit.vue index cba5b8a..e5438f2 100644 --- a/src/views/edit/edit.vue +++ b/src/views/edit/edit.vue @@ -7,24 +7,24 @@
-
- 设备管理 -
-
- 保存 -
+
设备管理
+
保存
- + - + - + @@ -33,53 +33,60 @@ - +
- +