此功能可以用于当有返回值为null的情况下自定义排序
1.html页面(sortable是原本排序必要参数)
<el-table :data="tableData" border style="width: 100%" @sort-change="changeTableSort">
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column>
<el-table-column
prop="recipeDate"
label="开具时间"
align="center"
min-width="50px"
sortable
show-overflow-tooltip
></el-table-column>
<el-table-column
prop="intervalAuditSales"
label="审方-销售时差"
align="center"
min-width="50px"
sortable
show-overflow-tooltip
></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="gotoDetail(scope.row)" icon="el-icon-view">查看详情</el-button>
</template>
</el-table-column>
</el-table>
2.js页面
methods: {
changeTableSort(column){
let that =this
//获取字段名称和排序类型
var fieldName = column.prop;
var sortingType = column.order;
//如果字段名称为“开具时间”(如:2020-5-11 18:36:36),将“开具时间”转换为时间戳,才能进行大小比较
if(fieldName=="recipeDate"){
this.tableData.map(item => {
if(item.recipeDate){
item.recipeDate = this.$moment(item.recipeDate).valueOf();
}
});
}
//这是"审方-销售时差"字段(如:6m36s),需要把这个时间转换为396s进行排序
if(fieldName=="intervalAuditSales"){
for(let item of this.tableData){
if(item.intervalAuditSales != '' && item.intervalAuditSales != undefined){
item.intervalAuditSales = that.againTransferTime(item.intervalAuditSales)
}
}
}
//按照降序排序
if(sortingType == "descending"){
this.tableData = this.tableData.sort((a, b) => b[fieldName] - a[fieldName]);
}
//按照升序排序
else{
this.tableData = this.tableData.sort((a, b) => a[fieldName] - b[fieldName]);
}
//如果字段名称为“开具时间”,将时间戳格式的“开具时间”再转换为时间格式
if(fieldName=="recipeDate"){
this.tableData.map(item => {
if(item.recipeDate){
item.recipeDate = this.$moment(item.recipeDate).format("YYYY-MM-DD HH:mm:ss");
}
});
}
//这是"审方-销售时差"字段(如:396s),需要把这个时间转换6m36s为进行渲染回去
if(fieldName=="intervalAuditSales"){
for(let item of this.tableData){
if(item.intervalAuditSales != '' && item.intervalAuditSales != undefined){
item.intervalAuditSales = that.transferTime(item.intervalAuditSales)
}
}
}
console.log(this.tableData);
},
againTransferTime(time){
let that = this;
let m = time.split('m')[0]
let sb = time.split('m')[1]
let s = sb.split('s')[0]
return ((Number(m*60)+Number(s))*1000)
}
}