From 0e949a65b82ad98fbe12100e137a444377e56b86 Mon Sep 17 00:00:00 2001
From: Hcat <2768237203@qq.com>
Date: Sat, 30 Dec 2023 16:39:48 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=A7=88=E6=A8=A1=E5=BC=8F=E5=AE=8C?=
=?UTF-8?q?=E6=88=90=E7=BB=91=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../content/tunnelScene/PreviewScene.vue | 110 +++++++++++-------
.../sceneClass/previewTunnelInit/index.js | 2 +
src/store/modelSceneStore.js | 24 ++++
src/views/edit/edit.vue | 21 +---
src/views/tunnel/index.vue | 72 +++++++-----
5 files changed, 147 insertions(+), 82 deletions(-)
diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue
index 274264f..7023ebe 100644
--- a/src/components/content/tunnelScene/PreviewScene.vue
+++ b/src/components/content/tunnelScene/PreviewScene.vue
@@ -49,7 +49,9 @@ import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader";
import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader";
import { onMounted, reactive, ref, toRaw, getCurrentInstance } from "vue";
import { ElMessage } from "element-plus";
-// import { deleteEquipment, initData } from "./request";
+import { editTunnel, getTunnelDetail } from "@/api/tunnelManage";
+
+import { useModelSceneStore } from "@/store/modelSceneStore";
// 获取html标签跟随组件dom
const content = ref(null);
const info = ref(null);
@@ -60,23 +62,40 @@ let demo; //定义demo全局变量
const loader = new OBJLoader();
let hdrLoader = new RGBELoader();
let backColorSet = three.sRGBEncoding;
-
+const modelStore = useModelSceneStore();
const params = defineProps(["isedit", "tunnelId"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理
let isedit = ref(params.isedit)
+// const form = ref({
+// tunnelName: "",
+// serialNumber: "",
+// totalLength: "",
+// isDefault: false,
+// remarks: "",
+// });
+
+// const getTunnelPreview = () => {
+// getTunnelDetail(params.tunnelId).then((res) => {
+// if (res?.code === 1000) {
+// form.value = res.data;
+// }
+// });
+// };
-// watch(
-// () => params.tunnelId,
-// (now) => {
-// params.tunnelId = now
-// console.log(params.tunnelId);
-// },
-// { deep: true }
-// )
+watch(
+ () => params.tunnelId,
+ (now) => {
+ params.tunnelId = now
+ console.log(params.tunnelId);
+ // getTunnelPreview();
+ // console.log(form.value);
+ },
+ { deep: true }
+)
onMounted(handleMounted);
// 挂载后回调
@@ -95,12 +114,13 @@ async function handleMounted() {
//加载HDR背景图片
demo.loadBackground(hdrLoader, backColorSet);
- watch(
- () => params.tunnelId,
- async () => {
- const text = await initData(params.tunnelId);
- }
- );
+ //先不加试试???
+ // watch(
+ // () => params.tunnelId,
+ // async () => {
+ // const text = await initData(params.tunnelId);
+ // }
+ // );
// 初始化设备模型
try {
//在这加载隧道
@@ -110,36 +130,44 @@ async function handleMounted() {
// 给对象初加载设备模型
demo.initDevicesModel(map);
// const equipmentList = await store.getEquipmentList();
- modelList.value = await initData(params.tunnelId);
+ modelList.value = await modelStore.initModelDataPreview(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(toRaw(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);
+ if (err == undefined) {
+ return
+ } else {
+ console.log(err);
+ ElMessage({
+ message: "场景初始化异常---!",
+ type: "warning",
+ });
+ }
}
}
-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 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) {
@@ -202,7 +230,8 @@ function rClickCallback(demo) {
function editDev(targetPoint = null) {
hasDevice.value = targetPoint.hasDevice;
targetP.value = targetPoint;
- const equipmentList = initData(params.tunnelId)
+ //这里是初始化必经之路!!!
+ const equipmentList = modelStore.initModelDataPreview(params.tunnelId)
equipmentList.then((result) => {
previewEquInfProcess(result, targetP.value)
})
@@ -238,7 +267,8 @@ function handleRemoveEqu() {
// 对话框确认删除
function handleConfirmAddEqu() {
console.log("target:", targetP.value.info);
- deleteEquipment(targetP.value.info.equipmentId, pointGap)
+ modelStore
+ .deleteEquipment(targetP.value.info.equipmentId, pointGap)
.then((res) => {
demo.removeEquipment(targetP.value);
centerDialogVisible.value = false;
diff --git a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js
index 8ea6300..7103d7d 100644
--- a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js
+++ b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js
@@ -10,6 +10,8 @@ export default function previewtunnelModeInit(equipmentList) {
// this.scene.getObjectByName(wall).visible = false
// }
// }
+ console.log(equipmentList);
+
equipmentList.forEach((item) => {
this.addEquipment(this.scene.getObjectByName(item.position), item);
});
diff --git a/src/store/modelSceneStore.js b/src/store/modelSceneStore.js
index 98f3a94..5420cd3 100644
--- a/src/store/modelSceneStore.js
+++ b/src/store/modelSceneStore.js
@@ -25,6 +25,29 @@ export const useModelSceneStore = defineStore("modelSceneData", () => {
});
}
+ function initModelDataPreview(tunnelId) {
+ if (tunnelId == 0) {
+ return new Promise((resolve, reject) => {
+ reject()
+ })
+ } else {
+ return new Promise((resolve, reject) => {
+ initSceneData(tunnelId)
+ .then((res) => {
+ if (res.data.tunnelThreeConfig) {
+ equipmentList.value = JSON.parse(res.data.tunnelThreeConfig);
+ } else {
+ equipmentList.value = [];
+ }
+ resolve(toRaw(equipmentList.value));
+ })
+ .catch((error) => {
+ reject();
+ });
+ });
+ }
+ }
+
function addEquipment(equipmentInfo, pointGap) {
return new Promise((resolve, reject) => {
if (hasEquipment(equipmentList.value, equipmentInfo.equipmentId)) {
@@ -84,6 +107,7 @@ export const useModelSceneStore = defineStore("modelSceneData", () => {
initModelData,
addEquipment,
deleteEquipment,
+ initModelDataPreview
};
});
diff --git a/src/views/edit/edit.vue b/src/views/edit/edit.vue
index 18b311c..5b5c833 100644
--- a/src/views/edit/edit.vue
+++ b/src/views/edit/edit.vue
@@ -20,11 +20,7 @@
-
+
@@ -39,14 +35,8 @@
-
+