@select="pinSelect" ref="multipleTable"
origin: -1, // 起点数
pin: false, // 默认shift不按住
mounted () {
window.addEventListener('keydown', code => { // 这个是获取键盘按住事件
console.log(code) // 这个是你按住键盘打印出键盘信息,在浏览器中自行查看
if (code.keyCode === 16 && code.shiftKey) { // 判断是否按住shift键,是就把pin赋值为true
this.pin = true
}
})
window.addEventListener('keyup', code => { // 这个是获取键盘松开事件
if (code.keyCode === 16) { // 判断是否松开shift键,是就把pin赋值为false
this.pin = false
}
})
},
let dataList = data.data.records || []
if (dataList.length > 0) {
dataList.forEach((item, index) => { // 遍历索引,赋值给data数据
item.index = index
})
}
this.dataList = dataList
pinSelect (item, index) {
const data = this.$refs.multipleTable.tableData // 获取所有数据
const origin = this.origin // 起点数 从-1开始
const endIdx = index.index // 终点数
if (this.pin && item.includes(data[origin])) { // 判断按住
const sum = Math.abs(origin - endIdx) + 1// 这里记录终点
const min = Math.min(origin, endIdx)// 这里记录起点
let i = 0
while (i < sum) {
const index = min + i
this.$refs.multipleTable.toggleRowSelection(data[index], true)// 通过ref打点调用toggleRowSelection方法,第二个必须为true
i++
}
} else {
this.origin = index.index // 没按住记录起点
}
},