zoomla
Version:
16年专业研发|中文alexa排名第一的CMS品牌-基于dotNET core、功能强大,集成站群、微信开发、小程序与ERP及OA办公系统,支持国际语言和多民族语言,世界五百强与大型门户专用高端网站内核CMS系统
181 lines (178 loc) • 7.02 kB
JavaScript
/*
<a href="javascript:;" class="option_style" onclick="mvcpage.del({ ids: '@dr["FavoriteID"]', url: 'favour_del', confirm: '确定要移除吗' });"><i class="zi zi_trashalt"></i></a>
<input type="button" value="批量删除" onclick="mvcpage.bat({url: 'favour_del', confirm: '确定要批量移除吗',after:'reload' });" class="btn btn-info" />
after:'方法名'
<input type="hidden" id="skey" value="@ViewBag.skey">
mvcpage.load();//搜索或其他条件选项变更,重新加载页面(表名等均为默认参数)
mvcpage.load(url:'xxxx',target:"EGV1",page:"first");//回复后至第一页
mvcpage.post({ url: 'addon_verbak_del', data: {ids:'@dr["ID"]'},callback:'delback',confirm:'确定要操作吗'});
mvcpage.post2('url','ids',{callback:'refresh'});
mvcpage.del({url:'api?action=del',ids:'@dr["ID"]',confirm:'确定要删除吗',after:function(){location=location;}});
*/
var mvcpage = {};
//加载指定页
mvcpage.load = function (opts) {
//{target:"EGV",page:1,psize:10}
opts = mvcpage.fillopts(opts);
var $target = $("#" + opts.target);
var filter = mvcpage.help.getPageFilter(opts);//需要提交的筛选器
if (opts.psize) { filter.psize = opts.psize; }
switch (opts.page) {
case "first":
filter.cpage = 1;
break;
case "last":
filter.cpage = filter.pcount;
break;
case "prev":
filter.cpage--;
break;
case "next":
filter.cpage++;
break;
case "reload"://刷新当前页(添加|删除)
break;
default:
filter.cpage = parseInt(opts.page);
break;
}
console.log('filter', filter);
var url = filter.url;
//移除不需要提交的数据
delete filter.url;
delete filter.pcount;
$.post(url, filter, function (data) {
$target.replaceWith(data);
if (opts.cb) { opts.cb(filter); }
})
}
//自动获取页面上的checkbox选值,提交
mvcpage.bat = function (opts) {
//{chkname:'',taraget:'',||url:'',confirm:'确定要删除吗'}
if (!opts.chkname) { opts.chkname = "idchk"; }
var ids = mvcpage.help.getchk(opts.chkname);
if (ids == "") { alert("请选择需要操作的数据"); return; }
if (!opts.after) { opts.after = "reload"; }
if (opts.confirm) { if (!confirm(opts.confirm)) { return; } }
if (!opts.data) { opts.data = {}; }//需要提交的数据
opts.data.ids = ids;
$.post(opts.url, opts.data, function (data) {
if (typeof (opts.after) == "function") {
opts.after(data);
}
else if (typeof (opts.after) == "string") {
switch (opts.after) {
case "reload":
break;
case "refresh":
location = location;
break;
default://未命中则执行js方法
mvcpage.help.call(opts.after, data);
break;
}
}
if (data == 1 || data.indexOf("{\"retcode\":1,") == 0)
{ mvcpage.load({ target: opts.target, page: "reload" }); } else { console.log(data); }
})
}
//删除指定数据,完成后重载当前页
mvcpage.del = function (opts) {
//{id:'',url:'',confirm:'确定要删除吗'}
opts = mvcpage.fillopts(opts);
if (opts.confirm) { if (!confirm(opts.confirm)) { return; } }
$.post(opts.url, { "ids": opts.ids, "id": opts.id }, function (data) {
if (opts.after && typeof (opts.after) == "function") { opts.after(data); return; }
if (data == 1) {
mvcpage.load({ target: opts.target, page: "reload" });
}
else { console.log("del err", data); }
})
}
//提交后执行页面回调方法
mvcpage.post = function (opts) {
//{id:'',url:'',confirm:'确定要执行此操作吗',data:{id:1},callback:'方法名'}
opts = mvcpage.fillopts(opts);
if (opts.confirm) { if (!confirm(opts.confirm)) { return; } }
$.post(opts.url, opts.data, function (result) {
if (opts.callback == "reload") { opts.url = ""; mvcpage.load(opts); }
else if (opts.callback == "refresh") { location = location; }
else { mvcpage.help.call(opts.callback, opts.data, result); }
});
}
mvcpage.post2 = function (url, ids, opts) {
if (!opts) { opts = {}; }
if (!opts.data) { opts.data = {}; }
if (!opts.callback) { opts.callback = "reload"; opts.page = "reload"; }
opts.url = url;
opts.data.ids = ids;
mvcpage.post(opts)
}
//为分页等各选项填充默认值
mvcpage.fillopts = function (opts) {
if (!opts) { opts = {}; }
if (!opts.page) { opts.page = "1";}
if (!opts.target) { opts.target = "EGV"; }
if (!opts.chkname) { opts.chkname = "idchk"; }
if (!opts.mvcparam) { opts.mvcparam = ".mvcparam"; }
return opts;
}
//-----辅助方法不仅可用于mvcpage
mvcpage.help = {};
//获取当前列表页面的筛选条件,与分页数据
mvcpage.help.getPageFilter = function (opts) {
//mvcpage.fillopts(opts);
var filter = {};
var $div = $(".mvcpage[data-for='" + opts.target + "']");//信息存在分页处
if ($div.length > 0) {
filter.pcount = $div.data("pcount");
filter.cpage = parseInt($div.data("cpage"));
filter.psize = $div.data("psize");
filter.url = $div.data("url");
filter.mvcparam = $div.data("mvcparam");
} else {
//无存储数据的分页div,则读默认配置
filter = opts;
}
$(filter.mvcparam).each(function () {
var $this = $(this);
var val = $this.val();
//其中的数据如果标识是json
if ($this.data("type") == "json") {
if (val) {
var json = JSON.parse(val);
for (var key in json) {
filter[key] = json[key];
}
}
}
else {
filter[$this.attr("id")] = $this.val();
}
});
return filter;
}
mvcpage.help.getchk = function (name) {
var ids = "";
var $chks = $("input[name='" + name + "']:checked");
if ($chks.length < 1) { return ""; }
$chks.each(function () { ids += this.value + ","; });
if (ids.length > 0) { ids = ids.substr(0, ids.length - 1); }
return ids;
}
//根据方法名称,执行方法
mvcpage.help.call = function (name, data,result) {
try {
var func = eval(name);
func(data, result);
} catch (ex) { console.log("call failed", name, ex); }
}
// mvcpage.help.submit({ formid: "msgForm", "url": url });
mvcpage.help.submit = function (conf) {
if (!conf.formid) { conf.formid = "form1"; }
var form = document.getElementById(conf.formid);
form.action = conf.url;
//form.submit();
//使用jquery提交,便于捕捉事件
$(form).submit();
}