244 lines
10 KiB
JavaScript
244 lines
10 KiB
JavaScript
//应用JS后期语法框架
|
||
(function($){
|
||
|
||
//内部初始化入口
|
||
var applan = function(){
|
||
var $self = this,
|
||
strArr = $self.aparr();
|
||
//计算选中广告位个数
|
||
$self.addnum(strArr);
|
||
|
||
//提交处理
|
||
$(document).on('submit', '.add_ap_list form', function(event) {
|
||
event.preventDefault(); //阻止默认提交
|
||
})
|
||
|
||
//修改form提交方式
|
||
$(document).on('click', '.add_ap_list form button[type="submit"]', function(event) {
|
||
event.preventDefault(); //阻止默认提交
|
||
var $form = $(this).parents('form');
|
||
//手动触发全部验证
|
||
// $form.data('formValidation').resetForm();
|
||
$form.data('formValidation').validate({debug:true});
|
||
//查看验证结果,若为false 则阻止
|
||
var flag = $form.data("formValidation").isValid();
|
||
//验证时间是否合法
|
||
if(flag != false){
|
||
//执行入库操作,返回ID
|
||
$self.laaajx($form.attr('action'),$self.formdata($form));
|
||
}
|
||
//修改表格按钮禁止操作
|
||
// $(this).attr("disabled",true);
|
||
});
|
||
|
||
//解决被禁用前选中的,点击取消后则不能再勾选
|
||
$('table tbody').on('click', '.ap-one-disabled', function(event) {
|
||
$(this).removeClass('ap-one-disabled');
|
||
$(this).find('input').attr("disabled",true);
|
||
})
|
||
// $(document).on('change',"[data-table-search]",function(){
|
||
// return false;
|
||
// })
|
||
|
||
//全选
|
||
$(document).on('click','.ap-all input',function(){
|
||
var idArr = [];
|
||
//选中值
|
||
var table = $(this).parents('table').find('tbody');
|
||
table.find('.ap-one').each(function(index,element){
|
||
var oneid = $(this).find('input[name="id"]').val(),
|
||
disabled = $(this).find('input[name="id"]').prop('disabled');
|
||
if(APPFUN.isEmpty(disabled)) idArr.push(oneid);
|
||
})
|
||
this.checked === true?$self.addap(idArr):$self.apdelall(idArr);
|
||
});
|
||
|
||
//必须定位到 table tbody on方法才生效
|
||
$('table tbody').on('click','.ap-one input',function(){
|
||
var idStr = $(this).val();
|
||
this.checked === true?$self.addap(idStr):$self.delap(idStr);
|
||
});
|
||
};
|
||
|
||
//扩展方法
|
||
applan.prototype = {
|
||
addnum:function(strArr){
|
||
var $self = this;
|
||
strArr = $.unique(strArr);
|
||
$('.addnum').text(strArr.length);
|
||
},
|
||
apdelall:function(idArr){
|
||
var $self = this;
|
||
$.each(idArr,function(i,idStr){
|
||
$self.delap(idStr);
|
||
})
|
||
},
|
||
addap:function(idStrArr){
|
||
//新增选中值
|
||
var $self = this,
|
||
strArr = $self.aparr();
|
||
//新增选中的元素
|
||
strArr = strArr.concat(idStrArr);
|
||
//排序
|
||
strArr.sort();
|
||
//去重
|
||
strArr =$.unique(strArr);
|
||
$self.apinput(strArr.join(","),true);
|
||
//选中个数
|
||
$self.addnum(strArr);
|
||
},
|
||
delap:function(idStr){
|
||
//删除选中值
|
||
var $self = this,
|
||
strArr = $self.aparr(),
|
||
strlen = $.inArray(idStr, strArr);
|
||
//删除选中值
|
||
if(strlen != '-1') strArr.splice(strlen, 1);
|
||
//排序
|
||
strArr.sort();
|
||
//重新写会
|
||
$self.apinput(strArr.join(","),true);
|
||
//选中个数
|
||
$self.addnum(strArr);
|
||
},
|
||
apinput:function(str,type){
|
||
//获取或者写入
|
||
//true 为写入 false为获取
|
||
var input = $('input[name="l_selectenum"]');
|
||
return APPFUN.isEmpty(type)?input.val():input.val(str);
|
||
},
|
||
aparr:function(){
|
||
//选中广告位编号
|
||
var $self = this,
|
||
str = $self.apinput();
|
||
return !APPFUN.isEmpty(str)?str.split(","):[];
|
||
},
|
||
formdata:function(form){
|
||
var Array = form.serializeArray(),
|
||
dataOjb = {};
|
||
//转成一对一
|
||
$.each(Array,function(key,val){
|
||
dataOjb[val.name] = val.value;
|
||
});
|
||
return dataOjb;
|
||
},
|
||
laaajx:function(url,data){
|
||
var $self = this,
|
||
scrollable_this = $('[data-plugin="scrollable"]');
|
||
//点击保存后,先处理保存,再执行点位
|
||
$.post(url,data,function(json){
|
||
if(json.code){
|
||
// // 执行成功,则自动跳转到下一步
|
||
window.location.replace(window.location.href + '&slid='+json.slid+'&nextstep=1');
|
||
}else{
|
||
$self.addappend(scrollable_this,json.text,0);
|
||
$self.alerthtml(false,json.text);
|
||
}
|
||
},'json');
|
||
},
|
||
nextstep:function(){
|
||
var $self = this,
|
||
scrollable_this = $('[data-plugin="scrollable"]'),
|
||
//获取广告位数组
|
||
strArr = $self.aparr(),
|
||
//提交的URL
|
||
url = M.url.own_name + 'c=ajax&a=doapplan&lang=' + M.lang,
|
||
//获取form数据
|
||
data = $self.formdata($('form')),
|
||
falsei = 0,
|
||
truei = 0;
|
||
|
||
$self.scrollable(scrollable_this); //先重新初始化显示
|
||
//去重
|
||
strArr =$.unique(strArr);
|
||
$.each(strArr,function(i,idStr){
|
||
data['ap_enumber'] = idStr;
|
||
$.post(url,data,function(json){
|
||
// 将操作结果反馈给页面
|
||
$self.addappend(scrollable_this,json.text,json.code?1:2);
|
||
var inputid = $('input[value="'+json.eid+'"]').parent('.ap-one');
|
||
if(json.code){
|
||
truei++;
|
||
inputid.removeClass('checkbox-danger').addClass('checkbox-success');
|
||
}else{
|
||
falsei++;
|
||
inputid.removeClass('checkbox-success').addClass('checkbox-danger');
|
||
}
|
||
//输出最终结果
|
||
if(strArr.length == truei*1 + falsei*1){
|
||
//再执行,将最终的结果保存到对应的投放ID内
|
||
var urls = M.url.own_name + 'c=ajax&a=dolenumber&lang=' + M.lang;
|
||
// 将缓存表内保存的排期成功数据保存到表内
|
||
$.post(urls,data,function(dajson){
|
||
var text = '本次广告投放计划共涉及('+strArr.length+')个广告位,排期成功的('+truei+')个广告位,排期失败的('+falsei+')个广告位。',
|
||
falseicode = falsei == 0?true:false;
|
||
if(dajson.code == false){
|
||
falseicode = false;
|
||
text += dajson.text;
|
||
}
|
||
//同步给排期成功的字段
|
||
if(dajson.code) $('input[name="l_enumber"]').val(dajson.idstr);
|
||
//信息反馈页面
|
||
$self.addappend(scrollable_this,dajson.text,dajson.code?0:2);
|
||
$self.addappend(scrollable_this,text,0);
|
||
$self.alerthtml(falseicode,text);
|
||
scrollable_this.asScrollable('scrollTo','vertical','100%');
|
||
},'json');
|
||
}
|
||
},'json');
|
||
});
|
||
},
|
||
alerthtml:function(bool,text){
|
||
var color = bool?'alert-success':'alert-danger',
|
||
url = M.url.own_name + 'c=table_on&a=dolaunch',
|
||
alert = '<div class="launch_affix_save alert dark alert-icon alert-dismissible text-xs-center ' + color + '" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button><span><i class="icon wb-bell p-r-10" aria-hidden="true"></i>'+text+'</span><button class="btn btn-sm btn-danger btn-inverse btn-outline launchlist" type="button">返回列表</button></div>';
|
||
$('.launch_affix_save').remove();
|
||
$('form').append(alert);
|
||
$(document).on('click','.launchlist',function(e){
|
||
window.location.replace(url);
|
||
})
|
||
},
|
||
addappend:function(_this_,text,code){
|
||
var color = ['blue-600','green-600','red-600'],
|
||
icon = ['wb-bell','wb-check','wb-close'],
|
||
litext = '<li class="' + color[code] + '"><i class="' + icon[code] + '" aria-hidden="true"></i>' + text + '</li>';
|
||
$('.launchshow').append(litext);
|
||
_this_.asScrollable('scrollTo','vertical','100%');
|
||
},
|
||
scrollable:function(_this_){
|
||
M['plugin']['asscrollable']=[
|
||
// M['url']['static2_vendor']+'asscrollable/asScrollable.min.css',
|
||
M['url']['static2_vendor']+'asscrollbar/jquery-asScrollbar.min.js',
|
||
M['url']['static2_vendor']+'asscrollable/jquery-asScrollable.min.js',
|
||
];
|
||
$.include(M['plugin']['asscrollable'], function () {
|
||
_this_.asScrollable('destroy');
|
||
_this_.asScrollable({
|
||
namespace: "scrollable",
|
||
contentSelector: "> [data-role='content']",
|
||
containerSelector: "> [data-role='container']"
|
||
});
|
||
});
|
||
},
|
||
scrollToEnd:function(){
|
||
//滚动到底部
|
||
var h = $(document).height()-$(window).height();
|
||
$(document).scrollTop(h);
|
||
}
|
||
};
|
||
|
||
//外部入口
|
||
$.fn.aplist = function () {
|
||
var naplan = new applan();
|
||
if( !APPFUN.isEmpty($('input[name="nextstep"]').val()) ) {
|
||
$('#tables-list').on( 'draw.dt', function ( e,settings ) {
|
||
naplan.scrollToEnd();
|
||
})
|
||
naplan.nextstep();
|
||
}
|
||
};
|
||
//启动
|
||
$(".add_ap_list").aplist();
|
||
|
||
})(jQuery);
|