微信小程序实现单元格编辑功能,并支持计算合计

最近有个客户想做下单系统,要求像电脑端一样 ,实现在多维的录入功能,客户主要是人事鞋批发的,要求颜色、尺码对应订购数量,可以计算横向和纵向合计,话不多说,直接上代码。

效果如下:

微信小程序实现单元格编辑功能,并支持计算合计_第1张图片

如上图,除了第一行和最后一行,第一列和最后一列,其它列都是可以输入的,且输入后自动计算合计。

WXML代码如下:


  
    
      {{item}}
    
    
      
        
          {{item}}
        
        
          
        
      
    
  

WSS代码如下:

.table {
  border: 0px solid darkgray;
  font-size: 12px;
}

.tr {
  display: flex;
  width: 2700rpx;
  align-items: center;
}

.td {
  width: 150rpx;
  height: 2rem;
  justify-content: center;
  text-align: center;
  flex: flex;
  align-items: center;
  word-wrap: break-word;
  flex-shrink: 0;
  line-height: 2rem;
  border: 1rpx solid #fff000;
}

.gray {
  background: #e6fe3f;
}

.newInput {
  line-height: 2rem;
  height: 2rem;
  width: 100%;
}

 

JS代码如下:

// pages/user/UserInfo.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    tables: [
      ['颜色|尺码', '红色', '绿色', '蓝色', '合计'],
      ['35', '', '', '', ''],
      ['36', '', '', '', ''],
      ['37', '', '', '', ''],
      ['38', '', '', '', ''],
      ['39', '', '', '', ''],
      ['合计', '', '', '', ''],
    ]
  },
  calSum(e) {
    var id = e.target.dataset.id;
    var idd = e.target.dataset.idd;
    var value = e.detail.value;


    let ta = this.data.tables;
    ta[idd][id] = value;
    var sum = new Array(ta[0].length - 1);

    for (let i = 1; i < ta.length - 1; i++) {
      var len = 0;

      for (let j = 1; j < ta[i].length - 1; j++) {
        if (i == 1) {//第一行时先初始化为0
          sum[j] = 0;
        }
        if (ta[i][j] != '') {
          //累加单元格值
          len += parseInt(ta[i][j]);
          //累加第i列合计
          sum[j] += parseInt(ta[i][j]);
        } else {
          sum[j] += 0;
        }
      }
      console.log(len);
      ta[i][ta[i].length - 1] = len;
      if (i == 1) {
        sum[ta[i].length - 1] = 0;
      }

      sum[ta[i].length - 1] += len;
    }

    for (let i = 1; i < sum.length; i++) {
      ta[ta.length - 1][i] = sum[i];
    }

    this.setData({
      tables: ta
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})

参考:https://blog.csdn.net/kormondor/article/details/76922167

非常感谢!

希望可以帮到大家!

你可能感兴趣的:(小程序,小程序)