layui.use(['element', 'laydate', 'form'], function () { var $ = layui.jquery; var form = layui.form; var laydate = layui.laydate; var build = $(".build-panel"); //初始化laydate实例 laydate.render({ elem: '#laydate' }); // 禁止选择网页文本 $(document).on('selectstart', '.layui-card', function(){ return false; }); // 移动操作 var downPosi, target = null, dragDom = null, timer = null; var areaPosi; $(document).on("mousedown", ".layui-form-item", function (e) { $this = $(this); timer = setTimeout(function () { downPosi = {'left': e.clientX - $this.offset().left, 'top': e.clientY - $this.offset().top + 10}; areaPosi = {'ltX': build.offset().left, 'ltY': build.offset().top, 'rbX': build.offset().left + build.width(), 'rbY': build.offset().top + build.height()}; target = $this; }, 200); }); $(document).on("mousemove", function (e) { if(dragDom == null && target != null){ dragDom = $("
"); dragDom.append(target.clone()); dragDom.addClass("drag-box"); dragDom.css("width", target.width()); $("body").append(dragDom); var buildItem = target.parent('.build-item'); if(buildItem.length > 0){ buildItem.remove(); } } if(dragDom != null){ dragDom.css("left", e.clientX - downPosi.left); dragDom.css("top", e.clientY - downPosi.top); } if(dragDom != null){ if(e.clientX > areaPosi.ltX && e.clientY > areaPosi.ltY && e.clientX < areaPosi.rbX && e.clientY < areaPosi.rbY){ build.addClass("active"); buildItemPosi(e.clientY); }else{ build.removeClass("active"); shellItem.remove(); } } }); $(document).on("mouseup", function (e) { if(dragDom != null){ if(build.hasClass("active")){ buildAdd(dragDom); } dragDom.remove(); dragDom = null; target = null; build.removeClass("active"); shellItem.remove(); } if(timer != null){ clearTimeout(timer); timer = null; } }); // 构建项位置 var shellItem = $(""); var buildItemPosi = function(clientY){ build.children('.build-item').each(function(key, val){ var $this = $(val); var ty = $this.offset().top; var by = $this.offset().top + $this.height(); if(clientY > ty && clientY < by ){ if(clientY < (ty + by) / 2){ $this.before(shellItem); }else{ $this.after(shellItem); } } }); shellItem.css('height', dragDom.height()); if($('#shell-item').length == 0){ build.append(shellItem); } }; // 加入构建面板 var buildAdd = function(dragDom){ var elem = dragDom.children(".layui-form-item").clone(); elem.children('div').children('div').remove(); elem.removeAttr('style'); elem.removeClass('drag-box'); var item = $(""); shellItem.after(item.append(elem)); form.render(); }; // 编辑构建项 var buildItem, index; build.on('click', '.edit', function(){ buildItem = $(this).parents('.build-item'); var elem = buildItem.children('.layui-form-item').clone(); elem.children('div').children('div').remove(); elem.find('.layui-upload-file').remove(); var box = $(""); var edit = $("").text(elem.prop('outerHTML')); box.append(edit).append(""); index = layer.open({ title: '编辑HTML', type: 1, skin: 'build-item-edit', //样式类名 shadeClose: true, //开启遮罩关闭 area: ['500px', '360px'], content: box.prop('outerHTML') }); }); // 更新HTML $(document).on('click', '.build-edit-btn', function(){ var val = $(this).parent().children('textarea').val(); buildItem.children('.layui-form-item').remove(); buildItem.append($(val)); form.render(); layer.close(index); }); // 删除构建项 build.on('click', '.remove', function(){ $(this).parents('.build-item').remove(); }); // 生成代码 $(document).on('click', '.build-generate', function(){ var genHtml = ''; build.find(".layui-form-item").each(function (key, val) { var item = $(val).clone(); item.children('div').children('div').remove(); item.find('.layui-upload-file').remove(); genHtml += item.prop('outerHTML') + "\n"; }); var box = $(""); var edit = $("").text(genHtml); box.append(edit); index = layer.open({ title: '复制HTML代码', type: 1, skin: 'build-item-edit', //样式类名 shadeClose: true, //开启遮罩关闭 area: ['500px', '360px'], content: box.prop('outerHTML') }); $('.build-edit').focus().select(); }); });