# vue-mobile-table
**Repository Path**: zhou-linfeng/vue-mobile-table
## Basic Information
- **Project Name**: vue-mobile-table
- **Description**: vue-mobile-table是一个移动端使用的轻量级table展示组件,组件内部布局主要采用flex布局,并未使用table标签。内部在滚动上使用BetterScroll 2.0中的transform来处理滚动,使得滚动更加细腻。在dom渲染上采用虚拟dom技术,让vue-mobile-table很好的保证不卡顿的前提下渲染一个超长的列表。
- **Primary Language**: JavaScript
- **License**: ISC
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 2
- **Created**: 2022-09-14
- **Last Updated**: 2024-03-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# vue-mobile-table
## 说明
`vue-mobile-table`是一个移动端使用的轻量级table展示组件(目前对增删改并不支持,主要针对类似股票软件中查看行情的table展示列表的业务场景),组件内部布局主要采用flex布局,并未使用table标签。内部在滚动上使用`BetterScroll 2.0`中的`transform`来处理滚动,使得滚动更加细腻。在dom渲染上采用虚拟dom技术,让`vue-mobile-table`很好的保证不卡顿的前提下渲染一个超长的列表。并且`vue-mobile-table`支持上拉加载和下拉刷新,更加方便做多样的ajax请求。该组件高度默认为父组件高度,且表头固定(可通过设置父组件高度来控制该组建的高度)。
## 功能
1. 表头固定
2. 表列左边固定
3. 虚拟渲染(默认且一定开启)
4. 上拉加载和下拉刷新
5. 支持排序
## 优点
1. 可渲染大量数据,并保持流畅
2. 使用betterscroll 2.0 替换原生滚动,在移动端滚动更加流畅
3. 支持排序
4. 所有设置为纯数字的关于元素大小的单位都将根据标准设计图的px转为当前对应设备的vw单位
## 缺陷
1. 并不支持增删改等一些列操作
2. 只能针对固定行高的展示列表,对非固定行高的列表,
3. 固定列只支持左固定
## 样式兼容性
该组件样式主要使用flex布局,和fit-content,并无其他非常规css样式
## 使用
+ 安装组件
```
npm install vue-mobile-table --save
```
+ main.js中引入该组件
```js
import vueMobileTable from from 'vue-mobile-table'
Vue.use(vueMobileTable)
```
+ 使用
```html
```
示例视频demo
## props
| 属性 |类型 | 默认值| 含义 |
| ---- | ---- |----|---- |
| dataKey | String | '' | 每一行的key对应的property,目前并没有用处,不排除以后版本迭代后使用 |
| dataSource | Array | [] | 数据源 |
| itemHeight | Number | 60 | 每一行的高度,(会自动根据当前设备转为vw,可以按照标准设计图高度px进行设定) |
| defaultFixItemWidth | String |30vw| 默认固定列宽度,建议给固定列设置一个宽度,而不是使用该属性默认值 |
| requestData | Function | | 滚动加载时请求接口的函数,返回一个promise,参数按顺序为currentPage,pagesize,sortType,sortField |
| loadingComplete | Boolean |false| 请求数据后是否加载完,如果设置为true,后面的滚动到底部将不会触发requestData函数 |
| paddingConfig | Object |{LRPadding: 10}| LRPadding:默认头部和内容的两侧的padding大小 |
| borderConfig | Object |{ innerBorder: true,color: "#e8eaec",borderType: "solid",headerBorder: true,}| color:边框颜色,borderType:边框类类型,headerBorder:是否开启表头下边框 |
| sortableConfig | Object |{ iconSize: 5,color: "#ccc",activeColor: "#409eff"}| color:排序icon默认颜色,activeColor:排序icon激活颜色,iconSize:排序icon大小 |
## event
| 事件 |参数 | 含义 |
| ---- | ---- | ---- |
| sortChangeEvent | (sortType,sortField)|点击了表头字段,产生了排序事件,需要开启在table-column中开启sortable,sortType:排序的方式(asc,desc,'');sortField:排序的字段|
## slot
目前不支持插槽
table-column插槽使用同el-table
示例:
```html
{{row.age}}
```
## 附加 table-column插槽
### props
props: ['label', 'prop', 'width', "fixed", 'sortable', 'minWidth', 'align'];
其中label表示表头标题,prop为该列对应的字段属性名称,sortable为是否开启排序,align可选值为left,center,right。
基本使用与el-table中的el-table-column一致
## 未来规划
本组件为开发项目过程中所需创建,目前可定制化内容不是很多,很多默认内容是根据本项目ui设计图进行的默认配置。之后将加入更多客制化内容,开放更多插槽的定义以及可定制化props,更多的event,更多的内置方法。对于目前不支持的功能,如有需要,小伙伴可前往github clone源码后自行修改扩展。
## 建议
在项目中使用该组件,建议另外针对当前项目对该组件再次进行封装。目前该组件发布迭代较慢,表格样式并不是高度可定制化的,如果遇到不能定制化样式的时候,请使用 vue的深度选择器deep在项目中手动更改样式