dzadsod/admin/templates/js/applan.js

244 lines
11 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//应用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);