commonUtilService.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. "use strict";
  2. angular.module('app.business').service("commonUtilService", function($http, $q, $rootScope, APP_CONFIG) {
  3. /*---------------js 两个数加 ------------------------------*/
  4. this.accAdd = function(arg1, arg2) {
  5. if (arg1 == '' || arg1 == null || arg1 == undefined) {
  6. arg1 = 0;
  7. }
  8. if (arg2 == '' || arg2 == null || arg2 == undefined) {
  9. arg2 = 0;
  10. }
  11. var r1 = 0, r2 = 0, m;
  12. try {r1 = arg1.toString().split(".")[1].length;} catch(e) {}
  13. try {r2 = arg2.toString().split(".")[1].length;} catch(e) {}
  14. // 相加,小数位数为两个数中小数最长的.
  15. m=Math.pow(10,Math.max(r1,r2));
  16. return (arg1*m+arg2*m)/m;
  17. }
  18. /*---------------js 两个数减 ------------------------------*/
  19. this.accSub = function(arg1, arg2) {
  20. if (arg1 == '' || arg1 == null || arg1 == undefined) {
  21. arg1 = 0;
  22. }
  23. if (arg2 == '' || arg2 == null || arg2 == undefined) {
  24. arg2 = 0;
  25. }
  26. var r1 = 0, r2 = 0, m, n;
  27. try {r1=arg1.toString().split(".")[1].length; } catch(e) {}
  28. try {r2=arg2.toString().split(".")[1].length; } catch(e) {}
  29. // 相加,小数位数为两个数中小数最长的.
  30. m=Math.pow(10,Math.max(r1,r2));
  31. n=(r1>=r2)?r1:r2;
  32. return ((arg1*m-arg2*m)/m).toFixed(n);
  33. }
  34. /*---------------js 两个数相乘 ------------------------------*/
  35. this.accMul = function(num1, num2) {
  36. if (num1 == '' || num1 == null || num1 == undefined) {
  37. num1 = 0;
  38. }
  39. if (num2 == '' || num2 == null || num2 == undefined) {
  40. num2 = 0;
  41. }
  42. var m = 0;
  43. var n = 0;
  44. var s1 = num1.toString();
  45. var s2 = num2.toString();
  46. // 相乘,小数位数为两个数小数之和.
  47. try { m = s1.split(".")[1].length; } catch (e) {};
  48. try { n = s2.split(".")[1].length; } catch (e) {};
  49. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m+n);
  50. }
  51. /*---------------js 两个数除 ------------------------------*/
  52. this.accDiv = function(arg1, arg2) {
  53. if (arg1 == '' || arg1 == null || arg1 == undefined) {
  54. arg1 = 0;
  55. }
  56. if (arg2 == '' || arg2 == null || arg2 == undefined) {
  57. arg2 = 0;
  58. }
  59. var t1=0,t2=0,r1,r2;
  60. try {t1=arg1.toString().split(".")[1].length;} catch (e) {}
  61. try {t2=arg2.toString().split(".")[1].length;} catch (e) {}
  62. r1=Number(arg1.toString().replace(".",""));
  63. r2=Number(arg2.toString().replace(".",""));
  64. // 相除,小数位数为两个数小数之差.
  65. return this.accMul((r1/r2), Math.pow(10,t2-t1));
  66. }
  67. /*---------------js 数字转大写金额 单位(元 角分)-----------------------*/
  68. this.JEDX = function(num) {
  69. if (isNaN(num)) {
  70. return "无效数值!";
  71. }
  72. var strPrefix="";
  73. if(num < 0) {
  74. strPrefix ="(负)";
  75. }
  76. num = Math.abs(num);
  77. if (num >= 1000000000000) {
  78. return "无效数值!";
  79. }
  80. var strOutput = "";
  81. var strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分';
  82. num += "00";
  83. var intPos = num.indexOf('.');
  84. if (intPos >= 0) {
  85. num = num.substring(0, intPos) + num.substr(intPos + 1, 2);
  86. }
  87. strUnit = strUnit.substr(strUnit.length - num.length);
  88. for (var i=0; i < num.length; i++) {
  89. strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i,1),1) + strUnit.substr(i,1);
  90. }
  91. return strPrefix + strOutput.replace(/零角零分$/, '整').replace(/零分$/, '').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元");
  92. };
  93. //加
  94. this.accAdds = function(arg1, arg2,arg3, arg4,arg5, arg6) {
  95. if (arg1 == '' || arg1 == null || arg1 == undefined) {
  96. arg1 = 0;
  97. }
  98. if (arg2 == '' || arg2 == null || arg2 == undefined) {
  99. arg2 = 0;
  100. }
  101. if (arg3 == '' || arg3 == null || arg3 == undefined) {
  102. arg3 = 0;
  103. }
  104. if (arg4 == '' || arg4 == null || arg4 == undefined) {
  105. arg4 = 0;
  106. }
  107. if (arg5 == '' || arg5 == null || arg5 == undefined) {
  108. arg5 = 0;
  109. }
  110. if (arg6 == '' || arg6 == null || arg6 == undefined) {
  111. arg6 = 0;
  112. }
  113. var r1 = 0, r2 = 0,r3 = 0,r4 = 0,r5 = 0,r6 = 0, m;
  114. try {r1 = arg1.toString().split(".")[1].length;} catch(e) {}
  115. try {r2 = arg2.toString().split(".")[1].length;} catch(e) {}
  116. try {r3 = arg3.toString().split(".")[1].length;} catch(e) {}
  117. try {r4 = arg4.toString().split(".")[1].length;} catch(e) {}
  118. try {r5 = arg5.toString().split(".")[1].length;} catch(e) {}
  119. try {r6 = arg6.toString().split(".")[1].length;} catch(e) {}
  120. // 相加,小数位数为两个数中小数最长的.
  121. m=Math.pow(10,Math.max(r1,r2,r3,r4,r5,r6));
  122. return (arg1*m+arg2*m+arg3*m+arg4*m+arg5*m+arg6*m)/m;
  123. }
  124. //四舍五入保留一位小数
  125. this.getMath1 = function(v) {
  126. if (isNaN(v) || v == "") {
  127. v = "0.0";
  128. } else {
  129. v = Math.round(v*10)/10;
  130. v = v.toString();
  131. var rs = v.indexOf('.');
  132. if(rs < 0){
  133. v = v + ".0";
  134. }else{
  135. while(v.length <= rs + 1){v += '0';}
  136. }
  137. }
  138. return v;
  139. }
  140. //四舍五入保留两位小数
  141. this.getMath = function(v) {
  142. if (isNaN(v) || v == "") {
  143. v = "0.00";
  144. } else {
  145. v = Math.round(v*100)/100;
  146. v = v.toString();
  147. var rs = v.indexOf('.');
  148. if(rs < 0){
  149. v = v + ".00";
  150. }else{
  151. while(v.length <= rs + 2){v += '0';}
  152. }
  153. }
  154. return v;
  155. }
  156. //将v四舍五入,且保留n位小数(这个方法有异常,不准)
  157. this.getMath_N = function(v, n) {
  158. if (isNaN(v) || v == "") {
  159. if (isNaN(n) || v == "") {
  160. v = "0.00";
  161. } else if (n == 0) {
  162. v = "0";
  163. } else {
  164. v = "";
  165. for (var i = 1; i <= n; i++) {
  166. if (i == 1) {
  167. v = "0.0";
  168. } else {
  169. v = v+"0";
  170. }
  171. }
  172. }
  173. } else {
  174. v = Math.round(v*100)/100;
  175. v = v.toString();
  176. var rs = v.indexOf('.');
  177. if (rs < 0) {
  178. if (n > 0) {
  179. for (var i = 1; i <= n; i++) {
  180. if (i == 1) {
  181. v = v+".0";
  182. } else {
  183. v = v+"0";
  184. }
  185. }
  186. }
  187. }else{
  188. while(v.length <= rs + n){v += '0';}
  189. }
  190. }
  191. return v;
  192. }
  193. /**
  194. * 判断奇进偶舍(目前最多保留两位小数)
  195. * v:原数据值
  196. * n:要保留的小数位数
  197. */
  198. this.checkJqos = function(v, n) {
  199. if (!isNaN(v) && v != "") {
  200. var pos = v.toString().indexOf(".");
  201. if (pos == -1) {
  202. var f = n;
  203. v = v + ".";
  204. for (var i = 0; i < n+1; i++) {
  205. v=v+"0";
  206. }
  207. } else {
  208. var len = v.toString().substr(pos + 1, v.toString().length).length;
  209. if (len<(n+1)) {
  210. var d = n+1;
  211. var s = d-len;//计算少了少几位小数
  212. //把少的位置补上
  213. for (var i = 0; i < s; i++) {
  214. v=v+"0";
  215. }
  216. }
  217. var intv, secondNum, firstNum;
  218. if (n==1) {
  219. intv = v.toString().substr(0, pos);
  220. secondNum = parseInt(v.toString().substr(pos + 2, 1)); //第二位小数
  221. firstNum = parseInt(v.toString().substr(pos + 1, 1)); //第一位小数
  222. if (secondNum == 5) {
  223. if (firstNum % 2 == 0) {
  224. v = intv.toString()+'.'+firstNum.toString()+'4';
  225. } else {
  226. v = intv.toString()+'.'+firstNum.toString()+'6';
  227. }
  228. } else {
  229. v = intv.toString()+'.'+firstNum.toString()+secondNum.toString();
  230. }
  231. } else if (n==2) {
  232. intv = v.toString().substr(0, pos+2);
  233. firstNum = parseInt(v.toString().substr(pos + 2, 1)); //第二位小数
  234. secondNum = parseInt(v.toString().substr(pos + 3, 1)); //第三位小数
  235. if (secondNum == 5) {
  236. if (firstNum % 2 == 0) {
  237. v = intv.toString()+firstNum.toString()+'4';
  238. } else {
  239. v = intv.toString()+firstNum.toString()+'6';
  240. }
  241. } else {
  242. v = intv.toString()+firstNum.toString()+secondNum.toString();
  243. }
  244. }
  245. }
  246. if (n==2) {
  247. v = this.getMath(v);
  248. }
  249. if (n==1) {
  250. v = this.getMath1(v);
  251. }
  252. } else {
  253. v = 0.0
  254. }
  255. return v;
  256. }
  257. /**
  258. * 获取仓房或油罐的保管员
  259. */
  260. this.getKeeperNames = function(houseId) {
  261. var keeperNames;
  262. var datatype = $rootScope.storehouseObj[houseId].datatype;
  263. if (datatype == "0") {
  264. keeperNames = $rootScope.storehouseObj[houseId].dutystoreman;
  265. } else if (datatype == "1") {
  266. keeperNames = $rootScope.tankObj[houseId].keeperNames;
  267. } else {
  268. keeperNames = null;
  269. console.log("无法区分数据是油罐还是仓房");
  270. }
  271. return keeperNames
  272. }
  273. /**
  274. * 树形下拉框处理
  275. */
  276. this.getTreeList = function(data) {
  277. var e = [];
  278. if (data.length != 0) {
  279. //要插入的json对象串
  280. var a = {"id":null,"name":"请选择","children":[]};
  281. //将返回的json对象和要插入的json对象串转换为字符串格式
  282. var f = angular.toJson(a);
  283. var b = angular.toJson(data);
  284. //把要插入的json对象串插入返回数据的最前面
  285. var c = b.substring(0,1);
  286. var d = b.substring(1,b.length);
  287. e = c + f + "," + d;
  288. }
  289. //最后在转换为json对象返回去
  290. return angular.fromJson(e);
  291. }
  292. })