# QueryTable
# 完整示例1
- 列表column 使用作用域插槽 自定义
- 单项更新 查询列表并保留当前页
- 删除操作 查询列表并更新到第一页
- 点击查询 table的sort状态等 重置
- 点击重置 table的sort状态等 重置 & 表单值恢复初始化
- 支持表单栅格化布局 自动展开收起 (layout)
空
Copy
# 完整示例2
暂无数据
Copy
# option.serve
serve 是一个Promise, 所以开发者可以灵活处理入参与出参格式,该方法会传入 params(分页参数)、formValues(查询表单字段值), 返回 total、data
const serve = async ({ params, formValues }) => {
/* params -> { currentPage, pageSize } */
/* formValues -> 表单绑定值 */
const res = await request({ ...params, ...formValues })
return {
total: res.total,
data: res.data,
}
}
# columns
以element-ui 的table为例
<YForm v-model="formData">
<YQueryTable :serve="serve" :columns="columns" border></YQueryTable>
</YForm>
<script>
/* 列的属性 */
columns () {
return [
{ prop: 'name', label: '标题', width: '100px' }
{ prop: 'price', label: '价格', sortable: true },
{
label: '操作',
// 需要使用作用域插槽时,对应的jsx写法
render: ({ row, $index }) => (
<div>
<el-button type="primary" onClick={() => { console.log(row, $index) }} >编辑</el-button>
<el-button type="danger" >删除</el-button>
</div>
)
}
]
}
</script>
# slot
如果你不熟悉jsx写法,也可以使用slot,slot与ui库提供的写法完全一致,两者选其一即可
<YQueryTable
border
ref="YQueryTable"
:serve="serve"
>
<el-table-column prop="name" label="标题"></el-table-column>
<el-table-column prop="price" label="价格" sortable></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary" @click="handleClick(scope.row, scope.$index)">编辑</el-button>
<el-button type="danger" >删除</el-button>
</template>
</el-table-column>
</YQueryTable>
TIP
常见场景: 操作编辑、删除处理后,一般需要更新列表
- 手动调用列表更新当前页
this.$refs.YQueryTable.runServe()
- 手动调用列表更新到第一页
this.$refs.YQueryTable.runServe({ currentPage: 1 })
TIP
常见场景: 操作element-ui table的属性/方法 获取table 的 ref
- 通过在 YQueryTable 中 wrappedTableRef 回调获取
<YQueryTable border :serve="serve" :wrappedTableRef="setTableRef"></YQueryTable>
<script>
// 获取table ref属性
setTableRef (ref) {
this.$options.tableRef = ref
}
</script>
# Attributes
Copy
# FAQ
Q :
YQueryTable
组件被其他组件包裹(如el-card
)能支持吗?A : 已经支持了,但是这个支持在
0.1.35
之后的版本才实现,所以之前使用el-card
包裹会报错