TUI

0.3.7
SwitchTabs 标签卡切换
用于视图切换、内容分类的轻量组件,支持多种样式
基础用法
用于在多个分类或状态之间切换,支持绑定选中项和变更事件
子系统配置
用户配置
scope配置
角色配置
菜单配置
权限配置
示例代码
vue
<template>
  <TsSwitchTabs :tabs="tabList" v-model="activeKey" @change="handleCurrentChange" />
</template>

<script setup lang="ts">

  const activeKey = ref('client');
  const tabList = [
    { name: '子系统配置', key: 'client' },
    { name: '用户配置', key: 'user' },
    { name: 'scope配置', key: 'scope' },
    { name: '角色配置', key: 'role' },
    { name: '菜单配置', key: 'menu' },
    { name: '权限配置', key: 'permission' },
  ];
  const handleCurrentChange = (key: string) => {
    activeKey.value = key;
  };

</script>
卡片风格
设置 variant="card" 属性,切换为更具边界感的卡片样式
子系统配置
用户配置
scope配置
角色配置
菜单配置
权限配置
示例代码
vue
<template>
    <TsSwitchTabs :tabs="tabList" v-model="activeKey" variant="card" />
</template>
<script setup lang="ts">
  const activeKey = ref('client');
  const tabList = [
    { name: '子系统配置', key: 'client' },
    { name: '用户配置', key: 'user' },
    { name: 'scope配置', key: 'scope' },
    { name: '角色配置', key: 'role' },
    { name: '菜单配置', key: 'menu' },
    { name: '权限配置', key: 'permission' },
  ];
  const handleCurrentChange = (key: string) => {
    activeKey.value = key;
  };

</script>
禁用效果展示
通过配置 disabled="true" 属性,来禁用不希望交互的标签
子系统配置
用户配置
scope配置
角色配置
菜单配置
权限配置
示例代码
vue
<template>
  <TsSwitchTabs :tabs="tabList" v-model="activeKey" @change="handleCurrentChange" />
</template>

<script setup lang="ts">
  const activeKey = ref('client');
  const tabList = [
    { name: '子系统配置', key: 'client' },
    { name: '用户配置', key: 'user' },
    { name: 'scope配置', key: 'scope' },
    { name: '角色配置', key: 'role' },
    { name: '菜单配置', key: 'menu' },
    { name: '权限配置', key: 'permission' },
  ];
  const handleCurrentChange = (key: string) => {
    activeKey.value = key;
  };

</script>
可滚动的禁用标签页示例
本示例展示了 TsSwitchTabs 组件在 scroll 模式下的应用,适用于标签项较多时的水平滚动切换。
通过配置 layout="scrollable" ,组件将启用横向滚动功能。
支持同时控制标签的禁用状态,可用于功能开关类场景。
下方分别演示了默认样式与 variant="card" 卡片样式的使用效果。
子系统配置
用户配置
scope配置
角色配置
菜单配置
权限配置
子系统配置
用户配置
scope配置
角色配置
菜单配置
权限配置
示例代码
vue
<template>
  <div style="width: 380px; display: flex; flex-direction: column; row-gap: 36px">
    <TsSwitchTabs :tabs="exampleData.expandData[0].tabDisabledList" v-model="disabledKey" layout="scrollable" minWidth="auto"/>
    <TsSwitchTabs :tabs="exampleData.expandData[0].tabDisabledList" v-model="disabledKey" layout="scrollable" variant="card" />
  </div>
</template>

<script setup lang="ts">
  const activeKey = ref('client');
  const tabList = [
    { name: '子系统配置', key: 'client' },
    { name: '用户配置', key: 'user', disabled: true  },
    { name: 'scope配置', key: 'scope'},
    { name: '角色配置', key: 'role' },
    { name: '菜单配置', key: 'menu' },
    { name: '权限配置', key: 'permission' },
  ];
  const handleCurrentChange = (key: string) => {
    activeKey.value = key;
  };
</script>
基础标签切换
最基础的 TsSwitchTabs 用法,支持 v-model 双向绑定,默认填充宽度布局。
子系统配置
用户配置
安全设置
角色配置
菜单配置
权限配置
示例代码
vue
<template>
  <TsSwitchTabs :tabs="exampleData.expandData[0].tabList" v-model="activeKey" layout="scrollable">
    <template #scope>安全设置</template>
  </TsSwitchTabs>
</template>
滑动动画切换
在基础用法上增加 switchEffect="slide",切换时带有滑动过渡动画。
子系统配置
用户配置
scope配置
角色配置
菜单配置
权限配置
示例代码
vue
<template>
  <TsSwitchTabs :tabs="exampleData.expandData[0].tabList" v-model="activeKey" layout="scrollable" switchEffect="slide" />
</template>
属性 Props
属性名
说明
类型
可选值
默认值
v-model
激活tab的key
String
-
tabs
tab列表
Array<TabItem>
-
[]
variant
外观风格,控制 tab 是卡片型还是文本型
String
text / card
text
layout
布局方式,控制 tab 的宽度布局(平均分 or 滚动)
String
full-width / scrollable
full-width
minWidth
最小宽度, 仅在 layout="scrollable" 时生效,控制每个 tab 的最小宽度
String
- / auto
150px
switchEffect
切换行为:点击 tab 后内容区域的滑动方式, 仅在 layout="scrollable" 时生效
String
slide / fade
fade
事件 Events
事件名
说明
类型
change
切换tab
key: string
TabItem Expand
属性名
说明
类型
可选值
默认值
name
选项名称
string
-
key
选项key
string
-
disabled
是否禁用
boolean
-
false