el-table 表头 自定义排序 因为有的行可能不需要排序。

我这个是把第一行 不加在排序里。去掉 不排序的行 在把数据进行排序。

这样会有一个问题,就是在分页 时  他就不自己排序了。所以 在拉取数据时在触发这个方法就行了,column 单独存一下。data里。

dom : 配置 sortable="custom"     

sortChange(column) {

let fieldName = column.prop

let sortingType = column.order

let tableData = this.tableData

let avgData = {} // 

tableData.map((item, index) => {

if (!index) {

avgData = item

}

})

if (sortingType == 'ascending') {

// 删除table中当页合计一行数据

tableData.forEach((item, index) => {

if (!index) {

tableData.splice(index, 1)

}

return item

})

//正序

tableData = tableData.sort((a, b) => {

if (typeof a[fieldName] == 'string') {

b[fieldName] = b[fieldName] || ''

return b[fieldName].localeCompare(a[fieldName])

} else if (typeof a[fieldName] == 'number') {

return b[fieldName] - a[fieldName]

}

})

tableData.unshift(avgData)

} else if (sortingType == 'descending') {

tableData.map((item, index) => {

if (!index) {

tableData.splice(index, 1)

}

return item

})

// 倒序

tableData = tableData.sort((a, b) => {

if (typeof a[fieldName] == 'string') {

a[fieldName] = a[fieldName] || ''

return a[fieldName].localeCompare(b[fieldName])

} else if (typeof a[fieldName] == 'number') {

return a[fieldName] - b[fieldName]

}

})

tableData.unshift(avgData)

} else {

this.$refs.tableRef[0].clearSort() // 清除排序

}

}

你可能感兴趣的:(vue,前端js,vue.js,elementui)