From 1ed195b4b507082cc45599c87224c57ef6e3e2c8 Mon Sep 17 00:00:00 2001
From: Hcat <2768237203@qq.com>
Date: Wed, 28 Feb 2024 00:35:54 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=B8=80=E5=8D=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../content/tunnelScene/PreviewScene.vue | 17 ++++++++++++++++-
.../content/tunnelScene/sceneClass/demo.js | 2 +-
src/views/tunnel/index.vue | 13 ++++++++-----
3 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue
index 948ab07..b982ae7 100644
--- a/src/components/content/tunnelScene/PreviewScene.vue
+++ b/src/components/content/tunnelScene/PreviewScene.vue
@@ -63,11 +63,22 @@ const loader = new OBJLoader();
let hdrLoader = new RGBELoader();
let backColorSet = three.sRGBEncoding;
const modelStore = useModelSceneStore();
-const params = defineProps(["isedit", "tunnelId", "tunnelLen", "tunnelName"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理
+const params = defineProps(["isedit", "tunnelId", "tunnelLen", "tunnelName", "largeScreen"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理
let isedit = ref(params.isedit)
+let fanData = reactive();
+
+watch(
+ () => params.largeScreen,
+ (now) => {
+ params.largeScreen = now;
+ fanData = (toRaw(params.largeScreen.value)).frequencyChangerList;
+ console.log(fanData);
+ },
+ { deep: true }
+);
// const form = ref({
// tunnelName: "",
// serialNumber: "",
@@ -144,6 +155,7 @@ async function handleMounted() {
// console.log("init", params.tunnelId);
demo.previewtunnelModeInit(toRaw(modelList.value));
demo.SignsInf(params.tunnelName, String(params.tunnelLen.value))
+ checkFanColor(fanData);
// watch(
// () => params.tunnelId,
// (now) => {
@@ -343,6 +355,9 @@ function previewEquInfProcess(equipmentList, targetP) {
}
+function checkFanColor(fanData) {
+ demo.scene.getObjectByName('1号变频器');
+}
diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js
index 4b65ecc..6c79dc1 100644
--- a/src/components/content/tunnelScene/sceneClass/demo.js
+++ b/src/components/content/tunnelScene/sceneClass/demo.js
@@ -512,7 +512,7 @@ export default class Demo {
}
SignsInf(tunnelName, tunnelLength) {
let Signs = this.scene.getObjectByName('streetSigns');
- console.log(Signs);
+ // console.log(Signs);
const tag = new this.THREE.Mesh(
new this.THREE.PlaneGeometry(100, 76),
new this.THREE.MeshBasicMaterial({ color: "white" })
diff --git a/src/views/tunnel/index.vue b/src/views/tunnel/index.vue
index d4b3a97..8238362 100644
--- a/src/views/tunnel/index.vue
+++ b/src/views/tunnel/index.vue
@@ -34,7 +34,7 @@
+ :tunnelName="tunnelName" :largeScreen="largeScreen">
@@ -87,6 +87,7 @@ import { getLargeScreen, getLargeScreenInfo, getTunnelBySiteId } from "@/api/lar
import { ElMessage, ElMessageBox } from "element-plus";
import { getUserInfo } from "@/api/login";
import { initSceneData } from "@/api/tunnelScene";
+import { computed } from "vue";
const authStore = useAuthStore();
const router = useRouter();
const previewId = reactive(router.currentRoute.value.params.tunnelId)
@@ -190,9 +191,9 @@ const getOtherInfo = () => {
currentSiteId.value = res.data.siteOption[0].value
currentSite.value = res.data.siteOption[0].label
localStorage.setItem('site', currentSite.value)
- if(res.data.tunnelOption.length === 0){
+ if (res.data.tunnelOption.length === 0) {
getTunnel(res.data.siteOption[0].value)
- }else {
+ } else {
tunnelList.value = res.data.tunnelOption
}
if (previewId) {
@@ -241,6 +242,7 @@ const getScreenInfo = (id) => {
showBadLoading.value = 1
}
largeScreenData.value = res.data;
+ // console.log(largeScreenData.value);
} else {
ElMessage.warning(res.msg)
}
@@ -254,13 +256,14 @@ const getScreenInfo = (id) => {
}
};
//根据站点id获取隧道信息
+let largeScreen = computed(() => largeScreenData)
const getTunnel = (id) => {
getTunnelBySiteId(id).then((res) => {
if (res?.code === 1000) {
- if(res.data.length === 0){
+ if (res.data.length === 0) {
ElMessage.warning('该站点下无隧道, 请新增隧道后再尝试!')
tunnelList.value = []
- }else {
+ } else {
getScreenInfo(res.data[0]?.value)
tunnelName = res.data[0].label
tunnelList.value = res.data
From 70364c8e10537f02797331a2b8b0684f675f1f3f Mon Sep 17 00:00:00 2001
From: Hcat <2768237203@qq.com>
Date: Wed, 28 Feb 2024 21:23:57 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E5=BB=96=E6=9D=B0=EF=BC=9A=E9=A2=84?=
=?UTF-8?q?=E8=A7=88=E6=A8=A1=E5=BC=8F=E5=BD=93=E9=A3=8E=E6=9C=BA=E7=A6=BB?=
=?UTF-8?q?=E7=BA=BF(=E4=B8=8D=E5=9C=A8online=E4=B8=8B)=E4=BC=9A=E6=98=BE?=
=?UTF-8?q?=E7=A4=BA=E7=BA=A2=E8=89=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../content/tunnelScene/PreviewScene.vue | 4 +-
.../content/tunnelScene/sceneClass/demo.js | 3 +-
.../sceneClass/editEquipment/index.js | 40 ++++++++++++++++++-
.../sceneClass/previewTunnelInit/index.js | 4 +-
4 files changed, 45 insertions(+), 6 deletions(-)
diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue
index 348f5d8..c797e5b 100644
--- a/src/components/content/tunnelScene/PreviewScene.vue
+++ b/src/components/content/tunnelScene/PreviewScene.vue
@@ -145,6 +145,7 @@ async function handleMounted() {
// );
// 初始化设备模型
try {
+
//在这加载隧道
const map = new Map();
map.set("equ_fan", await loadModel("/devicesModel/model2.obj"));
@@ -153,8 +154,9 @@ async function handleMounted() {
demo.initDevicesModel(map);
// const equipmentList = await store.getEquipmentList();
modelList.value = await modelStore.initModelDataPreview(params.tunnelId);
+ // console.log(modelList.value);
// console.log("init", params.tunnelId);
- demo.previewtunnelModeInit(toRaw(modelList.value));
+ demo.previewtunnelModeInit(toRaw(modelList.value), fanData);
demo.SignsInf(params.tunnelName, String(params.tunnelLen.value))
// watch(
// () => params.tunnelId,
diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js
index 1adc142..d96bc81 100644
--- a/src/components/content/tunnelScene/sceneClass/demo.js
+++ b/src/components/content/tunnelScene/sceneClass/demo.js
@@ -388,6 +388,7 @@ export default class Demo {
// 初始化风机颜色
this.equMap.get("equ_fan").traverse((v) => {
v.material = new this.THREE.MeshBasicMaterial();
+ // v.material.color = new this.THREE.Color(0xFF0000);
v.material.color = new this.THREE.Color(0xC0C0C0);
if (/^leaf/.test(v.name) || /^roller/.test(v.name)) {
group.add(v.clone());
@@ -452,7 +453,7 @@ export default class Demo {
);
}
changeFanColor(fanData) {
- console.log(this.scene.getObjectById(22));
+ console.log(this.scene.getObjectByName('fan'));
}
/**
*
diff --git a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js
index eb47537..4b5c8b2 100644
--- a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js
+++ b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js
@@ -8,14 +8,14 @@ import EquipmentTag from "../utils/EquipmentTag";
//formInfo需要的信息这里包括了
//equipmentType
-function addEquipment(targetPoint, formInfo) {
+function addEquipment(targetPoint, formInfo, fanData) {
if (targetPoint.hasDevice) {
return;
}
switch (formInfo.equipmentType) {
case "frequency":
- handleFanEqu.call(this, targetPoint, formInfo);
+ handleFanEqu.call(this, targetPoint, formInfo, fanData);
break;
// 还没有风压阀的模型,所以先用其他设备传感器实现
// case "valve":
@@ -177,6 +177,7 @@ function handleOtherEqu(targetPoint, equipmentInfo) {
function handleFanEqu(
targetPoint,
equipmentInfo,
+ fanData,
speed = Math.random().toFixed(1) * 1000
) {
// 由于风机比较多,每个风机转速不一直,保存在一个数中遍历
@@ -196,6 +197,41 @@ function handleFanEqu(
id: equMesh.id, //模型在场景id
...equipmentInfo,
};
+ // console.log(targetPoint.info);
+ //风机颜色重新命名
+ let fan1 = fanData[0].equipmentType
+ let fan2 = fanData[1].equipmentType
+ if (targetPoint.info.typeKey == fan1) {
+ if (fanData[0].online == false) {
+ this.scene.traverse(function (child) {
+ if (child.id === 1005) {
+ child.traverse(function (obj) {
+ // console.log(obj);
+ // 判断子对象是否是物体,如果是,更改其颜色
+ if (obj.isMesh) {
+ obj.material.color.set(0xFF0000)
+ }
+ })
+ }
+ });
+ }
+ } else {
+ if (fanData[1].online == false) {
+ this.scene.traverse(function (child) {
+ if (child.id === 1005) {
+ child.traverse(function (obj) {
+ // console.log(obj);
+ // 判断子对象是否是物体,如果是,更改其颜色
+ if (obj.isMesh) {
+ obj.material.color.set(0xFF0000)
+ }
+ })
+ }
+ });
+ }
+ }
+ // console.log(fanData);
+
// 定义风机旋转
const fanLeaf = equMesh.getObjectByName("fan_leafs");
diff --git a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js
index 59b98c4..4664584 100644
--- a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js
+++ b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js
@@ -1,5 +1,5 @@
-export default function previewtunnelModeInit(equipmentList) {
+export default function previewtunnelModeInit(equipmentList, fanData) {
//初始化将墙壁隐藏起来
// for (let line = 1; line <= 20; line++) {
// if (line < 10) {
@@ -13,7 +13,7 @@ export default function previewtunnelModeInit(equipmentList) {
// console.log(equipmentList);
equipmentList.forEach((item) => {
- this.addEquipment(this.scene.getObjectByName(item.position), item);
+ this.addEquipment(this.scene.getObjectByName(item.position), item, fanData);
});
//进行预览和编辑模式的一些操作
if (this.isedit == false) {
From 3d706c10ca7c284cd04dfe251550d7cd3f39da55 Mon Sep 17 00:00:00 2001
From: Hcat <2768237203@qq.com>
Date: Wed, 28 Feb 2024 21:27:36 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=20=20=20=20=E5=BB=96=E6=9D=B0=EF=BC=9A?=
=?UTF-8?q?=E9=A2=84=E8=A7=88=E6=A8=A1=E5=BC=8F=E5=BD=93=E9=A3=8E=E6=9C=BA?=
=?UTF-8?q?=E7=A6=BB=E7=BA=BF(=E4=B8=8D=E5=9C=A8online=E4=B8=8B)=E4=BC=9A?=
=?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=BA=A2=E8=89=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/content/tunnelScene/PreviewScene.vue | 1 -
src/components/content/tunnelScene/sceneClass/demo.js | 3 ---
2 files changed, 4 deletions(-)
diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue
index c797e5b..d88500d 100644
--- a/src/components/content/tunnelScene/PreviewScene.vue
+++ b/src/components/content/tunnelScene/PreviewScene.vue
@@ -135,7 +135,6 @@ async function handleMounted() {
//加载HDR背景图片
demo.loadBackground(hdrLoader, backColorSet);
- demo.changeFanColor(fanData);
//先不加试试???
// watch(
// () => params.tunnelId,
diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js
index d96bc81..ec095af 100644
--- a/src/components/content/tunnelScene/sceneClass/demo.js
+++ b/src/components/content/tunnelScene/sceneClass/demo.js
@@ -452,9 +452,6 @@ export default class Demo {
}
);
}
- changeFanColor(fanData) {
- console.log(this.scene.getObjectByName('fan'));
- }
/**
*
* @param {Boolean} option 是否禁用轨道控制器