| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862 |
- var iwbfuns;
- var select2Opt = window.select2DefaultOption || {};
- var tableActionIcon = '<i class="fa fa-angle-double-right"></i>';
- 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('>增加</button', '>删除</button');
- html = html.replace(new RegExp('data-select2-id="[0-9]*"', "g"), '');
- var $html = $(html).addClass('iwb-dynamic-box-delete').removeAttr('data-select2-id');
- $html.find('.select2').remove();
- $html.find('select').val('').trigger('change');
- $html.find('input').val('');
- $that.parent().append($html);
- return $html;
- }
- function DeleteDynamicBox(that) {
- var $that = $(that).closest('.iwb-dynamic-box');
- $that.remove();
- }
- function OverlayScrollbar(that, opt) {
- var option = $.extend(true,
- {},
- {
- className: "os-theme-thin-dark",
- resize: "n", //[ "none", "both", "horizontal", "vertical" ]shorthand: [ "n", "b", "h", "v" ]
- normalizeRTL: true, //是否应规范化RTL滚动。
- sizeAutoCapable: true,
- clipAlways: true,
- paddingAbsolute: false,
- overflowBehavior: {
- x: "v-h", //[ "hidden", "scroll", "visible-hidden", "visible-scroll" ]shorthand: [ "h", "s", "v-h", "v-s" ]
- y: "s"
- },
- scrollbars: {
- dragScrolling: true,
- clickScrolling: true,
- visibility: "a", //[ "visible", "hidden", "auto" ]shorthand: [ "v", "h", "a" ]
- autoHide: "n", //[ "never", "scroll", "leave", "move" ]shorthand: [ "n", "s", "l", "m" ]
- autoHideDelay: 800
- }
- },
- opt || {});
- $(that).overlayScrollbars(option);
- }
- /*ajax全局设置*/
- $.ajaxSetup({
- type: 'Post',
- timeout: 1000 * 60 * 2,
- //contentType: "application/x-www-form-urlencoded;charset=utf-8",
- contentType: "application/json",
- dataType: "json",
- error: function () {
- abp.ui.clearBusy();
- },
- complete: function (xmlHttpRequest, textStatus) {
- //console.log("Complete - " + textStatus, xmlHttpRequest);
- abp.ui.clearBusy();
- if (textStatus === "timeout") {
- abp.message.error(abp.localization.iwbZero('OpTimeout'));
- console.log("Complete - 操作超时");
- } else if (textStatus !== "success") {
- console.log("Complete - " + textStatus, xmlHttpRequest.responseJSON);
- if (xmlHttpRequest.responseJSON) {
- //var json = xmlHttpRequest.responseJSON;
- } else if (xmlHttpRequest.responseText === "") {
- abp.message.error(abp.localization.iwbZero('OpServerError')).done(function () {
- top.location.reload();
- //top.location.href = "/Account/Login/?ReturnUrl=%2F";
- });
- }
- } else {
- var result = xmlHttpRequest.responseJSON;
- if (result && !result.success && result.error && result.error.message.indexOf('登陆超时') > -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('<a href="%1" onclick="alert(\’%2\’);">%3</a>', 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;
- }
- }
- };
|