Table 重封装组件说明
====
封装说明
----
> 基础的使用方式与 API 与 [官方版(Table)](https://vuecomponent.github.io/ant-design-vue/components/table-cn/) 本一致,在其基础上,封装了加载数据的方法。
>
> 你无需在你是用表格的页面进行分页逻辑处理,仅需向 Table 组件传递绑定 `:data="Promise"` 对象即可
该 `table` 由 [@Saraka](https://github.com/saraka-tsukai) 完成封装
由 `小诺技术团队` 完成Vue3升级并二次封装改进
例子1
----
(基础使用)
```vue
<template>
<s-table
ref="table"
:rowKey="(record) => record.data.id"
:columns="columns"
:data="loadData"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
>
</s-table>
</template>
<script>
import STable from '@/components'
export default {
components: {
STable,
},
data() {
return {
columns: [
{
title: '规则编号',
dataIndex: 'no',
},
{
title: '描述',
dataIndex: 'description',
},
{
title: '服务调用次数',
dataIndex: 'callNo',
sorter: true,
needTotal: true,
customRender: text => `${text } 次`,
},
{
title: '状态',
dataIndex: 'status',
needTotal: true,
},
{
title: '更新时间',
dataIndex: 'updatedAt',
sorter: true,
},
],
// 查询条件参数
queryParam: {},
// 加载数据方法 必须为 Promise 对象
loadData: (parameter) => {
return this.$http.get('/service', {
params: Object.assign(parameter, this.queryParam),
}).then((res) => {
return res.result
})
},
selectedRowKeys: [],
selectedRows: [],
}
},
methods: {
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
},
}
</script>
```
例子2
----
(简单的表格,最后一列是各种操作)
```vue
<template>
<s-table
ref="table"
:columns="columns"
:data="loadData"
>
<span slot="action" slot-scope="text, record">
<a>编辑</a>
<a-divider type="vertical"/>
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;">1st menu item</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;">2nd menu item</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;">3rd menu item</a>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</s-table>
</template>
<script>
import STable from '@/components/table/'
export default {
components: {
STable,
},
data() {
return {
columns: [
{
title: '规则编号',
dataIndex: 'no',
},
{
title: '描述',
dataIndex: 'description',
},
{
title: '服务调用次数',
dataIndex: 'callNo',
},
{
title: '状态',
dataIndex: 'status',
},
{
title: '更新时间',
dataIndex: 'updatedAt',
},
{
table: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
},
],
// 查询条件参数
queryParam: {},
// 加载数据方法 必须为 Promise 对象
loadData: (parameter) => {
return this.$http.get('/service', {
params: Object.assign(parameter, this.queryParam),
}).then((res) => {
return res.result
})
},
}
},
methods: {
edit(row) {
// axios 发送数据到后端 修改数据成功后
// 调用 refresh() 重新加载列表数据
// 这里 setTimeout 模拟发起请求的网络延迟..
setTimeout(() => {
this.$refs.table.refresh() // refresh() 不传参默认值 false 不刷新到分页第一页
}, 1500)
},
},
}
</script>
```
内置方法
----
通过 `this.$refs.table` 调用
`this.$refs.table.refresh(true)` 刷新列表 (用户新增/修改数据后,重载列表数据)
> 注意:要调用 `refresh(bool)` 需要给表格组件设定 `ref` 值
>
> `refresh()` 方法可以传一个 `bool` 值,当有传值 或值为 `true` 时,则刷新时会强制刷新到第一页(常用户页面 搜索 按钮进行搜索时,结果从第一页开始分页)
内置属性
----
> 除去 `a-table` 自带属性外,还而外提供了一些额外属性属性
| 属性 | 说明 | 类型 | 默认值 |
| -------------- | ----------------------------------------------- | ----------------- | ------ |
| alert | 设置是否显示表格信息栏 | [object, boolean] | null |
| showPagination | 显示分页选择器,可传 'auto' \| boolean | [string, boolean] | 'auto' |
| data | 加载数据方法 必须为 `Promise` 对象 **必须绑定** | Promise | - |
`alert` 属性对象:
```javascript
alert: {
show: Boolean,
clear: [Function, Boolean]
}
```
注意事项
----
> 你可能需要为了与后端提供的接口返回结果一致而去修改以下代码:
> (需要注意的是,这里的修改是全局性的,意味着整个项目所有使用该 table 组件都需要遵守这个返回结果定义的字段。)
>
> 文档中的结构有可能由于组件 bug 进行修正而改动。实际修改请以当时最新版本为准
修改 `@/components/table/index.js` 第 156 行起
```javascript
result.then(r => {
this.localPagination = this.showPagination && Object.assign({}, this.localPagination, {
current: r.pageNo, // 返回结果中的当前分页数
total: r.totalCount, // 返回结果中的总记录数
showSizeChanger: this.showSizeChanger,
pageSize: (pagination && pagination.pageSize) ||
this.localPagination.pageSize
}) || false
// 为防止删除数据后导致页面当前页面数据长度为 0 ,自动翻页到上一页
if (r.data.length === 0 && this.showPagination && this.localPagination.current > 1) {
this.localPagination.current--
this.loadData()
return
}
// 这里用于判断接口是否有返回 r.totalCount 且 this.showPagination = true 且 pageNo 和 pageSize 存在 且 totalCount 小于等于 pageNo * pageSize 的大小
// 当情况满足时,表示数据不满足分页大小,关闭 table 分页功能
try {
if ((['auto', true].includes(this.showPagination) && r.totalCount <= (r.pageNo * this.localPagination.pageSize))) {
this.localPagination.hideOnSinglePage = true
}
} catch (e) {
this.localPagination = false
}
console.log('loadData -> this.localPagination', this.localPagination)
this.localDataSource = r.data // 返回结果中的数组数据
this.localLoading = false
})
```
返回 JSON 例子:
```json
{
"message": "",
"result": {
"data": [{
id: 1,
cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
title: 'Alipay',
description: '那是一种内在的东西, 他们到达不了,也无法触及的',
status: 1,
updatedAt: '2018-07-26 00:00:00'
},
{
id: 2,
cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
title: 'Angular',
description: '希望是一个好东西,也许是最好的,好东西是不�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
国内首个国密前后分离快速开发平台,采用Vue3+AntDesignVue3 + Vite+SpringBoot+Mp+HuTool+SaToken。集成国密加解密插件,在前后分离框架中,实现前后分离“密”不可分;同时实现国产化机型、中间件、数据库适配,是您的不二之选;最后官网提供工作流、多租户、多数据源、Vue3表单设计器等丰富插件灵活使用。
资源推荐
资源详情
资源评论
收起资源包目录
国内首个国密前后端分离快速开发平台 (1258个子文件)
index.vue.btl 11KB
form.vue.btl 9KB
ServiceImpl.java.btl 6KB
Controller.java.btl 5KB
Service.java.btl 3KB
PageParam.java.btl 2KB
Entity.java.btl 2KB
EditParam.java.btl 2KB
AddParam.java.btl 2KB
IdParam.java.btl 1KB
Oracle.sql.btl 1KB
Mysql.sql.btl 1KB
Mapper.java.btl 1KB
Enum.java.btl 1KB
Api.js.btl 864B
Mapper.xml.btl 252B
skin.css 71KB
skin.css 71KB
skin.min.css 60KB
skin.min.css 60KB
skin.mobile.css 24KB
skin.mobile.css 24KB
content.css 24KB
content.inline.css 24KB
content.inline.css 24KB
content.css 23KB
content.min.css 21KB
content.inline.min.css 21KB
content.inline.min.css 21KB
content.min.css 21KB
skin.mobile.min.css 21KB
skin.mobile.min.css 21KB
iconfont.css 11KB
iconfont.css 2KB
content.css 2KB
content.css 2KB
content.css 2KB
content.css 2KB
content.min.css 1KB
content.min.css 1KB
content.min.css 1KB
content.min.css 1KB
tailwind.css 1KB
skin.shadowdom.css 866B
skin.shadowdom.css 866B
skin.shadowdom.min.css 764B
skin.shadowdom.min.css 764B
content.mobile.css 727B
content.mobile.css 727B
content.mobile.min.css 544B
content.mobile.min.css 544B
.env.development 198B
userExportTemplate.docx 16KB
userExportTemplate.docx 16KB
.editorconfig 186B
.gitignore 299B
.gitignore 296B
index.html 2KB
favicon.ico 4KB
kingbase8-8.6.0.jar 1006KB
DmJdbcDriver18.jar 907KB
SysUserServiceImpl.java 78KB
BizUserServiceImpl.java 37KB
GenBasicServiceImpl.java 35KB
SysRoleServiceImpl.java 31KB
StpClientUtil.java 28KB
GlobalConfigure.java 25KB
MobileMenuServiceImpl.java 24KB
BizOrgServiceImpl.java 21KB
SysMenuServiceImpl.java 21KB
AuthServiceImpl.java 20KB
SysOrgServiceImpl.java 19KB
DevFileTencentUtil.java 18KB
DevFileAliyunUtil.java 16KB
DevFileMinIoUtil.java 16KB
AuthSessionServiceImpl.java 14KB
BizPositionServiceImpl.java 13KB
SysUserController.java 13KB
DevFileLocalUtil.java 12KB
DevJobServiceImpl.java 12KB
DevMessageServiceImpl.java 12KB
DevFileServiceImpl.java 11KB
SysUser.java 11KB
BizUser.java 11KB
ClientUserServiceImpl.java 11KB
SysPositionServiceImpl.java 11KB
SysUserService.java 11KB
SysUserCenterController.java 11KB
BizUserController.java 11KB
BizUserExportResult.java 10KB
SysUserExportResult.java 10KB
DevEmailServiceImpl.java 10KB
DevDictServiceImpl.java 10KB
SysRoleController.java 10KB
DevEmailTencentUtil.java 10KB
AuthThirdServiceImpl.java 10KB
DevLogServiceImpl.java 10KB
SysButtonServiceImpl.java 10KB
DevFileController.java 10KB
ClientRelationServiceImpl.java 9KB
共 1258 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7361
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功