Table 重封装组件说明
====
封装说明
----
> 基础的使用方式与 API 与 [官方版(Table)](https://vuecomponent.github.io/ant-design-vue/components/table-cn/) 本一致,在其基础上,封装了加载数据的方法。
>
> 你无需在你是用表格的页面进行分页逻辑处理,仅需向 Table 组件传递绑定 `:data="Promise"` 对象即可
该 `table` 由 [@Saraka](https://github.com/saraka-tsukai) 完成封装
例子1
----
(基础使用)
```vue
<template>
<s-table
ref="table"
size="default"
: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"
size="default"
: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:/
没有合适的资源?快使用搜索试试~ 我知道了~
像专业人士一样使用 Ant Design Vue!(vue2).zip
共264个文件
js:99个
vue:95个
less:16个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 69 浏览量
2024-12-01
10:33:20
上传
评论
收藏 447KB ZIP 举报
温馨提示
English |简体中文Ant Design Vue 专业版作为 Vue 样板,为企业应用程序提供开箱即用的 UI 解决方案。基于 Vue 的 Ant Design 预览https://preview.pro.antdv.com主页 https: //pro.antdv.com文档https://pro.antdv.com/docs/getting-started更新日志https://pro.antdv.com/docs/changelog常见问题解答 https: //pro.antdv.com/docs/faqVue3 Pro布局https://github.com/vueComponent/pro-layout概述环境和依赖节点纱webpackeslint@vue/cliant-design-vue@1.x - Vue 的 Ant 设计vue-cropper - 图片编辑@antv/g2-蚂蚁V G2Viser-vue - Vue 的 Antv/G2注意 建议使用Yarn包管理,与本项目演示站点加载的版本完全相同(yar
资源推荐
资源详情
资源评论
收起资源包目录
像专业人士一样使用 Ant Design Vue!(vue2).zip (264个子文件)
.browserslistrc 34B
commit-msg 81B
nginx.conf 641B
caddy.conf 92B
.env.development 67B
Dockerfile 138B
.editorconfig 659B
.env 67B
.gitattributes 381B
.gitignore 232B
.gitignore 2B
index.html 2KB
avatar2.jpg 78KB
other.js 29KB
user.js 21KB
router.config.js 13KB
index.js 10KB
tagCloud.js 6KB
generator-routers.js 6KB
manage.js 6KB
icons.js 5KB
vue.config.js 4KB
settings.js 4KB
basicForm.js 4KB
plugin.config.js 3KB
settings.js 3KB
basicForm.js 3KB
Dialog.js 3KB
.stylelintrc.js 3KB
article.js 3KB
permission.js 3KB
user.js 3KB
user.js 3KB
user.js 2KB
util.js 2KB
app.js 2KB
screenLog.js 2KB
themePluginConfig.js 2KB
lazy_use.js 2KB
static-router.js 2KB
analysis.js 2KB
analysis.js 2KB
request.js 2KB
menu.js 2KB
menu.js 2KB
.eslintrc.js 2KB
index.js 2KB
auth.js 2KB
permission.js 1KB
bootstrap.js 1KB
login.js 1KB
setting.js 1KB
setting.js 1KB
index.js 1KB
action.js 1KB
manage.js 1KB
main.js 1KB
success.js 1KB
defaultSettings.js 1KB
settingConfig.js 1KB
success.js 1KB
util.js 1007B
commitlint.config.js 999B
util.js 960B
en-US.js 874B
themeColor.js 872B
zh-CN.js 838B
index.js 806B
index.js 799B
app-mixin.js 790B
async-router.js 785B
index.js 754B
use.js 741B
mutation-types.js 716B
routeConvert.js 703B
babel.config.js 670B
index.js 600B
axios.js 597B
fail.js 575B
domUtil.js 563B
filter.js 560B
jest.config.js 512B
fail.js 512B
getters.js 506B
icons.js 344B
index.js 258B
i18n-mixin.js 256B
device-mixin.js 168B
index.js 146B
index.js 136B
global.js 127B
result.js 122B
result.js 122B
global.js 116B
index.js 96B
index.js 89B
dashboard.js 82B
dashboard.js 82B
account.js 80B
form.js 80B
共 264 条
- 1
- 2
- 3
资源评论
赵闪闪168
- 粉丝: 1646
- 资源: 4872
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功