/** 复制粘贴 */
pasteInfo(e) {
try {
e.preventDefault(); //阻止默认粘贴事件
e.stopPropagation(); //阻止事件冒泡
var data = null;
var clipboardData = e.clipboardData || window.clipboardData; // IE
if (!clipboardData) {
//chrome
clipboardData = e.originalEvent.clipboardData;
}
data = clipboardData.getData("Text"); //复制过来的内容
//首先对源头进行解析
if (data && !data.includes('\r\n')) { // 单独复制文本,不是复制单个单元格
data = data+'\r\n'
}
var rowStrArray = data.split("\r\n"); //拆成多行
let rows = [];
for (var i = 0; i < rowStrArray.length-1; i++) {
var row = [];
var tdStrArray = rowStrArray[i].split("\t"); //按列拆分
for (var j = 0; j < tdStrArray.length; j++) {
row.push(tdStrArray[j]);
}
rows.push(row);
}
let _tableData = []
let _tableFilter = []
this.xxHandle(this.tableHeader.tableConfig, _tableData, _tableFilter)
console.log(_tableData, '-------------_tableData')
console.log(rows, '-------------rows')
console.log(_tableFilter, '-------------_tableFilter')
let emptyObj = {}
_tableData.forEach(item => {
emptyObj[item] = undefined
})
for (var j = 0; j < rows.length; j++) {
if(this.rowIndex+j > this.tableData.length - 1){
break
}
let item = {}
item = JSON.parse(JSON.stringify(this.tableData[this.rowIndex+j]))
let num = 0
let numFlag = 0 //从哪一列开始粘贴:全部列都可以粘贴(即从第0列可以粘贴)
for (var key in emptyObj) {
// if (!rows[j][num]) {
// break
// }
// console.log('numFlag--', numFlag, 'this.columnIndex--', this.columnIndex, 'num-', num);
if (this.columnIndex <= numFlag) {
// 针对不能修改的列字段做处理,可以复制粘贴的列才做赋值。根据需求加下面的if判断
// 如果遇到不是输入框直接跳过
if(_tableFilter.some(it => it.prop == key && it.wenNes != 'text')) {
if(rows[j][num] !== undefined) item[key] = rows[j][num]
num = num + 1
} else {
// 如果遇到不是输入框 直接中断
break
}
}
numFlag = numFlag + 1
}
this.$set(this.tableData, this.rowIndex+j, item)
}
} catch(err) {
this.$message.error('请选择粘贴位置')
}
},
表格中复制vue+elementui table
最新推荐文章于 2024-07-02 14:10:04 发布