表格中复制vue+elementui table

 /** 复制粘贴 */
     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('请选择粘贴位置')
      }
    },
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值