244 lines
11 KiB
JavaScript
244 lines
11 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);
|