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;
}
}
};