Commit 61021f02 authored by 李苏's avatar 李苏 💬

调整

parent 87ee4950
...@@ -149,76 +149,36 @@ const permission = { ...@@ -149,76 +149,36 @@ const permission = {
newmenus.push(mi) newmenus.push(mi)
} }
}) })
// res.data=[... // res.data=[...
// newCommonList, ...newErpList, ...newPowerRoutes] // newCommonList, ...newErpList, ...newPowerRoutes]
res.data = dynamicRouter([...newCommonList, ...newErpList, ...newPowerRoutes], asymenus) || [... res.data = dynamicRouter([...newCommonList, ...newErpList, ...newPowerRoutes], asymenus) || [...
newCommonList, ...newErpList, ...newPowerRoutes newCommonList, ...newErpList, ...newPowerRoutes
] ]
/* 重置首页路由*/ /* 重置首页路由*/
// let hompePage = treeToList([...newCommonList,...newErpList,...newPowerRoutes]).filter(item=>item.mkid==localStorage.getItem('homeMkid'))
let ttlist = treeToList([...newCommonList, ...newErpList, ...newPowerRoutes]) let ttlist = treeToList([...newCommonList, ...newErpList, ...newPowerRoutes])
let homePage = ttlist.filter(item => item.mkid == localStorage.getItem('homeMkid')) let homePage = ttlist.filter(item => item.mkid == localStorage.getItem('homeMkid'))
/* 替换首页*/ if (true) {
if (homePage && homePage[0]) {
if (homePage[0].component) {
// Layout ParentView 组件特殊处理
if (homePage[0].component === 'Layout') {
homePage[0].component = Layout
} else if (homePage[0].component === 'ParentView') {
homePage[0].component = ParentView
} else if (homePage[0].component === 'InnerLink') {
homePage[0].component = InnerLink
} else {
if (homePage[0].commonComponent) {
homePage[0].component = loadCommonView(homePage[0].component)
} else if (homePage[0].erpComponent) {
homePage[0].component = loadErpView(homePage[0].component)
} else {
homePage[0].component = loadView(homePage[0].component)
}
}
}
/* 移除默认路由*/
let newHome = { let newHome = {
path: '', path: '',
component: Layout, // component: () => import('@/views/yhlywsytst/yhlywsytst/index.vue'),
redirect: 'index', component: () => import('common/src/erpViews/template/index.vue'),
hidden: true,
children: [{
path: 'index',
component: homePage[0].component ,
name: 'Index',
meta: {
title: '首页',
icon: 'dashboard',
affix: true
}
}]
}
router.addRoutes([newHome])
constantRoutes.push(newHome)
}else{
let newHome= {
path: '',
component: Layout,
redirect: 'index', redirect: 'index',
hidden: true, hidden: true,
children: [{ noCache: true,
children: [{
path: 'index', path: 'index',
component: () => import('@/views/index'), component: () => import('@/views/yhlywsytst/yhlywsytst/index.vue'),
name: 'Index', name: 'Index',
meta: { meta: {
title: '首页', title: '首页',
icon: 'dashboard', icon: 'dashboard',
affix: true affix: true
} },
}] noCache: true,
} }]
router.addRoutes([newHome]) }
constantRoutes.push(newHome) router.addRoutes([newHome])
constantRoutes.push(newHome)
} }
......
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
"type": "RelSelect", "type": "RelSelect",
"value": "", "value": "",
"typeConfig": { "typeConfig": {
"src": "/sbgl/usbxx/init/zt ", "src": "/sbgl/usbxx/init/zt",
"match": { "match": {
"value": "id", "value": "id",
"label": "name" "label": "name"
......
...@@ -5,7 +5,61 @@ ...@@ -5,7 +5,61 @@
一回路异物溯源态势图 一回路异物溯源态势图
</div> </div>
<!-- 视角工具栏--> <!-- 视角工具栏-->
<div class="toolButton">
<div class="flex1 text-center">
<div class="menu"><router-link to="/jyfkgl/jyfkgl">
经验反馈信息
</router-link></div>
</div>
<div class="flex1 text-center">
<div class="menu">
<router-link to="/jcxxgl/gjxx">
基础数据
</router-link>
</div>
</div>
<div class="flex1 text-center">
<div class="menu">
<router-link to="/system/menuManage">
系统管理
</router-link>
</div>
</div>
</div>
<div class="toolButton2"> <div class="toolButton2">
<div class="flex1 text-center">
<div class="menu"> <router-link to="/sbxxgl/sbxx">
设备信息
</router-link>
</div>
</div>
<div class="flex1 text-center">
<div class="menu">
<router-link to="/sbjxgl/sbjxxx">
设备检修信息
</router-link>
</div>
</div>
<div class="flex1 text-center">
<div class="menu"> <router-link to="/ywxxgl/ywxxgl">
异物信息
</router-link>
</div>
</div>
</div>
<div class="toolButton3">
<div class="flex1 text-center">
<el-checkbox v-model="xzjj">选中时近景</el-checkbox>
</div>
<!-- <div class="flex1 text-center">
<span style="cursor: pointer;" @click="reView"><i class="el-icon-view"></i>重置视角</span>
</div>
<div class="flex1 text-center">
<span style="cursor: pointer;" @click="viewCenter"><i class="el-icon-view"></i>中心视角</span>
</div> -->
</div>
<!-- <div class="toolButton2">
<div class="flex1 text-center"> <div class="flex1 text-center">
<el-checkbox v-model="xzjj">选中时近景</el-checkbox> <el-checkbox v-model="xzjj">选中时近景</el-checkbox>
</div> </div>
...@@ -21,10 +75,8 @@ ...@@ -21,10 +75,8 @@
<el-switch style="color: #fff ;font-size: 12px;" v-model="flowDirection" active-text="正向" inactive-text="反向"> <el-switch style="color: #fff ;font-size: 12px;" v-model="flowDirection" active-text="正向" inactive-text="反向">
</el-switch> </el-switch>
</div> </div>
</div> -->
<!--
</div>
<div class="toolButton"> <div class="toolButton">
<div class="flex1 text-center"> <div class="flex1 text-center">
<span @click="reView"><i class="el-icon-view"></i>重置视角</span> <span @click="reView"><i class="el-icon-view"></i>重置视角</span>
...@@ -35,30 +87,156 @@ ...@@ -35,30 +87,156 @@
<div class="flex1 text-center"> <div class="flex1 text-center">
<span @click="clearSelected"><i class="el-icon-circle-close"></i>清除选中</span> <span @click="clearSelected"><i class="el-icon-circle-close"></i>清除选中</span>
</div> </div>
<!-- <el-select @change="flowPieDataChange" v-model="flowPieData" clearable placeholder="请选择"> </div> -->
<el-option v-for="(item, index) in allPieData" :key="index" :value="item.name">
{{ item.name }}
</el-option>
</el-select> -->
</div>
<!-- 左侧操作边框--> <!-- 左侧操作边框-->
<!-- <div class="leftOpt"> <div class="leftOpt">
<div class="full padding5" style="padding-top: 10px;"> <div class="flex1">
<div class="full data-box1" style="position: relative;"> <!-- 设备检修-->
<i class="topL"></i> <div class="full">
<i class="topR"></i> <div class="mktitle">
<i class="bottomL"></i> <span>设备检修</span>
<i class="bottomR"></i> <img :src="ksh33" alt="">
<div class="full" > </div>
<div class="mkbody data-box1">
</div>
</div>
</div>
<div class="flex1" style="height: 50%;overflow: hidden;">
<!-- 设备检修-->
<div class="full">
<div class="mktitle">
<span>异物信息</span>
<img :src="ksh33" alt="">
</div>
<div class="mkbody data-box1">
<div class="com-count-body" style="height: 100%;overflow: hidden;">
<!-- 标题-->
<div class="lbbt" style="font-size: 13px;">
<div class="flex1 text-center ">
名称
</div>
<div class="flex1 text-center ">
规格
</div>
<div class="flex1 text-center ">
尺寸
</div>
<div class="flex1 text-center ">
材质
</div>
<div class="flex1 text-center ">
标高
</div>
</div>
<ScrollSeamless :class-option="optionSingleHeight" :data="listData" class="lbbody"
style="overflow: hidden;">
<div class="full lbtit">
<div style="line-height: 25px;display: flex;font-size: 12px;text-align: center" v-for="item in listData" >
<div class="flex1" style="color: #68D8FE;white-space: nowrap;overflow: hidden;text-overflow: ellipsis; ;"
v-text="item.name"></div>
<div class="flex1" style="color: #68D8FE ;" v-text="item.ggxh"></div>
<div class="flex1" style="color: #68D8FE ;" v-text="item.cc"></div>
<div class="flex1" style="color: #68D8FE ;" v-text="item.cz"></div>
<div class="flex1" style="color: #68D8FE ;" v-text="item.bg"></div>
</div>
</div>
</ScrollSeamless>
</div>
</div>
</div>
</div>
</div>
</div> </div>
</div> -->
<!-- <div class="full padding5" style="padding-top: 10px;">
<div class="full data-box1" style="position: relative;">
<i class="topL"></i>
<i class="topR"></i>
<i class="bottomL"></i>
<i class="bottomR"></i>
<div class="full">
</div>
</div>
</div> -->
</div>
<!-- 溯源排查-->
<div class="sypc">
<div class="full data-box1" style="position: relative;">
<i class="topL"></i>
<i class="topR"></i>
<i class="bottomL"></i>
<i class="bottomR"></i>
<div class="data-title1">
<b class="data-title-left">[</b>
<span>溯源排查</span>
<b class="data-title-right">]</b>
</div>
<div class="full flex " style="height: calc(100% - 14px);padding-top: 12px;">
<el-row :gutter="20" class="search-row-1" style="width: 100%;">
<el-col :span="8" class="search-col">
<div class="search-item">
<span class="search-span">机组:</span>
<el-input v-model="queryParams.jzbm"></el-input>
</div>
</el-col>
<el-col :span="8" class="search-col">
<div class="search-item">
<span class="search-span">状态:</span>
<RelSelect placeholder='' style="width: 100%;" src='sbgl/usbxx/init/zt ' filterable clearable
:match="{value:'id',label:'name'}" v-model='queryParams.kshZt'></RelSelect>
</div>
</el-col>
<el-col :span="8" class="search-col flex-center">
<el-button style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;"
size="mini" @click="apiJzbm()" type="primary">溯源排查</el-button>
</el-col>
</el-row>
</div>
</div>
</div>
<!-- 设备查询-->
<div class="sbcx">
<div class="full data-box1" style="position: relative;">
<i class="topL"></i>
<i class="topR"></i>
<i class="bottomL"></i>
<i class="bottomR"></i>
<div class="data-title1">
<b class="data-title-left">[</b>
<span>设备查询</span>
<b class="data-title-right">]</b>
</div>
<div class="full flex " style="height: calc(100% - 14px);padding-top: 12px;">
<el-row :gutter="20" class="search-row-1" style="width: 100%;">
<el-col :span="12" class="search-col">
<div class="search-item">
<span class="search-span">编码:</span>
<el-input v-model="sbxxQueryParams.code"></el-input>
</div>
</el-col>
<el-col :span="12" class="search-col flex-center">
<el-button style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;"
size="mini" @click="sbcx()" type="primary">设备查询</el-button>
<!-- 暂无信息-->
<span v-if="sbcxwcxdxx" style="color: red;font-size: 12px;padding-left: 10px;">{{sbcxwcxdxxText}}</span>
</el-col>
</el-row>
</div>
</div>
</div>
<!-- 右侧操作边框--> <!-- 右侧操作边框-->
<div class="rightOpt" ref="rightOpt"> <!-- <div class="rightOpt" ref="rightOpt">
<div class="full padding5" style="height: 100%;"> <div class="full padding5" style="height: 100%;">
<div class="optTitle"> <div class="optTitle">
{{selectedModel.name?selectedModel.name+'的':''}}设备信息 {{selectedModel.name?selectedModel.name+'的':''}}设备信息
...@@ -96,7 +274,7 @@ ...@@ -96,7 +274,7 @@
</div> </div>
</div> </div>
</div> </div> -->
<!-- threeDdiv--> <!-- threeDdiv-->
<div id="container" ref="container" class="full"> <div id="container" ref="container" class="full">
...@@ -121,6 +299,7 @@ ...@@ -121,6 +299,7 @@
import Viewer from '@/common/threeModules/Viewer' import Viewer from '@/common/threeModules/Viewer'
import Lights from '@/common/threeModules/Lights' import Lights from '@/common/threeModules/Lights'
import ModelLoader from '@/common/threeModules/ModelLoader' import ModelLoader from '@/common/threeModules/ModelLoader'
import ksh33 from './static/ksh33.png'
// import Labels from '@/common/threeModules/Labels' // import Labels from '@/common/threeModules/Labels'
function fullScreen(element) { function fullScreen(element) {
const elem = element || document.documentElement; const elem = element || document.documentElement;
...@@ -143,46 +322,63 @@ ...@@ -143,46 +322,63 @@
} }
export default { export default {
name: 'yhlywsytst', // name: 'yhlywsytst',
mounted() { mounted() {
this.apiGetYwxx()
/* 测试列表*/
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.app.addEventListener('dblclick', () => { // this.$refs.app.addEventListener('dblclick', () => {
fullScreen(this.$refs.app); // fullScreen(this.$refs.app);
}) // })
this.init() this.init()
this.loadAll()
this.tdClick() this.tdClick()
this.getData() this.getData()
this.canNotMousedown([ // this.canNotMousedown([
this.$refs.rightOpt // this.$refs.rightOpt
]) // ])
}) })
}, },
computed: {
optionSingleHeight() {
return {
singleHeight: 25
}
}
},
beforeDestroy() { beforeDestroy() {
this.viewer.canRequestAnimationFrame = false console.log(this.viewer)
}, this.viewer.destroy()
deactivated() {
this.viewer.canRequestAnimationFrame = false
},
activated() {
try {
this.viewer.canRequestAnimationFrame = true
this.viewer.reInit()
} catch (e) {
rconsole.error(e)
}
/* 开启渲染*/
}, },
// deactivated() {
// this.viewer.canRequestAnimationFrame = false
// },
// activated() {
// try {
// this.viewer.canRequestAnimationFrame = true
// this.viewer.reInit()
// } catch (e) {
// rconsole.error(e)
// }
// },
data() { data() {
return { return {
listData:[],
/* 引用图片*/
ksh33:ksh33,
/* 测试代码*/ /* 测试代码*/
queryParams:{ queryParams: {
jzbm:'', jzbm: '',
kshZt:'' kshZt: ''
}, },
sbxxQueryParams: {
code: ''
},
sbcxwcxdxx: false,
sbcxwcxdxxText: '',
xzjj: true, xzjj: true,
flowDirection: true, flowDirection: true,
flowPieData: '', flowPieData: '',
...@@ -195,6 +391,7 @@ ...@@ -195,6 +391,7 @@
loading: true, loading: true,
loadingText: '正在加载模型,请等待!', loadingText: '正在加载模型,请等待!',
viewer: null, viewer: null,
scene: null,
/* 模型加载器*/ /* 模型加载器*/
modelLoader: null, modelLoader: null,
/* */ /* */
...@@ -215,37 +412,107 @@ ...@@ -215,37 +412,107 @@
} }
}, },
methods: { methods: {
apiJzbm(){
apiGetYwxx(){
this.$post('ywxxgl/uywxx/query',{}).then(res=>{
this.listData=res.data.records||[]
})
},
sbcx() {
if (!this.sbxxQueryParams.code) {
this.sbcxwcxdxx = true
this.sbcxwcxdxxText = '请输入设备编码!'
setTimeout(() => {
this.sbcxwcxdxx = false
}, 2000)
} else {
this.sbxxQueryParams.code=this.sbxxQueryParams.code.replace(/\s+/g, '');
/* 查询*/
let iscx=false
this.viewer.scene.traverse((model) => {
if (model.isMesh) {
if (model.name == this.sbxxQueryParams.code) {
this.selectedModel = model
iscx=true
/* 执行并情况材料队列 */
this.reMaterialQue.forEach(item => {
item.revert()
})
this.reMaterialQue.splice(0, this.reMaterialQue.length)
/* 添加材质模型队列*/
let reMaterialQueItem = {
model,
material: model.material.clone(),
revert: function() {
this.model.material = this.material
}
}
this.reMaterialQue.push(reMaterialQueItem)
model.material = new THREE.MeshPhongMaterial({
color: new THREE.Color('rgba(255, 255, 0, 0.8)'),
transparent: true,
opacity: 0.8,
wireframe: false,
})
/* */
if (this.xzjj) {
const object =model;
if (object) {
this.viewer.cameraControl.fitTo(object);
}
}
}
}
});
if(iscx==false){
this.sbcxwcxdxx = true
this.sbcxwcxdxxText = '未查询到设备!'
setTimeout(() => {
this.sbcxwcxdxx = false
}, 2000)
}
}
},
apiJzbm() {
/* 先清空 选中的机组*/ /* 先清空 选中的机组*/
this.jzReMaterialQue.forEach(item => { this.jzReMaterialQue.forEach(item => {
item.revert() item.revert()
}) })
this.$post('ksh/query', this.$post('ksh/query',
this.queryParams this.queryParams
).then(res=>{ ).then(res => {
if(res.success){ if (res.success) {
let sbxxList=res.data.records||[] let sbxxList = res.data.records || []
const sbxxCodeList=sbxxList.map(item=>item.sbxxCode) const sbxxCodeList = sbxxList.map(item => item.sbxxCode)
this.viewer.scene.traverse((model)=>{ this.viewer.scene.traverse((model) => {
if (model.isMesh) { if (model.isMesh) {
if(sbxxCodeList.includes(model.name)){ if (sbxxCodeList.includes(model.name)) {
let jzReMaterialQueItem = { let jzReMaterialQueItem = {
model, model,
material: model.material.clone(), material: model.material.clone(),
revert: function() { revert: function() {
this.model.material = this.material this.model.material = this.material
}
}
this.jzReMaterialQue.push(jzReMaterialQueItem)
model.material = new THREE.MeshPhongMaterial({
color: new THREE.Color('rgba(255, 164, 7, 0.8)'),
transparent: true,
opacity: 0.8,
wireframe: false,
})
} }
}
this.jzReMaterialQue.push(jzReMaterialQueItem)
model.material = new THREE.MeshPhongMaterial({
color: new THREE.Color('rgba(255, 164, 7, 0.8)'),
transparent: true,
opacity: 0.8,
wireframe: false,
})
} }
}
}); });
...@@ -335,18 +602,18 @@ ...@@ -335,18 +602,18 @@
cornerSplit: 10, cornerSplit: 10,
}, },
material: { material: {
// color: "#0099ff", // color: "#0099ff",
color: "lightgreen", color: "lightgreen",
side: 2, side: 2,
map: { map: {
image: "vt/resources/texture/arrow.png", image: "vt/resources/texture/arrow.png",
repeat: [1, 4], repeat: [1, 4],
// rotation: direction ? Math.PI : 0, // rotation: direction ? Math.PI : 0,
wrapS: THREE.RepeatWrapping, wrapS: THREE.RepeatWrapping,
wrapT: THREE.RepeatWrapping, wrapT: THREE.RepeatWrapping,
}, },
transparent: true, transparent: true,
depthTest: true, depthTest: true,
}, },
}); });
flowObject.line.onBeforeRender = () => { flowObject.line.onBeforeRender = () => {
...@@ -395,57 +662,98 @@ ...@@ -395,57 +662,98 @@
}, },
init() { init() {
this.viewer = new Viewer('container') /* scene*/
this.viewer.camera.position.set(0, 17, -60) // this.scene = new Viewer('scene')
// this.scene.camera.position.set(0, 17, -60)
const manager = new THREE.LoadingManager();
manager.onProgress = (item, loaded, total) => { /* viewer*/
let process = (loaded / total * 100).toFixed(2) // this.viewer = new Viewer('container')
if (process == 100) { // this.viewer.camera.position.set(0, 17, -60)
this.loading = false
} // const manager = new THREE.LoadingManager();
// 这里可以根据加载进度执行其他操作 // manager.onProgress = (item, loaded, total) => {
}; // let process = (loaded / total * 100).toFixed(2)
this.modelLoader = new ModelLoader(this.viewer, manager) // if (process == 100) {
this.loadAll() // this.loading = false
// }
// // 这里可以根据加载进度执行其他操作
// };
// this.modelLoader = new ModelLoader(this.viewer, manager)
const lights = new Lights(this.viewer)
const ambientLight = lights.addAmbientLight() // 添加环境光 // const lights = new Lights(this.viewer)
ambientLight.setOption({ // const ambientLight = lights.addAmbientLight() // 添加环境光
color: 0xff0000, // ambientLight.setOption({
intensity: 6 // 环境光强度 // color: 0xff0000,
}) // intensity: 6 // 环境光强度
ambientLight.light.name = 'AmbientLight' // })
// 添加平行光 // ambientLight.light.name = 'AmbientLight'
lights.addDirectionalLight([200, 200, 200], { // // 添加平行光
color: 'rgb(253,253,253)', // lights.addDirectionalLight([200, 200, 200], {
intensity: 3, // color: 'rgb(253,253,253)',
castShadow: false // 是否投射阴影 // intensity: 3,
}) // castShadow: false // 是否投射阴影
// this.viewer.addAxis() // })
/* 添加地面*/
this.loadDm() // this.loadDm()
this.viewer = new VT.Viewer({
container: this.$refs.container,
scene: {
helper: {
grid: {
visible: true,
},
},
background: {
skyboxPath: "dark",
},
},
view: {
position: [44.81080132492321, 48.62916741352805, -75.73966237503983],
center: [48.15565686619112, 5.221820594458009, 5.975771281142078],
far: 10000,
near: 0.1,
aspect: null,
fov: 45,
isOrtho: false,
zoom: 1,
rotation: [-2.6532966628149923, -0.036133545863119475, -3.1224049976510337, "XYZ"],
},
});
}, },
loadAll() { loadAll() {
this.modelLoader.loadModelToScene('/glb/all.glb', (model) => { var model = new VT.Model({
model.object.position.set(-42, -10, 0) modelType: "gltf",
model.object.scale.set(1, 1, 1) src: "/glb/all.glb",
}, (num) => {
let showNum = num * 100
if (showNum == 100) {
this.loadingText = `模型加载完毕,请稍等!`
/* 机组高亮测试*/
setTimeout(()=>{
this.apiJzbm()
},2000)
} else {
this.loadingText = `正在加载模型${showNum}%!`
}
/* */
}) })
model.addEventListener("loaded", () => {
this.loading=false
});
this.viewer.scene.add(model);
// this.modelLoader.loadModelToScene('/glb/all.glb', (model) => {
// model.object.position.set(-42, -10, 0)
// model.object.scale.set(1, 1, 1)
// model.object.updateMatrixWorld(true);
// console.log(model,'console.log(model)console.log(model)')
// }, (num) => {
// let showNum = num * 100
// if (showNum == 100) {
// this.loadingText = `模型加载完毕,请稍等!`
// /* 机组高亮测试*/
// setTimeout(() => {
// this.apiJzbm()
// }, 2000)
// } else {
// this.loadingText = `正在加载模型${showNum}%!`
// }
// /* */
// })
}, },
loadDm() { loadDm() {
const geometry = new THREE.PlaneGeometry(1000, 1000, 500, 500); // 创建一个100x100的平面,水平和垂直各10条线 const geometry = new THREE.PlaneGeometry(1000, 1000, 500, 500); // 创建一个100x100的平面,水平和垂直各10条线
...@@ -464,12 +772,9 @@ ...@@ -464,12 +772,9 @@
this.viewer.renderer.domElement.addEventListener('click', (e) => { this.viewer.renderer.domElement.addEventListener('click', (e) => {
const rayCaster = new THREE.Raycaster() const rayCaster = new THREE.Raycaster()
const mouse = new THREE.Vector2() const mouse = new THREE.Vector2()
// 将鼠标位置归一化为设备坐标。x 和 y 方向的取值范围是 (-1 to +1)
mouse.x = (e.offsetX / this.viewer.renderer.domElement.clientWidth) * 2 - 1 mouse.x = (e.offsetX / this.viewer.renderer.domElement.clientWidth) * 2 - 1
mouse.y = -(e.offsetY / this.viewer.renderer.domElement.clientHeight) * 2 + 1 mouse.y = -(e.offsetY / this.viewer.renderer.domElement.clientHeight) * 2 + 1
// 通过摄像机和鼠标位置更新射线
rayCaster.setFromCamera(mouse, this.viewer.camera) rayCaster.setFromCamera(mouse, this.viewer.camera)
// TODO: 第一个参数是否需要指定模型
const intersects = rayCaster.intersectObject(this.viewer.scene, true) // 计算物体和射线的焦点 const intersects = rayCaster.intersectObject(this.viewer.scene, true) // 计算物体和射线的焦点
if (intersects[0]) { if (intersects[0]) {
if (intersects[0].object.name == '地面') { if (intersects[0].object.name == '地面') {
...@@ -482,8 +787,8 @@ ...@@ -482,8 +787,8 @@
} else { } else {
model = intersects[0].object model = intersects[0].object
} }
this.selectedModel = model this.selectedModel = model
rconsole.log('选择设备',model.name)
/* 执行并情况材料队列 */ /* 执行并情况材料队列 */
this.reMaterialQue.forEach(item => { this.reMaterialQue.forEach(item => {
item.revert() item.revert()
...@@ -503,16 +808,18 @@ ...@@ -503,16 +808,18 @@
model.material = new THREE.MeshPhongMaterial({ model.material = new THREE.MeshPhongMaterial({
color: new THREE.Color('rgba(7,32,96,0.76)'), color: new THREE.Color('rgba(255, 255, 0, 0.8)'),
transparent: true, transparent: true,
opacity: 0.8, opacity: 0.8,
wireframe: false, wireframe: false,
}) })
/* */ /* */
if (this.xzjj) { if (this.xzjj) {
let point = intersects[0].point const object =model;
let finallyPoint = this.getCameraPosition(5, point) if (object) {
this.cameraTo(finallyPoint.x, finallyPoint.y, finallyPoint.z, point.x, point.y, point.z) this.viewer.cameraControl.fitTo(object);
}
} }
...@@ -561,7 +868,8 @@ ...@@ -561,7 +868,8 @@
}, },
/* 封装相机转向方法动画*/ /* 封装相机转向方法动画*/
cameraTo(x, y, z, px, py, pz) { cameraTo(x, y, z, px, py, pz) {
let _camera = this.viewer.camera
let _camera = this.viewer.cameraControl.camera
let currentPosition = _camera.position.clone(); let currentPosition = _camera.position.clone();
let oldx = currentPosition.x let oldx = currentPosition.x
let oldy = currentPosition.y let oldy = currentPosition.y
...@@ -595,6 +903,35 @@ ...@@ -595,6 +903,35 @@
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.mktitle {
line-height: 35px;
font-size: 14px;
color: #68D8FE;
font-weight: 600;
height: 35px;
position: relative;
overflow: hidden
}
.mktitle img {
height: 15px;
width: 100%;
position: absolute;
left: 0;
bottom: 0;
}
.mkbody {
width: 100%;
height: calc(100% - 35px);
background-color: rgba(0, 0, 0, 0.6)!important;
}
.min_full {
height: 100vh;
width: 100vw;
}
::v-deep .el-switch__core { ::v-deep .el-switch__core {
height: 16px; height: 16px;
} }
...@@ -621,8 +958,9 @@ ...@@ -621,8 +958,9 @@
} }
::v-deep .el-input__inner { ::v-deep .el-input__inner {
border: 1px solid #68D8FE;
background-color: rgba(0, 0, 0, 0.0); background-color: rgba(0, 0, 0, 0.0);
color: #fff; color: #68D8FE;
} }
.nullbp { .nullbp {
...@@ -632,7 +970,8 @@ ...@@ -632,7 +970,8 @@
} }
.bigTitle { .bigTitle {
position: relative; text-shadow: 4px 4px 4px rgba(0, 0, 0, 0.6);
position: absolute;
height: 60px; height: 60px;
width: 100%; width: 100%;
background-image: url('./static/title.png'); background-image: url('./static/title.png');
...@@ -662,29 +1001,42 @@ ...@@ -662,29 +1001,42 @@
} }
.toolButton { .toolButton {
color: #68D8FE;
display: flex; display: flex;
margin-top: 18px; margin-top: 28px;
position: absolute; position: absolute;
right: 100px; right: 80px;
z-index: 12; z-index: 12;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
min-width: 250px; min-width: 400px;
color: #fff;
font-size: 12px; font-size: 12px;
// background-color: #07417a; // background-color: #07417a;
} }
.toolButton2 { .toolButton2 {
display: flex; display: flex;
margin-top: 18px; margin-top: 28px;
position: absolute; position: absolute;
left: 100px; left: 80px;
z-index: 12; z-index: 12;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
min-width: 350px; min-width: 400px;
color: #26c6f0; color: #68D8FE;
font-size: 13px;
// background-color: #07417a;
}
.toolButton3 {
display: flex;
bottom: 12px;
position: absolute;
right: 15px;
z-index: 12;
height: 40px;
line-height: 40px;
min-width: 300px;
color: #fff;
font-size: 13px; font-size: 13px;
// background-color: #07417a; // background-color: #07417a;
} }
...@@ -696,10 +1048,35 @@ ...@@ -696,10 +1048,35 @@
.leftOpt { .leftOpt {
position: absolute; position: absolute;
margin-top: 80px; margin-top: 80px;
width: 22%; width: 28%;
left: 15px; left: 15px;
height: 85%; height: 88%;
z-index: 12; z-index: 12;
display: flex;
flex-direction: column;
}
.sypc {
top: 105px;
left: 50%;
transform: translate(-50%, 0%);
/* 使元素居中 */
position: absolute;
height: 90px;
width: 40%;
z-index: 12;
background-color: rgba(0, 0, 0, 0.6);
}
.sbcx {
top: 105px;
right: 15px;
/* 使元素居中 */
position: absolute;
height: 90px;
width: 28%;
z-index: 12;
background-color: rgba(0, 0, 0, 0.6);
} }
...@@ -779,4 +1156,59 @@ ...@@ -779,4 +1156,59 @@
text-align: center; text-align: center;
color: #fff; color: #fff;
} }
/* 第二个scene*/
.menu {
float: left;
width: 142px;
height: 48px;
margin: 5px 6px 0;
background: url(./static/dhbg.png) no-repeat;
text-align: center;
line-height: 48px;
}
.data-title {
width: 200px;
margin: -14px auto 0 auto;
color: #83c7e3;
font-size: 20px;
letter-spacing: 2px;
font-weight: 600
}
.data-title1 {
width: 90px;
margin: -14px auto 0 auto;
color: #83c7e3;
font-size: 16px;
letter-spacing: 2px;
font-weight: 600
}
.data-title span {
margin: 0 15px;
}
.data-title-left,
.data-title-right {
color: #105eda;
}
.search-span {
color: #68D8FE !important;
}
.lbbt {
height: 4vh;
width: 100%;
font-size: .9vw;
display: flex;
line-height: 4vh;
color: #61d2f7;
background-color:rgba(22, 84, 198, 0.7) ;
}
.lbbody {
height: calc(100% - 4vh);
}
</style> </style>
...@@ -43,9 +43,11 @@ module.exports = { ...@@ -43,9 +43,11 @@ module.exports = {
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://192.168.30.254:18080/dmg`, // target: `http://192.168.30.254:18080/dmg`,
// target: `http://192.168.30.254:28084/erp`, // target: `http://192.168.30.254:28084/erp`,
// target: `http://192.168.30.108:9080/lxyl`, // target: 'http://192.168.30.109:9078/zghywpc',
target: 'http://localhost:9080/lxyl', target: 'http://localhost:9078/zghywpc',
// target: `http://192.168.30.117:9080/lxyl`, // target: 'http://119.3.92.249:28090/zghywpc',
// target: `http://192.168.30.118:9077/zghywpc`,
// target:'http://192.168.30.105:9080/lxyl', // target:'http://192.168.30.105:9080/lxyl',
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment