TUI

0.3.7
TimeAxis 时间轴
展示事件流程的组件,支持状态、插槽自定义、子步骤等。
基础用法
通过 label 和 children 插槽自定义展示结构,展示时间轴的基本布局。
创建订单
打包发货
订单完成
打包发货
订单完成
示例代码
vue
<template>
  <TsTimeAxis :list="axisListSimple"></TsTimeAxis>
</template>
<script setup lang="ts">
  const axisListSimple = [
    { label: '创建订单', children: [{ label: '打包发货' }, { label: '订单完成' }]},
    { label: '打包发货', children: [] },
    { label: '订单完成', children: [] },
  ];
</script>
居中布局 + 自定义样式
设置 placement 为 center,实现时间点居中展示。可自定义点大小、颜色、进度圈尺寸等样式。
仓库处理
商品打包
操作时间:2022-01-01 11:11:12
商品出库
操作时间:2022-01-01 11:11:12
订单支付
商品下单
示例代码
vue
<template>
  <div style="width: 390px">
    <TsTimeAxis :list="axisList" placement="center" :pointSize="10" :progressSize="20" pointColor="#fa8c16">
      <template #label="{ item }">
        <div class="self-label">
          <div>{{ item.label }}</div>
          <div>{{ item.time }}</div>
        </div>
      </template>
      <template #children="{ item }">
        <div class="children">
          <div class="children-item" v-for="(childItem, cIndex) in item.children || []" :key="cIndex">
            <div class="label">{{ childItem.label }}</div>
            <div class="children-time">操作时间:{{ childItem.time }}</div>
          </div>
        </div>
      </template>
    </TsTimeAxis>
  </div>
</template>
<script setup lang="ts">
  const axisList = [
    {
      time: '2022-01-01 11:11:12',
      label: '仓库处理',
      desc: '货物打包完成',
      status: 'in-progress',
      children: [
        { time: '2022-01-01 11:11:12', label: '商品打包', desc: '打包完成' },
        { time: '2022-01-01 11:11:12', label: '商品出库', desc: '出库成功' },
      ],
    },
    {
      time: '2022-01-01 11:11:11',
      label: '订单支付',
      desc: '支付成功',
    },
    {
      time: '2022-01-01 11:11:11',
      label: '商品下单',
      desc: '订单创建成功',
    },
  ];
</script>
状态色标识
设置 status 字段,点将展示对应的状态色。默认支持 done、in-progress、pending。
创建订单
打包发货
订单完成
示例代码
vue
<template>
  <div style="width: 300px">
    <TsTimeAxis :list="axisCommonList" />
  </div>
</template>
<script setup lang="ts">
  const axisCommonList = [
    { label: '创建订单', status: 'done' },
    { label: '打包发货', status: 'in-progress' },
    { label: '订单完成', status: 'pending' },
  ];
</script>
自定义点样式
可通过 pointSize 和 pointColor 修改时间点的大小和颜色。
创建订单
打包发货
订单完成
示例代码
vue
<template>
  <div style="width: 300px">
    <TsTimeAxis :list="axisCommonList" :pointSize="12" :progressSize="20" pointColor="#52c41a" />
  </div>
</template>
<script setup lang="ts">
  const axisCommonList = [
    { label: '创建订单', status: 'done' },
    { label: '打包发货', status: 'in-progress' },
    { label: '订单完成', status: 'pending' },
  ];
</script>
自定义子项结构
子项(children)支持完全自定义结构,可结合卡片、图标等形式使用。
仓库处理
2022-01-01 11:11:12
商品打包
2022-01-01 11:11:12
商品出库
2022-01-01 11:11:12
订单支付
2022-01-01 11:11:11
商品下单
2022-01-01 11:11:11
示例代码
vue
<template>
  <div style="width: 400px">
    <TsTimeAxis :list="axisList">
      <template #label="{ item }">
        <div class="self-label">
          <div>{{ item.label }}</div>
          <div>{{ item.time }}</div>
        </div>
      </template>
      <template #children="{ item }">
        <div class="children">
          <div class="children-item" v-for="child in item.children || []" :key="child.label" style="border: 1px solid #e5e5e5; padding: 8px; border-radius: 4px; margin-bottom: 8px">
            <div class="label">{{ child.label }}</div>
            <div class="children-time">{{ child.time }}</div>
          </div>
        </div>
      </template>
    </TsTimeAxis>
  </div>
</template>
<script setup lang="ts">
  const axisList = [
    {
      time: '2022-01-01 11:11:12',
      label: '仓库处理',
      desc: '货物打包完成',
      status: 'in-progress',
      children: [
        { time: '2022-01-01 11:11:12', label: '商品打包', desc: '打包完成' },
        { time: '2022-01-01 11:11:12', label: '商品出库', desc: '出库成功' },
      ],
    },
    {
      time: '2022-01-01 11:11:11',
      label: '订单支付',
      desc: '支付成功',
    },
    {
      time: '2022-01-01 11:11:11',
      label: '商品下单',
      desc: '订单创建成功',
    },
  ];
</script>
属性 Props
属性名
说明
类型
可选值
默认值
list
时间轴数据
Array<T> | TsTimeAxisItem[]
-
[]
placement
时间轴位置
string
top | center
top
pointSize
时间轴点大小
number | string
-
6
pointColor
时间轴点颜色
string
-
var(--ts-color-primary)
progressSize
中心布局下的进度圈大小
number | string
-
15
ColumnsType Expand
属性名
说明
类型
可选值
默认值
label
时间轴标题
String
-
status
时间轴状态
String
done | in-progress | pending | -
-
children
子数据
Array<TimeAxisItem>
-
[]