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();
},

使用组件


相关内容

热门资讯

扩张提速、店铺“加密”,“硬折... 北京“硬折扣”超市“迎新”。6月26日,盒马旗下平价社区超市超盒算NB首批6家门店同步开业,网点覆盖...
外媒:黄金白银遭遇“完美风暴” 参考消息网6月26日报道据西班牙《经济学家报》网站6月23日报道,贵金属在金融市场正经历一场名副其实...
原创 法... 巴黎《费加罗报》给中国扣上"拯救者"的帽子,纽约《华尔街日报》隔着大西洋默默点头。 两家立场南辕北辙...
金价大跌!有商家囤货资产缩水百... 近期,国际金价持续大幅下行。6月26日19时30分左右,伦敦金现货价格报4050美元/盎司,较年内高...
原创 人... 大家好,这里是史记文谭,闲中着色,笑里有情,不废观星问月,亦赏市井浮生。 前言 咱们每天兜里揣着的钱...
交运股份告别六年扣非亏损,更名... 本报记者 张蓓 陈炳衡 北京报道 日前,上海交运集团股份有限公司(600676.SH)召开2026年...
原创 星... 马斯克的手又伸长了。这次不是火箭回收,也不是把"星链"塞进乌克兰战壕,而是直接杀进美国消费者的手机号...
视频丨一部剧带火一座城 “追剧... 第31届上海电视节各奖项昨晚(26日)揭晓,谍战题材电视剧《沉默的荣耀》在5项重磅提名中,最终斩获评...
东京经济论坛现场观察:日本华商... 作者 | 东京谢社长 6月26日,我去东京丽嘉皇家酒店参加了东京国际商学院EMBA二期开学典礼暨...
苏州投资人问:土耳其20年免税... 苏州投资人问:土耳其20年免税到底怎么理解? 最近一段时间,苏州工业园区和外企圈子里,关于土耳其20...
刘强东为70万京东物流人员规划... 职业被智能化设备迭代替代,已经成为当下众多从业者共同的内心顾虑。近期刘强东在行业论坛的发言,再度引发...
富国基金换帅:裴长江退休卸任,... 6月26日,富国基金发布高级管理人员变更的公告,董事长裴长江因退休离任,申万宏源证券执行委员会成员王...
两部门最新发布!事关黄金及黄金... 6月26日,中国人民银行、海关总署联合发布通知,就《黄金及黄金制品进出口管理办法(征求意见稿)》向社...
中信重工重构全球矿山装备供应链... 文丨承承 编辑丨李壮 2026年盛夏,第四届“中国国际供应链促进博览会”在北京顺义拉开帷幕。在中信集...
全球爆火的ETF,纳入中国存储... 史上增长最快的新发ETF,刚刚把"中国存储龙头"买成了前十大重仓! 6月,Roundhill Mem...
金价暴跌!重回“3字头”时代 继6月24日、25日伦敦金现连续两日盘中跌破4000美元/盎司后,6月26日国际金价延续跌势。 截至...
一批站在“光”里的基金经理们,... 【导读】一批绩优“追光者”密集出手限购,年内业绩前十均已“闭门谢客” 中国基金报记者 曹雯璟 仅过了...
赛场出圈,多品类业务破局,蒙牛... 2026世界杯加持,股价逆势走高! 文/每日财报 南黎 夏日的墨西哥城阿兹特克体育场,伴随着202...
IPO抢着给科技输血,钱却在选... 2026年上半年,A股IPO市场交出81家上市、1057亿元募资的成绩单,新股首日回报率233%创近...
原创 缅... 缅甸领导人敏昂莱结束访华行程刚回到内比都,缅甸官方就向全世界扔出了一枚重磅炸弹——正式宣布发现总规模...