为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript系列:会议室预订源码

标签:
JavaScript

会员卡、公司插件
引入jquery.bootstrap.modalFrame.js、
jquery.selection_fromProfileCompany.js、
jquery.selection_membershipCard.js

$("#company").modalFrame("init",function(modal()){
    $("company").data("val",modal());
})

$("#company").bind("click",function()){
    var modal = $("#company").data("val");
    $("#"+modal()).selection_fromProfile({
        condition:{ho_profile_where:{search:$("input[name=gname]").val()}},
        dataBack:function(data){$("input[name = gname]").val(data.gname)},
    })
}

会议室表格的建立

//加载表格
    function initTable() {
        if(intervalData=="interval"){
            jf_initLoad();
        }
        $.fn.jqGridFnRoomClassification = function(options) {
            //获取jquery对象
            var grid_selector =this;
            //默认参数
            var init = {
                url : "", //请求目标
                editInRow : true, //是否启用行内修改
                editurl : "/frontoffice/front/hoguest/procedure2",//编辑行请求目标
                editDate : {}, //修改的行数据
                editTable : "", //修改表
                editResult : false, //是否修改成功
                webTostored : "", //存储过程
                pager_selector : "", //翻页栏
                height : "600", //高度
                offset : 0, //宽度偏移量
                where : {}, //查询条件
                wherestring : {}, //查询条件集 
                rowNum : 20, //每页显示多少条数据
                rowList : [ '全部', 10, 20, 30 ], //选择每页显示多少条数据
                onShow : function() {}, //双击某行回调函数
            };
            //初始化参数
            var initDate = $.extend(init,options);
            jqGridCre(initDate, grid_selector);
        }
    }
//函数初始化
    function jf_initLoad() {
        $("#roomManagement").jqGridFnRoomClassification({})//执行jqgrid
        $("#roomManagement_room").attr("colspan","3").css("width","150px")//合并表头最左列
        $("#jqgh_roomManagement_room,#jqgh_roomManagement_s1").css("text-align","center")//设置字体位置居中
        $("#roomManagement_rmtype,#roomManagement_hsk_status").css("width","0px");//隐藏房型和类型表头列
        $(".ui-jqgrid-sortable").css("padding-top","2px").css("padding-bottom","2px")//设置表头每列属性
        $(".ui-jqgrid-hdiv").children().css("height","55px").css("vertical-align","middle")//设置表头属性
        $("#roomManagement").jqGrid('setFrozenColumns');//设置冻结列

        //添加本地数据
        for ( var i = 0; i <= roomData.length; i++){
            $("#roomManagement").jqGrid('addRowData', i + 1, roomData[i]);
        }

        //设置冻结列属性
        $("div.frozen-div.ui-state-default.ui-jqgrid-hdiv").css("overflow-y","hidden").css("height","55px");
        $(".frozen-bdiv.ui-jqgrid-bdiv").css("top","55px").css("opacity","1").css("z-index","9");
        $(".frozen-bdiv.ui-jqgrid-bdiv td").css("background","#fff")
    }

新建、编辑

//选中事件 新建
    function jf_selectable(){
        $( "tbody tr").selectable({ 
            distance: 10 ,//鼠标移动像素
            start: function(event,ui) {
                $("#roomManagement div:not(.previousDiv)").remove();//清除已选非已有事件
            },
            stop: function(event,ui){
                var formJson = sysname2json($("#ho_loseModal").serializeArray())
                for(var k in formJson){
                    $("#"+k).val("")
                }
                var selectedRoom=$.trim($("td.ui-selected").closest("tr").find("td:first").attr("title"))
                var selectedBegin=$("td.ui-selected:first").attr("class").split(" ")[1];
                var selectedEnd=$("td.ui-selected:last").attr("class").split(" ")[1];
                var selectedBeginDate=$("td.ui-selected:first").attr("class").split(" ")[0];
                var selectedEndDate=$("td.ui-selected:last").attr("class").split(" ")[0];
                $("#room").val(selectedRoom);
                $("#arr_t").val(selectedBegin);
                $("#exp_dep_t").val(selectedEnd);
                $("#arr_d").val(selectedBeginDate);
                $("#exp_dep_d").val(selectedEndDate);
                $("#rev_type").val("TEN");
                newOrEdit='';
                //加载模态
                $("#modal-wizard").modal({backdrop: 'static', keyboard: false},"show");
            },
        })
    }

拖拽

//拖拽放置事件
    function jf_drag(){
        $(".cloneDiv:not(.extendSpan)").mousedown(function(){
            //全局变量
            var arr_t_m_drag='';
            var exp_dep_t1_drag='';
            var dragWidth='';
            var dragGno='';
            var dragLeft='';
            var newRoom1='';
            $(this).draggable({
                start:function(event,ui){
                    dragWidth=$(this).closest("div").css("width").split("px")[0];
                    dragGno=$(this).closest("div").attr("data-room");
                    dragLeft=$(this).closest("div").css("left");
                    var previousDivStr=$(this).closest("div").attr("data-room");
                    $("#arr_d").val($("#startdate").val())  
                    $("#exp_dep_d").val($("#startdate").val())  
                    newOrEdit="编辑";
                    var str1 = "gno="+"'"+previousDivStr+"'";
                    var json1=jf_getData(str1);
                    global_gname=json1[0].gname
                    global_str4=json1[0].str4
                    global_sales=json1[0].sales
                    global_status=json1[0].status
                    global_rate=json1[0].rate
                    global_adults=json1[0].adults
                    global_rev_type=json1[0].rev_type
                    global_arr_t=json1[0].arr_t
                    global_exp_dep_t=json1[0].exp_dep_t
                    global_room=json1[0].room
                    global_arr_d=json1[0].arr_d
                    global_exp_dep_d=json1[0].exp_dep_d
                    $(this).removeClass("label-success").removeClass("label-info").css("background","#abbac3")//设置拖拽div背景颜色
                },
                drag: function( event, ui ){
                    //增加辅助阴影列事件
                    $(".shadow").removeClass("shadow")  
                    var passTr=Math.floor(parseInt(ui.position.top)/34);
                    var passTd=Math.floor(parseInt(ui.position.left-140)/80);
                    $("#roomManagement tr.jqgrow:eq("+passTr+")").find("[aria-describedby=roomManagement_eno]:eq("+passTd+")").addClass("shadow")
                },
                stop:function( event, ui ){
                    //日期差
                    jf_dateDiff();
                    //会议开始和结束时间
                    if(global_arr_t.length==4){
                        var arr_t_hour=global_arr_t.substr(0,1);
                        var arr_t_minuter=global_arr_t.substr(2,4);
                    }else{
                        var arr_t_hour=global_arr_t.substr(0,2);
                        var arr_t_minuter=global_arr_t.substr(3,5);
                    }
                    if(global_exp_dep_t.length==4){
                        var exp_dep_t_hour=global_exp_dep_t.substr(0,1);
                        var exp_dep_t_minuter=global_exp_dep_t.substr(2,4);
                    }else{
                        var exp_dep_t_hour=global_exp_dep_t.substr(0,2);
                        var exp_dep_t_minuter=global_exp_dep_t.substr(3,5);
                    }
                    //拖拽之后的会议室room和到左侧距离的确认
                    var newTop=$(this).css("top").replace(/[^0-9]/ig,""); 
                    var newTop1=parseInt(newTop/34)+1;
                    newRoom1=$.trim($("#"+newTop1).find("td:first").attr("title"))
                    var newLeft=$(this).css("left")
                    var newLeft1=newLeft.replace(/[^0-9]/ig,""); 
                    //会议开始时间的No.
                    var newLeftNo=parseInt((newLeft1-140)/80)+1;
                    var startData=$(".ui-jqgrid-labels").find("th").eq(newLeftNo).find("div").text();
                    global_arr_d1=startData.substr(0,8);
                    global_arr_t1=startData.substr(-5);

                    //时间差
                    var meetingroomLength=exp_dep_t_hour-arr_t_hour;
                    //       蓝条宽度                                         日期差                              时间差
                    var meetingroomTimeLength=time_end_arr*24+meetingroomLength;
                    //会议结束时间的No.
                    if(meetingroomTimeLength>0){
                        var newEndNo=newLeftNo+meetingroomTimeLength;
                    }else{
                        var newEndNo=newLeftNo+1;
                    }
                    var endData=$(".ui-jqgrid-labels").find("th").eq(newEndNo).find("div").text();
                    global_exp_dep_d1=endData.substr(0,8);
                    global_exp_dep_t1=endData.substr(-5);

                    var e={};
                    var d={};
                    e.gno=dragGno;
                    e.gname=global_gname;
                    e.str4=global_str4;
                    e.sales=global_sales;
                    e.room=newRoom1;
                    e.rev_type=global_rev_type
                    e.rate=global_rate;
                    e.adults=global_adults;
                    e.arr_d=global_arr_d1;
                    e.exp_dep_t=global_exp_dep_t1;
                    e.exp_dep_d=global_exp_dep_d1;
                    e.arr_t=global_arr_t1;
                    d.ho_guest=e;
                    $("#meetingStartDate").text(global_arr_d1)
                    $("#meetingEndDate").text(global_exp_dep_d1)
                    $("#meetingStartTime").text(global_arr_t1)
                    $("#meetingEndTime").text(global_exp_dep_t1)
                    $("#meetingRoomRe").text(newRoom1)
                    $("#modal-confirm").modal({backdrop: 'static', keyboard: false},"show");
                    $("#btnModalConfirm_drag").unbind("click");
                    $("#btnModalConfirm_drag").click(function(){
                        jf_meetingRoomSave(d);
                    })
                },  
            })  
        })
    }

延伸

//延伸事件
    function jf_extend(){
        var extendRoom_ext='';
        var extendWidth='';
        var extendGno='';
        var mouseX="";//原始鼠标位置
        var oriLeft="";
        var status="";//日期加减状态参数
        $(".shrinkSpan,.extendSpan").resizable({
            alsoResize: $(this).closest("div"),//同时重置指定的一个或多个元素的尺寸大小
            ghost: false,//半透明的辅助元素
            autoHide:true,
            grid: [ 80, 0 ],//设置调整x和y改变的像素
            handles: "e,w",//手柄
            helper: "resizable-helper",//代理元素样式
            start: function( event, ui ) {
                extendWidth=ui.size.width;
                mouseX = event.pageX;//获取鼠标的位置  
                $(".cloneDiv").unbind("click")
                oriWidth=$(this).closest("div").css("width").split("px")[0];
                extendGno=$(this).closest("div").attr("data-room");
                oriLeft=$(this).closest("div").css("left");
                newOrEdit="编辑";
                var str1 = "gno="+"'"+extendGno+"'";
                var json1=jf_getData(str1);
                global_gname=json1[0].gname
                global_str4=json1[0].str4
                global_status=json1[0].status
                global_room=json1[0].room   
                global_sales=json1[0].sales
                global_rate=json1[0].rate
                global_adults=json1[0].adults
                global_rev_type=json1[0].rev_type
                global_arr_d=json1[0].arr_d
                global_exp_dep_d=json1[0].exp_dep_d
                global_arr_t=json1[0].arr_t
                global_exp_dep_t=json1[0].exp_dep_t
            },
            resize: function( event, ui ) {
                var widthDiff=parseInt(ui.size.width)-extendWidth
                var mouseX1 = event.pageX;
                if($(this).hasClass("shrinkSpan")){
                    if(mouseX1>mouseX){//左边的向右拉
                        if($(this).closest("div").css("width").length>4){
                            $("[data-room="+extendGno+"]").css("left",parseInt(oriLeft)+parseInt(ui.size.width)+"px")
                            $("[data-room="+extendGno+"]").css("width",(parseInt(oriWidth)-parseInt(ui.size.width))+"px");//改变事件宽度
                            status="increase"
                        }
                    }else{//左边的向左拉
                        $("[data-room="+extendGno+"]").css("left",parseInt(oriLeft)-parseInt(ui.size.width)+"px");
                        $("[data-room="+extendGno+"]").css("width",(parseInt(oriWidth)+parseInt(ui.size.width))+"px");//改变事件宽度
                        status="reduce"
                    }
                }else{
                    if(mouseX1>mouseX){//右边的向右拉
                        $(this).closest("div").css("width",(parseInt(oriWidth)+parseInt(ui.size.width))+"px");//改变事件宽度
                        status="increase"
                    }else{//右边的向左拉
                        $("[data-room="+extendGno+"]").css("width",(parseInt(oriWidth)-parseInt(ui.size.width))+"px");//改变事件宽度
                        status="reduce"
                    }
                }
            },
            stop: function( event, ui ) {
                //日期差
                jf_dateDiff();
                //截取会议开始时间时针部分、分针部分
                if(global_arr_t.length==4){
                    arr_t_ext1=global_arr_t.substr(0,1)
                    var arr_t_ext_minuter=global_arr_t.substr(2,4)
                }else{
                    arr_t_ext1=global_arr_t.substr(0,2)
                    var arr_t_ext_minuter=global_arr_t.substr(3,5)
                }
                //会议结束时间时针部分
                if(global_exp_dep_t.length==4){
                    global_exp_dep_t1=global_exp_dep_t.substr(0,1)
                    var exp_ext_minuter=global_exp_dep_t.substr(2,4)
                }else{
                    global_exp_dep_t1=global_exp_dep_t.substr(0,2)
                    var exp_ext_minuter=global_exp_dep_t.substr(3,5)
                }
                //蓝条原本的时间差
                widthDiff1=parseInt(global_exp_dep_t1)-parseInt(arr_t_ext1)
                //蓝条原本的分针差
                var widthDiff3=parseInt(arr_t_ext_minuter)-parseInt(exp_ext_minuter)
                //拉拽的格数
                var widthDiff2=(ui.size.width-ui.originalSize.width)/80;
                if($(this).hasClass("shrinkSpan")){//向左拉伸   
                    if(status=="reduce"){//左边左拉伸确认arr日期和时间
                        //            日期的格数差距                  开始时间的格数差距                   拖拽的距离
                        var newLeftNo=time_arr_now*24+parseInt(arr_t_ext1)-widthDiff2+1;
                        var headerDate=$(".ui-jqgrid-labels").find("th").eq(newLeftNo).find("div").text();
                        global_arr_d=headerDate.substr(0,8);
                        global_arr_t=headerDate.substr(-5);
                    }else if(status=="increase"){//左边右拉伸确认arr日期和时间
                        //            日期的格数差距                  开始时间的格数差距                   拖拽的距离
                        var newLeftNo=time_arr_now*24+parseInt(arr_t_ext1)+widthDiff2+1;
                        if(newLeftNo<=(parseInt(global_exp_dep_t.substr(0,2))+time_end_now)){
                            var headerDate=$(".ui-jqgrid-labels").find("th").eq(newLeftNo).find("div").text();
                            global_arr_d=headerDate.substr(0,8);
                            global_arr_t=headerDate.substr(-5);
                        }else{
                            var headerDate=$(".ui-jqgrid-labels").find("th").eq((parseInt(global_exp_dep_t.substr(0,2))+time_end_now)).find("div").text();
                            global_arr_d=headerDate.substr(0,8);
                            global_arr_t=headerDate.substr(-5);
                        }
                }else{//向右拉伸
                    $(this).css("width",parseInt(ui.size.width)/10).css("float","right")//设置延伸框属性
                    if(status=="increase"){//右边右拉伸确认dep_t日期和时间
                        //            日期的格数差距        开始时间的格数差距                          蓝条原本的时间差                     拖拽的距离
                        var newLeftNo=time_arr_now+parseInt(arr_t_ext1)+parseInt(widthDiff1)+widthDiff2+1;
                        var headerDate=$(".ui-jqgrid-labels").find("th").eq(newLeftNo).find("div").text();
                        global_exp_dep_d=headerDate.substr(0,8);
                        global_exp_dep_t=headerDate.substr(-5);   
                    }else{//右边左拉
                        //            日期的格数差距        开始时间的格数差距                          蓝条原本的时间差                     拖拽的距离
                        var newLeftNo=time_arr_now+parseInt(arr_t_ext1)+parseInt(widthDiff1)-widthDiff2+1;
                        if(parseInt(arr_t_ext1)+time_arr_now<newLeftNo){
                            var headerDate=$(".ui-jqgrid-labels").find("th").eq(newLeftNo).find("div").text();
                            global_exp_dep_d=headerDate.substr(0,8);
                            global_exp_dep_t=headerDate.substr(-5);
                        }else{
                            var headerDate=$(".ui-jqgrid-labels").find("th").eq(parseInt(arr_t_ext1)+time_arr_now+2).find("div").text();
                            global_exp_dep_d=headerDate.substr(0,8);
                            global_exp_dep_t=headerDate.substr(-5);
                        }
                    }    
                }
                var e={};
                var d={};
                e.gno=extendGno;
                e.gname=global_gname;
                e.str4=global_str4;
                e.rev_type=global_rev_type;
                e.sales=global_sales;
                e.room=global_room;
                e.rate=global_rate;
                e.adults=global_adults;
                e.arr_d=global_arr_d;
                e.exp_dep_t=global_exp_dep_t;
                e.exp_dep_d=global_exp_dep_d;
                e.arr_t=global_arr_t;
                d.ho_guest=e;   
                $("#meetingStartDate").text(global_arr_d)
                $("#meetingEndDate").text(global_exp_dep_d)
                $("#meetingStartTime").text(global_arr_t)
                $("#meetingEndTime").text(global_exp_dep_t)
                $("#meetingRoomRe").text(global_room)
                //加载模态
                $("#modal-confirm").modal({backdrop: 'static', keyboard: false},"show");
                $("#btnModalConfirm_drag").unbind("click");
                $("#btnModalConfirm_drag").click(function(){
                    jf_meetingRoomSave(d);
                })
            },
        })
    }

代码源码
=>w_event_gantt.jsp

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消