# TableColumnControl 表格列显隐控制组件 一个通用的表格列显示/隐藏控制组件,支持动态控制表格列的显示状态。 ## 功能特性 - ✅ 动态控制表格列的显示/隐藏 - ✅ 支持全选/全不选 - ✅ 支持重置为默认值 - ✅ 支持 localStorage 持久化 - ✅ 支持固定列(不可隐藏) - ✅ 支持始终显示的列 - ✅ 可自定义触发按钮样式 ## 使用方法 ### 基础用法 ```vue ``` ### 使用 localStorage 持久化 ```vue ``` ### 固定列(不可隐藏) ```vue const tableColumns = [ { prop: 'name', label: '姓名', fixed: 'left' }, // 固定左侧,不可隐藏 { prop: 'age', label: '年龄' }, { prop: 'action', label: '操作', fixed: 'right' } // 固定右侧,不可隐藏 ] ``` ### 始终显示的列 ```vue const tableColumns = [ { prop: 'name', label: '姓名', alwaysShow: true }, // 始终显示,不可隐藏 { prop: 'age', label: '年龄' } ] ``` ### 自定义触发按钮 ```vue ``` ## Props | 参数 | 说明 | 类型 | 默认值 | |------|------|------|--------| | columns | 表格列配置数组 | Column[] | 必填 | | modelValue | 当前显示的列的 prop 或 label 数组 | string[] | - | | storageKey | localStorage 存储的 key,用于持久化 | string | - | | triggerType | 触发按钮的类型 | 'default' \| 'primary' \| 'success' \| 'warning' \| 'danger' \| 'info' \| 'text' | 'default' | | triggerSize | 触发按钮的大小 | 'large' \| 'default' \| 'small' | 'default' | | triggerCircle | 触发按钮是否为圆形 | boolean | false | | triggerText | 触发按钮的文字 | string | '' | | triggerLink | 触发按钮是否为链接样式 | boolean | false | ## Events | 事件名 | 说明 | 回调参数 | |--------|------|----------| | update:modelValue | 显示的列变化时触发 | (columns: string[]) | | change | 显示的列变化时触发 | (columns: string[]) | ## Column 接口 ```typescript interface Column { prop?: string // 列的 prop,用于标识列 label: string // 列的标签 fixed?: boolean | 'left' | 'right' // 固定列,不可隐藏 alwaysShow?: boolean // 始终显示的列,不可隐藏 [key: string]: any // 其他属性 } ``` ## 插槽 | 插槽名 | 说明 | |--------|------| | trigger | 自定义触发按钮内容 |