Files
lc_frontend/src/views/screen/components/AlertListDemo.vue

242 lines
5.4 KiB
Vue
Raw Normal View History

2025-10-17 10:31:13 +08:00
<template>
<div class="demo-container">
<h1>AlertList 组件演示</h1>
<div class="demo-section">
<h2>基础用法启用自动滚动</h2>
<div class="demo-item">
<AlertList
title="告警详情"
:list-data="alertData"
max-height="200px"
:auto-scroll="true"
:scroll-speed="1"
/>
</div>
</div>
<div class="demo-section">
<h2>快速滚动速度2px/</h2>
<div class="demo-item">
<AlertList
title="快速滚动演示"
:list-data="alertData"
max-height="200px"
:auto-scroll="true"
:scroll-speed="2"
/>
</div>
</div>
<div class="demo-section">
<h2>禁用自动滚动</h2>
<div class="demo-item">
<AlertList
title="手动滚动"
:list-data="alertData"
max-height="200px"
:auto-scroll="false"
/>
</div>
</div>
<div class="demo-section">
<h2>控制面板</h2>
<div class="control-panel">
<label>
<input type="checkbox" v-model="enableAutoScroll" />
启用自动滚动
</label>
<label>
滚动速度
<input
type="range"
v-model="scrollSpeed"
min="0.5"
max="3"
step="0.5"
/>
{{ scrollSpeed }}px/
</label>
<button @click="addMoreData">添加更多数据</button>
<button @click="clearData">清空数据</button>
<span>当前数据条数{{ alertData.length }}</span>
</div>
</div>
<div class="demo-section">
<h2>动态数据演示</h2>
<div class="demo-item">
<AlertList
title="动态数据"
:list-data="alertData"
max-height="200px"
:auto-scroll="enableAutoScroll"
:scroll-speed="scrollSpeed"
/>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import AlertList from './AlertList.vue'
const enableAutoScroll = ref(true)
const scrollSpeed = ref(1)
// 模拟告警数据
const alertData = ref([
{
text: '2024-07-10 上午8:00 雄安园区隐患内容管理 状态 处理',
error: true
},
{
text: '2025-07-09 上海XXX区域A1门禁告警 处理中 紧急',
error: true
},
{
text: '2025-07-09 上海XXX区域A1门禁告警 处理中 紧急',
error: true
},
{
text: '2020-06-18 编辑内容编辑内容编辑内容编辑内容编辑内容 状态 结果',
warn: true
},
{
text: '2020-06-18 编辑内容编辑内容编辑内容编辑内容编辑内容 状态 结果',
warn: true
},
{
text: '2020-06-18 编辑内容编辑内容编辑内容编辑内容编辑内容 状态 结果'
},
{
text: '2020-06-18 编辑内容编辑内容编辑内容编辑内容编辑内容 状态 结果'
},
{
text: '2020-06-18 编辑内容编辑内容编辑内容编辑内容编辑内容 状态 结果'
},
{
text: '2020-06-18 编辑内容编辑内容编辑内容编辑内容编辑内容 状态 结果'
},
{
text: '2024-07-11 上午9:00 北京园区设备故障 状态 待处理',
error: true
},
{
text: '2024-07-11 上午9:30 深圳园区网络异常 状态 处理中',
warn: true
},
{
text: '2024-07-11 上午10:00 杭州园区安全检查 状态 已完成'
},
{
text: '2024-07-11 上午10:30 成都园区消防演练 状态 进行中'
},
{
text: '2024-07-11 上午11:00 武汉园区应急预案 状态 待审核'
},
{
text: '2024-07-11 上午11:30 西安园区安全培训 状态 已完成'
}
])
// 添加更多数据
const addMoreData = () => {
const newData = {
text: `2024-07-11 ${Math.floor(Math.random() * 24)}:${Math.floor(Math.random() * 60)} 新增告警信息 ${Date.now()}`,
error: Math.random() > 0.7,
warn: Math.random() > 0.8
}
alertData.value.push(newData)
}
// 清空数据
const clearData = () => {
alertData.value = []
}
</script>
<style scoped lang="scss">
.demo-container {
max-width: 1200px;
padding: 20px;
margin: 0 auto;
font-family: Arial, sans-serif;
h1 {
margin-bottom: 30px;
color: #333;
text-align: center;
}
.demo-section {
padding: 20px;
margin-bottom: 40px;
background: #f9f9f9;
border: 1px solid #e0e0e0;
border-radius: 8px;
h2 {
margin-bottom: 15px;
font-size: 18px;
color: #555;
}
.demo-item {
min-height: 250px;
background: white;
border: 1px solid #ddd;
border-radius: 4px;
}
.control-panel {
display: flex;
flex-wrap: wrap;
gap: 15px;
align-items: center;
padding: 15px;
background: white;
border-radius: 4px;
label {
display: flex;
font-size: 14px;
color: #666;
align-items: center;
gap: 8px;
input[type="checkbox"] {
margin: 0;
}
input[type="range"] {
width: 100px;
}
}
button {
padding: 8px 16px;
font-size: 14px;
color: white;
cursor: pointer;
background: #007bff;
border: none;
border-radius: 4px;
&:hover {
background: #0056b3;
}
}
span {
font-size: 14px;
font-weight: bold;
color: #666;
}
}
}
}
</style>