uniapp 表格组件,冻结首行首列
admin
2024-02-02 17:32:06
0

uniapp 表格组件,冻结首行首列

  • 模板
  • js
  • css 部分样式需要放到 `App.vue` 里面才能生效
  • 属性与方法
    • 属性
      • 列定义
      • 按钮
    • 方法
      • 行样式
      • 选择事件
      • 翻页事件
  • 使用组件

uni-table 的封装
优点:自带样式,自带多选等功能
缺点:
1. 不能对 checkboxvalue 进行赋值,选出来的选中行的 index
2. 不能对 checkbox 在加载完表格后默认选中
3. checkbox 不能设置默认禁用

模板


js

export default {name: "x-table",props: {/*** 数据列表* */list: {type: Array,default: []},/*** 是否开启多选* 默认否* */chk: {type: Boolean,default: false},/*** 列定义* */cols:{type:Object,default:null},/*** 按钮列宽度* */btnswidth:{type:Number,default:100},/*** 按钮列表* 请根据按钮数量设置 按钮列宽度* */btns:{type: Array,default: []},/*** 行样式* 可以设置背景色或文字颜色来标记不同的数据状态* */trstyle:{type:Function,default:function(){}},/*** 多选选择时触发* */chkchange:{type:Function,default:function(){}},/*** 设置表格高度 css* */height:{type:String,default:'800px'},/*** 每页长度* */pagesize:{type:Number,default:20},/*** 起始页* */pageindex:{type:Number,default:1},/*** 查询数据总量* */count:{type:Number,default:0},/*** 翻页事件* */topage:{type:Function,default:function(){}}},data() {return {};},methods:{/*** 翻页事件* current=翻页后的页码* */fpage(e){console.log(e)this.topage(e.current);},/*** 单元格数据格式化* */fmt(f,v,r){if(f){return f(v,r);}return v;}}}

css 部分样式需要放到 App.vue 里面才能生效

.x-table-btns button{height: 24px;line-height: 24px;font-size: 14px;display: inline-block;margin-right: 2px;}.x-table-box {width: 100%;background-color: #fff;height: 90%;overflow: auto;position: absolute;}.x-table{border-collapse: collapse;display: inline-block;overflow: auto;width: 100%;position: absolute;}.uni-table-scroll{height:calc(100% - 60px);}.uni-pagination-box{position: absolute;bottom: 0px;left: 0px;width: 100%;padding: 15px;box-sizing: border-box;}.x-table .thead {position: sticky;top: 0;z-index: 9;}.x-table th,.x-table td {box-sizing: border-box;background-color: #fff;}.x-table .checkbox {position: sticky;left: 0;z-index: 8;overflow: hidden;}.x-table .checkbox::before{content: "";position: absolute;right: -1px;top: -10px;height: 200%;width: 0.5px;box-shadow:0px 0px 5px #000;}.x-table tr {display: flex;}.x-table tr:hover,.x-table tr:hover td{background-color:#eee;}@media (min-width:768px) {.x-table-box {max-width: calc(100vw - 200px) !important;}.x-table .left5 {position: sticky;left:36px;border-right: 1px solid #eee;overflow: hidden;}.x-table .left5::before{content: "";position: absolute;right: -1px;top: -10px;height: 200%;width: 0.5px;box-shadow:0px 0px 5px #000;}}@media (max-width:768px){.x-table tbody{display: inline-block;width: 100%;}.x-table tr{flex-direction: column;background-color: #fff;border-bottom: #ccc;width: 100%;margin-bottom: 10px;}.x-table .thead{display: none;}.x-table th,.x-table td {border:none;width: 100%;}.x-table-btns{text-align: right;}.x-table-btns button{height:30px;line-height:30px;font-size: 14px;display: inline-block;margin-right:10px;}}

position: sticky; 与上级元素 position: absolute; 可做到冻结

属性与方法

属性

名称类型描述
listArray数据列表
colsObject列定义,详细信息见下面列定义
btnsArray按钮列表,请根据按钮数量设置—按钮列宽度,详细信息见下面按钮
btnswidthNumber按钮列宽度
chkBoolean是否开启多选 默认否
heightString设置表格高度 css
pagesizeNumber每页长度 默认20
pageindexNumber起始页 默认1
countNumber查询数据总量

列定义

cols:{//字段名name:{title:"姓名",//表头width:100//列宽},//字段名phone:{title:"手机号",//表头width:150,//列宽/*** 格式化数据* */fmt(v,r){return '+86 '+r.phone;}},
}

按钮


btns:[{text:"编辑",//按钮文字class:"btn1",//附加样式type:"primary",//uniapp提供的按钮类型 蓝色primary/红色warn//设置按钮状态,返回true按钮可用,false按钮不可用disabled(r){// r=当前行数据return r.phone.indexOf('15')>-1;},//按钮单击事件click(r){// r=当前行数据}}
]

方法

名称类型描述
trstyleFunction行样式,可以设置背景色或文字颜色来标记不同的数据状态,详细信息见下面行样式
chkchangeFunction选择事件,详细信息见下面选择事件
topageFunction翻页事件,详细信息见下面翻页事件

行样式

/**
* 判断数据状态,给行加上样式
**/
tablestyle(r){// r=当前行数据var style={style.background="#ff9999";};if(r.phone>17000000000){style.background="#ff66ff";}return style;
},

选择事件

chkchange(v){// v.detail.index 当前选中的所有行console.log(v)
},

翻页事件

topage(e){//e=当前页this.pageindex=e;//查询数据this.getdata();
},

使用组件


相关内容

热门资讯

强外贸拓市场 宜宾19家企业亮... 4月15日至5月5日,第139届中国进出口商品交易会(简称“广交会”)在广州举办。活动期间,宜宾市商...
原创 运... 运-20运输机近日再一次展现了其非凡能力——为救治一名身处西藏阿里高原的重病边防战士,它完成了一次跨...
水井坊总经理再变动!胡庭洲在任... 在刚刚披露完2025年报和2026年一季报后,水井坊再次迎来核心高管的变动。 5月6日,水井坊发布公...
康宁公司(GLW)维持超过14... 康宁公司(GLW)维持超过14%的涨幅,持稳于185美元附近,美股盘初曾达到195.81美元——盘中...
原创 国... 阅读须知:本文内容所有信息和数据,均为作者查阅官方信息和网络已知数据整合解析,旨在让读者更清晰了解相...
原创 金... 2026年5月6日,国内金价继续从高位回落,上海黄金交易所的AU9999报每克1013元,沪金期货主...
新华鲜报丨交易笔数大增 从支付...   新华社北京5月6日电(记者吴雨)消费市场活力十足,尽显中国经济强劲韧性。中国人民银行5月6日发布...
原创 安... - 对外直接投资[1]:2026年一季度中国全行业对外直接投资445亿美元,同比增长8.9%;非金融...
龙芯中科:现在公司主打性价比,... 证券日报网5月6日讯 ,龙芯中科在接受调研者提问时表示,公司过去主打芯片自主性,所以是应用导向的,比...
新华鲜报|交易笔数大增 从支付... 消费市场活力十足,尽显中国经济强劲韧性。中国人民银行5月6日发布的数据显示,今年“五一”假期支付交易...
马斯克同意支付150万美元罚款 据路透社报道,4日提交的一份法庭文件显示,美国证券交易委员会已经与美国企业家马斯克就收购推特期间涉嫌...
福建沙县农商银行被罚170万元 【大河财立方消息】5月6日,国家金融监督管理总局三明监管分局披露的行政处罚信息显示,因违规下达存款考...
原创 只... 此前盛传三星要暴砍中国市场产品线的消息,终于落地了。 5月6日,三星在官网正式发布公告,停止在中国大...
珀莱雅上市9年首次“双降”,二... 出品 |达摩财经 此次是珀莱雅第二次向港交所递表。去年8月,珀莱雅发布公告称,为加快国际化战略和海...
沿河县中界镇创新“三营联动”发... 沿河县中界镇创新“三营联动” 发展壮大农村集体经济 近年来,沿河县中界镇聚焦“强村富民”目标,创新推...
老牌私募打新违规被“点名”! 来源:金融时报 一家老牌私募机构因网下打新违规被“点名”。 近日,中国证券业协会(以下简称“中证协”...
和讯信息张杨:五月开门红!存储... 5月开门红,存储芯片大涨还能不能在科技里躺平了?和讯信息张杨分析,首先是假期外围大涨,导致今天芯片大...
警报响起!30年期美债收益率再... 全球股市处于历史高位,但债券市场的警示信号越来越清晰。 30年期美国国债收益率重新站上5%的关口,再...
五粮液急了!先推80亿元至10... 年报推迟公布之后,五粮液摊上事了。股民纷纷质疑五粮液“修改数据”,二级市场,公司股价今日逆市下跌近5...
收假必看!央行+海关新政落地,... 来源:市场资讯 (来源:矿业俱乐部) 央行、海关总署联合发布公告,自2026年6月1日起升级黄金及...