进度池
TuiProgressPool 是一个具有高度装饰性的进度展示组件。 它模拟了“蓄水池”或“电池充能”的视觉效果,支持波浪动画 (Wave)、虚线外框 (Dash Border) 以及多种颜色渐变策略。配合 TuiProgressPoolGroup 可轻松实现队列动画效果。
基础用法
基础展示
最简单的用法,配置 value 和 label。 默认情况下,组件会自动计算百分比,并使用科技感的虚线边框包裹。
html
<template>
<div style="width: 300px; height: 100px;">
<TuiProgressPool
:value="60"
label="基础进度池"
/>
</div>
</template>视觉特效
波浪填充 (Wave)
设置 fillContent="wave" 可开启液位波浪动画。 您可以精细控制波浪的高度、段数和动画时长,模拟液面晃动的效果。
- waveHeight: 波浪起伏高度。
- waveSegments: 波浪的波峰数量。
html
<template>
<TuiProgressPool
:value="45"
label="液位监测"
fillContent="wave"
:waveHeight="10"
:waveSegments="4"
:colors="['#409eff', '#36cfc9']"
/>
</template>形状与方向
- shape: 支持
square(默认矩形) 和circle(圆形)。 - barDirection: 控制内部进度条的增长方向 (
h水平,v垂直)。
html
<template>
<TuiProgressPool
:value="75"
shape="circle"
barDirection="v"
fillContent="wave"
label="储罐容量"
unit="L"
:width="150"
/>
</template>数值与阈值
数值展示逻辑
组件提供了强大的数值显示配置:
maxValue: 设置最大值,用于计算百分比(默认 100)。
displayValue: 控制显示内容。
auto: 自动显示。all: 同时显示百分比和实际数值。allReverse: 反转百分比和实际数值的主次显示位置。unit: 数值单位。
智能阈值 (Thresholds)
通过 thresholds 对象,可以根据数值自动切换颜色状态。支持定义 critical, danger, warning, normal, success 五种状态的断点。
html
<script setup>
const myThresholds = {
danger: 20, // 0-20
warning: 50, // 21-50
normal: 80, // 51-80
success: 100 // 81+
};
</script>
<template>
<TuiProgressPool
:value="85"
:thresholds="myThresholds"
label="健康度"
/>
</template>进度池组
使用 TuiProgressPoolGroup 可以渲染一组进度池,并支持 队列动画(一个接一个地播放入场动画)。
- queueInit: 是否开启队列初始化动画(默认为
true)。 - progressPoolConfig: 统一配置内部所有 item 的样式属性。
html
<script setup>
const items = [
{ label: "节点 A", value: 32 },
{ label: "节点 B", value: 65 },
{ label: "节点 C", value: 89 }
];
const poolConfig = {
fillContent: 'wave',
barDirection: 'v', // 垂直柱状图效果
gradientAni: true // 开启渐变流光动画
};
</script>
<template>
<div style="height: 300px">
<TuiProgressPoolGroup
:items="items"
:progressPoolConfig="poolConfig"
:gap="20"
/>
</div>
</template>API 参考
TuiProgressPool Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| value | Number | 0 | 当前数值。 |
| maxValue | Number | null | 最大值。若不填则默认按 100 计算百分比。 |
| label | String | Required | 标题/标签文本。 |
| unit | String | '' | 数值单位。 |
| shape | String | 'square' | 形状。可选:square, circle。 |
| fillContent | String | 'bar' | 填充内容类型。可选:bar (普通), wave (波浪)。 |
| colors | String/Array | null | 颜色配置。支持单色字符串或 [startColor, endColor] 渐变数组。 |
| barDirection | String | 'h' | 进度增长方向。可选:h, v。 |
| labelPostion | String | 'top' | 标签位置。可选:top, left, right, bottom。 |
| displayValue | String | 'auto' | 数值显示模式。可选:none, auto, all, allReverse。 |
| status | String | - | 强制指定状态颜色 (success, warning 等)。 |
| thresholds | Object | - | 阈值配置对象。 |
| barDash | Array | [5, 2] | 内部进度条的虚线配置 [实线长, 间隙长]。 |
| borderWidth | Number | 3 | 外框边框宽度。 |
| borderGap | Number | 3 | 外框与内部进度的间距。 |
| borderRadius | Number | 5 | 圆角大小。 |
| gradientType | String | 'linear' | 渐变类型。可选:linear, radial。 |
| gradientAni | Boolean | false | 是否开启渐变流光动画。 |
| waveHeight | Number | 20 | 波浪高度 (px)。 |
| waveSegments | Number | 6 | 波浪段数。 |
| aniDelay | Number | 2000 | 初始动画延迟时间 (ms)。 |
| duration | Number | - | 动画持续时长 (ms)。 |
| resizeObserver | String | 'global' | 尺寸监听策略。 |
TuiProgressPoolGroup Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| items | Array | [] | 数据源数组,项包含 { label, value }。 |
| progressPoolConfig | Object | - | 统一透传给内部 TuiProgressPool 的 Props 配置对象。 |
| gap | Number | - | 组内元素间距。 |
| direction | String | 'h' | 组排列方向。可选:h, v。 |
| queueInit | Boolean | true | 是否开启队列延迟初始化(依次播放入场动画)。 |
| labelWidth | Number | - | 统一标签宽度(用于对齐)。 |
Emits
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| inited | 组件初始化动画完成时触发。 | - |