1、table组件右侧固定区域过长,导致滚动条右侧滚动不了的问题解决
.dialogEditor{
::v-deep .el-table__fixed, ::v-deep .el-table__fixed-right{
height: calc(100% - 9px) !important;
}
}
2、按钮点击后颜色不能恢复的问题
.el-button--primary {
color: #fff;
background-color: #ff6a6c !important;
border-color: #ff6a6c !important;
&:hover {
color: #fff;
background-color: #ff6a6c !important;
border-color: #ff6a6c !important;
opacity: 0.6;
}
&:active {
color: #fff;
background-color: #ff6a6c !important;
border-color: #ff6a6c !important;
opacity: 0.8;
}
}
3、更新table数据源后,滚动条会回到顶部的问题解决
this.savedScrollTop = this.$refs.draggableTable.$el.querySelector(
"div.el-table__body-wrapper"
).scrollTop;
this.tableData = [...arr];
setTimeout(() => {
this.$refs.draggableTable.$el.querySelector(
"div.el-table__body-wrapper"
).scrollTop = this.savedScrollTop;
}, 0);
4、table组件序号列拖拽排序
<el-table
height="calc(100vh - 280px)"
ref="draggableTable"
v-loading="loading"
:data="tableData"
style="width: 100%; margin-top: 15px"
border
stripe
highlight-current-row
>XXXXXXX</el-table>
import Sortable from "sortablejs";
mounted() {
// 初始化表格
this.loadData();
// 初始化可排序表格
this.initSortable();
},
initSortable() {
const el = this.$refs.draggableTable.$el.querySelector(
".el-table__body-wrapper tbody"
);
this.sortable = Sortable.create(el, {
handle: ".el-table__row td:nth-child(1)",
onEnd: this.onSortEnd,
});
},
/**
* 当拖拽结束时触发的回调函数
*
* @param newIndex 新的索引位置
* @param oldIndex 旧的索引位置
*/
onSortEnd({ newIndex, oldIndex }) {
this.savedScrollTop = this.$refs.draggableTable.$el.querySelector(
"div.el-table__body-wrapper"
).scrollTop;
//console.log("==============", this.savedScrollTop);
console.log(newIndex, oldIndex);
let arr = JSON.parse(JSON.stringify(this.tableData));
let sortArr = [];
let bool = true;
let max = Math.max(oldIndex, newIndex);
let min = Math.min(oldIndex, newIndex);
const movedItem = arr.splice(oldIndex, 1)[0];
arr.splice(newIndex, 0, movedItem);
this.$nextTick(() => {
this.tableData = [...arr];
})
},