var iwbfuns; var select2Opt = window.select2DefaultOption || {}; var tableActionIcon = ''; function GetFuns(ele) { var $table = typeof ele === 'string' ? $('#' + ele) : $(ele); return $table.iwbTable('getFuns'); } function LoadTableBackFun(option) { if (!option) { option = { table: "table" }; } option.table = option.table ? option.table : "table"; var $table = typeof option.table === 'string' ? $('#' + option.table) : $(option.table); if ($table.length < 1) { console.log('没有发现表格:', option.table); } option.lang = option.lang ? option.lang : window.lang; $table.iwbTable(option); var funs = GetFuns($table); return funs; } function LoadTable(option) { if (!option) { option = { table: "table" }; } option.table = option.table ? option.table : "table"; var $table = typeof option.table === 'string' ? $('#' + option.table) : $(option.table); if ($table.length < 1) { console.log('没有发现表格:', option.table); } $table.iwbTable(option); window.iwbfuns = GetFuns($table); return $table; } function LoadTreeTable(option) { var $table = !option.table ? $('#table') : typeof option.table === 'string' ? $('#' + option.table) : $(option.table); if ($table.length < 1) { console.log('没有发现表格:', option.table); throw "没有发现表格"; } $.metPageCss('/Content/Libs/bootstrap-table/extensions/treegrid/jquery.treegrid.min.css', "dy-css-treegrid"); $.metPageJs('/Content/Libs/bootstrap-table/extensions/treegrid/bootstrap-table-treegrid.js', "dy-js-bootstrap-treegrid"); $.metPageJs('/Content/Libs/bootstrap-table/extensions/treegrid/jquery.treegrid.min.js', "dy-js-treegrid"); var defaultOption = { table: $table, rootNo: 0, idField: 'no', treeShowField: 'name', parentIdField: 'parentNo', level: "depth", customDataField: ['path'], height: $(window).height() - 200, onLoadSuccess: function () { $table.treegrid({ treeColumn: 1, expanderExpandedClass: 'mr-2 ml-3 fa fa-folder-open', expanderCollapsedClass: 'mr-2 ml-3 fa fa-folder' }); $(".level-2").closest("tr").treegrid("collapse"); $("td span.treegrid-expander:not(.fa)").addClass("mr-2 ml-3 fa fa-folder-o"); abp.ui.clearBusy(); $("td").off("dblclick").on("dblclick", function () { $($(this).closest("tr")).treegrid("toggle"); }); } }; option = $.extend({}, defaultOption, option); $table.iwbTable(option); $(".btn-toolbar .btn-group").find(".btn[data-type]").each(function (i, e) { var btnType = $(e).data("type").replace("_", ""); if (btnType !== "btnRefresh") { var btnUrl = $(e).data("url") || ""; var btnName = $(e).text(); var btnClass = $(e).attr("class"); var btnIcon = $(e).find("i").attr("class"); actions.push({ type: btnType, name: btnName, "class": btnClass, icon: btnIcon, url: btnUrl }); $(e).remove(); } else { $(e).prop("disabled", false).attr("onclick", "$.iwbAjax1({url: '" + $(e).data("url") + "'});"); } }); //$(".btn-toolbar").css("display", "block"); var funs = GetFuns($table); var getCustomDataStr = function (row) { var str = ""; if (option.customDataField && option.customDataField.length > 0) { for (var i = 0; i < option.customDataField.length; i++) { var key = option.customDataField[i]; str += ',"' + key + '":"' + row[key] + '"'; } } return str; }; funs['btnCreate'] = function (url, id) { var row; if (typeof id === "string") { row = $table.bootstrapTable("getRowByUniqueId", id); } else { row = id; } if (row) { var dataStr = '{"' + option.parentIdField + '":"' + row[option.idField] + '","' + option.level + '":"' + (row[option.level] + 1) + '"' + getCustomDataStr(row) + '}'; console.log('create', dataStr); BtnCreate({ table: $table, url: url, data: typeof id === "string"?JSON.parse(dataStr):row, disabled: option.parentIdField }); } else abp.message.warn(abp.localization.iwbZero('SelectRecordOperation')); }; funs['btnUpdate'] = function (url, id ) { console.log('update', id); var row; if (typeof id === "string" && id !== "") { row = $table.bootstrapTable("getRowByUniqueId", id); } else { row = id; } if (row) { BtnUpdate({ table: $table, url: url, data: row, disabled: option.parentIdField + ',' + option.idField }, row); } else abp.message.warn(abp.localization.iwbZero('SelectRecordOperation')); }; funs['btnDelete'] = function (url, id) { console.log('delete', id); var row; if (typeof id === "string" ) { row = $table.bootstrapTable("getRowByUniqueId", id); } if (row) { BtnDelete({ table: $table, url: url, data: row }, row); } else abp.message.warn(abp.localization.iwbZero('SelectRecordOperation')); }; funs['btnMoveUp'] = function (url, id, that) { console.log("MoveUp", id); var row; if (typeof id === "string" && id !== "") { row = $table.bootstrapTable("getRowByUniqueId", id); } if (row) { var tr = $(that).closest("tr"); var funId = tr.data("uniqueid"), parentNo = tr.data("parent"); var prevs = tr.prevAll().filter("[data-parent='" + parentNo + "']"); if (prevs.length > 0) { var prevId = prevs.first().data("uniqueid"); //console.log(prevId); $.iwbAjax1({ url: url, data: { Id: funId, PrevId: prevId } }); } else { abp.message.warn(abp.localization.iwbZero("RecordAtTop")); } } else { abp.message.warn(abp.localization.iwbZero('SelectRecordOperation')); } }; funs['btnMoveDown'] = function (url, id, that) { console.log("MoveDown", id); var row; if (typeof id === "string" && id !== "") { row = $table.bootstrapTable("getRowByUniqueId", id); } if (row) { var tr = $(that).closest("tr"); var funId = $(tr).data("uniqueid"), parentNo = $(tr).data("parent"); var nexts = tr.nextAll().filter("[data-parent='" + parentNo + "']"); if (nexts.length > 0) { var nextId = nexts.first().data("uniqueid"); //console.log(nextId); $.iwbAjax1({ url: url, data: { Id: funId, NextId: nextId } }); } else { abp.message.warn(abp.localization.iwbZero("RecordAtBottom")); } } else { abp.message.warn(abp.localization.iwbZero("SelectRecordOperation")); } }; funs['Refresh'] = function (url) { console.log("Refresh"); $.iwbAjax1({ url: url }); }; return funs; } function RefreshTable(ele, isForce) { ele = ele || "table"; isForce = isForce === undefined; var $table = typeof ele === 'string' ? $('#' + ele) : $(ele); if ($table.length < 1) { console.log('没有发现表格:', ele); } try { $table.iwbTable('refresh', isForce); } catch (e) { console.log("RefreshTable", e); } } function BtnCreate(option) { option = option || {}; option.table = option.table ? option.table : "table"; var $table = typeof option.table === 'string' ? $('#' + option.table) : $(option.table); var url = option.url || $table.find('.btn-toolbar').find('.btn[data-type="_btnCreate"]').data('url') || $table.find('.btn-toolbar').find('.btn[data-type="btnCreate"]').data('url'); option.type = 'post'; $table.iwbTable('defaultCreate', url, option); } function BtnUpdate(option, row) { option = option || {}; option.table = option.table ? option.table : "table"; var $table = typeof option.table === 'string' ? $('#' + option.table) : $(option.table); var url = option.url || $table.find('.btn-toolbar').find('.btn[data-type="btnUpdate"]').data('url'); row = row || option.row || $table.bootstrapTable("getSelections")[0]; option.data = option.data || row; option.type = 'post'; $table.iwbTable('defaultUpdate', url, option, row); } function BtnDelete(option, row) { option = option || {}; option.table = option.table ? option.table : "table"; var $table = typeof option.table === 'string' ? $('#' + option.table) : $(option.table); var url = option.url || $table.find('.btn-toolbar').find('.btn[data-type="btnDelete"]').data('url'); row = row || option.row || $table.bootstrapTable("getSelections")[0]; option.type = 'post'; $table.iwbTable('defaultDelete', url, option, row); } function BtnConfirm(message, title, url, rowOrTableId, data) { var row; if (rowOrTableId) { if (typeof rowOrTableId === 'object' && !(rowOrTableId instanceof jQuery)) { row = rowOrTableId; } else { var $table = typeof rowOrTableId === 'string' ? $('#' + rowOrTableId) : $(rowOrTableId); row = $table.bootstrapTable("getSelections")[0]; } } else { row = $("#table").bootstrapTable("getSelections")[0]; } if (row) { data = data || { Id: row.id }; MsgConfirm(message, title, function () { $.iwbAjax({ url: url, data: data, isValidate: false }); }); } else abp.message.warn(abp.localization.iwbZero('SelectRecordOperation')); } function MsgConfirm(message, title, callback, opt) { abp.message.confirm(message, title, function (isConfirmed) { if (isConfirmed && callback) { callback(opt); } }); } function OpenModal(opt) { opt = opt || {}; var ele = opt.modal ? opt.modal : "modal"; var $modal = typeof ele === 'string' ? $('#' + ele) : $(ele); if ($modal.length < 1) { console.log('没有发现模态框:', ele); } try { $modal.iwbModal(opt); } catch (e) { console.log("OpenModal", e); } } function ShowModal(ele) { ele = ele || "modal"; var $modal = typeof ele === 'string' ? $('#' + ele) : $(ele); if ($modal.length < 1) { console.log('没有发现模态框:', ele); } try { $modal.iwbModal('show'); } catch (e) { console.log("ShowModal", e); } } var queryModalTarget = ''; function ShowQueryModal(ele, target) { ele = ele || "modal"; queryModalTarget = !target ? '' : target.indexOf('.') === 0 ? target : target.indexOf('#') === 0 ? target : '#' + target; var $modal = typeof ele === 'string' ? $('#' + ele) : $(ele); if ($modal.length < 1) { console.log('没有发现模态框:', ele); } try { $modal.iwbModal('show2'); } catch (e) { console.log("ShowModal", e); } } function ClearSearchValue(target,clear,that) { var $target = $(!target ? $(that) : target.indexOf('.') === 0 ? target : target.indexOf('#') === 0 ? target : '#' + target); var arr = clear.split(","); arr.forEach(function (v) { if (v) { var vStr = v.indexOf('.') === 0 ? v : v.indexOf('#') === 0 ? v : '#' + v; var $t = $target.find(vStr); $t.val(''); if ($t.is("select")) { $t.trigger('change'); } } }); } function FileUpload(that, opt) { $(that).iwbFileUpload(opt); } function FileClear(that) { $(that).iwbFileUpload('clearFile'); } function FileShow(that, opt) { $(that).iwbFileShow(opt); } function AddDynamicBox(that) { var $that = $(that).closest('.iwb-dynamic-box'), html = $that.clone().prop("outerHTML"); html = html.replace('btn-add', 'btn-delete'); html = html.replace('AddDynamicBox', 'DeleteDynamicBox'); html = html.replace('>增加删除 -1) { top.location.reload(); } } } }); // ReSharper disable once NativeTypePrototypeExtending String.prototype.format = function (args) { var result = this; if (arguments.length > 0) { var reg; if (arguments.length === 1 && typeof args === "object") { for (var key in args) { if (args.hasOwnProperty(key)) { if (args[key] !== undefined) { reg = new RegExp("({" + key + "})", "g"); result = result.replace(reg, args[key]); } } } } else { for (var i = 0; i < arguments.length; i++) { if (arguments[i] !== undefined) { reg = new RegExp("({[" + i + "]})", "g"); result = result.replace(reg, arguments[i]); } } } } return result; }; String.format = function (str) { var args = arguments, re = new RegExp("%([1-" + args.length + "])", "g"); return String(str).replace(re, function ($1, $2) { return args[$2]; } ); }; //调用方法很简单: //element.innerHTML = String.format('%3', url, msg, text); // 对Date的扩展,将 Date 转化为指定格式的String // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 // ReSharper disable once NativeTypePrototypeExtending Date.prototype.format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) { if (o.hasOwnProperty(k)) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } return fmt; }; Date.prototype.diff = function (diffType,endDate) { return GetDateDiff(this, endDate, diffType); } function DateFormatter(v, r, i, f) { if (!v) { return ""; } var date = new Date(v); var str = date.format('yyyy-MM-dd'); r[f] = str; return str; } function DateTimeFormatter(v, r, i, f) { if (!v) { return ""; } var date = new Date(v); var str = date.format('yyyy-MM-dd hh:mm:ss'); r[f] = str; return str; } /* * 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒 * 其中,年月日为全格式,例如 : 2010-10-12 01:00:00 * 返回精度为:秒,分,小时,天 */ function GetDateDiff(startTime, endTime, diffType) { //startTime = startTime.replace(/-/g, "/"); //endTime = endTime.replace(/-/g, "/"); diffType = diffType.toLowerCase(); var sTime = typeof startTime === 'string' ? new Date(startTime) : startTime; //开始时间 var eTime = typeof endTime === 'string' ? new Date(endTime) : endTime; //结束时间 //作为除数的数字 var divNum = 1; switch (diffType) { case "second": case "s": divNum = 1000; break; case "minute": case "m": divNum = 1000 * 60; break; case "hour": case "h": divNum = 1000 * 3600; break; case "day": case "d": divNum = 1000 * 3600 * 24; break; default: break; } return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(divNum)); // } $(function () { //Configure blockUI if ($.blockUI) { $.blockUI.defaults.baseZ = 20000; } $('select:not(.ajax-select)').select2(); $('select.ajax-select').each(function() { var $this = $(this); var tKey = function() { return $this.data('table-key') }, cKey = function() { return $this.data('column-key') }, take = function() { return $this.data('take-count') }, funResultTemplate = function() { return $this.data('fun-result-template-name') }; console.log("ajax-select", tKey(), cKey(), take(), funResultTemplate()); $this.select2({ ajax: { url: abp.appUrl + "Query/AcInfos", type: "post", dataType: 'json', delay: 250, data: function(params) { //console.log(params); var page = params.page || 1; var queryParam = { TableKey: tKey(), ColumnKey: cKey(), NameKey: params.term, // search term Skip: (page - 1) * take(), Take: take() }; return queryParam; }, processResults: function(data, params) { console.log(data, params); params.page = params.page || 1; var result = { results: data.items.map(function(v) { v.id = v.valueKey; v.text = v.nameKey; return v; }), pagination: { more: (params.page * 10) < data.totalCount } }; //console.log(data, params); return result; }, transport: function(params, success, failure) { //console.log("1", params); params = params || {}; params.success = success; params.error = failure; var $request = $.iwbAjax41(params); return $request; }, cache: true }, cache: true, minimumInputLength: 0, templateResult: function(res) { if (res.loading) { return res.text; } var funR = window[funResultTemplate()]; if (funR && $.isFunction(funR)) { return funR(res); } else { return '{0}'.format(res.text); } }, templateSelection: function(res) { return res.text; } }); }); $('.iwb-date-time').iwbDate({ language: window.lang }); $('.iwb-date').iwbDate({ language: window.lang }); }); function ChangAjaxSelectValue($this, val, name) { if (name && val) { var option = new Option(name, val); $this.html(option).trigger('change'); } else if(val){ var tKey = $this.data('table-key'), cKey = $this.data('column-key'); $.iwbAjax41({ url: abp.appUrl + "Query/AcInfo", data: { TableKey: tKey, ColumnKey: cKey, ValueKey: val }, success: function (res) { if (res) { var option = new Option(res.nameKey, res.valueKey); $this.html(option).trigger('change'); } } }); } } var cnMsg = { required: "必填", remote: "请修正该字段", email: "请输入正确格式的电子邮件", url: "请输入合法的网址", date: "请输入合法的日期", dateISO: "请输入日期(yyyy-MM-dd)", number: "请输入合法的数字", digits: "请输入合法的整数", creditcard: "请输入合法的信用卡号", equalTo: "请再次输入相同的值", accept: "请输入拥有合法后缀名的字符串", //maxlength: jQuery.format("请输入一个长度最多是 {0} 的字符串"), //minlength: jquery.format("请输入一个长度最少是 {0} 的字符串"), //rangelength: jQuery.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"), //range: jQuery.format("请输入一个介于 {0} 和 {1} 之间的值"), //max: jQuery.format("请输入一个最大为 {0} 的值"), //min: jQuery.format("请输入一个最小为 {0} 的值") }; jQuery.extend(jQuery.validator.messages, cnMsg); // 身份证号码验证 jQuery.validator.addMethod("isIdCardNo", function (value, element) { return this.optional(element) || idCardNoUtil.checkIdCardNo(value);//调用验证的方法 }, "请正确填写身份证号码"); var idCardNoUtil = { provinceAndCities: { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" }, powers: ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"], parityBit: ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"], genders: { male: "男", female: "女" }, checkAddressCode: function (addressCode) { var check = /^[1-9]\d{5}$/.test(addressCode); if (!check) return false; if (idCardNoUtil.provinceAndCities[parseInt(addressCode.substring(0, 2))]) { return true; } else { return false; } }, checkBirthDayCode: function (birDayCode) { var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode); if (!check) return false; var yyyy = parseInt(birDayCode.substring(0, 4), 10); var mm = parseInt(birDayCode.substring(4, 6), 10); var dd = parseInt(birDayCode.substring(6), 10); var xdata = new Date(yyyy, mm - 1, dd); if (xdata > new Date()) { return false; //生日不能大于当前日期 } else if ((xdata.getFullYear() === yyyy) && (xdata.getMonth() === mm - 1) && (xdata.getDate() === dd)) { return true; } else { return false; } }, getParityBit: function (idCardNo) { var id17 = idCardNo.substring(0, 17); var power = 0; for (var i = 0; i < 17; i++) { power += parseInt(id17.charAt(i), 10) * parseInt(idCardNoUtil.powers[i]); } var mod = power % 11; return idCardNoUtil.parityBit[mod]; }, checkParityBit: function (idCardNo) { var parityBit = idCardNo.charAt(17).toUpperCase(); if (idCardNoUtil.getParityBit(idCardNo) === parityBit) { return true; } else { return false; } }, checkIdCardNo: function (idCardNo) { //15位和18位身份证号码的基本校验 var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo); if (!check) return false; //判断长度为15位或18位 if (idCardNo.length === 15) { return idCardNoUtil.check15IdCardNo(idCardNo); } else if (idCardNo.length === 18) { return idCardNoUtil.check18IdCardNo(idCardNo); } else { return false; } }, //校验15位的身份证号码 check15IdCardNo: function (idCardNo) { //15位身份证号码的基本校验 var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo); if (!check) return false; //校验地址码 var addressCode = idCardNo.substring(0, 6); check = idCardNoUtil.checkAddressCode(addressCode); if (!check) return false; var birDayCode = '19' + idCardNo.substring(6, 12); //校验日期码 return idCardNoUtil.checkBirthDayCode(birDayCode); }, //校验18位的身份证号码 check18IdCardNo: function (idCardNo) { //18位身份证号码的基本格式校验 var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo); if (!check) return false; //校验地址码 var addressCode = idCardNo.substring(0, 6); check = idCardNoUtil.checkAddressCode(addressCode); if (!check) return false; //校验日期码 var birDayCode = idCardNo.substring(6, 14); check = idCardNoUtil.checkBirthDayCode(birDayCode); if (!check) return false; //验证校检码 return idCardNoUtil.checkParityBit(idCardNo); } , formateDateCN: function (day) { var yyyy = day.substring(0, 4); var mm = day.substring(4, 6); var dd = day.substring(6); return yyyy + '-' + mm + '-' + dd; }, //获取信息 getIdCardInfo: function (idCardNo) { var idCardInfo = { gender: "", //性别 birthday: "" // 出生日期(yyyy-mm-dd) }; var aday; if (idCardNo.length === 15) { aday = '19' + idCardNo.substring(6, 12); idCardInfo.birthday = idCardNoUtil.formateDateCN(aday); if (parseInt(idCardNo.charAt(14)) % 2 === 0) { idCardInfo.gender = idCardNoUtil.genders.female; } else { idCardInfo.gender = idCardNoUtil.genders.male; } } else if (idCardNo.length === 18) { aday = idCardNo.substring(6, 14); idCardInfo.birthday = idCardNoUtil.formateDateCN(aday); if (parseInt(idCardNo.charAt(16)) % 2 === 0) { idCardInfo.gender = idCardNoUtil.genders.female; } else { idCardInfo.gender = idCardNoUtil.genders.male; } } return idCardInfo; }, getId15: function (idCardNo) { if (idCardNo.length === 15) { return idCardNo; } else if (idCardNo.length === 18) { return idCardNo.substring(0, 6) + idCardNo.substring(8, 17); } else { return null; } }, getId18: function (idCardNo) { if (idCardNo.length === 15) { var id17 = idCardNo.substring(0, 6) + '19' + idCardNo.substring(6); var parityBit = idCardNoUtil.getParityBit(id17); return id17 + parityBit; } else if (idCardNo.length === 18) { return idCardNo; } else { return null; } } };