var config = { table: $("#table"), tableTool: $("#tableTool"), form: $("#form"), modal: $("#modal") }; /********************** bootstrapTable Start **/ function LoadTable(url, options) { GetSearchList(); var defaultOption = { table: config.table, onAll: OnAll, onClickRow: OnClickRow, onCheck: OnCheck, onUncheck:OnUnCheck, queryParams: QueryParams, //onLoadSuccess: ICheckTableInit_SingleSelect onLoadSuccess: OnLoadSuccess, onPostBody: OnPostBody, responseHandler: ResponseHandler, }; if (!options) { options = !url || typeof(url)==="string" ? {} : url; } if (options.hasOwnProperty("url")) { defaultOption.url = options.url; } else if (typeof (url) === "string") { defaultOption.url = url; } $.extend(defaultOption, options); $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales[window.lang]); defaultOption.table.bootstrapTable(defaultOption ); return defaultOption.table; } function RefreshTable(table) { abp.ui.setBusy(); var $thisTable = config.table; if (table) { if (typeof (table) === "string") { $thisTable = $("#" + table); } else { $thisTable = $(table); } } $thisTable.bootstrapTable("refresh", { silent: false}); setTimeout(function () { abp.ui.clearBusy(); _isSearching = false; }, 8 * 1000); } function QueryParams(params) { //bootstrapTable自带参数 var sorting = ''; if (params.sort) { sorting = params.sort; if (params.order) { sorting += ' ' + params.order; } } return { //limit: params.limit, //页面大小 //page: (params.offset / params.limit) + 1, //页码 MaxResultCount: params.limit, SkipCount: params.offset, Sorting: sorting, //排序列名 sortOrder: params.order, //排位命令(desc,asc) SearchList: _searchList }; } function ResponseHandler(res) { if (res.success) { var data = JSON.parse('{"total":' + res.result.totalCount + ',"rows":' + JSON.stringify(res.result.items) + '}'); console.log(data); return data; } else { console.log("Table load failed"); if (res.error) { if (res.error.details) { return abp.message.error(res.error.details, res.error.message); } else { if (error.message && error.message.indexOf("登陆超时") >= 0) { return abp.message.error(error.message).done(function () { top.location.reload(); }); } else { return abp.message.error(error.message || abp.ajax.defaultError.message); } } } } return JSON.parse('{"total":0,"rows":[]}'); } function ResponseHandlerNoPage(res) { if (res.success) { var data = res.result; //console.log("data:::"+data); return data; } else { console.log("Table load failed"); if (res.error) { if (res.error.details) { return abp.message.error(res.error.details, res.error.message); } else { if (error.message && error.message.indexOf("登陆超时") >= 0) { return abp.message.error(error.message).done(function () { top.location.reload(); }); } else { return abp.message.error(error.message || abp.ajax.defaultError.message); } } } } return JSON.parse('[]'); } function OnAll(eName, eData, table) { //console.log(eName, eData); var $table = config.table; if (table) { if (typeof (table) === "string") { $table = $("#" + table); } else { $table = $(table); } } _isSearching = false; $table.closest(".table-box").find("#tableTool .btn[data-type^='btn']") .prop('disabled', $table.bootstrapTable('getSelections').length !== 1); $table.closest(".table-box").find("#tableTool .btn[data-type^='a_btn']") .prop('disabled', $table.bootstrapTable('getSelections').length === 0); } function OnLoadSuccess(data,table) { var $table = config.table; if (table) { if (typeof (table) === "string") { $table = $("#" + table); } else { $table = $(table); } } $table.find(".bs-checkbox").find("input").addClass("filled-in").after(" { $(this).prop('disabled', false); }, 2000); TimeOutDisableDom($(this)); defaultOption.save({ url: defaultOption.url, success: defaultOption.success === null ? function () { $modal.modal("hide"); RefreshTable(defaultOption.table); } : defaultOption.success, form: defaultOption.form })}); } else { defaultOption.savebtn.off("click.save").on("click.save", function () { //$(this).prop('disabled', true); //setTimeout(() => { $(this).prop('disabled', false); }, 2000); TimeOutDisableDom($(this)); SaveAjax({ url: defaultOption.url, isValidate: defaultOption.isValidate, success: defaultOption.success === null ? function () { $modal.modal("hide"); RefreshTable(defaultOption.table); } : defaultOption.success, form: defaultOption.form }); }); } }); $modal.off('shown.bs.modal').on('shown.bs.modal', function() { $(this).css('display', 'block'); var topHeight = $(window).height() - $(this).find('.modal-dialog').height() - 50; if (topHeight < 30) { topHeight = 30; } $(this).find('.modal-dialog').animate({ 'marginTop': topHeight / 2 + "px" }); if (defaultOption.showAfter && typeof (defaultOption.showAfter) === "function") { defaultOption.showAfter(); } }); $modal.modal("show", { keyboard: true}); } function Draggable($modal) { //var $that = this; //var $modal = $that.getModal(); //console.log('draggable'); $('.modal-header').css('cursor', 'move'); /** 拖拽模态框*/ var dragModal = { mouseStartPoint: { 'left': 0, 'top': 0 }, mouseEndPoint: { 'left': 0, 'top': 0 }, mouseDragDown: false, basePoint: { 'left': 0, 'top': 0 }, moveTarget: null, topleng: 0 }; $modal.off('mousedown.drag').on('mousedown.drag', '.modal-header', function(e) { //webkit内核和火狐禁止文字被选中 $('body').addClass('drag-select'); //ie浏览器禁止文字选中 document.body.onselectstart = document.body.ondrag = function() { return false; }; if ($(e.target).hasClass('close')) //点关闭按钮不能移动对话框 return; dragModal.mouseDragDown = true; dragModal.moveTargetHeader = $(this); dragModal.moveTarget = $(this).closest('.modal-content'); dragModal.mouseStartPoint = { 'left': e.clientX, 'top': e.pageY }; dragModal.basePoint = dragModal.moveTarget.offset(); dragModal.topLeng = e.pageY - e.clientY; }); $modal.off('mouseup.drag').on('mouseup.drag', function() { dragModal.mouseDragDown = false; dragModal.moveTarget = undefined; dragModal.mouseStartPoint = { 'left': 0, 'top': 0 }; dragModal.basePoint = { 'left': 0, 'top': 0 }; }); $modal.off('mousemove.drag').on('mousemove.drag', function(e) { if (!dragModal.mouseDragDown || dragModal.moveTarget === undefined) return; var mousX = e.clientX; var mousY = e.pageY; if (mousX < 0) mousX = 0; if (mousY < 0) mousY = 25; dragModal.mouseEndPoint = { 'left': mousX, 'top': mousY }; var width = dragModal.moveTarget.width(); var height = dragModal.moveTargetHeader.height(); var clientWidth = document.body.clientWidth; var clientHeight = document.body.clientHeight; if (dragModal.mouseEndPoint.left < dragModal.mouseStartPoint.left - dragModal.basePoint.left) { dragModal.mouseEndPoint.left = 0; } else if (dragModal.mouseEndPoint.left >= clientWidth - width + dragModal.mouseStartPoint.left - dragModal.basePoint.left) { dragModal.mouseEndPoint.left = clientWidth - width - 38; } else { dragModal.mouseEndPoint.left = dragModal.mouseEndPoint.left - (dragModal.mouseStartPoint.left - dragModal.basePoint.left); //移动修正,更平滑 } if (dragModal.mouseEndPoint.top - (dragModal.mouseStartPoint.top - dragModal.basePoint.top) < dragModal.topLeng) { dragModal.mouseEndPoint.top = dragModal.topLeng; } else if (dragModal.mouseEndPoint.top - dragModal.topLeng > clientHeight - height + dragModal.mouseStartPoint.top - dragModal.basePoint.top) { dragModal.mouseEndPoint.top = clientHeight - height - 38 + dragModal.topLeng; } else { dragModal.mouseEndPoint.top = dragModal.mouseEndPoint.top - (dragModal.mouseStartPoint.top - dragModal.basePoint.top); } dragModal.moveTarget.offset(dragModal.mouseEndPoint); }); $(document).on('hidden.bs.modal', '.modal', function() { $('.modal-dialog').css({ 'top': '0', 'left': '0' }); $('body').removeClass('drag-select'); document.body.onselectstart = document.body.ondrag = null; }); }; var FormConvert = function() {}; FormConvert.prototype = { Deserialize: function (body, array) { var input = body.find("input"); var tel = body.find("input[type='tel']"); var email = body.find("input[type='email']"); var hidden = body.find("input[type='hidden']"); var textarea = body.find("input[type='textarea']"); var textarea2 = body.find("textarea"); var select = body.find("select"); var checkbox = body.find("input[type='checkbox']"); var radio = body.find("input[type='radio']"); $.merge(input, tel); $.merge(input, email); //$.merge(inputArray, checkbox); //$.merge(inputArray, radio); $.merge(input, hidden); $.merge(input, textarea); $.merge(input, textarea2); $.merge(input, select); //console.log(checkbox); //console.log(radio); input.each(function () { var input = $(this); //var name = input.attr("name").replace(/(\w)/, function (v) { return v.toUpperCase() }); var name = input.attr("name"); if (array[name] !== "") { input.val(array[name]); } }); select.each(function () { var input = $(this); //var name = input.attr("name").replace(/(\w)/, function (v) { return v.toUpperCase() }); var name = input.attr("name"); if (typeof array[name] === "boolean") { array[name] = array[name] + ""; } //console.log(name, array[name]); if (array[name] !== "") { //input.val(array[name]); //seleect2 赋值 input.val(array[name]).trigger('change'); } }); checkbox.each(function () { var input = $(this); //var name = input.attr("name").replace(/(\w)/, function (v) { return v.toUpperCase() }); var name = input.attr("name"); if (array[name] !== "") { //console.log(array[name]); //console.log("---"); input.val(array[name] === "True" || input.val(array[name]) === "1" || input.val(array[name]) === "true"); } }); radio.each(function () { var input = $(this); //var name = input.attr("name").replace(/(\w)/, function (v) { return v.toUpperCase() }); var name = input.attr("name"); if (array[name] !== "") { //console.log(array[name]); $("input[name='" + name + "'][value='" + array[name] + "']").prop("checked", true); $("input[name='" + name + "'][value!='" + array[name] + "']").prop("checked",false); } }); }, //将form表单元素的值序列化成对象 Serialize: function (form) { var disableEle = form.find("[disabled]"); disableEle.each(function(i, e) { $(e).prop("disabled", false); }); var o = {}; $.each(form.serializeArray(), function () { if (o[this['name']]) { o[this['name']] = o[this['name']] + "," + this['value']; } else { o[this['name']] = this['value']; } }); disableEle.each(function (i, e) { $(e).prop("disabled", true); }); return o; } } var formUtil = new FormConvert(); /** Modal、Form END **/ /************************ Form Submit validate Start **/ function SaveAjax(url, options) { var defaultOption = { async: true, type: "Post", contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data: null, dataType: "json", success: null, error: null, isAlert: true, isValidate: true, modal: config.modal, form: config.form, errorPlacement: function(error, element) { element.after(error); element.focus(); }, rules: {}, blockUI: true, table: config.table }; if (!options) { options = url; url = options.url; } if (!options.form && options.modal) { defaultOption.form = options.modal.find("form"); } defaultOption = $.extend(defaultOption, options); var isValidated = true; if (defaultOption.isValidate) { isValidated = FormValidate(defaultOption); } if (isValidated) { //console.log(defaultOption.data) defaultOption.success =defaultOption.success?defaultOption.success : function() { RefreshTable(defaultOption.table); defaultOption.modal.modal('hide'); }; if (defaultOption.isAlert) { var success= defaultOption.success; defaultOption.success = function(res) { abp.message.success(abp.localization.localize("OpSuccess")).done(success(res)); }; } //var blockUi = defaultOption.blockUi != null // ? defaultOption.blockUi // : (defaultOption.modal == undefined || defaultOption.modal == null) // ? true // : defaultOption.modal; var ajaxOption = { url: url, async: defaultOption.async, type: defaultOption.type, contentType: defaultOption.contentType, data: defaultOption.data === null ? formUtil.Serialize(defaultOption.form) : defaultOption.data, dataType: defaultOption.dataType, success: defaultOption.success, error: defaultOption.error, blockUI: defaultOption.blockUI, unblockUI: defaultOption.blockUI }; abp.ajax(ajaxOption); } } function FormValidate() { var defaultOption = { form: $("#form"), errorPlacement: function(error, element) { element.after(error); element.focus(); }, rules: {} }; $.extend(defaultOption, arguments[0]); var form = defaultOption.form; form.validate({ errorPlacement: defaultOption.errorPlacement, rules: defaultOption.rules }).settings.ignore = ":disabled"; return form.valid(); } function TimeOutDisableDom(that) { $(that).prop('disabled', true); setTimeout(() => { $(that).prop('disabled', false); }, 2000); } /******************************************** Form validate END **/ /************************ Common script Start **/ $.ajaxSetup({ type: 'Post', timeout: 1000 * 60 * 2, contentType: "application/x-www-form-urlencoded;charset=utf-8", dataType: "json", //beforeSend:function() { // var blockUi = // '
'; // $('body').append(blockUi); //}, complete: function (xmlHttpRequest, textStatus) { //console.log("Complete - " + textStatus, xmlHttpRequest); // $("#beforeBlockUi").remove(); if (textStatus === "timeout") { abp.message.error("服务器响应超时,请稍后再试。"); console.log("Complete - 操作超时"); } else if(textStatus !== "success") { console.log("Complete - " + textStatus, xmlHttpRequest.responseJSON); if (xmlHttpRequest.responseJSON) { var json = xmlHttpRequest.responseJSON; //if (!json.Success && !json.UnAuthorizedRequest && json.Error.Message.indexOf("登陆超时")>=0) // abp.message.error(json.Error.Message).done(function () { // //top.location.href = "/Account/Login/?ReturnUrl=%2F"; // top.location.reload(); // }); } //else if (xmlHttpRequest.responseText === "") { // // top.location.href = "/Account/Login/?ReturnUrl=%2F&1="; // abp.message.error("服务器出错!请稍后重试。。。").done(function () { // top.location.href = "/Account/Login/?ReturnUrl=%2F"; // }); //} } } }); /** * 在页面中任何嵌套层次的窗口中获取顶层窗口 * @@return 当前页面的顶层窗口对象 **/ function GetTopWinow() { var p = window; while (p !== p.parent) { p = p.parent; } return p; } /** * 获取浏览器 * @returns {} */ function MyBrowser() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 if (userAgent.indexOf("Opera") > -1) { return "Opera"; }; //判断是否Opera浏览器 if (userAgent.indexOf("Firefox") > -1) { return "FF"; } //判断是否Firefox浏览器 if (userAgent.indexOf("Chrome") > -1) { return "Chrome"; } if (userAgent.indexOf("Safari") > -1) { return "Safari"; } //判断是否Safari浏览器 if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 ) { return "IE"; }; //判断是否IE浏览器 return ""; } //以下是调用上面的函数 //var mb = MyBrowser(); //if ("IE" === mb) { // alert("我是 IE"); //} //if ("FF" === mb) { // alert("我是 Firefox"); //} //if ("Chrome" === mb) { // alert("我是 Chrome"); //} //if ("Opera" === mb) { // alert("我是 Opera"); //} //if ("Safari" === mb) { // alert("我是 Safari"); //} /** * 设置未来(全局)的AJAX请求默认选项 * 主要设置了AJAX请求遇到Session过期的情况 **/ function BeforeSend() { } //获取当前时间 function GetNowFormatDate(time) { time = time || false; var currentdate; var seperator1 = "-"; var seperator2 = ":"; var date = new Date(); var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } if (time) { currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " + date.getHours() + seperator2 + date.getMinutes() + seperator2 + date.getSeconds(); } else { currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate; } return currentdate; } function FileUpload(that, opt) { $(that).iwbFileUpload(opt); } function FileShow(that, opt) { $(that).iwbFileShow(opt); } //打开选择文件窗口 function OpenUploadWindow(that) { //$(that).find(".showFileName").html(""); $(that).removeClass("file-success").removeClass("file-error"); //$(that).find("input[type='file']")[0].click(); } //检查文件 function FileInputCheck(that, idStr, isImage, maxSize, callback,checkFileType) { if (CheckFileSize($(that).attr("id"), maxSize)) { //var filePath = $(that).val(); var fileName = $(that).val().split("\\").pop(); //$(that).closest('.upload').addClass("file-success").find(".showFileName").html(fileName); $(that).closest('.custom-file ').addClass("file-success").find("label").text(fileName); var file = document.getElementById($(that).attr("id")).files[0]; if (checkFileType && typeof (checkFileType) === "function") { checkFileType(fileName); } if (idStr) { ReadFile(file, idStr, isImage, checkFileType); } if (callback && typeof (callback) === "function") { callback(fileName, file); } } else { // $(that).closest('.upload').addClass("file-error"); $(that).closest('.custom-file ').addClass("file-error"); } } function ReadFile(file, idStr, isImage) { //判断是否是图片类型 //console.log(file.type); if (isImage && !/image\/\w+/.test(file.type)) { abp.message.warn("只能选择图片"); return false; } var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function (e) { //txshow.src = this.result; //console.log(this.result); $("#" + idStr).val(this.result.substring(this.result.indexOf(',') + 1)); }; } //清空文件域 function ClearFile(idStr) { var file = $("#" + idStr); file.closest('.upload').removeClass("file-success").removeClass("file-error").find(".showFileName").html(""); file.after(file.clone().val("")); file.remove(); } //检查文件大小 function CheckFileSize(idStr, maxSize) { maxSize = maxSize || 2; var maxsize = maxSize * 1024 * 1024; var errMsg = "上传的附件文件不能超过" + maxSize + "M。"; var tipMsg = "您的浏览器暂不支持计算上传文件的大小,确保上传文件不要超过2M,建议使用IE、FireFox、Chrome浏览器。"; var browserCfg = {}; var ua = window.navigator.userAgent; if (ua.indexOf("MSIE") >= 1) { browserCfg.ie = true; } else if (ua.indexOf("Firefox") >= 1) { browserCfg.firefox = true; } else if (ua.indexOf("Chrome") >= 1) { browserCfg.chrome = true; } try { var objFile = document.getElementById(idStr); if (objFile.value === "") { //layer.alert("请先选择上传文件", { icon: 7, title: "提示信息" }); return false; } var filesize; if (browserCfg.firefox || browserCfg.chrome) { filesize = objFile.files[0].size; } else if (browserCfg.ie) { var objImg = document.createElement("img"); objImg.id = "tempImg"; objImg.style.display = "none"; document.body.appendChild(objImg); objImg.dynsrc = objFile.value; filesize = objImg.fileSize; } else { ClearFile(idStr); abp.message.warn(tipMsg); return false; } if (filesize === -1) { ClearFile(idStr); abp.message.warn(tipMsg); return false; } else if (filesize > maxsize) { ClearFile(idStr); abp.message.warn(errMsg); return false; } else { return true; } } catch (e) { ClearFile(idStr); abp.message.error(e); } } //打开图片或文件 function OpenFile(that, type, defaultOption) { var url; if (typeof (that) === "string") { url = that; } else { url = $(that).data("url"); if (!url) { url = $(that).attr("src"); } type = $(that).data("type"); } if (url.indexOf("/")!==0) { url = "/" + url; } console.log(url); if (type === 'img') { if ($("#Img-Modal").length > 0) { $("#Img-Modal").remove(); } $("body").append('