效果图

1.表格html部分
<el-table v-loading="loading" element-loading-text="加载数据中" :data="tableData" border //状态筛选 @filter-change="handleFilterChange" //分数和时间筛选 @sort-change="changeTableSort" :row-class-name="addRowClass" //全选 @selection-change="handleSelectionChange" > //此处放一部分 //分数 <el-table-column prop="score" :resizable="false" label="分数" sortable="custom" min-width="8%"> </el-table-column> //状态 <el-table-column prop="status_name" column-key="status_name" label="状态" min-width="10%" :resizable="false" :filter-multiple="false" :filters="[ { text: '待审核', value: '10' }, { text: '已通过', value: '20' }, // { text: '草稿箱', value: '50' }, { text: '已驳回', value: '30' }, { text: '已下架', value: '40' } ]" filter-placement="bottom-end"> <template slot-scope="scope"> <el-tag :type="scope.row.status_name == '待审核' ? 'primary' : ''" :class="'aritcleState' + scope.row.status" disable-transitions >{{ scope.row.status_name }} </el-tag> </template> </el-table-column> //时间 <el-table-column prop="create_time" :resizable="false" label="提交时间" sortable="custom" min-width="11%"> <template slot-scope="scope"> <span>{{ scope.row.create_time }}</span> </template> </el-table-column> </el-table>
2.dom
//状态筛选 handleFilterChange(value) { //判断筛选的字段 if (value.is_first) { let firstVal = value.is_first.join(","); this.firstStat = firstVal; //请求 this.pageLoadList(); } } //时间和分数筛选 changeTableSort({ column, prop, order }) { let sortSign = ""; let updataSign = ""; let sortArr = []; let updataArr = []; //分数 if (prop == "score") { //降序 if (order == "descending") { scoreSign = "DESC"; scoreArr = { score: scoreSign }; this.sortArrData = JSON.stringify(scoreArr); } else { //升序 scoreSign = "ASC"; scoreArr = { score: scoreSign }; this.sortArrData = JSON.stringify(scoreArr); } //请求 this.pageLoadList(); } else if (prop == "create_time") { //时间 if (order == "descending") { sortSign = "DESC"; sortArr = { create_time: sortSign }; this.sortArrData = JSON.stringify(sortArr); } else { sortSign = "ASC"; sortArr = { create_time: sortSign }; this.sortArrData = JSON.stringify(sortArr); } this.pageLoadList(); } }