Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
zghywpc-vue
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李苏
zghywpc-vue
Commits
61021f02
Commit
61021f02
authored
Sep 02, 2024
by
李苏
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调整
parent
87ee4950
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
604 additions
and
210 deletions
+604
-210
permission.js
src/store/modules/permission.js
+15
-55
index.vue
src/views/sbxxgl/ljhsz/index.vue
+1
-1
index.vue
src/views/yhlywsytst/yhlywsytst/index.vue
+583
-151
dhbg.png
src/views/yhlywsytst/yhlywsytst/static/dhbg.png
+0
-0
dhbg_active.png
src/views/yhlywsytst/yhlywsytst/static/dhbg_active.png
+0
-0
vue.config.js
vue.config.js
+5
-3
No files found.
src/store/modules/permission.js
View file @
61021f02
...
@@ -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
)
}
}
...
...
src/views/sbxxgl/ljhsz/index.vue
View file @
61021f02
...
@@ -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"
...
...
src/views/yhlywsytst/yhlywsytst/index.vue
View file @
61021f02
...
@@ -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
:
1
8px
;
margin-top
:
2
8px
;
position
:
absolute
;
position
:
absolute
;
right
:
10
0px
;
right
:
8
0px
;
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
:
1
8px
;
margin-top
:
2
8px
;
position
:
absolute
;
position
:
absolute
;
left
:
10
0px
;
left
:
8
0px
;
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
:
2
2
%
;
width
:
2
8
%
;
left
:
15px
;
left
:
15px
;
height
:
8
5
%
;
height
:
8
8
%
;
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
>
src/views/yhlywsytst/yhlywsytst/static/dhbg.png
0 → 100644
View file @
61021f02
3.2 KB
src/views/yhlywsytst/yhlywsytst/static/dhbg_active.png
0 → 100644
View file @
61021f02
3.34 KB
vue.config.js
View file @
61021f02
...
@@ -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
:
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment