当你是通过获取选中行进行回填数据并计算时,你就会发现表头这个全选按钮是获取不到选中行的,所以它就不会再进行计算,虽然不会影响结算功能,但会影响到回填数据的计算。
如图所示:如果我一个个选中的话,他是能够计算的,但我点击了全选按钮它并没有帮我再计算(这里的数量应该是2才对的)。
所以,为了解决这个bug,我在这个按钮外层的div加了点击事件在表格的回调里,这样可以让它点击后获取的表格页面上的全部数据,给它加个条件判断这个全选按钮是否勾上,勾上就获取全部的数据,不勾反之。
tabTitles = layuiTable.render({
elem: '#tabTitles',
url: '/DayWorkManagement/FormerSell/selectTitlesInfor',
where: { CommID: "", Discount: 0, VipID: 0 },
cols: [[
{ type: 'numbers', title: '序号', rowspan: 2, unresize: true, width: 50},
{ type: 'checkbox', rowspan: 2 },
{ field: 'CommID', title: '商品ID', hide: true, rowspan: 2 },
{ field: 'MarMenyer', title:'吊牌价',width: 80, align: 'center', rowspan: 2 },
{ title: '数量', align: 'center', colspan: 2 },
{ field: 'MarketMeny',title:'销售价',width: 80, align: 'center',rowspan:2 },
], [{ field: 'StockAmount', title: '库存数量',width: 90, align: 'center'},
{ field: 'buynumber',title:'购买数量',width:90,align:'center',edit: true },
]],
//数据渲染完的回调
done: function (res) {
SPcache = res.data;//获取到商品表页面的所有数据
$("[lay-id='tabTitles']").find("[data-field='1']").find("div").eq(0).click(function (data) {
SPhaschecked = $("[lay-id='tabTitles']").find("[data-field='1']")
.eq(0).find("div").eq(1).hasClass("layui-form-checked");//选中的条件
if (SPhaschecked == true) {
console.log(SPhaschecked);
//进入循环前让它的数据都为0
var shoujia = 0;
var yuanjia = 0;
var shuliang = 0;
for (var i = 0; i < SPcache.length; i++) {
shuliang += parseInt(SPcache[i].buynumber);
yuanjia += SPcache[i].MarMenyer * SPcache[i].buynumber;
shoujia += SPcache[i].MarketMeny * SPcache[i].buynumber;
$("#shoujia").val("售价:" + shoujia);
$("#yuanjiashuliang").val("数量:" + shuliang + " / " + "原价:" + yuanjia);
}
}
else {
shuliang = 0;
yuanjia = 0;
shoujia = 0;
$("#shoujia").val("售价:" + shoujia);
$("#yuanjiashuliang").val("数量:" + shuliang + " / " + "原价:" + yuanjia);
}
})
},
});