"use strict"; angular.module('app.business').service("commonUtilService", function($http, $q, $rootScope, APP_CONFIG) { /*---------------js 两个数加 ------------------------------*/ this.accAdd = function(arg1, arg2) { if (arg1 == '' || arg1 == null || arg1 == undefined) { arg1 = 0; } if (arg2 == '' || arg2 == null || arg2 == undefined) { arg2 = 0; } var r1 = 0, r2 = 0, m; try {r1 = arg1.toString().split(".")[1].length;} catch(e) {} try {r2 = arg2.toString().split(".")[1].length;} catch(e) {} // 相加,小数位数为两个数中小数最长的. m=Math.pow(10,Math.max(r1,r2)); return (arg1*m+arg2*m)/m; } /*---------------js 两个数减 ------------------------------*/ this.accSub = function(arg1, arg2) { if (arg1 == '' || arg1 == null || arg1 == undefined) { arg1 = 0; } if (arg2 == '' || arg2 == null || arg2 == undefined) { arg2 = 0; } var r1 = 0, r2 = 0, m, n; try {r1=arg1.toString().split(".")[1].length; } catch(e) {} try {r2=arg2.toString().split(".")[1].length; } catch(e) {} // 相加,小数位数为两个数中小数最长的. m=Math.pow(10,Math.max(r1,r2)); n=(r1>=r2)?r1:r2; return ((arg1*m-arg2*m)/m).toFixed(n); } /*---------------js 两个数相乘 ------------------------------*/ this.accMul = function(num1, num2) { if (num1 == '' || num1 == null || num1 == undefined) { num1 = 0; } if (num2 == '' || num2 == null || num2 == undefined) { num2 = 0; } var m = 0; var n = 0; var s1 = num1.toString(); var s2 = num2.toString(); // 相乘,小数位数为两个数小数之和. try { m = s1.split(".")[1].length; } catch (e) {}; try { n = s2.split(".")[1].length; } catch (e) {}; return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m+n); } /*---------------js 两个数除 ------------------------------*/ this.accDiv = function(arg1, arg2) { if (arg1 == '' || arg1 == null || arg1 == undefined) { arg1 = 0; } if (arg2 == '' || arg2 == null || arg2 == undefined) { arg2 = 0; } var t1=0,t2=0,r1,r2; try {t1=arg1.toString().split(".")[1].length;} catch (e) {} try {t2=arg2.toString().split(".")[1].length;} catch (e) {} r1=Number(arg1.toString().replace(".","")); r2=Number(arg2.toString().replace(".","")); // 相除,小数位数为两个数小数之差. return this.accMul((r1/r2), Math.pow(10,t2-t1)); } /*---------------js 数字转大写金额 单位(元 角分)-----------------------*/ this.JEDX = function(num) { if (isNaN(num)) { return "无效数值!"; } var strPrefix=""; if(num < 0) { strPrefix ="(负)"; } num = Math.abs(num); if (num >= 1000000000000) { return "无效数值!"; } var strOutput = ""; var strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'; num += "00"; var intPos = num.indexOf('.'); if (intPos >= 0) { num = num.substring(0, intPos) + num.substr(intPos + 1, 2); } strUnit = strUnit.substr(strUnit.length - num.length); for (var i=0; i < num.length; i++) { strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i,1),1) + strUnit.substr(i,1); } return strPrefix + strOutput.replace(/零角零分$/, '整').replace(/零分$/, '').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元"); }; //加 this.accAdds = function(arg1, arg2,arg3, arg4,arg5, arg6) { if (arg1 == '' || arg1 == null || arg1 == undefined) { arg1 = 0; } if (arg2 == '' || arg2 == null || arg2 == undefined) { arg2 = 0; } if (arg3 == '' || arg3 == null || arg3 == undefined) { arg3 = 0; } if (arg4 == '' || arg4 == null || arg4 == undefined) { arg4 = 0; } if (arg5 == '' || arg5 == null || arg5 == undefined) { arg5 = 0; } if (arg6 == '' || arg6 == null || arg6 == undefined) { arg6 = 0; } var r1 = 0, r2 = 0,r3 = 0,r4 = 0,r5 = 0,r6 = 0, m; try {r1 = arg1.toString().split(".")[1].length;} catch(e) {} try {r2 = arg2.toString().split(".")[1].length;} catch(e) {} try {r3 = arg3.toString().split(".")[1].length;} catch(e) {} try {r4 = arg4.toString().split(".")[1].length;} catch(e) {} try {r5 = arg5.toString().split(".")[1].length;} catch(e) {} try {r6 = arg6.toString().split(".")[1].length;} catch(e) {} // 相加,小数位数为两个数中小数最长的. m=Math.pow(10,Math.max(r1,r2,r3,r4,r5,r6)); return (arg1*m+arg2*m+arg3*m+arg4*m+arg5*m+arg6*m)/m; } //四舍五入保留一位小数 this.getMath1 = function(v) { if (isNaN(v) || v == "") { v = "0.0"; } else { v = Math.round(v*10)/10; v = v.toString(); var rs = v.indexOf('.'); if(rs < 0){ v = v + ".0"; }else{ while(v.length <= rs + 1){v += '0';} } } return v; } //四舍五入保留两位小数 this.getMath = function(v) { if (isNaN(v) || v == "") { v = "0.00"; } else { v = Math.round(v*100)/100; v = v.toString(); var rs = v.indexOf('.'); if(rs < 0){ v = v + ".00"; }else{ while(v.length <= rs + 2){v += '0';} } } return v; } //将v四舍五入,且保留n位小数(这个方法有异常,不准) this.getMath_N = function(v, n) { if (isNaN(v) || v == "") { if (isNaN(n) || v == "") { v = "0.00"; } else if (n == 0) { v = "0"; } else { v = ""; for (var i = 1; i <= n; i++) { if (i == 1) { v = "0.0"; } else { v = v+"0"; } } } } else { v = Math.round(v*100)/100; v = v.toString(); var rs = v.indexOf('.'); if (rs < 0) { if (n > 0) { for (var i = 1; i <= n; i++) { if (i == 1) { v = v+".0"; } else { v = v+"0"; } } } }else{ while(v.length <= rs + n){v += '0';} } } return v; } /** * 判断奇进偶舍(目前最多保留两位小数) * v:原数据值 * n:要保留的小数位数 */ this.checkJqos = function(v, n) { if (!isNaN(v) && v != "") { var pos = v.toString().indexOf("."); if (pos == -1) { var f = n; v = v + "."; for (var i = 0; i < n+1; i++) { v=v+"0"; } } else { var len = v.toString().substr(pos + 1, v.toString().length).length; if (len<(n+1)) { var d = n+1; var s = d-len;//计算少了少几位小数 //把少的位置补上 for (var i = 0; i < s; i++) { v=v+"0"; } } var intv, secondNum, firstNum; if (n==1) { intv = v.toString().substr(0, pos); secondNum = parseInt(v.toString().substr(pos + 2, 1)); //第二位小数 firstNum = parseInt(v.toString().substr(pos + 1, 1)); //第一位小数 if (secondNum == 5) { if (firstNum % 2 == 0) { v = intv.toString()+'.'+firstNum.toString()+'4'; } else { v = intv.toString()+'.'+firstNum.toString()+'6'; } } else { v = intv.toString()+'.'+firstNum.toString()+secondNum.toString(); } } else if (n==2) { intv = v.toString().substr(0, pos+2); firstNum = parseInt(v.toString().substr(pos + 2, 1)); //第二位小数 secondNum = parseInt(v.toString().substr(pos + 3, 1)); //第三位小数 if (secondNum == 5) { if (firstNum % 2 == 0) { v = intv.toString()+firstNum.toString()+'4'; } else { v = intv.toString()+firstNum.toString()+'6'; } } else { v = intv.toString()+firstNum.toString()+secondNum.toString(); } } } if (n==2) { v = this.getMath(v); } if (n==1) { v = this.getMath1(v); } } else { v = 0.0 } return v; } /** * 获取仓房或油罐的保管员 */ this.getKeeperNames = function(houseId) { var keeperNames; var datatype = $rootScope.storehouseObj[houseId].datatype; if (datatype == "0") { keeperNames = $rootScope.storehouseObj[houseId].dutystoreman; } else if (datatype == "1") { keeperNames = $rootScope.tankObj[houseId].keeperNames; } else { keeperNames = null; console.log("无法区分数据是油罐还是仓房"); } return keeperNames } /** * 树形下拉框处理 */ this.getTreeList = function(data) { var e = []; if (data.length != 0) { //要插入的json对象串 var a = {"id":null,"name":"请选择","children":[]}; //将返回的json对象和要插入的json对象串转换为字符串格式 var f = angular.toJson(a); var b = angular.toJson(data); //把要插入的json对象串插入返回数据的最前面 var c = b.substring(0,1); var d = b.substring(1,b.length); e = c + f + "," + d; } //最后在转换为json对象返回去 return angular.fromJson(e); } })