Merge pull request 'dengjie' (#357) from dengjie into master

Reviewed-on: http://git.feashow.cn/clay/tunnel-cloud-web/pulls/357
This commit is contained in:
2024-08-07 11:48:06 +00:00
3 changed files with 119 additions and 26 deletions

View File

@@ -56,3 +56,12 @@ export const editEquipment = (data) => {
data
})
}
export const getEquipmentSerialNumberOptions = (tunnelId) => {
return request({
url: '/tunnel/tunnel/serialnumber/options',
method: 'get',
params:{
tunnelId:tunnelId
}
})
}

View File

@@ -1,6 +1,6 @@
import { handleLClick } from "./handleRLclick/handleLclick";
import { handleRClick } from "./handleRLclick/handleRclick";
import { handleLHover } from "./handleRLclick/handleLhover.js"
import { handleLHover } from "./handleRLclick/handleLhover.js";
import { handleDBLClick } from "./handleDBLclick";
import { checkAnimation } from "./checkTag";
import {
@@ -11,7 +11,7 @@ import { saveState, resetState } from "./viewBack";
import addFunction from "./addEvent";
import { editTunnelInit } from "./editTunnelInit";
import { addEquipment, removeEquipment } from "./editEquipment";
import previewtunnelModeInit from "./previewTunnelInit"
import previewtunnelModeInit from "./previewTunnelInit";
import { StreetSignTag } from "./utils/StreetSignTag/StreetSignTag.js";
// import { fa } from "element-plus/es/locale/index.js";
// import { ref } from "vue";
@@ -23,7 +23,7 @@ export default class Demo {
//设备模型数组
deviceModels = [];
constructor(three, mountedElement) {
this._StreetSignTag = StreetSignTag
this._StreetSignTag = StreetSignTag;
this._handleLClick = handleLClick;
this._handleLHover = handleLHover;
this._handleRClick = handleRClick;
@@ -155,6 +155,8 @@ export default class Demo {
gltf.scene.traverse((child) => {
this._forModels(child);
});
// 初始化模型缩放倍率
gltf.scene.scale.set(0.75, 0.75, 0.75);
// 初始化场景位置
gltf.scene.position.set(-5, 0, 10);
this.scene.add(gltf.scene);
@@ -164,7 +166,7 @@ export default class Demo {
resolve(gltf);
},
(xhr) => {
console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
// console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
},
(error) => {
console.log(error);
@@ -180,11 +182,10 @@ export default class Demo {
this._hoverModel(this.points, isedit);
// 可以进行点击
if (isedit == true) {
console.log('dada')
this._ClickModel(this.points);
}
//将墙壁进行隐藏
this.WallInit()
this.WallInit();
//对路牌进行相关操作
// this.SignsInf()
}
@@ -224,6 +225,8 @@ export default class Demo {
this.orbitControls.maxPolarAngle = (4 * Math.PI) / 8.5;
this.orbitControls.minPolarAngle = (4 * Math.PI) / 8.5;
}
this.orbitControls.enableDamping = true;
// 初始化轨道控制器距离
this.orbitControls.minDistance = 5;
this.orbitControls.maxDistance = 87;
// 监听控制器变化
@@ -259,7 +262,6 @@ export default class Demo {
//附着点设置方框(已经被选中了的情况)
this.setBoxHelper(intersects[0].object);
this._handleLHover(intersects[0].object);
}
this.preHover.material.color.set("white");
this.preHover = intersects[0].object;
@@ -277,15 +279,13 @@ export default class Demo {
if (!this.preHover) return;
//当鼠标移出的时候,将轨道控制器打开,并且将面板关闭
if (isedit != true) {
this.isControlOrbit(true)
this.clearTagsObj(isedit)
this.isControlOrbit(true);
this.clearTagsObj(isedit);
}
this.preHover.material.color.set("white");
}
// this._handleLHover(intersects[0].object);
// this._handleLClick(intersects[0].object);
});
}
/**
@@ -379,7 +379,6 @@ export default class Demo {
// 下面是2D的显示方案
// this.tagCSS2DObj.scale.set(0.001, 0.001, 0.001);
// this.tag3CSS2DObj.scale.set(0.001, 0.001, 0.001); //编辑框
// this.tag3CSS2DObj.position.set(1, 0, 1);
}
@@ -432,7 +431,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);
v.material.color = new this.THREE.Color(0xc0c0c0);
if (/^leaf/.test(v.name) || /^roller/.test(v.name)) {
group.add(v.clone());
// console.log(group);
@@ -503,10 +502,10 @@ export default class Demo {
isControlOrbit(option = true) {
this.orbitControls.enabled = option;
const mesh = this.scene.getObjectByName("chanel");
const mesh2 = this.scene.getObjectByName("chanel_1");
const mesh3 = this.scene.getObjectByName("chanel_2");
const mesh4 = this.scene.getObjectByName("chanel_3");
// const mesh = this.scene.getObjectByName("chanel");
// const mesh2 = this.scene.getObjectByName("chanel_1");
// const mesh3 = this.scene.getObjectByName("chanel_2");
// const mesh4 = this.scene.getObjectByName("chanel_3");
const opacityTween = (startVal, endVal, isNeedLookAt = false) => {
this.opacityTween = new this.TWEEN.Tween({
@@ -547,16 +546,16 @@ export default class Demo {
WallInit() {
for (let line = 1; line <= 20; line++) {
if (line < 10) {
let wall = 'wall_' + '0' + line
this.scene.getObjectByName(wall).visible = false
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
let wall = "wall_" + line;
this.scene.getObjectByName(wall).visible = false;
}
}
}
SignsInf(tunnelName, tunnelLength) {
let Signs = this.scene.getObjectByName('streetSigns');
let Signs = this.scene.getObjectByName("streetSigns");
// console.log(Signs);
const tag = new this.THREE.Mesh(
new this.THREE.PlaneGeometry(100, 76),
@@ -571,7 +570,6 @@ export default class Demo {
tag.translateZ(3);
tag.translateY(40);
let EquipmentTag = this._StreetSignTag(tunnelName, tunnelLength);
Signs.getObjectByName("tag").material = EquipmentTag;
}

View File

@@ -76,6 +76,19 @@
@change="changeFanData(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column prop="serialNumber" label="序列号" align="center" width="500">
<template #default="scope">
<el-select placeholder="请选择" v-model="scope.row.serialNumber" popper-class="serialNumber-select"
@change="changeFanData(scope.row)" class="serialNumber">
<el-option
v-for="item in serialNumberOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column prop="state" label="状态" align="center" min-width="86">
<template #default="scope">
<div class="switch">
@@ -147,6 +160,19 @@
@change="changeWindData(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column prop="serialNumber" label="序列号" align="center" width="500">
<template #default="scope">
<el-select placeholder="请选择" v-model="scope.row.serialNumber" popper-class="serialNumber-select"
@change="changeWindData(scope.row)" class="serialNumber">
<el-option
v-for="item in serialNumberOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column prop="state" label="状态" align="center">
<template #default="scope">
<div class="switch wind-switch">
@@ -218,6 +244,19 @@
@change="changeOtherData(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column prop="serialNumber" label="序列号" align="center" width="500">
<template #default="scope">
<el-select placeholder="请选择" v-model="scope.row.serialNumber" popper-class="serialNumber-select"
@change="changeOtherData(scope.row)" clearable class="serialNumber">
<el-option
v-for="item in serialNumberOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column prop="state" label="状态" align="center">
<template #default="scope">
<div class="switch wind-switch">
@@ -308,9 +347,10 @@
<script setup>
import {ElLoading, ElMessage} from "element-plus";
import {getEquipmentList, editEquipment, getTunnelDetail} from "@/api/tunnelManage";
import {getEquipmentList, editEquipment, getTunnelDetail, getEquipmentSerialNumberOptions} from "@/api/tunnelManage";
import TunnelTitle from "@/components/tunnelTitle/index.vue";
import { debounce } from 'lodash'
import {debounce} from 'lodash'
const router = useRouter()
const tunnelId = reactive(router.currentRoute.value.params.tunnelId)
const userId = reactive(router.currentRoute.value.params.userId)
@@ -328,8 +368,20 @@ const editOtherData = ref([])
const fenLiuData = ref([])
const editFenLiuData = ref([])
const frequencyData = ref([])
const serialNumberOptions = ref([])
const siteId = ref(0)
const tunnelName = ref('')
const getSerialNumberOptions = () => {
console.log('tunnelId',tunnelId)
getEquipmentSerialNumberOptions(tunnelId).then(res => {
if (res.code === 1000) {
serialNumberOptions.value = res.data
} else {
ElMessage.error(res.msg)
}
})
}
getSerialNumberOptions()
const changeFan = (e) => {
// const fanObj = {
// acquisitionPeriod: e * 1000,
@@ -368,6 +420,7 @@ const changeData = (item) => {
equipmentId: item.equipmentId,
unit: item.unit,
alarmValue: item.alarmValue,
serialNumber:item.serialNumber,
miniRange: parseInt(item.miniRange),
maxRange: parseInt(item.maxRange),
state: item.state,
@@ -397,6 +450,7 @@ const editEquip = debounce(() => {
acurrentValue: parseInt(item.acurrentValue),
bcurrentValue: parseInt(item.bcurrentValue),
ccurrentValue: parseInt(item.ccurrentValue),
serialNumber:item.serialNumber,
state: parseInt(item.state)
}
newFan.push(obj)
@@ -472,7 +526,39 @@ const getTunnel = () => {
getTunnel()
getList()
</script>
<style lang="scss">
.serialNumber{
.el-input{
width: 450px!important;
}
}
.el-table__cell{
}
.serialNumber-select.el-popper {
background: #064B66 !important;
border: 2px solid #05FEFF !important;
.el-select-dropdown {
min-width: 130px !important;
}
.el-select-dropdown__item {
color: #FFFFFF;
border-bottom: 1px solid #05FEFF;
&:last-child {
border-bottom: none;
}
}
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
background-color: transparent !important;
color: #F7B500;
}
}
</style>
<style scoped lang="scss">
.tunnel-bgc {
padding: 85px 0 0 0;
@@ -523,7 +609,7 @@ getList()
.device-box {
display: flex;
width: 2260px;
width: 2680px;
height: 1600px;
background: #064B66;
border-radius: 20px;