Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
JINRUN-DP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
xinzhedeai
JINRUN-DP
Commits
d789875a
Commit
d789875a
authored
Dec 17, 2025
by
xinzhedeai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
大屏接口对接-alarm scroll auto
parent
c05a80dc
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
69 deletions
+87
-69
RightTodayAlarm.vue
src/components/MineMonitor/RightTodayAlarm.vue
+87
-69
No files found.
src/components/MineMonitor/RightTodayAlarm.vue
View file @
d789875a
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
:key=
"index"
:key=
"index"
class=
"tab-item"
class=
"tab-item"
:class=
"
{ active: activeTab === index }"
:class=
"
{ active: activeTab === index }"
@click="
activeTab = index
"
@click="
handleTabChange(index)
"
>
>
{{
tab
.
name
}}
(
{{
tab
.
count
}}
)
{{
tab
.
name
}}
(
{{
tab
.
count
}}
)
</div>
</div>
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
<span>
定位卡号
</span>
<span>
定位卡号
</span>
<span>
报警时间
</span>
<span>
报警时间
</span>
</dt>
</dt>
<template
v-if=
"sosData.length > 0"
>
<template
v-for=
"(item, index) in sosData"
:key=
"index"
>
<template
v-for=
"(item, index) in sosData"
:key=
"index"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<span>
{{
item
.
realName
}}
</span>
<span>
{{
item
.
realName
}}
</span>
...
@@ -32,6 +33,10 @@
...
@@ -32,6 +33,10 @@
</span>
</span>
</dd>
</dd>
</
template
>
</
template
>
</template>
<
template
v-else
>
<dd
class=
"no-data"
>
暂无数据
</dd>
</
template
>
</dl>
</dl>
</div>
</div>
</div>
</div>
...
@@ -46,6 +51,7 @@
...
@@ -46,6 +51,7 @@
<span>
报警类型
</span>
<span>
报警类型
</span>
<span>
报警时间
</span>
<span>
报警时间
</span>
</dt>
</dt>
<
template
v-if=
"vehicleData.length > 0"
>
<template
v-for=
"(item, index) in vehicleData"
:key=
"index"
>
<template
v-for=
"(item, index) in vehicleData"
:key=
"index"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<span>
{{
item
.
driver
}}
</span>
<span>
{{
item
.
driver
}}
</span>
...
@@ -57,6 +63,10 @@
...
@@ -57,6 +63,10 @@
</span>
</span>
</dd>
</dd>
</
template
>
</
template
>
</template>
<
template
v-else
>
<dd
class=
"no-data"
>
暂无数据
</dd>
</
template
>
</dl>
</dl>
</div>
</div>
</div>
</div>
...
@@ -70,6 +80,7 @@
...
@@ -70,6 +80,7 @@
<span>
定位卡号/车牌号
</span>
<span>
定位卡号/车牌号
</span>
<span>
越界时间
</span>
<span>
越界时间
</span>
</dt>
</dt>
<
template
v-if=
"boundaryData.length > 0"
>
<template
v-for=
"(item, index) in boundaryData"
:key=
"index"
>
<template
v-for=
"(item, index) in boundaryData"
:key=
"index"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<span>
{{
item
.
driver
}}
</span>
<span>
{{
item
.
driver
}}
</span>
...
@@ -80,6 +91,10 @@
...
@@ -80,6 +91,10 @@
</span>
</span>
</dd>
</dd>
</
template
>
</
template
>
</template>
<
template
v-else
>
<dd
class=
"no-data"
>
暂无数据
</dd>
</
template
>
</dl>
</dl>
</div>
</div>
</div>
</div>
...
@@ -94,6 +109,7 @@
...
@@ -94,6 +109,7 @@
<span>
报警级别
</span>
<span>
报警级别
</span>
<span>
报警时间
</span>
<span>
报警时间
</span>
</dt>
</dt>
<
template
v-if=
"monitorData.length > 0"
>
<template
v-for=
"(item, index) in monitorData"
:key=
"index"
>
<template
v-for=
"(item, index) in monitorData"
:key=
"index"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<dd
class=
"list-item"
:class=
"getItemClass(item)"
>
<span>
{{
item
.
equipname
}}
</span>
<span>
{{
item
.
equipname
}}
</span>
...
@@ -105,6 +121,10 @@
...
@@ -105,6 +121,10 @@
</span>
</span>
</dd>
</dd>
</
template
>
</
template
>
</template>
<
template
v-else
>
<dd
class=
"no-data"
>
暂无数据
</dd>
</
template
>
</dl>
</dl>
</div>
</div>
</div>
</div>
...
@@ -112,15 +132,14 @@
...
@@ -112,15 +132,14 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
onMounted
,
onBeforeUnmount
,
computed
}
from
'
vue
'
import
{
ref
,
onMounted
,
onBeforeUnmount
,
computed
,
watch
,
nextTick
}
from
'
vue
'
import
{
getSosList
,
getCarAlarmList
,
getFenceLogList
,
getOnlineAlarmList
}
from
'
@/api/index-dp
'
;
import
{
getSosList
,
getCarAlarmList
,
getFenceLogList
,
getOnlineAlarmList
}
from
'
@/api/index-dp
'
;
import
{
import
{
useMessage
useMessage
}
from
'
naive-ui
'
;
}
from
'
naive-ui
'
;
const
message
=
useMessage
();
const
message
=
useMessage
();
// 激活的tab索引
// 激活的tab索引
const
activeTab
=
ref
(
0
)
const
activeTab
=
ref
(
0
)
...
@@ -137,28 +156,13 @@ let scrollTimer = null
...
@@ -137,28 +156,13 @@ let scrollTimer = null
const
sosData
=
ref
([])
const
sosData
=
ref
([])
// 车辆报警数据
// 车辆报警数据
const
vehicleData
=
ref
([
const
vehicleData
=
ref
([])
// { vehicleOrDriver: '货车01', plateNumber: '鲁C12345', alarmType: '超速', alarmTime: '2025-01-10 14:21:31', status: 'chengse' },
// { vehicleOrDriver: '货车02', plateNumber: '鲁C12346', alarmType: '偏离路线', alarmTime: '2025-01-10 13:15:22', status: 'lanse' },
// { vehicleOrDriver: '张三', plateNumber: '鲁C12347', alarmType: '疲劳驾驶', alarmTime: '2025-01-10 12:05:47', status: 'huangse' }
])
// 越界开采数据
// 越界开采数据
const
boundaryData
=
ref
([
const
boundaryData
=
ref
([])
// { personOrVehicle: '李四', cardOrPlate: 'K00123', boundaryTime: '2025-01-10 14:21:31', status: 'chengse' },
// { personOrVehicle: '挖掘机01', cardOrPlate: '鲁C56789', boundaryTime: '2025-01-10 13:45:12', status: 'lanse' },
// { personOrVehicle: '王五', cardOrPlate: 'K00456', boundaryTime: '2025-01-10 12:30:55', status: 'huangse' },
// { personOrVehicle: '卡车02', cardOrPlate: '鲁C98765', boundaryTime: '2025-01-10 11:20:33', status: 'chengse' }
])
// 在线监测数据
// 在线监测数据
const
monitorData
=
ref
([
const
monitorData
=
ref
([])
// { deviceName: '边坡表面位移01', monitorValue: '0.0047mm', alarmLevel: '橙色预警', alarmTime: '2025-01-10 14:21:31', status: 'chengse' },
// { deviceName: '降雨量', monitorValue: '50.2mm', alarmLevel: '蓝色预警', alarmTime: '2025-01-10 13:15:22', status: 'lanse' },
// { deviceName: '温度传感器01', monitorValue: '38.5℃', alarmLevel: '黄色预警', alarmTime: '2025-01-10 12:05:47', status: 'huangse' },
// { deviceName: '湿度传感器02', monitorValue: '85%RH', alarmLevel: '蓝色预警', alarmTime: '2025-01-10 11:30:15', status: 'lanse' }
])
const
fetchSosData
=
async
()
=>
{
const
fetchSosData
=
async
()
=>
{
const
response
=
await
getSosList
();
const
response
=
await
getSosList
();
...
@@ -170,6 +174,7 @@ const fetchSosData = async () => {
...
@@ -170,6 +174,7 @@ const fetchSosData = async () => {
message
.
error
(
response
.
data
.
msg
)
message
.
error
(
response
.
data
.
msg
)
}
}
}
}
const
fetchvehicleData
=
async
()
=>
{
const
fetchvehicleData
=
async
()
=>
{
const
response
=
await
getCarAlarmList
();
const
response
=
await
getCarAlarmList
();
if
(
response
.
data
.
code
==
200
)
{
if
(
response
.
data
.
code
==
200
)
{
...
@@ -178,6 +183,7 @@ const fetchvehicleData = async () => {
...
@@ -178,6 +183,7 @@ const fetchvehicleData = async () => {
message
.
error
(
response
.
data
.
msg
)
message
.
error
(
response
.
data
.
msg
)
}
}
}
}
const
fetchFenceData
=
async
()
=>
{
const
fetchFenceData
=
async
()
=>
{
const
response
=
await
getFenceLogList
();
const
response
=
await
getFenceLogList
();
if
(
response
.
data
.
code
==
200
)
{
if
(
response
.
data
.
code
==
200
)
{
...
@@ -186,6 +192,7 @@ const fetchFenceData = async () => {
...
@@ -186,6 +192,7 @@ const fetchFenceData = async () => {
message
.
error
(
response
.
data
.
msg
)
message
.
error
(
response
.
data
.
msg
)
}
}
}
}
const
fetchMonitorData
=
async
()
=>
{
const
fetchMonitorData
=
async
()
=>
{
const
response
=
await
getOnlineAlarmList
();
const
response
=
await
getOnlineAlarmList
();
if
(
response
.
data
.
code
==
200
)
{
if
(
response
.
data
.
code
==
200
)
{
...
@@ -195,7 +202,6 @@ const fetchMonitorData = async () => {
...
@@ -195,7 +202,6 @@ const fetchMonitorData = async () => {
}
}
}
}
// 定义tabs 使用computed使其具有响应性
// 定义tabs 使用computed使其具有响应性
const
tabs
=
computed
(()
=>
[
const
tabs
=
computed
(()
=>
[
{
name
:
'
SOS报警
'
,
count
:
sosData
.
value
.
length
},
{
name
:
'
SOS报警
'
,
count
:
sosData
.
value
.
length
},
...
@@ -204,10 +210,6 @@ const tabs = computed(() => [
...
@@ -204,10 +210,6 @@ const tabs = computed(() => [
{
name
:
'
在线监测
'
,
count
:
monitorData
.
value
.
length
}
{
name
:
'
在线监测
'
,
count
:
monitorData
.
value
.
length
}
])
])
// 根据status获取对应的class
// 根据status获取对应的class
const
getItemClass
=
(
item
)
=>
{
const
getItemClass
=
(
item
)
=>
{
if
(
item
.
alarmlevel
===
'
橙色预警
'
)
{
if
(
item
.
alarmlevel
===
'
橙色预警
'
)
{
...
@@ -249,15 +251,24 @@ const initScroll = () => {
...
@@ -249,15 +251,24 @@ const initScroll = () => {
// 如果没有数据或容器不存在,则不启动滚动
// 如果没有数据或容器不存在,则不启动滚动
if
(
!
wrapper
||
wrapper
.
scrollHeight
<=
wrapper
.
clientHeight
)
{
if
(
!
wrapper
||
wrapper
.
scrollHeight
<=
wrapper
.
clientHeight
)
{
console
.
log
(
"
不满足滚动条件:wrapper存在?
"
,
!!
wrapper
,
"
scrollHeight:
"
,
wrapper
?
wrapper
.
scrollHeight
:
"
N/A
"
,
"
clientHeight:
"
,
wrapper
?
wrapper
.
clientHeight
:
"
N/A
"
)
return
return
}
}
console
.
log
(
"
开始滚动,容器:
"
,
wrapper
,
"
scrollHeight:
"
,
wrapper
.
scrollHeight
,
"
clientHeight:
"
,
wrapper
.
clientHeight
)
// 设置初始滚动方向为向下
// 设置初始滚动方向为向下
let
direction
=
1
let
direction
=
1
const
step
=
1
const
step
=
1
// 启动自动滚动
// 启动自动滚动
scrollTimer
=
setInterval
(()
=>
{
scrollTimer
=
setInterval
(()
=>
{
// 确保元素仍然存在
if
(
!
wrapper
)
{
clearInterval
(
scrollTimer
)
return
}
// 计算新的滚动位置
// 计算新的滚动位置
const
newScrollTop
=
wrapper
.
scrollTop
+
(
step
*
direction
)
const
newScrollTop
=
wrapper
.
scrollTop
+
(
step
*
direction
)
...
@@ -281,17 +292,24 @@ const initScroll = () => {
...
@@ -281,17 +292,24 @@ const initScroll = () => {
const
handleTabChange
=
(
index
)
=>
{
const
handleTabChange
=
(
index
)
=>
{
activeTab
.
value
=
index
activeTab
.
value
=
index
// 延迟执行以确保DOM更新完成
// 延迟执行以确保DOM更新完成
setTimeout
(
initScroll
,
100
)
nextTick
(()
=>
{
initScroll
()
})
}
}
// 监听数据变化,重新初始化滚动
watch
([
sosData
,
vehicleData
,
boundaryData
,
monitorData
],
()
=>
{
nextTick
(()
=>
{
initScroll
()
})
})
// 组件挂载时初始化滚动
// 组件挂载时初始化滚动
onMounted
(()
=>
{
onMounted
(()
=>
{
initScroll
()
fetchSosData
()
fetchSosData
()
fetchvehicleData
()
fetchvehicleData
()
fetchFenceData
()
fetchFenceData
()
fetchMonitorData
()
fetchMonitorData
()
})
})
// 组件卸载前清除定时器
// 组件卸载前清除定时器
...
...
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