highway_daily_plan_statable.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. var locat = (window.location+'').split('/');
  2. $(function(){if('fhsms'== locat[3]){locat = locat[0]+'//'+locat[2];}else{locat = locat[0]+'//'+locat[2]+'/'+locat[3];};});
  3. $(getTop(globalThis).hangge());
  4. var editflag = 0;
  5. var recordData = new Object();
  6. var recordBeforeValue = new Object();
  7. $(function(){
  8. tableInit();
  9. //highlightInit();
  10. });
  11. function tableInit(){
  12. //行内小计列
  13. //setRowSumCell(e);
  14. //预防、修复小中大修分别计算总和
  15. $('.threeNum').each(function(index,e){
  16. setPreTotalCell(e);
  17. });
  18. //数字格式化
  19. $('td.num').each(function(index,e){
  20. var num = $(e).html();
  21. num = numFormat(num);
  22. $(e).html(num);
  23. });
  24. //每行的合计
  25. $('.rowSum').each(function(index,e){
  26. var temp = $(e).attr("class").split(' ');
  27. var classname = temp[2];
  28. //console.log("index:"+index + ",e:"+e + ",classname:"+classname);
  29. setRowTotalCell(e, classname);
  30. });
  31. //计划费用万元格式化
  32. $('td.wnum').each(function(index,e){
  33. var num = $(e).html();
  34. //单位 元=>万元
  35. num = num/10000;
  36. num = numFormat(num);
  37. $(e).html(num);
  38. });
  39. //公司小计
  40. var subtotal = $('.subtotal').find('td[totalType="subtotal"]');
  41. for(var i=0; i<subtotal.length; i++){
  42. var companyid = subtotal.eq(i).parent().attr("id");
  43. var var1=subtotal.eq(i).attr("class");
  44. var var2=var1.split(' ');
  45. var classname = var2[1];
  46. setSubTotalCell(companyid,classname,i);
  47. }
  48. //公司里程小计
  49. var subtotal = $('.subtotal').find('td[totalType="km_subtotal"]');
  50. for(var i=0; i<subtotal.length; i++){
  51. var companyid = subtotal.eq(i).parent().attr("id");
  52. var var1=subtotal.eq(i).attr("class");
  53. var var2=var1.split(' ');
  54. var classname = var2[1];
  55. setKmSubTotalCell(companyid,classname,i);
  56. }
  57. //小计序号
  58. $('.totaltr').find('.indexCell').html($('.edittr').length+1);
  59. //留痕标红
  60. //setRecordInfo();
  61. $("input.editInput").each(function(index,e){
  62. var num = $(e).val();
  63. num = numFormat(num);
  64. $(e).val(num);
  65. });
  66. //预防小修、中修、大修 小计
  67. $('.fourNum').each(function(index,e){
  68. setYFTotalCell(e);
  69. });
  70. $('.sevenNum').each(function(index,e){
  71. setYHJHTotalCell(e);
  72. });
  73. $('.3Num').each(function(index,e){
  74. setXJCell(e);
  75. });
  76. // 修复养护小修、中修、大修 小计
  77. $('.eightNum').each(function(index,e){
  78. setXFYHTotalCell(e);
  79. });
  80. //小计行的总计列
  81. var totalcells = $('.totaltr').find('.sumCell');
  82. for(var i=0; i<totalcells.length; i++){
  83. setTotalCell(i);
  84. }
  85. //里程的总计列
  86. var totalkmcells = $('.totaltr').find('.sumkmCell');
  87. for(var i=0; i<totalkmcells.length; i++){
  88. setKMTotalCell(i);
  89. }
  90. //百分比初始化
  91. $('#Form table tbody tr').each(function(index,e){
  92. //setTrPercentCell(e);
  93. setTrPercentCell2(e);
  94. });
  95. //除法
  96. $('#Form table tbody tr').each(function(index,e){
  97. //setTrPercentCell(e);
  98. setTrDivisionCell(e);
  99. });
  100. }
  101. //明细表input失焦后操作(计算公司审批费用小计)
  102. function editValue(e){
  103. if(!$(e).attr('readonly')){
  104. //公司小计
  105. var subtotal = $('.edittr').find('td[tType="subtotal"]');
  106. for(var i=0; i<subtotal.length; i++){
  107. var companyid = subtotal.eq(i).parent().attr("id");
  108. var var1=subtotal.eq(i).attr("class");
  109. var var2=var1.split(' ');
  110. var classname = var2[2];
  111. setSTotalCell(companyid,classname,i);
  112. }
  113. //小计行的总计列
  114. var totalcells = $('.totaltr').find('.sumCell');
  115. for(var i=0; i<totalcells.length; i++){
  116. setTotalCell(i);
  117. }
  118. }
  119. }
  120. function setSTotalCell(companyid,classname,index){
  121. var totalvalue = 0;
  122. for(var i=0; i<$('.edittr.date.'+companyid).length; i++){
  123. var subcellval = $('.edittr.date.'+companyid).eq(i).find('.AUDIT_FEE').find("INPUT").val();
  124. if(typeof(subcellval) != "undefined")
  125. totalvalue += Number(subcellval);
  126. }
  127. if(totalvalue != 0){
  128. $('.edittr').find('td[tType="subtotal"]').eq(index).html(numFormat(totalvalue) + '');
  129. }
  130. }
  131. function editTable(){
  132. if(editflag == 0){
  133. $('#editbutton').html('编辑中');
  134. $(".editInput").removeAttr("readonly");
  135. $("#savebutton").removeAttr("disabled");
  136. editflag = 1;
  137. }else if(editflag == 1){
  138. $('#editbutton').html('编辑');
  139. $(".editInput").attr("readonly","readonly" );
  140. $("#savebutton").attr("disabled","disabled");
  141. editflag = 0;
  142. }
  143. }
  144. function saveTable(type,year){
  145. $("#savebutton").attr("disabled","disabled");
  146. if(editflag == 1){
  147. $('#editbutton').html('编辑');
  148. $(".editInput").attr("readonly","readonly");
  149. editflag = 0;
  150. }
  151. var tabledata = dataResult();
  152. $.ajax({
  153. type : "post",
  154. url : locat+'/annualPlanKG/saveDailyData.do?TABLETYPE='+type+'&YEAR='+year,
  155. data:{
  156. data:JSON.stringify(tabledata)
  157. },
  158. dataType : 'json',
  159. success : function(data){
  160. if(JSON.stringify(recordData) != "{}") saveRecordInfo();
  161. //保存后更新input原始值
  162. for(var i=0;i<$('.editInput').length;i++){
  163. var e = $('.editInput')[i];
  164. $(e).attr('value',$(e).val());
  165. }
  166. if(data.msg == 'success'){
  167. getTop(globalThis).hangge();
  168. bootbox.dialog({
  169. message: "<span class='bigger-110'>保存成功!</span>",
  170. buttons:
  171. {
  172. "button" :
  173. {
  174. "label" : "确定",
  175. "className" : "btn-sm btn-success",
  176. "callback" : function(){
  177. var selfhref = self.location.href;
  178. self.location.href = selfhref;
  179. }
  180. }
  181. }
  182. });
  183. }else{
  184. getTop(globalThis).hangge();
  185. bootbox.dialog({
  186. message: "<span class='bigger-110'>"+data.msg+"</span>",
  187. buttons:
  188. {
  189. "button" :
  190. {
  191. "label" : "确定",
  192. "className" : "btn-sm btn-success"
  193. }
  194. }
  195. });
  196. }
  197. }
  198. });
  199. }
  200. function dataResult(){
  201. var mapArry = $("#Form").serializeArray();
  202. var dataArry = [];
  203. var cellcount = $('.edittr:eq(0) >td').length;
  204. var recordcount = $('.edittr.date').length;
  205. for(var i=0; i<recordcount; i++){
  206. var recordmap = new Object();
  207. for(var j=0; j<17; j++){
  208. recordmap[mapArry[i*17+j].name] = mapArry[i*17+j].value;
  209. }
  210. dataArry.push(recordmap);
  211. }
  212. return dataArry;
  213. /*var dataArry = [];
  214. var objInputRow = document.getElementById("simple-table").getElementsByTagName("input");
  215. var myArray = makeArray(objInputRow);
  216. var trResult = split_array(myArray,6);
  217. //tr共有6个Input,都需要传入后台,保存;
  218. for (i = 0; i < trResult.length; i++) {
  219. var key = {};
  220. key.AUDIT_FEE = trResult[i][0].value !=""?numFormat(trResult[i][0].value):0;
  221. key.COMPANY_ID = trResult[i][1].value;
  222. key.COMPANY = trResult[i][2].value;
  223. key.ROAD = trResult[i][3].value;
  224. key.ROAD_ID = trResult[i][4].value;
  225. key.YEAR = trResult[i][5].value;
  226. dataArry.push(key);
  227. }
  228. return dataArry;*/
  229. }
  230. function setRowTotalCell(e, classname){
  231. var totalvalue = 0;
  232. for(var i=0; i<$(e).parent().find("td[class*="+classname+"]").length; i++){
  233. /* if(i=="14"){
  234. debugger;
  235. }*/
  236. var subcellval;
  237. if($(e).parent().find("td[class*="+classname+"]").eq(i).find("INPUT").length > 0){
  238. subcellval = $(e).parent().find("td[class*="+classname+"]").eq(i).find("INPUT").val();
  239. //console.log("INPUT:" + "i:"+i+",subcellval:"+ subcellval);
  240. }else{
  241. subcellval = $(e).parent().find("td[class*="+classname+"]").eq(i).html();
  242. }
  243. if(typeof(subcellval) != "undefined" && subcellval != "")
  244. //console.log("i:"+i+",subcellval:"+ subcellval);
  245. totalvalue += Number(subcellval);
  246. }
  247. if(totalvalue != 0 && totalvalue != 'NaN'){
  248. $(e).html(numFormat(totalvalue) + '');
  249. //console.log("setRowTotalCell totalvalue:"+ numFormat(totalvalue));
  250. }
  251. }
  252. function setPreTotalCell(e){
  253. var totalvalue = 0;
  254. var num1 = $(e).parent().find("."+$(e).attr("num3")).html();
  255. var num2 = $(e).parent().find("."+$(e).attr("num4")).html();
  256. var num3 = $(e).parent().find("."+$(e).attr("num5")).html();
  257. if(typeof(num1) != "undefined" && typeof(num2) != "undefined" && typeof(num3) != "undefined"){
  258. totalvalue = Number(num1) + Number(num2) + Number(num3);
  259. }
  260. if(totalvalue != 0){
  261. $(e).html(numFormat(totalvalue) + '');
  262. }
  263. }
  264. function setSubTotalCell(companyid,classname,index){
  265. var totalvalue = 0;
  266. //console.log("setSubTotalCell classname:" + classname);
  267. for(var i=0; i<$('.edittr.'+companyid +' .'+classname).length; i++){
  268. var subcellval;
  269. if($('.edittr.'+companyid +' .'+classname).eq(i).find("INPUT").length > 0){
  270. subcellval = $('.edittr.'+companyid +' .'+classname).eq(i).find("INPUT").val();
  271. }else{
  272. subcellval = $('.edittr.'+companyid +' .'+classname).eq(i).html();
  273. //console.log("setSubTotalCell:" + "i:"+i+",subcellval:"+ subcellval);
  274. }
  275. if(typeof(subcellval) != "undefined")
  276. totalvalue += Number(subcellval);
  277. }
  278. if(totalvalue != 0){
  279. $('.subtotal').find('td[totalType="subtotal"]').eq(index).html(numFormat(totalvalue) + '');
  280. //console.log("setSubTotalCell INPUT:" + "totalvalue:"+ totalvalue);
  281. }
  282. }
  283. function setKmSubTotalCell(companyid,classname,index){
  284. var totalvalue = 0;
  285. for(var i=0; i<$('.edittr.'+companyid +' .'+classname).length; i++){
  286. var subcellval;
  287. if($('.edittr.'+companyid +' .'+classname).eq(i).find("INPUT").length > 0){
  288. subcellval = $('.edittr.'+companyid +' .'+classname).eq(i).val();
  289. }else{
  290. subcellval = $('.edittr.'+companyid +' .'+classname).eq(i).html();
  291. }
  292. if(typeof(subcellval) != "undefined")
  293. totalvalue += Number(subcellval);
  294. }
  295. if(totalvalue != 0){
  296. $('.subtotal').find('td[totalType="km_subtotal"]').eq(index).html(Number(totalvalue).toFixed(3) + '');
  297. }
  298. }
  299. function setTotalCell(index){
  300. if(index < $('.totaltr').find('.sumCell').length){
  301. var totalvalue = 0;
  302. for(var i=0; i<$('.subtotal').length; i++){
  303. var editcellval;
  304. if($('.subtotal').eq(i).find('td[totalType="subtotal"]').eq(index).find("INPUT").length > 0){
  305. editcellval = $('.subtotal').eq(i).find('td[totalType="subtotal"]').eq(index).val();
  306. }else{
  307. editcellval = $('.subtotal').eq(i).find('td[totalType="subtotal"]').eq(index).html();
  308. }
  309. if(typeof(editcellval) != "undefined")
  310. totalvalue += Number(editcellval);
  311. }
  312. for(var i=0; i<$('.edittr').length; i++){
  313. var rycellval=0;
  314. var myArray=new Array();
  315. myArray = $('.edittr').eq(i).attr("class").split(" ");
  316. //加上无小计
  317. if(myArray != null && myArray.length > 0){
  318. if(myArray[1] == "006" || myArray[1] == "013" ){
  319. if($('.edittr').eq(i).find('td[totalType="sum"]').eq(index).find("INPUT").length > 0){
  320. rycellval = $('.edittr').eq(i).find('td[totalType="sum"]').eq(index).val();
  321. }else{
  322. rycellval = $('.edittr').eq(i).find('td[totalType="sum"]').eq(index).html();
  323. }
  324. break;
  325. }
  326. }
  327. }
  328. totalvalue += Number(rycellval);
  329. if(totalvalue != 0){
  330. $('.totaltr').find('.sumCell').eq(index).html(numFormat(totalvalue) + '');
  331. //console.log("setTotalCell INPUT:" + "totalvalue:"+ totalvalue);
  332. }
  333. }
  334. }
  335. function setKMTotalCell(index){
  336. if(index < $('.totaltr').find('.sumkmCell').length){
  337. var totalvalue = 0;
  338. for(var i=0; i<$('.edittr').length; i++){
  339. var editcellval;
  340. if($('.edittr').eq(i).find('td[totalType="kmsum"]').eq(index).find("INPUT").length > 0){
  341. editcellval = $('.edittr').eq(i).find('td[totalType="kmsum"]').eq(index).val();
  342. }else{
  343. editcellval = $('.edittr').eq(i).find('td[totalType="kmsum"]').eq(index).html();
  344. }
  345. if(typeof(editcellval) != "undefined")
  346. totalvalue += Number(editcellval);
  347. }
  348. if(totalvalue != 0){
  349. $('.totaltr').find('.sumkmCell').eq(index).html(Number(totalvalue).toFixed(3) + '');
  350. }
  351. }
  352. }
  353. function setSubtotal(tr){
  354. // $(tr).find("td>.subtotal").each(function(index,e){
  355. // var name = $(e).attr("name");
  356. var totalNum;
  357. $(tr).find("td[name='PREVENTION_DESIGN']").each(function(index,e){
  358. var num = $(e).text();
  359. totalNum = totalNum + num;
  360. });
  361. //$(e).val(totalNum);
  362. // });
  363. }
  364. function setTrPercentCell(tr){
  365. $(tr).find("td>.percentCell").each(function(index,e){
  366. if(e.tagName == "INPUT"){
  367. var num1 = $(tr).find("td>."+$(e).attr("num1")).val();
  368. var num2 = $(tr).find("td>."+$(e).attr("num2")).val();
  369. var result = percentage(num1, num2);
  370. $(e).val(result);
  371. }else if(e.tagName == "SPAN"){
  372. var num1 = $(tr).find("td>."+$(e).attr("num1")).html();
  373. var num2 = $(tr).find("td>."+$(e).attr("num2")).html();
  374. var result = percentage(num1, num2);
  375. $(e).html(result);
  376. }
  377. });
  378. }
  379. function setTrPercentCell2(tr){
  380. $(tr).find("td.percentCell").each(function(index,e){
  381. var num1 = $(tr).find("td."+$(e).attr("num1")).html();
  382. var num2 = $(tr).find("td."+$(e).attr("num2")).html();
  383. var result = percentage(num1, num2);
  384. $(e).html(result);
  385. });
  386. }
  387. function setTrDivisionCell(tr){
  388. $(tr).find("td.divisionCell").each(function(index,e){
  389. var num1 = $(tr).find("td."+$(e).attr("num1")).html();
  390. var num2 = $(tr).find("td."+$(e).attr("num2")).html();
  391. var result = division(num1, num2);
  392. $(e).html(result);
  393. });
  394. }
  395. function percentage(num1, num2){
  396. var percent = "";
  397. if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num2) != "0" )
  398. // percent = Math.round(Number(num1) / Number(num2) * 10000) / 100.00 + "%";
  399. // percent = Math.round(Number(num1) / Number(num2) * 100) + "%";
  400. percent = Math.round(Number(num1) / Number(num2) * 100);
  401. return percent;
  402. }
  403. function division(num1, num2){
  404. var percent = "";
  405. if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num2) != "0" )
  406. percent = (Number(num1) / Number(num2)).toFixed(1);
  407. return percent;
  408. }
  409. function numFormat(num){
  410. if(!isNaN(Number(num)) && Number(num) != "0"){
  411. if(num<10) num = Number(num).toFixed(1);
  412. else num = Math.round(Number(num));
  413. }
  414. return num;
  415. }
  416. //预防小修、中修、大修小计
  417. function setYFTotalCell(e){
  418. var totalvalue = 0;
  419. var num1 = $(e).parent().find("."+$(e).attr("num6")).html();
  420. var num2 = $(e).parent().find("."+$(e).attr("num7")).html();
  421. var num3 = $(e).parent().find("."+$(e).attr("num8")).html();
  422. var num4 = $(e).parent().find("."+$(e).attr("num9")).html();
  423. if(typeof(num1) != "undefined" && typeof(num2) != "undefined"
  424. && typeof(num3) != "undefined"&& typeof(num4) != "undefined"){
  425. totalvalue = Number(num1) + Number(num2) + Number(num3) + Number(num4);
  426. }
  427. if(totalvalue != 0){
  428. $(e).html(numFormat(totalvalue) + '');
  429. }
  430. }
  431. //修复养护小修、中修、大修小计
  432. function setXFYHTotalCell(e){
  433. var totalvalue = 0;
  434. var num1 = $(e).parent().find("."+$(e).attr("num10")).html();
  435. var num2 = $(e).parent().find("."+$(e).attr("num11")).html();
  436. var num3 = $(e).parent().find("."+$(e).attr("num12")).html();
  437. var num4 = $(e).parent().find("."+$(e).attr("num13")).html();
  438. var num5 = $(e).parent().find("."+$(e).attr("num14")).html();
  439. var num6 = $(e).parent().find("."+$(e).attr("num15")).html();
  440. var num7 = $(e).parent().find("."+$(e).attr("num16")).html();
  441. var num8 = $(e).parent().find("."+$(e).attr("num17")).html();
  442. if(typeof(num1) != "undefined" && typeof(num2) != "undefined"
  443. && typeof(num3) != "undefined"&& typeof(num4) != "undefined"
  444. && typeof(num5) != "undefined"&& typeof(num6) != "undefined"
  445. && typeof(num7) != "undefined"&& typeof(num8) != "undefined"){
  446. totalvalue = Number(num1) + Number(num2) + Number(num3) + Number(num4)
  447. +Number(num5) + Number(num6) + Number(num7) + Number(num8);
  448. }
  449. if(totalvalue != 0){
  450. $(e).html(numFormat(totalvalue) + '');
  451. }
  452. }
  453. function setYHJHTotalCell(e){
  454. var totalvalue = 0;
  455. var num1 = $(e).parent().find("."+$(e).attr("num18")).html();
  456. var num2 = $(e).parent().find("."+$(e).attr("num19")).html();
  457. var num3 = $(e).parent().find("."+$(e).attr("num20")).html();
  458. var num4 = $(e).parent().find("."+$(e).attr("num21")).html();
  459. var num5 = $(e).parent().find("."+$(e).attr("num22")).html();
  460. var num6 = $(e).parent().find("."+$(e).attr("num23")).html();
  461. var num7 = $(e).parent().find("."+$(e).attr("num24")).html();
  462. if(typeof(num1) != "undefined" && typeof(num2) != "undefined"
  463. && typeof(num3) != "undefined"&& typeof(num4) != "undefined"
  464. && typeof(num5) != "undefined"&& typeof(num6) != "undefined"&& typeof(num7) != "undefined"){
  465. totalvalue = Number(num1) + Number(num2) + Number(num3) + Number(num4)
  466. +Number(num5) + Number(num6) + Number(num7) ;
  467. }
  468. if(totalvalue != 0){
  469. $(e).html(numFormat(totalvalue) + '');
  470. }
  471. }
  472. function setXJCell(e){
  473. var totalvalue = 0;
  474. var num1 = $(e).parent().find("."+$(e).attr("num3")).html();
  475. var num2 = $(e).parent().find("."+$(e).attr("num4")).html();
  476. var num3 = $(e).parent().find("."+$(e).attr("num5")).html();
  477. if(typeof(num1) != "undefined" && typeof(num2) != "undefined"
  478. && typeof(num3) != "undefined"){
  479. totalvalue = Number(num1) + Number(num2) + Number(num3) ;
  480. }
  481. if(totalvalue != 0){
  482. $(e).html(numFormat(totalvalue) + '');
  483. }
  484. }
  485. //获取本网站的顶级节点,解决被其他网站iframe引入时发生的跨域问题
  486. function getTop(obj){
  487. var tp = obj;
  488. //alert(obj.name);
  489. if (tp.mainFrame == undefined) {
  490. tp = tp.parent;
  491. return getTop(tp);
  492. } else {
  493. return tp;
  494. }
  495. }