Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
邓洁
2023-12-22 23:11:15 +08:00
6 changed files with 73 additions and 67 deletions

View File

@@ -49,19 +49,22 @@ 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 } from "vue"; import { onMounted, reactive, ref } from "vue";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { useModelSceneStore } from "@/store/modelSceneStore";
import { toRaw } from "vue"
// 获取html标签跟随组件dom // 获取html标签跟随组件dom
const content = ref(null); const content = ref(null);
const info = ref(null); const info = ref(null);
const edit = ref(null); const edit = ref(null);
const store = useModelSceneStore();
let demo; //定义demo全局变量 let demo; //定义demo全局变量
// const loader = new OBJLoader(); // const loader = new OBJLoader();
const loader = new OBJLoader(); const loader = new OBJLoader();
let hdrLoader = new RGBELoader(); let hdrLoader = new RGBELoader();
let backColorSet = three.sRGBEncoding; let backColorSet = three.sRGBEncoding;
const params = defineProps(["isedit"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理 const params = defineProps(["isedit", "tunnelId"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理
// alert(params.isedit)
let isedit = ref(params.isedit) let isedit = ref(params.isedit)
@@ -84,7 +87,12 @@ async function handleMounted() {
//加载HDR背景图片 //加载HDR背景图片
demo.loadBackground(hdrLoader, backColorSet); demo.loadBackground(hdrLoader, backColorSet);
watch(
() => params.tunnelId,
async () => {
const text = await store.initData(params.tunnelId);
}
);
// 初始化设备模型 // 初始化设备模型
try { try {
//在这加载隧道 //在这加载隧道
@@ -93,7 +101,9 @@ async function handleMounted() {
map.set("equ_sensors", await loadModel("/devicesModel/sensors.obj")); map.set("equ_sensors", await loadModel("/devicesModel/sensors.obj"));
// 给对象初加载设备模型 // 给对象初加载设备模型
demo.initDevicesModel(map); demo.initDevicesModel(map);
demo.previewtunnelModeInit(); const equipmentList = await store.getEquipmentList();
demo.previewtunnelModeInit(equipmentList);
// previewEquInfProcess(equipmentList)
} catch (err) { } catch (err) {
console.log(err); console.log(err);
} }
@@ -161,7 +171,9 @@ function rClickCallback(demo) {
hasDevice = targetPoint.hasDevice; hasDevice = targetPoint.hasDevice;
targetP = targetPoint; targetP = targetPoint;
//点击之后马上调用这个函数变成回调然后进行处理处理在传给preview表单 //点击之后马上调用这个函数变成回调然后进行处理处理在传给preview表单
previewEquInfProcess() const equipmentList = store.getEquipmentList().then((result) => {
previewEquInfProcess(result, targetP)
});
pointNum.value = Number( pointNum.value = Number(
targetPoint.name.substring( targetPoint.name.substring(
targetPoint.name.indexOf("_") + 1, targetPoint.name.indexOf("_") + 1,
@@ -223,60 +235,40 @@ function handleCancel() {
demo._resetState(); demo._resetState();
demo.clearTagsObj(); demo.clearTagsObj();
} }
//我们的数据应该在哪个获取并将其传入进去呢?
//是在demo.js中还是我们这二个PreviewScene或者editDialog呢
//按目前我这写的逻辑,好像是获取了二次??,有没有办法可以把里面的导出到这呢?
// console.log(demo.isControlOrbit());
let equipmentType = ref(0) let equipmentType = ref(0)
let equipmentName = ref(0) let equipmentName = ref(0)
let equipmentValue = ref(0) let equipmentValue = ref(0)
function previewEquInfProcess() { function previewEquInfProcess(equipmentList, targetP) {
//3个信息都可以完全获取之后我们可以进行信息处理再传进去就可以了 for (const equipment of equipmentList) {
// console.log(demo); // console.log(equipment);
// console.log(targetP.name); if (equipment.position == targetP.name) {
// console.log(demo.ThreeConfig.data.tunnelThreeConfig);
let tunnelThreeConfig = demo.ThreeConfig.data.tunnelThreeConfig
for (const equipment of tunnelThreeConfig) {
if (equipment.pointName == targetP.name) {
equipmentType.value = equipment.equipmentType equipmentType.value = equipment.equipmentType
equipmentName.value = equipment.equipmentName //需要将获取到的设备列表进行序列化
equipmentValue.value = equipment.equipmentValue equipmentName.value = toRaw(equipment.chooseEquipment).label
console.log(equipmentType.value); equipmentValue.value = equipment.threshold
console.log(equipmentName.value); if (equipmentType.value == 'frequency') {
console.log(equipmentValue.value); equipmentType.value = '风机'
}
if (equipmentType.value == 'windPressure') {
equipmentType.value = '风压传感器'
}
if (equipmentType.value == 'sensor') {
equipmentType.value = '其他传感器'
}
// console.log(equipmentType.value);
// console.log(equipmentName.value);
// console.log(equipmentValue.value);
} }
} }
} }
// let equipmentType = reactive(previewEquInfProcess().equipmentType)
// let equipmentName = reactive(previewEquInfProcess().equipmentName)
// let equipmentValue = reactive(previewEquInfProcess().equipmentValue)
// console.log(equipmentType);
const ThreeConfig = {
code: 0,
data: {
tunnelThreeConfig: [{
equipmentId: 'fan_01',//传感器id
equipmentName: '01',//设备名称
pointName: 'point_005_tl',//附着点名称(定位)
equipmentType: 'fan',//设备类型(类型可根据后端
equipmentValue: 23, //设备存的值
}, {
equipmentId: 'sensors_01',//传感器id
equipmentName: '01',//设备名称
pointName: 'point_009_bl',//附着点名称(定位)
equipmentType: 'sensors',//设备类型(类型可根据后端
equipmentValue: 67, //设备存的值
}],
},
msg: "dda"
}
</script> </script>

View File

@@ -87,7 +87,12 @@ async function handleMounted() {
//加载HDR背景图片 //加载HDR背景图片
demo.loadBackground(hdrLoader, backColorSet); demo.loadBackground(hdrLoader, backColorSet);
const text = await store.initData(); watch(
() => params.tunnelId,
async () => {
const text = await store.initData(params.tunnelId);
}
);
// 初始化设备模型 // 初始化设备模型
try { try {
const map = new Map(); const map = new Map();

View File

@@ -1,7 +1,8 @@
<template> <template>
<div id="input-num"> <div id="input-num">
<p>{{ params.name }}</p> <p>{{ params.name }}</p>
<input type="text" :placeholder="params.placeholder" @input="handleChange" :disabled="params.disabled" /> <input type="text" :placeholder="params.placeholder" @input="handleChange" :disabled="params.disabled" readonly
unselectable="on" οnfοcus="this.blur();" />
</div> </div>
</template> </template>

View File

@@ -16,7 +16,7 @@
<div class="setting-item"> <div class="setting-item">
<p>设备选择</p> <p>设备选择</p>
<el-select v-model="equipmentSetting.chooseEquipment" :fit-input-width="true" filterable clearable <el-select v-model="equipmentSetting.chooseEquipment" :fit-input-width="true" filterable clearable
:placeholder="params.equipmentValue" disabled> :placeholder="params.equipmentName" disabled>
<el-option v-for="item in options2" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in options2" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
@@ -55,9 +55,9 @@ let p = ref(57);
// emit("EquInf"); // emit("EquInf");
// } // }
// console.log(params.equipmentType); console.log(params.equipmentType);
// console.log(params.equipmentName); console.log(params.equipmentName);
// console.log(params.equipmentValue); console.log(params.equipmentValue);

View File

@@ -1,16 +1,23 @@
export default function previewtunnelModeInit() { export default function previewtunnelModeInit(equipmentList) {
// for (const item of this.tunnelConfigEquipment) {
for (const item of this.tunnelConfigEquipment) { // //使用api取拿到附着点
//使用api取拿到附着点 // let pointmodel = this.scene.getObjectByName(item.pointName)
let pointmodel = this.scene.getObjectByName(item.pointName) // pointmodel.hasDevice;
pointmodel.hasDevice; // let formInfo = {
let formInfo = { // equipmentType: item.equipmentType, //设备类型
// chooseEquipment: item.equipmentName, //设备选择(设备名称)
// threshold: item.equipmentValue, //阈值
// }
// this.addEquipment(pointmodel, formInfo);
// }
equipmentList.forEach((item) => {
const formInfo = {
equipmentType: item.equipmentType, //设备类型 equipmentType: item.equipmentType, //设备类型
chooseEquipment: item.equipmentName, //设备选择(设备名称) chooseEquipment: item.chooseEquipment, //设备选择(设备名称)
threshold: item.equipmentValue, //阈值 threshold: item.threshold,
} };
this.addEquipment(pointmodel, formInfo); this.addEquipment(this.scene.getObjectByName(item.position), formInfo);
} });
//进行预览和编辑模式的一些操作 //进行预览和编辑模式的一些操作
if (this.isedit == false) { if (this.isedit == false) {
this.scene.traverse(function (item) { this.scene.traverse(function (item) {

View File

@@ -26,12 +26,13 @@
</div> </div>
<!-- <tunnel-scene id="tunnel-box" :isedit="false" /> -->\ <!-- <tunnel-scene id="tunnel-box" :isedit="false" /> -->\
<!-- 一进去的话应该是预览模式所以引入这个组件 --> <!-- 一进去的话应该是预览模式所以引入这个组件 -->
<preview-scene id="tunnel-box" :isedit="false"></preview-scene> <preview-scene id="tunnel-box" :isedit="false" :tunnelId="tunnelId"></preview-scene>
<div class="left"> <div class="left">
<el-drawer v-model="drawerLeft" direction="ltr" modal-class="modal-box" :modal="false" :show-close="false" <el-drawer v-model="drawerLeft" direction="ltr" modal-class="modal-box" :modal="false" :show-close="false"
:close-on-click-modal="false" :close-on-press-escape="false"> :close-on-click-modal="false" :close-on-press-escape="false">
<fan-info v-if="showFan" :list="socketData.leftData" :fan-data="largeScreenData" :transducer-data="largeScreenData"/> <fan-info v-if="showFan" :list="socketData.leftData" :fan-data="largeScreenData"
<!-- <transducer-list v-if="showFan" :list="socketData.leftData" :transducer-data="largeScreenData" />--> :transducer-data="largeScreenData" />
<!-- <transducer-list v-if="showFan" :list="socketData.leftData" :transducer-data="largeScreenData" />-->
<used-ele v-if="showFan" :list="socketData.leftData" :ele-data="largeScreenData" /> <used-ele v-if="showFan" :list="socketData.leftData" :ele-data="largeScreenData" />
</el-drawer> </el-drawer>
<div v-if="drawerLeft" class="left-arrow" @click="closeLeft"></div> <div v-if="drawerLeft" class="left-arrow" @click="closeLeft"></div>