define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { var imgsettimer = 0 ; var nametimer = 0; var bgtimer = 0 ; var qrtimer = 0 ; var Controller = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'poster/index' + location.search, add_url: 'poster/add', edit_url: 'poster/edit', del_url: 'poster/del', multi_url: 'poster/multi', table: 'poster', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'weigh', commonSearch: false, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id')}, {field: 'title', title: __('Title')}, {field: 'bg_image', title: __('Bg_image'), events: Table.api.events.image, formatter: Table.api.formatter.image}, {field: 'status', title: __('Status'), searchList: {"normal":__('Normal'),"hidden":__('Hidden')}, formatter: Table.api.formatter.status}, {field: 'weigh', title: __('Weigh')}, {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime}, {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime}, { field: 'datalist', title: __('Operate'), table: table,operate:false, buttons: [ { name: 'content', text: __('Posterrecord'), extend: 'data-area=\'["1024px", "678px"]\'', classname: 'btn btn-xs btn-success btn-dialog', icon: 'fa fa-list-ul', url: 'poster/posterrecord/ids/{ids}' } ], formatter: Table.api.formatter.buttons }, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} ] ] }); // 为表格绑定事件 Table.api.bindevent(table); table.on('post-body.bs.table', function () { $(".btn-editone").data("area", ["1024px", "678px"]); }); }, posterrecord: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'poster/posterrecord' + location.search + '&ids=' + Config.ids, table: 'poster', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', commonSearch: false, columns: [ [ {field: 'id', title: __('Id')}, {field: 'user.nickname', title: __('Nickname')}, {field: 'image', title: __('Image'), events: Controller.api.events.image, formatter: Controller.api.image}, {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime}, {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime}, ] ] }); // 为表格绑定事件 Table.api.bindevent(table); $('.btn-clear').click(function(){ var url = $(this).data('url'); Fast.api.ajax({ url: url, }, function (data, ret) { table.bootstrapTable('refresh', {}); }, function (data, ret) { }); }); }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); }, api: { bindevent: function () { $("form[role=form]").data("validator-options", {ignore: ':hidden'}); //表单提交事件绑定 Form.api.bindevent($("form[role=form]"), function (data, ret) {}, function (data, ret) {}, function (success, error) { var data = []; $('.drag').each(function () { var obj = $(this); var type = obj.attr('type'); var left = obj.css('left'), top = obj.css('top'); var d = { left: left, top: top, type: obj.attr('type'), width: obj.css('width'), height: obj.css('height') }; if (type == 'nickname') { d.size = obj.attr('size'); d.color = obj.attr('color'); } else if (type == 'qr') { d.size = obj.attr('size'); d.qr_table = obj.attr('qr_table'); d.qr_field = obj.attr('qr_field'); d.qr_relation = obj.attr('qr_relation'); } else if (type == 'img') { d.src = Fast.api.cdnurl(obj.attr('src')); } data.push(d); }); $(':input[name="row[data]"]').val(JSON.stringify(data)); }); //图片地址变化 $('#c-bg_image').on('change', function () { $('.bg').remove(); $('#poster').prepend(""); }); $('#c-img').on('change', function () { $('.drag').each(function () { if ($(this).attr("type") == 'img') { $(this).find('img').attr('src', Fast.api.cdnurl($('#c-img').val())); } }); }); // 移除图片事件 $(document.body).on("click", "#p-bg_image .btn-trash", function () { $('.bg').attr('src', ''); }); $(document.body).on("click", "#p-img .btn-trash", function () { $('.drag').each(function () { if ($(this).attr("type") == 'img') { $(this).attr('src', ''); $(this).find('img').attr('src', '/assets/addons/poster/images/img.jpg'); } }); }); require(['designer'], function () { //添加元素 $('.btn-com').click(function(){ var imgset = $('#imgset'), nameset = $("#nameset"),qrset = $('#qrset'); imgset.hide(),nameset.hide(),qrset.hide(); Controller.api.clearTimers(); var type = $(this).data('type'); $('.drag').each(function () { if ($(this).attr("type") == type) { type = false; } }); if(type == false){ Layer.msg('请不要重复添加'); }else{ var img = ""; if(type=='qr'){ img = ''; } else if(type=='head'){ img = ''; } else if(type=='img' || type=='thumb'){ img = ''; } else if(type=='nickname'){ img = '
昵称
'; } var index = $('#poster .drag').length + 1; var obj = $('
' + img+'
'); $('#poster').append(obj); Controller.api.bindEvents(obj); } }); $('.drag').each(function () { Controller.api.bindEvents($(this)); Controller.api.bind($(this)); }); }); //颜色 Controller.api.color(); //选择二维码数据表 $(document).on('change', "select[name='qr_table']", function () { var that = this; Fast.api.ajax({ url: "poster/get_field_list", data: {table: $(that).val()}, }, function (data, ret) { mainfields = data.fieldlist; renderselect($("#c-qr_field"), mainfields, 'qr_field');//渲染数据 renderselect($("#c-qr_relation"), mainfields, 'qr_relation');//渲染数据 return false; }); return false; }); var renderselect = function (select, data, field_type) { var html = []; html.push(""); for (var i = 0; i < data.length; i++) { html.push(""); } select.html(html.join("")); select.trigger("change"); if (select.data("selectpicker")) { $('.drag').each(function () { var type = $(this).attr('type'); if(type == 'qr'){ if(field_type == 'qr_field'){ var qr_field = $(this).attr('qr_field') || ""; select.selectpicker('val',qr_field).trigger("change").trigger("validate");; } else { var qr_relation = $(this).attr('qr_relation') || ""; select.selectpicker('val',qr_relation).trigger("change").trigger("validate");; } } }); select.selectpicker('refresh').trigger("change"); } return select; }; $("select[name='qr_table']").trigger("change"); }, bindEvents: function (obj) { var index = obj.attr('index'); var rs = new Resize(obj, { Max: true, mxContainer: "#poster" }); rs.Set($(".rRightDown",obj), "right-down"); rs.Set($(".rLeftDown",obj), "left-down"); rs.Set($(".rRightUp",obj), "right-up"); rs.Set($(".rLeftUp",obj), "left-up"); rs.Set($(".rRight",obj), "right"); rs.Set($(".rLeft",obj), "left"); rs.Set($(".rUp",obj), "up"); rs.Set($(".rDown",obj), "down"); rs.Scale = true; var type = obj.attr('type'); if(type=='nickname' || type=='img' || type=='title' || type=='marketprice' || type=='productprice'){ rs.Scale = false; } new Drag(obj, { Limit: true, mxContainer: "#poster" }); $('.drag .remove').unbind('click').click(function(){ $(this).parent().remove(); }) require(['jquery.contextMenu'],function(){ $.contextMenu({ selector: '.drag[index=' + index + ']', callback: function(key, options) { var index = parseInt($(this).attr('zindex')); if(key=='next'){ var nextdiv = $(this).next('.drag'); if(nextdiv.length>0 ){ nextdiv.insertBefore($(this)); } } else if(key=='prev'){ var prevdiv = $(this).prev('.drag'); if(prevdiv.length>0 ){ $(this).insertBefore(prevdiv); } } else if(key=='last'){ var len = $('.drag').length; if(index >=len-1){ return; } var last = $('#poster .drag:last'); if(last.length>0){ $(this).insertAfter(last); } }else if(key=='first'){ var index = $(this).index(); if(index<=1){ return; } var first = $('#poster .drag:first'); if(first.length>0){ $(this).insertBefore(first); } }else if(key=='delete'){ $(this).remove(); } var n =1 ; $('.drag').each(function(){ $(this).css("z-index",n); n++; }) }, items: { "last": {name: "调整到最顶层"}, "first": {name: "调整到最低层"}, "delete": {name: "删除元素"} } }); obj.unbind('click').click(function () { Controller.api.bind($(this)); }); }); }, color: function () { var refreshStyle = function () { var style = []; if ($(".btn-color").hasClass("active")) { style.push($(".btn-color").data("color")); } $("#c-color").val(style.join("|")); }; if ($(".btn-color").hasClass("active")) { style.push($(".btn-color").data("color")); } require(['jquery-colorpicker'], function () { $('.colorpicker').colorpicker({ color: function () { var color = "#000000"; var rgb = $("#c-color").css('color').match(/^rgb\(((\d+),\s*(\d+),\s*(\d+))\)$/); if (rgb) { color = rgb[1]; } return color; } }, function (event, obj) { $("#c-color").css('color', '#' + obj.hex); $(event).addClass("active").data("color", '#' + obj.hex); refreshStyle(); }, function (event) { $("#c-color").css('color', 'inherit'); $(event).removeClass("active"); refreshStyle(); }); }); }, bind: function (obj) { var imgset = $('.imgset'), nameset = $(".nameset"),qrset = $('.qrset'); imgset.hide(),nameset.hide(),qrset.hide(); Controller.api.clearTimers(); var type = obj.attr('type'); //图片 if(type=='img'){ imgset.show(); var src = obj.attr('src'); var input = imgset.find('#c-img'); if(typeof(src)!='undefined' && src!=''){ input.val(src).trigger("change").trigger("validate"); } imgsettimer = setInterval(function(){ if(input.val()!=src && input.val()!=''){ var url = input.val(); obj.attr('src',Fast.api.cdnurl(input.val())); } },50); //昵称 } else if(type=='nickname'){ nameset.show(); var color = obj.attr('color') || "#000"; var size = obj.attr('size') || "16"; var input = nameset.find('input:first'); var namesize = nameset.find('#namesize'); var picker = nameset.find('.sp-preview-inner'); input.val(color); namesize.val(size.replace("px","")); picker.css( {'background-color':color,'font-size':size}); nametimer = setInterval(function(){ obj.attr('color',input.val()).find('.text').css('color',input.val()); obj.attr('size',namesize.val() +"px").find('.text').css('font-size',namesize.val() +"px"); },50); //二维码 } else if(type=='qr'){ qrset.show(); //得到属性上的值 var qr_table = obj.attr('qr_table') || ""; var qr_field = obj.attr('qr_field') || ""; var qr_relation = obj.attr('qr_relation') || ""; //表单 var qrtable = qrset.find("select[name='qr_table']"); var qrfield = qrset.find("#c-qr_field"); var qrrelation = qrset.find("#c-qr_relation"); //编辑的时候吧属性值设置到编辑框 if(typeof(qr_table)!='undefined' && qr_table!=''){ qrtable.val(qr_table).trigger("change").trigger("validate"); } if(typeof(qr_relation)!='undefined' && qr_relation!=''){ qrrelation.val(qr_relation).trigger("change").trigger("validate"); } //修改内容的时候设置attr qrtimer = setInterval(function(){ if(qrtable.val()!=qr_table && qrtable.val()!='' && qrtable.val() != 'null' && qrtable.val() != null){ obj.attr('qr_table',qrtable.val()); } if(qrfield.val()!=qr_field && qrfield.val()!='' && qrfield.val() != 'null' && qrfield.val() != null){ obj.attr('qr_field',qrfield.val()); } if(qrrelation.val()!=qr_relation && qrrelation.val()!='' && qrrelation.val() != 'null' && qrrelation.val() != null){ obj.attr('qr_relation',qrrelation.val()); } },50); } }, clearTimers: function () { clearInterval(imgsettimer); clearInterval(nametimer); clearInterval(bgtimer); clearInterval(qrtimer); }, image: function (value, row, index) { value = value ? value : '/assets/img/blank.gif'; var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center'; return ''; }, events: { //单元格图片预览 image: { 'click .img-center': function (e, value, row, index) { var data = []; value = value.toString().split(","); $.each(value, function (index, value) { data.push({ src: value, }); }); Layer.photos({ photos: { "start": $(this).parent().index(), "data": data }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数) }); }, } }, } }; return Controller; });