|
|
|
|
function numberFormat(obj, decimals) {
|
|
|
|
|
/*
|
|
|
|
|
* 参数说明:
|
|
|
|
|
* number:要格式化的数字
|
|
|
|
|
* decimals:保留几位小数
|
|
|
|
|
* roundtag:舍入参数,默认 ‘ceil‘ 向上取,‘floor‘向下取,‘round‘ 四舍五入
|
|
|
|
|
* */
|
|
|
|
|
var number = obj.value;
|
|
|
|
|
//obj不是对象的判断
|
|
|
|
|
if (number == undefined) {
|
|
|
|
|
number = obj;
|
|
|
|
|
}
|
|
|
|
|
number = (number + "").replace(/[^0-9+-Ee.]/g, "");
|
|
|
|
|
number = number.replace(/,/g, "");
|
|
|
|
|
roundtag = "round"; // 四舍五入
|
|
|
|
|
var n = !isFinite(+number) ? 0 : +number;
|
|
|
|
|
var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);
|
|
|
|
|
var sep = ","; //千分位符号
|
|
|
|
|
var dec = "."; //小数点符号
|
|
|
|
|
var s = "";
|
|
|
|
|
var toFixedFix = function (n, prec) {
|
|
|
|
|
var k = Math.pow(10, prec);
|
|
|
|
|
|
|
|
|
|
return "" + parseFloat(Math[roundtag](parseFloat((n * k).toFixed(prec * 2))).toFixed(prec * 2)) / k
|
|
|
|
|
}
|
|
|
|
|
s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split(".");
|
|
|
|
|
var re = /(-?\d+)(\d{3})/;
|
|
|
|
|
while (re.test(s[0])) {
|
|
|
|
|
s[0] = s[0].replace(re, "$1" + sep + "$2");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((s[1] || "").length < prec) {
|
|
|
|
|
s[1] = s[1] || "";
|
|
|
|
|
s[1] += new Array(prec - s[1].length + 1).join("0");
|
|
|
|
|
}
|
|
|
|
|
//obj不是对象的判断
|
|
|
|
|
if (obj.value == undefined) {
|
|
|
|
|
return s.join(dec);
|
|
|
|
|
}
|
|
|
|
|
obj.value = s.join(dec);//给原input框重新赋值
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 输入验证firfox, ff浏览器不支持execCommand()
|
|
|
|
|
*/
|
|
|
|
|
function isFF() {
|
|
|
|
|
return navigator.userAgent.indexOf("Firefox") > 0;
|
|
|
|
|
}
|
|
|
|
|
function valitationBefore(o, validateType) {
|
|
|
|
|
if (isFF()) {
|
|
|
|
|
var value = o.value;
|
|
|
|
|
var flag = false;
|
|
|
|
|
switch (validateType) {
|
|
|
|
|
case "int":
|
|
|
|
|
flag = (!isNaN(value) && value % 1 === 0);
|
|
|
|
|
break;
|
|
|
|
|
case "float":
|
|
|
|
|
case "money":
|
|
|
|
|
if (value.indexOf("-") == 0 && value.length == 1)
|
|
|
|
|
break;
|
|
|
|
|
else {
|
|
|
|
|
flag = !isNaN(value);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (flag) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var idx = 0;
|
|
|
|
|
var oldCount = 0;
|
|
|
|
|
function valitationAfter(o, validateType) {
|
|
|
|
|
idx = getCursortPosition(o);
|
|
|
|
|
oldCount = getStrCount(o.value.toString().substr(0, idx), ',');
|
|
|
|
|
var value = o.value;
|
|
|
|
|
value = value.replace(/[^\d.-]/g, "");
|
|
|
|
|
|
|
|
|
|
if (isFF()) {
|
|
|
|
|
var flag = false;
|
|
|
|
|
switch (validateType) {
|
|
|
|
|
case "int":
|
|
|
|
|
flag = (!isNaN(value) && value % 1 === 0);
|
|
|
|
|
break;
|
|
|
|
|
case "float":
|
|
|
|
|
case "money":
|
|
|
|
|
if (value.indexOf("-") == 0 && value.length == 1)
|
|
|
|
|
break;
|
|
|
|
|
else {
|
|
|
|
|
flag = !isNaN(value);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!flag) {
|
|
|
|
|
o.value = 0;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
var flag = false;
|
|
|
|
|
if (validateType == "int")
|
|
|
|
|
o.value = value.replace(/[^\d-]/g, "");
|
|
|
|
|
if (isNaN(value)) execCommand('undo');
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 输入验证firfox, ff浏览器不支持execCommand()
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function limitLength(obj, length) {
|
|
|
|
|
obj.value = obj.value.replace(/[^\d.-]/g, ""); //清除“数字”和“.”以外的字符 ;
|
|
|
|
|
if (length != null && length != "" && length != "undefined") {
|
|
|
|
|
if (obj.value.indexOf('.') >= 0 && obj.value.split('.')[1].length > length) {
|
|
|
|
|
obj.value = obj.value.substring(0, obj.value.length - 1);
|
|
|
|
|
//obj.focus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//类型为Money时输入设置
|
|
|
|
|
function clearNoNum(obj) {
|
|
|
|
|
//修复第一个字符是小数点 的情况.
|
|
|
|
|
if (obj.value != '' && obj.value.substr(0, 1) == '.') {
|
|
|
|
|
obj.value = 0 + obj.value;
|
|
|
|
|
}
|
|
|
|
|
if (obj.value == "")
|
|
|
|
|
obj.value = 0.00;
|
|
|
|
|
|
|
|
|
|
if (!/\./.test(obj.value)) //为整数字符串在末尾添加.00
|
|
|
|
|
obj.value += '.00';
|
|
|
|
|
|
|
|
|
|
obj.value = obj.value.replace(/^0*(0\.|[1-9])/, '$1'); //解决 粘贴不生效
|
|
|
|
|
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
|
|
|
|
|
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
|
|
|
|
|
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
|
|
|
|
|
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
|
|
|
|
|
if (obj.value.indexOf(".") < 0 && obj.value != "") {//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
|
|
|
|
|
if (obj.value.substr(0, 1) == '0' && obj.value.length == 2) {
|
|
|
|
|
obj.value = obj.value.substr(1, obj.value.length);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//设置光标位置
|
|
|
|
|
function setCaretPosition(ctrl, pos) {
|
|
|
|
|
if (ctrl.setSelectionRange) {
|
|
|
|
|
ctrl.focus();
|
|
|
|
|
//ctrl.setSelectionRange(pos, pos);
|
|
|
|
|
}
|
|
|
|
|
else if (ctrl.createTextRange) {
|
|
|
|
|
var range = ctrl.createTextRange();
|
|
|
|
|
range.collapse(false);
|
|
|
|
|
range.moveEnd('character', pos);
|
|
|
|
|
range.moveStart('character', pos);
|
|
|
|
|
range.select();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取光标位置
|
|
|
|
|
function getCursortPosition(ctrl) {
|
|
|
|
|
var CaretPos = 0; // IE Support
|
|
|
|
|
if (document.selection) {
|
|
|
|
|
ctrl.focus();
|
|
|
|
|
var Sel = document.selection.createRange();
|
|
|
|
|
Sel.moveStart('character', -ctrl.value.length);
|
|
|
|
|
CaretPos = Sel.text.length;
|
|
|
|
|
}
|
|
|
|
|
// Firefox support
|
|
|
|
|
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
|
|
|
|
|
CaretPos = ctrl.selectionStart;
|
|
|
|
|
return (CaretPos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function FormatMoney(obj, precision, separator) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//统计字符串中特定字符串的个数
|
|
|
|
|
function getStrCount(scrstr, armstr) { //scrstr 源字符串 armstr 特殊字符
|
|
|
|
|
var count = 0;
|
|
|
|
|
while (scrstr.indexOf(armstr) >= 1) {
|
|
|
|
|
scrstr = scrstr.replace(armstr, "")
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
return count;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 将数值格式化成金额形式
|
|
|
|
|
*
|
|
|
|
|
* @param num 数值(Number或者String)
|
|
|
|
|
* @param precision 精度,默认不变
|
|
|
|
|
* @param separator 分隔符,默认为逗号
|
|
|
|
|
* @return 金额格式的字符串,如'1,234,567',默认返回NaN
|
|
|
|
|
* @type String
|
|
|
|
|
*/
|
|
|
|
|
function formatNumber(num, precision, separator) {
|
|
|
|
|
if (precision != 2)
|
|
|
|
|
return num;
|
|
|
|
|
var parts;
|
|
|
|
|
// 判断是否为数字
|
|
|
|
|
if (!isNaN(parseFloat(num)) && isFinite(num)) {
|
|
|
|
|
// 把类似 .5, 5. 之类的数据转化成0.5, 5, 为数据精度处理做准, 至于为什么
|
|
|
|
|
// 不在判断中直接写 if (!isNaN(num = parseFloat(num)) && isFinite(num))
|
|
|
|
|
// 是因为parseFloat有一个奇怪的精度问题, 比如 parseFloat(12312312.1234567119)
|
|
|
|
|
// 的值变成了 12312312.123456713
|
|
|
|
|
num = Number(num);
|
|
|
|
|
// 处理小数点位数
|
|
|
|
|
num = (typeof precision !== 'undefined' ? (Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision)).toFixed(precision) : num).toString();
|
|
|
|
|
// 分离数字的小数部分和整数部分
|
|
|
|
|
parts = num.split('.');
|
|
|
|
|
// 整数部分加[separator]分隔, 借用一个著名的正则表达式
|
|
|
|
|
parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + (separator || ','));
|
|
|
|
|
|
|
|
|
|
return parts.join('.');
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//身份证信息
|
|
|
|
|
function GetIDCardInfo(obj) {
|
|
|
|
|
var formData = new FormData();
|
|
|
|
|
formData.append("file", obj.files[0]);
|
|
|
|
|
var url = dynamicHandler + "?DoType=HttpHandler&DoMethod=GetIDCardInfo&HttpHandlerName=BP.WF.HttpHandler.CCMobile_CCForm";
|
|
|
|
|
$.ajax({
|
|
|
|
|
type: "post",
|
|
|
|
|
url: url,
|
|
|
|
|
data: formData,
|
|
|
|
|
processData: false,
|
|
|
|
|
contentType: false,
|
|
|
|
|
|
|
|
|
|
success: function (data) {
|
|
|
|
|
data = JSON.parse(data);
|
|
|
|
|
if (data.error_code != undefined) {
|
|
|
|
|
console.log(data);
|
|
|
|
|
alert('上传身份证解析错误:' + data.error_code + data.error_msg);
|
|
|
|
|
} else {
|
|
|
|
|
//显示给指定的字段赋值
|
|
|
|
|
$("#TB_IDCardName").val(data.words_result.姓名.words);
|
|
|
|
|
$("#TB_IDCardNo").val(data.words_result.公民身份号码.words);
|
|
|
|
|
$("#TB_IDCardAddress").val(data.words_result.住址.words);
|
|
|
|
|
$("#TB_IDCardName").html(data.words_result.姓名.words);
|
|
|
|
|
$("#TB_IDCardNo").html(data.words_result.公民身份号码.words);
|
|
|
|
|
$("#TB_IDCardAddress").html(data.words_result.住址.words);
|
|
|
|
|
//data.words_result.出生.words data.words_result.性别.words data.words_result.民族.words
|
|
|
|
|
var mianData;
|
|
|
|
|
if (flowData != null && flowData != undefined)
|
|
|
|
|
mianData = flowData;
|
|
|
|
|
if ((mianData == null || mianData == undefined) && (frmData != null && frmData != undefined))
|
|
|
|
|
mianData = frmData;
|
|
|
|
|
if (mianData != null && mianData != undefined) {
|
|
|
|
|
var mapExts = mianData.Sys_MapExt;
|
|
|
|
|
var mapAttrs = mianData.Sys_MapAttr;
|
|
|
|
|
for (var i = 0; i < mapExts.length; i++) {
|
|
|
|
|
var mapExt = mapExts[i];
|
|
|
|
|
var mapAttr = null;
|
|
|
|
|
for (var j = 0; j < mapAttrs.length; j++) {
|
|
|
|
|
if (mapAttrs[j].FK_MapData == mapExt.FK_MapData && mapAttrs[j].KeyOfEn == mapExt.AttrOfOper) {
|
|
|
|
|
mapAttr = mapAttrs[j];
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (mapAttr == null)
|
|
|
|
|
continue;
|
|
|
|
|
if (mapAttr.UIContralType != 13)
|
|
|
|
|
continue;
|
|
|
|
|
var DDLFull = GetPara(mapAttr.AtPara, "IsFullData");
|
|
|
|
|
if (DDLFull != undefined && DDLFull != "" && DDLFull == "1" && (mapExt.MyPK.indexOf("DDLFullCtrl") != -1)) {
|
|
|
|
|
FullIt($("#TB_" + mapExt.AttrOfOper).val(), mapExt.MyPK, "TB_" + mapExt.AttrOfOper);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
error: function (e) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取企业微信当前系统所在的位置
|
|
|
|
|
function GetWXFixed(callback) {
|
|
|
|
|
//获取配置信息
|
|
|
|
|
if ($("#TB_fixed").length == 0 && $("#TB_JD").attr("disabled") == "disabled") {
|
|
|
|
|
var handler = new HttpHandler("BP.WF.HttpHandler.CCMobile_CCForm");
|
|
|
|
|
var url = GetHrefUrl().split('#')[0];
|
|
|
|
|
handler.AddPara("htmlPage", url);
|
|
|
|
|
var data = handler.DoMethodReturnString("GetWXConfigSetting");
|
|
|
|
|
if (data.indexOf("err@") != -1) {
|
|
|
|
|
alert(data);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
var pushData = cceval('(' + data + ')');
|
|
|
|
|
|
|
|
|
|
var appId = pushData.AppID;
|
|
|
|
|
var timestamp = pushData.timestamp;
|
|
|
|
|
var nonceStr = pushData.nonceStr;
|
|
|
|
|
var signature = pushData.signature;
|
|
|
|
|
$("#TB_WD").removeAttr("disabled");
|
|
|
|
|
$("#TB_JD").removeAttr("disabled");
|
|
|
|
|
|
|
|
|
|
wx.config({
|
|
|
|
|
debug: false,
|
|
|
|
|
appId: appId,
|
|
|
|
|
timestamp: timestamp,
|
|
|
|
|
nonceStr: nonceStr,
|
|
|
|
|
signature: signature,
|
|
|
|
|
jsApiList: ['openLocation', 'getLocation']
|
|
|
|
|
});
|
|
|
|
|
wx.ready(function () {
|
|
|
|
|
var isCheck = false;
|
|
|
|
|
wx.checkJsApi({
|
|
|
|
|
jsApiList: [
|
|
|
|
|
'checkJsApi',
|
|
|
|
|
'getLocation'
|
|
|
|
|
],
|
|
|
|
|
success: function (res) {
|
|
|
|
|
isCheck = res.checkResult.getLocation;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
wx.getLocation({
|
|
|
|
|
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
|
|
|
|
|
success: function (res) {
|
|
|
|
|
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
|
|
|
|
|
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
|
|
|
|
|
|
|
|
|
|
$("#TB_WD").val(latitude);
|
|
|
|
|
$("#TB_JD").val(longitude);
|
|
|
|
|
$("#TB_WD").html(latitude);
|
|
|
|
|
$("#TB_JD").html(longitude);
|
|
|
|
|
callback();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
wx.error(function (res) {
|
|
|
|
|
mui.alert(res.errMsg);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
callback();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
function GetFixedInfoByJDWD(JD, WD) {
|
|
|
|
|
var handler = new HttpHandler("BP.WF.HttpHandler.CCMobile_CCForm");
|
|
|
|
|
var url = GetHrefUrl().split('#')[0];
|
|
|
|
|
handler.AddPara("htmlPage", url);
|
|
|
|
|
var data = handler.DoMethodReturnString("GetWXConfigSetting");
|
|
|
|
|
if (data.indexOf("err") != -1) {
|
|
|
|
|
alert(data);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
var pushData = cceval('(' + data + ')');
|
|
|
|
|
|
|
|
|
|
var appId = pushData.AppID;
|
|
|
|
|
var timestamp = pushData.timestamp;
|
|
|
|
|
var nonceStr = pushData.nonceStr;
|
|
|
|
|
var signature = pushData.signature;
|
|
|
|
|
wx.config({
|
|
|
|
|
debug: false,
|
|
|
|
|
appId: appId,
|
|
|
|
|
timestamp: timestamp,
|
|
|
|
|
nonceStr: nonceStr,
|
|
|
|
|
signature: signature,
|
|
|
|
|
jsApiList: ['openLocation', 'getLocation']
|
|
|
|
|
});
|
|
|
|
|
wx.ready(function () {
|
|
|
|
|
var isCheck = false;
|
|
|
|
|
wx.checkJsApi({
|
|
|
|
|
jsApiList: [
|
|
|
|
|
'checkJsApi',
|
|
|
|
|
'openLocation'
|
|
|
|
|
],
|
|
|
|
|
success: function (res) {
|
|
|
|
|
isCheck = res.checkResult.getLocation;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
wx.openLocation({
|
|
|
|
|
latitude: WD, // 纬度,浮点数,范围为90 ~ -90
|
|
|
|
|
longitude: JD, // 经度,浮点数,范围为180 ~ -180。
|
|
|
|
|
name: '', // 位置名
|
|
|
|
|
address: '', // 地址详情说明
|
|
|
|
|
scale: 10, // 地图缩放级别,整形值,范围从1~28。默认为16
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
wx.error(function (res) {
|
|
|
|
|
mui.alert(res.errMsg);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|