ElementUI Table组件 自定义排序相关

sort-method

<el-table :data="tableData" :header-cell-style="rowStyle" :cell-style="rowStyle" border style="width: 100%">
	<!-- sortable还可写成:sortable=true -->
	<el-table-column prop="courseShowDate" label="日期" sortable :sort-method="compare"></el-table-column>
</el-table>
// methods{
// 入参是两个对象,可通过console.log打印查看
compare(obj1, obj2) {
	// 我这里需要让日期升降序,所以这样写
    let o1 = obj1.courseShowDate;
    let o2 = obj2.courseShowDate;
    if (o1 === "Monday") o1 = 1;
    if (o2 === "Monday") o2 = 1;
    if (o1 === "Tuesday") o1 = 2;
    if (o2 === "Tuesday") o2 = 2;
    if (o1 === "Wednesday") o1 = 3;
    if (o2 === "Wednesday") o2 = 3;
    if (o1 === "Thursday") o1 = 4;
    if (o2 === "Thursday") o2 = 4;
    if (o1 === "Friday") o1 = 5;
    if (o2 === "Friday") o2 = 5;
    if (o1 === "Saturday") o1 = 6;
    if (o2 === "Saturday") o2 = 6;
    if (o1 === "Sunday") o1 = 7;
    if (o2 === "Sunday") o2 = 7;
    // 这里和Java的sort一样
    return o1 - o2;
}

sort-change

<!-- @sort-change="onSortChange" -->
<el-table :data="tableData" :header-cell-style="rowStyle" :cell-style="rowStyle" border @sort-change="onSortChange" style="width: 100%">
	<!-- sortable="custom" :sort-orders="['ascending','descending']"-->
	<el-table-column prop="courseShowDate" label="日期" sortable="custom" :sort-orders="['ascending','descending']"></el-table-column>
</el-table>
/**
* 表格排序事件处理函数
* @param {object} {column,prop,order} 列数据|排序字段|排序方式
*/
onSortChange({ prop, order }) {
this.tableData.sort(this.compare(prop, order));
},
/**
* 排序比较
* @param {string} courseShowDate 排序的属性名
* @param {string} sort ascending(升序)/descending(降序)
* @return {function}
*/
compare (courseShowDate, sort) {
    return function (obj1, obj2) {
        let o1 = obj1[courseShowDate];
        let o2 = obj2[courseShowDate];
        if (o1 === "Monday") o1 = 1;
        if (o2 === "Monday") o2 = 1;
        if (o1 === "Tuesday") o1 = 2;
        if (o2 === "Tuesday") o2 = 2;
        if (o1 === "Wednesday") o1 = 3;
        if (o2 === "Wednesday") o2 = 3;
        if (o1 === "Thursday") o1 = 4;
        if (o2 === "Thursday") o2 = 4;
        if (o1 === "Friday") o1 = 5;
        if (o2 === "Friday") o2 = 5;
        if (o1 === "Saturday") o1 = 6;
        if (o2 === "Saturday") o2 = 6;
        if (o1 === "Sunday") o1 = 7;
        if (o2 === "Sunday") o2 = 7;
        if (o1 <= o2) {
        	return sort === 'ascending' ? -1 : 1
        } else if (o1 > o2) {
    		return sort === 'ascending' ? 1 : -1
    	}
    }
}

参考:

  1. 官方文档
  2. 夜无明月-element-ui中表格自定义排序

ねぇ,あなたは何色になりたい