使用el-table排序,需要先在el-table中添加
@sort-change="handleSort"
然后在需要排序的字段上添加属性,为了方便使用属性名直接为后端数据库字段
sortable="memberCount"
排序回调函数中会获取列的属性,以及排序方式,代码如下,我这里直接拼接成需要的对象格式:
{
"排序字段1": "排序方式1",
"排序字段2": "排序方式2"
}
这里的排序字段也可以用"表名.属性名"的格式,具体看需求
handleSort({column, prop, order}) {
let sortType = ""
if (order === "ascending") {
sortType = "asc"
} else if (order == "descending") {
sortType = "desc"
} else {
sortType = ""
}
this.queryParams.orderBy[column.sortable] = sortType
this.getList()
}
后端使用实体类接收,添加一个Map属性
@ApiModelProperty("排序方式")
private Map<String, String> orderBy;
然后直接在mybatis中
ORDER BY
<if test="orderBy != null">
<foreach collection="orderBy" index="key" item="value" open="" close="" separator=",">
${key} ${value}
</foreach>
,
</if>
# 其他排序属性
因为el-table中只支持单列排序,所以如果要求多列排序时需要自定义排序icon,方法调用没有区别