JS绘制表格

function submitHandler() {
        var cabType = $("#cabType").val();
        if ($.validate.form()) {
            debugger;

            //检查箱子总数是否一致,列数和箱子数
            var boxs = $('#boxNum').val();		//箱子整数
            var cols = $('#columnNum').val(); 	//列数
            if (parseInt(cols) > parseInt(boxs)) {
                $.modal.alertWarning('列数不能大于箱子数');
                $('#columnNum').focus();
                return false;
            }

            var p_boxs = 0;			//配置的箱子数
            $("#oneCabinetBox").find('.colinputSpan input').each(function () {
                p_boxs += parseInt($(this).val());
            });
            if (boxs != p_boxs) {
                $.modal.alertWarning('请确保箱子总数一致');
                //alert('请确保箱子总数一致');
                return false;
            }


            var allTypeStr = $("#allTypeStr").val();
            if (allTypeStr == 'ischange') {
                allTypeStr = '';
                //拼装所有箱型
                $("#oneCabinetBox").find('.divCols').each(function () {

                    var col = $(this).attr('id');
                    col = col.substring(4, col.length);

                    if (cabType == '2') {
                        $(this).find('.divBox').each(function () {
                            allTypeStr += col + ',';
                            allTypeStr += $(this).find('.divBoxid').text() + ',';
                            allTypeStr += $(this).find('.divBoxType').text() + ',';
                            allTypeStr += (($(this).find("input[type='checkbox']").is(':checked')) ? '1' : '0') + ';';
                        });
                    } else {
                        $(this).find('.divBox').each(function () {
                            allTypeStr += col + ',';
                            allTypeStr += $(this).find('.divBoxid').text() + ',';
                            allTypeStr += $(this).find('.divBoxType').text() + ';';
                        });
                    }

                });

                $("#allTypeStr").val(allTypeStr);
            } else {
                $("#allTypeStr").val('');
                $.modal.alertWarning('请配置箱子');
                //alert('请配置箱子');
                return false;
            }

            //设置柜子使用类型cab_type
            var usetypeId = $("#usetypeId  option:selected").val();
            if (usetypeId == '2' || usetypeId == '3') {
                $("#cabType").val('2');
            } else {
                $("#cabType").val('1');
            }

            $.operate.saveTab(prefix + "/add", $('#form-cabinetType-add').serialize());
        }
    }


    //选择柜子使用类型,区分塔式柜横向柜和普通柜
    function selectUseType() {
        var cabType = $("#cabType").val();
        //设置柜子使用类型cab_type
        var usetypeId = $("#usetypeId  option:selected").val();
        if (usetypeId == '2' || usetypeId == '3') {
            if (cabType != '2') {
                $("#cabType").val('2');
                //重置箱型选择框
                setBoxTypeSelect('2');
            }
        } else {
            if (cabType != '1') {
                $("#cabType").val('1');
                //重置箱型选择框
                setBoxTypeSelect('1');
            }
        }
    }


    //初始化箱型
    $(document).ready(function () {
        setBoxTypeSelect($("#cabType").val());
    });

    //选择柜子使用类型,区分塔式柜横向柜和普通柜
    function setBoxTypeSelect(cabType) {
        $.ajax({
            type: "POST",
            url: ctx + "site/boxType/list?cabType=" + cabType,
            async: true,
            success: function (data) {
                $("#all_boxtype option").remove();
                $.each(data.rows, function (n, boxType) {
                    var option = '<option value=' + '"' + boxType.sizeHeight + '">' + boxType.fullname + '</option>';
                    if (boxType.fullname != '控制箱') {
                        $("#all_boxtype").append(option);
                    }
                });
            }

        });
    }


    //配置箱子,生成箱子的布局。
    function createBox() {
        var cabType = $("#cabType").val();
        if ($.validate.form()) {

            $("#allTypeStr").val('ischange'); //新增柜型时,生成布局时即认为已改变

            var cols = $('#columnNum').val(); 	//列数
            var boxs = $('#boxNum').val();		//箱子整数
            var col_box = parseInt(boxs / cols);	//每列的箱子数
            if (col_box < 1) {
                $.modal.alertWarning('列数不能大于箱子数');
                //$('#columnNum').focus().text('');
                return false;
            }

            var cabinet = $('#oneCabinetBox'); 	//整个柜子
            var cabinetBody = $('#oneCabinetBody'); 	//整个柜子的箱子主体
            var col_div = cabinet.find('#col_1');			//第一列DIV
            var boxid_div = cabinet.find('#boxid_1');		//一个箱子DIV
            var colinput_div = cabinet.find('#colinput_1');		//每一列的头部输入框DIV
            var col_input = cabinet.find('#colNumInput_1');//每一列的头部输入框

            var all_boxtype = $('#all_boxtype').clone();		//箱型select
            //all_boxtype.removeClass("form-control");
            var boxtype = $("#all_boxtype  option:selected").text();
            var boxHeight = $("#all_boxtype  option:selected").val();

            cabinet.html('');		//置空柜子
            cabinet.css("width", (160 * cols + 2) + "px");	//柜子宽度

            cabinetBody.css("width", (160 * cols + 2) + "px");	//柜子宽度
            cabinetBody.html('');

            var boxid = 1;
            //遍历列 创建每一列的箱子
            for (var i = 1; i <= cols; i++) {
                var a_col = col_div.clone();
                a_col.attr('id', 'col_' + i);
                a_col.html('');

                //每一列的头部输入框
                var a_colinput_div = colinput_div.clone();
                a_colinput_div.attr('id', 'colinput_' + i);
                var a_col_input = col_input.clone();
                a_col_input.attr('id', 'colNumInput_' + i);
                a_col_input.val(col_box);
                a_col_input.attr('onchange', "inputColNum(" + i + ")");
                var colinputSpan = a_colinput_div.find('.colinputSpan');
                colinputSpan.html('');
                colinputSpan.append('第' + i + '列箱数').append(a_col_input);
                a_col.append(a_colinput_div);

                for (var j = 1; j <= col_box; j++) {	//创建每一列的箱子
                    var a_box = boxid_div.clone();
                    a_box.attr('id', 'boxid_' + boxid);
                    a_box.css("height", (boxHeight * 4 + 0) + "px");	//箱子高度

                    if (cabType == '2') {	//托盘柜的箱号:列号+该列的箱号 01003
                        var cab_boxid = i * 1000 + j;
                        if (cab_boxid < 10000) {
                            cab_boxid = '0' + cab_boxid;
                        }
                        a_box.find('.divBoxid').text(cab_boxid);
                        a_box.find('.divBoxType').text(boxtype);
                        a_box.find('.divBoxType').attr('onclick', "selectBoxType('" + boxid + "')");
                        //存托箱:提供绑定托盘复选框
                        if (boxtype == '存托箱') {
                            var checkTp = '<span><input name="checkTp" class="checkTp" type="checkbox" title="带托盘?"></span>';
                            a_box.find('.divBoxType').after(checkTp);
                        } else {
                            a_box.find('.checkTp').remove();//删除已经加的复选框
                        }
                    } else {
                        a_box.find('.divBoxid').text(boxid);
                        a_box.find('.divBoxType').text(boxtype);
                        a_box.attr('onclick', "selectBoxType(" + boxid + ")");
                        a_box.find('.checkTp').remove();	//删除已经加的复选框
                    }

                    a_col.append(a_box);
                    boxid++;
                }

                cabinetBody.append(a_col);
            }

            cabinet.append(cabinetBody);

            /*
            //a_box.attr('onclick', "selectBoxType("+boxid+")");
            cabinet.find('.divBox').each(function(){
                $(this).bind("click",function(){
                    var one_boxtype = all_boxtype; 	//箱型列表
                    one_boxtype.removeClass("form-control");

                    var tempid = $(this).find('.divBoxid').text();
                    one_boxtype.attr('id', "boxSelect_"+tempid);
                    one_boxtype.attr('onchange', "selectOneBoxType("+tempid+")");

                    //one_boxtype.click();
                    //$('#boxid_'+boxid).append(one_boxtype);
                    $(this).append(one_boxtype);


                });
              });
        */
        }
    }


    //输入某一列的 箱子个数 col:第几列
    function inputColNum(col) {
        var cabType = $("#cabType").val();
        debugger;
        var col_num = $('#colNumInput_' + col).val();		//该列调整后的箱子数
        if (forcheck(col_num) == false) {
            return false;
        }

        //调整箱子布局
        var cols = $('#columnNum').val(); 	//列数
        var boxs = $('#boxNum').val();		//箱子整数

        var cabinet = $('#oneCabinetBox'); 	//整个柜子
        var col_div = cabinet.find('#col_1');			//第一列DIV
        var boxid_div = cabinet.find('#boxid_1');		//一个箱子DIV
        var colinput_div = cabinet.find('#colinput_1');		//每一列的头部输入框DIV
        var col_input = cabinet.find('#colNumInput_1');//每一列的头部输入框

        var all_boxtype = $('#all_boxtype').clone();		//箱型select
        //all_boxtype.removeClass("form-control");
        var boxtype = $("#all_boxtype  option:selected").text();
        var boxHeight = $("#all_boxtype  option:selected").val();


        var boxid = 1;
        var newDivId = 1;
        //调整输入列,及后面列的箱子
        //如果增加了箱子,就在本列后追加相应的箱子,后面的列,箱号往后排
        //如果减少了箱子,就在本列后删除相应的箱子,后面的列,箱号往前排
        var mod_col = cabinet.find('#col_' + col);		//修改的列
        var mod_col_divBox = mod_col.find('.divBox');
        var mod_col_boxs = mod_col_divBox.length;	//修改前 该列的箱子数
        var add_box_num = col_num - mod_col_boxs;
        var bd_num = add_box_num;
        if (add_box_num > 0) {		//增加箱子
            boxid = mod_col_divBox.last().find('.divBoxid').text();
            boxid = parseInt(boxid) + 1;
            var tempBoxId = mod_col_divBox.last().attr('id');
            newDivId = parseInt(tempBoxId.substring(6, tempBoxId.length)) + 1;

            for (var j = 1; j <= add_box_num; j++) {	//创建列的箱子
                var a_box = boxid_div.clone();
                a_box.css("height", (boxHeight * 4 + 0) + "px");	//箱子高度

                if (cabType == '2') {	//托盘柜的箱号:列号+该列的箱号 01003
                    var cab_boxid = boxid;
                    if (cab_boxid < 10000) {
                        cab_boxid = '0' + cab_boxid;
                    }
                    a_box.attr('id', 'boxid_' + boxid);
                    a_box.find('.divBoxid').text(cab_boxid);
                    a_box.find('.divBoxType').text(boxtype);
                    a_box.find('.divBoxType').attr('onclick', "selectBoxType('" + boxid + "')");
                    //存托箱:提供绑定托盘复选框
                    if (boxtype == '存托箱') {
                        var checkTp = '<span><input name="checkTp" class="checkTp" type="checkbox" title="带托盘?"></span>';
                        a_box.find('.divBoxType').after(checkTp);
                    }
                } else {
                    a_box.attr('id', 'boxid_' + newDivId);
                    a_box.find('.divBoxid').text(boxid);
                    a_box.find('.divBoxType').text(boxtype);
                    a_box.attr('onclick', "selectBoxType(" + newDivId + ")");
                }

                mod_col.append(a_box);
                boxid++;
                newDivId++;
            }
        } else {		//减少箱子
            bd_num = mod_col_boxs - col_num;
            for (var i = 1; i <= bd_num; i++) {
                mod_col.find('.divBox').last().remove();
            }

        }

        if (cabType != '2') {		//托盘柜 不用变更其他列。
            //修改列  后面列的处理
            for (var i = (col + 1); i <= cols; i++) {
                var col_temp = cabinet.find('#col_' + i);
                col_temp.find('.divBox').each(function () {
                    //如果是控制箱,箱号为空,不变。
                    if ($(this).find('.divBoxid').text() != '') {
                        var newboxid = parseInt($(this).find('.divBoxid').text()) + add_box_num;
                        $(this).find('.divBoxid').text(newboxid);
                    }

                    var tempBoxId = $(this).attr('id');
                    var newDivId = parseInt(tempBoxId.substring(6, tempBoxId.length)) + add_box_num;
                    $(this).attr('id', 'boxid_' + newDivId);
                    $(this).attr('onclick', "selectBoxType(" + newDivId + ")");
                });
            }
        }

    }


    //选择箱型
    function selectBoxType(boxid) {
        //$.modal.open("选择箱型", ctx + "site/boxType/radio");
        var a_box = $('#boxid_' + boxid);
        $("#idSelect").val(a_box.find('.divBoxid').text());
        //var tempBoxId = a_box.attr('id');
        //var newDivId = parseInt(tempBoxId.substring(6,tempBoxId.length));
        $("#seqidSelect").val(boxid);
        $("#nameSelect").val(a_box.find('.divBoxType').text());

        var url = ctx + "site/boxType/radio?cabType=" + $("#cabType").val();
        var options = {
            title: '选择箱型',
            height: "500",
            url: url,
            callBack: doSubmitBoxType
        };
        $.modal.openOptions(options);

    }


    function doSubmitBoxType(index, layero) {

        var body = layer.getChildFrame('body', index);//绑定父子之间的关系,用于数据传递,缺少则无法传递

        var boxid = $("#idSelect").val();
        var newDivId = $("#seqidSelect").val();
        var typeNameOld = $("#nameSelect").val();

        var table = body.find('#bootstrap-table');
        var tr = table.find('tr.selected');

        var boxHeight = parseInt(tr.find('td:eq(5)').html());
        var boxtype = tr.find('td:eq(2)').html();

        //debugger;
        //箱型改变
        if (boxtype != typeNameOld) {
            var a_box = $('#boxid_' + newDivId);
            a_box.find('.divBoxType').text(boxtype);
            a_box.css("height", (boxHeight * 4 + 0) + "px");	//箱子高度
            $("#allTypeStr").val('ischange');

            //如果是托盘柜  调整存托箱的托盘复选框
            var cabType = $("#cabType").val();
            if (cabType == '2') {	//托盘柜
                if (typeNameOld == '存托箱') {
                    a_box.find('.checkTp').remove();
                }
                //存托箱:提供绑定托盘复选框
                if (boxtype == '存托箱') {
                    var checkTp = '<span><input name="checkTp" class="checkTp" type="checkbox" title="带托盘?"></span>';
                    a_box.find('.divBoxType').after(checkTp);
                }
            } else {
                //普通柜:对控制箱的处理  控制箱不占箱号  箱号为空

                //删除控制箱
                if (typeNameOld == '控制箱') {
                    //该箱子及后面的箱子箱号全部 +1
                    //首选定位该箱子的箱号,找该箱子前面一个的箱号,没找到箱号就为1
                    var newBoxid = 1;

                    var cabinet = $('#oneCabinetBox'); 	//整个柜子
                    //变更所有箱号
                    cabinet.find('.divCols').each(function () {	//所有列

                        $(this).find('.divBox').each(function () {	//所有箱子
                            var tempBoxId = $(this).attr('id');
                            var tempDivId = parseInt(tempBoxId.substring(6, tempBoxId.length));
                            if (tempDivId <= parseInt(newDivId)) {
                                var oldBoxid = $(this).find('.divBoxid').text();
                                if (oldBoxid != '') {
                                    newBoxid = parseInt(oldBoxid);
                                }
                            } else {
                                //后面的箱号全部 +1
                                var oldBoxid = $(this).find('.divBoxid').text();
                                if (oldBoxid != '') {
                                    $(this).find('.divBoxid').text(parseInt(oldBoxid) + 1);
                                }
                            }

                        });
                    });
                    a_box.find('.divBoxid').text(newBoxid);	//重置该箱子箱号
                }

                //选择一个控制箱
                if (boxtype == '控制箱') {
                    //该箱子箱号为空,后面的箱子箱号全部往前移 -1
                    a_box.find('.divBoxid').text('');	//箱号为空
                    var cabinet = $('#oneCabinetBox'); 	//整个柜子
                    //变更所有箱号
                    cabinet.find('.divCols').each(function () {	//所有列

                        $(this).find('.divBox').each(function () {	//所有箱子
                            var oldBoxid = $(this).find('.divBoxid').text();
                            if (oldBoxid != '' && parseInt(oldBoxid) > parseInt(boxid)) {
                                $(this).find('.divBoxid').text(parseInt(oldBoxid) - 1);
                            }
                        });

                    });

                }
            }

        }

        layer.close(index);
    }


    function forcheck(ss) {
        var type = "^[0-9]*[1-9][0-9]*$";
        var re = new RegExp(type);
        if (ss.match(re) == null) {
            $.modal.alertWarning('请输入大于零的整数!');
            //alert( "请输入大于零的整数!");
            return false;
        }
        return true;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值