highway_reserve_fee_sumtable.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  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 pd_TABLETYPE = $('#pd_TABLETYPE').html();
  5. var pd_COMPANY = $('#pd_COMPANY').html();
  6. var pd_COMPANY_ID = $('#pd_COMPANY_ID').html();
  7. var pd_YEAR = $('#pd_YEAR').html();
  8. var pd_ROAD_ID = $('#pd_ROAD_ID').html();
  9. var pd_ROAD = $('#pd_ROAD').html();
  10. var pd_NAME = $('#pd_NAME').html();
  11. var pd_ROLENAME = $('#pd_ROLENAME').html();
  12. var editflag = 0;
  13. var recordData = new Object();
  14. var recordBeforeValue = new Object();
  15. var status = $('.edittr:eq(0) >td >input[name="STATUS"]').val();
  16. var currStatus = status;
  17. var rocordInfoList = new Object();
  18. function tableInit(){
  19. //行内小计列
  20. //setRowSumCell(e);
  21. //小计行的总计列
  22. var totalcells = $('.totaltr').find('.sumCell');
  23. for(var i=0; i<totalcells.length; i++){
  24. setTotalCell(i);
  25. }
  26. //百分比初始化
  27. $('#Form table tbody tr').each(function(index,e){
  28. setTrPercentCell(e);
  29. });
  30. //小计序号
  31. $('.totaltr').find('.indexCell').html($('.edittr').length+1);
  32. //留痕标红
  33. setRecordInfo();
  34. //数字格式化
  35. $("input.editInput").each(function(index,e){
  36. var num = $(e).val();
  37. num = numFormat(num);
  38. $(e).val(num);
  39. });
  40. }
  41. function setTotalCell(index){
  42. if(index < $('.totaltr').find('.sumCell').length){
  43. var totalvalue = 0;
  44. for(var i=0; i<$('.edittr').length; i++){
  45. var editcellval = $('.edittr').eq(i).find('input[totalType="sum"]').eq(index).val();
  46. if(typeof(editcellval) != "undefined")
  47. totalvalue += Number(editcellval);
  48. }
  49. $('.totaltr').find('.sumCell').eq(index).html(numFormat(totalvalue) + '');
  50. }
  51. }
  52. function setRowSumCell(e){
  53. if(index < $('.totaltr').find('.sumCell').length){
  54. var totalvalue = 0;
  55. for(var i=0; i<$('.edittr').length; i++){
  56. var editcellval = $('.edittr').eq(i).find('input[totalType="sum"]').eq(index).val();
  57. if(typeof(editcellval) != "undefined")
  58. totalvalue += Number(editcellval);
  59. }
  60. $('.totaltr').find('.sumCell').eq(index).html(numFormat(totalvalue) + '');
  61. }
  62. }
  63. function editTable(){
  64. if(editflag == 0){
  65. $('#editbutton').html('编辑中');
  66. $(".editInput").removeAttr("readonly");
  67. editflag = 1;
  68. }else if(editflag == 1){
  69. $('#editbutton').html('编辑');
  70. $(".editInput").attr("readonly","readonly" );
  71. editflag = 0;
  72. }
  73. }
  74. function saveTable(type){
  75. changeStatus(type);
  76. if(editflag == 1){
  77. $('#editbutton').html('编辑');
  78. $(".editInput").attr("readonly","readonly");
  79. editflag = 0;
  80. }
  81. var tabledata = dataResult();
  82. $.ajax({
  83. type : "get",
  84. url : locat+'/HighwayReserveFeeComp/saveData.do?data='+JSON.stringify(tabledata)+'&TABLETYPE='+pd_TABLETYPE
  85. +'&COMPANY_ID='+pd_COMPANY_ID +'&COMPANY='+pd_COMPANY +'&YEAR='+pd_YEAR + '&ROAD_ID=' + pd_ROAD_ID + '&ROAD=' + pd_ROAD,
  86. dataType : 'json',
  87. success : function(data){
  88. if(JSON.stringify(recordData) != "{}") saveRecordInfo();
  89. //保存后更新input原始值
  90. for(var i=0;i<$('.editInput').length;i++){
  91. var e = $('.editInput')[i];
  92. $(e).attr('value',$(e).val());
  93. }
  94. }
  95. });
  96. updateStatus(type);
  97. }
  98. //增加审核意见弹出框
  99. function addNewSHPanle(){
  100. debugger;
  101. getTop(globalThis).jzts();
  102. var diag = new getTop(globalThis).Dialog();
  103. diag.Drag=true;
  104. diag.Title ="填写审核意见";
  105. diag.URL = locat + '/annualMassagePanel/addNewSHPanel.do?TABLETYPE=' + pd_TABLETYPE +'&COMPANY_ID='+ pd_COMPANY_ID
  106. + '&YEAR='+pd_YEAR + '&ROAD_ID='+ pd_ROAD_ID + '&ROLE_NAME=' + pd_ROLENAME + '&TABLE_NAME=' + pd_NAME;
  107. diag.Width = 400;
  108. diag.Height = 200;
  109. diag.CancelEvent = function(){ //关闭事件
  110. diag.close();
  111. };
  112. diag.show();
  113. }
  114. function changeStatus(type){
  115. for(var i=0;i<$("input[name='STATUS']").length;i++){
  116. var e = $("input[name='STATUS']")[i];
  117. $(e).attr('value',type);
  118. $(e).val(type);
  119. currStatus = type;
  120. }
  121. }
  122. function addTableRow(){
  123. var c=document.getElementById('reserve-table');//获得表格的信息
  124. // c.deleteRow(c.rows.length-1);//删除最后一行
  125. var x=c.insertRow(c.rows.length-1);
  126. var num = c.rows.length-4;
  127. x.className = 'edittr';
  128. var i=0;
  129. for(i;i<6;i++){//依次向新行插入表格列数的单元格
  130. var y=x.insertCell(i);
  131. if(i==0){
  132. y.innerHTML="<td class='center'>"
  133. /*+"<input name='SERIAL_NUM' class='SERIAL_NUM' type='text' readonly='readonly'/>"*/
  134. +"<p style='text-align: center;'>"+num+"</p>"
  135. +"</td>";
  136. }else if(i==1){
  137. y.innerHTML="<td class='center'>"
  138. +"<input name='PROJECT_NAME'"
  139. +"class='PROJECT_NAME' type='text'/>"
  140. +"</td>";
  141. }else if(i==2){
  142. y.innerHTML="<td class='center'>"
  143. +"<input onblur='editValue(this)' name='ACTUAL_COST'"
  144. +"class='editInput ACTUAL_COST' type='text' totalType='sum'/>"
  145. +"</td>";
  146. }else if(i==3){
  147. y.innerHTML="<td class='center'>"
  148. +"<input name='COMPLETE_DESCRIBE'"
  149. +"class='editInput COMPLETE_DESCRIBE' type='text'/>"
  150. +"</td>";
  151. }else if(i==4){
  152. y.innerHTML="<td class='center'>"
  153. +"<input name='REMARKS'"
  154. +"class='editInput REMARKS' type='text'/>"
  155. +"</td>";
  156. }else if(i==5){
  157. y.innerHTML= "<td>"
  158. +"<a class='btn btn-xs btn-danger' onclick='delTableRow(this);'>"
  159. +"<i class='ace-icon fa fa-trash-o bigger-120' title='删除'></i>"
  160. +"</a>";
  161. +"</td>";
  162. }
  163. }
  164. }
  165. function delTableRow(){
  166. $(this).parent().parent().remove();
  167. }
  168. function updateStatus(type){
  169. $.ajax({
  170. type : "get",
  171. url : locat+'/annualDailyComp/updateStatus.do?STATUS='+type+'&TABLETYPE='+pd_TABLETYPE
  172. +'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD='+pd_ROAD + '&ROAD_ID='+ pd_ROAD_ID,
  173. dataType : 'json',
  174. success : function(data){
  175. //alert("change success!");
  176. }
  177. });
  178. }
  179. function updatePlanStatus(type,companyid,year){
  180. $.ajax({
  181. type : "get",
  182. url : locat+'/annualDailyComp/updateAllStatus.do?STATUS='+type+'&COMPANY_ID='+companyid+'&YEAR='+year,
  183. dataType : 'json',
  184. success : function(data){
  185. alert("change success!");
  186. }
  187. });
  188. }
  189. function saveRecordInfo(){
  190. $.ajax({
  191. type : "get",
  192. url : locat+'/annualDailyComp/saveRecordInfo.do?recordData='+JSON.stringify(recordData)
  193. +'&recordBeforeValue='+JSON.stringify(recordBeforeValue)+'&TABLE_NAME='+pd_TABLETYPE
  194. +'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&BEFORE_STATUS='+status+'&AFTER_STATUS='+currStatus+'&type=ROAD_ID',
  195. dataType : 'json',
  196. success : function(data){
  197. recordData = new Object();
  198. recordBeforeValue = new Object();
  199. //留痕标红
  200. setRecordInfo();
  201. }
  202. });
  203. }
  204. function dataResult(){
  205. var mapArry = $("#Form").serializeArray();
  206. var dataArry = [];
  207. var recordcount = $('.edittr').length; //行数
  208. var cellcount = $('.edittr:eq(0) >td').length-2; //单元格数
  209. for(var i=0; i<recordcount; i++){
  210. var recordmap = new Object();
  211. for(var j=0; j<cellcount; j++){
  212. recordmap[mapArry[i*cellcount+j].name] = mapArry[i*cellcount+j].value;
  213. }
  214. dataArry.push(recordmap);
  215. }
  216. return dataArry;
  217. }
  218. function editValue(e){
  219. if(!$(e).attr('readonly')){
  220. //数字格式化
  221. var num = "";
  222. if(e.tagName == "INPUT"){
  223. num = $(e).val();
  224. num = numFormat(num);
  225. $(e).val(num);
  226. }
  227. if($(e).attr("totalType") == "sum") setTotalCell($(e).parent().parent().find('input[totalType="sum"]').index(e));
  228. setTrPercentCell($(e).parent().parent()[0]);
  229. setTrPercentCell($(".totaltr")[0]);
  230. if($('#pd_mode').html() == 'edit') setRecordData(e);
  231. }
  232. }
  233. function setRecordData(e){
  234. var key = $(e).attr('name');
  235. var roadid = $(e).parent().parent().attr('class').substring(7);
  236. var value = $(e).val();
  237. var beforeValue = $(e).attr('value');
  238. if($(e).val() != $(e).attr('value') && $(e).attr('value') != ''){
  239. if(!recordData[roadid]){
  240. recordData[roadid] = new Object();
  241. recordBeforeValue[roadid] = new Object();
  242. }
  243. recordData[roadid][key] = value;
  244. recordBeforeValue[roadid][key] = beforeValue;
  245. }else if($(e).val() == $(e).attr('value') && $(e).attr('value') != ''){
  246. if(key in recordData[roadid] && roadid in recordData){
  247. delete recordData[roadid][key];
  248. delete recordBeforeValue[roadid][key];
  249. if(JSON.stringify(recordData[roadid]) == "{}"){
  250. delete recordData[roadid];
  251. delete recordBeforeValue[roadid];
  252. }
  253. }
  254. }
  255. }
  256. function setRecordInfo(){
  257. $.ajax({
  258. type : "get",
  259. url : locat+'/annualDailyComp/showRecodInfo.do?TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR,
  260. dataType : 'json',
  261. success : function(data){
  262. for(var e in rocordInfoList){
  263. $('.highlight').removeClass(e);
  264. }
  265. $('.highlight').removeClass('highlight');
  266. rocordInfoList = data.rocordInfoList;
  267. for(var e in data.rocordInfoList){
  268. $('.'+data.rocordInfoList[e].ROAD_ID+' >td >.'+data.rocordInfoList[e].TABLE_FIELDS).addClass("highlight " + e);
  269. }
  270. }
  271. });
  272. }
  273. function highlightInit(){
  274. $('.editInput').off("mouseover mouseout").on("mouseover mouseout",function(event){
  275. if($(this).attr('class').split(' ').length > 2){
  276. if(event.type == "mouseover"){
  277. var indexClass = $(this).attr('class').split(' ')[3];
  278. var before = rocordInfoList[indexClass].BEFORE_VAL;
  279. var after = rocordInfoList[indexClass].AFTER;
  280. $(this).parent().append('<div id="recordInfoDiv">'+before+'--'+after+'</div>');
  281. }else if(event.type == "mouseout"){
  282. $("#recordInfoDiv").remove();
  283. }
  284. }
  285. });
  286. }
  287. //function excelExport(){
  288. // window.location.href=locat+'/annualDailyComp/exportDoc.do?modelName=311_highway_scientific_project_dettable.ftl&COMPANY_ID=001&YEAR=2018&ROAD_ID=111&TABLETYPE=highway_scientific_project_dettable';
  289. //}
  290. function excelExport(){
  291. var arry = [];
  292. $('.edittr:eq(0)>td>input').each(function(index,e){
  293. var n = $(e).attr('name');
  294. if(n!='SERIAL_NUM'&&n!='STATUS'&&n!='COMPANY'&&n!='YEAR'&&n!='COMPANY_ID'&&n!='ROAD_ID'){
  295. var key = $(e).attr('name');
  296. arry.push(key);
  297. }
  298. });
  299. var keyStr = arry.join(',');
  300. window.location.href=locat+'/annualDailyComp/export.do?TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&keyStr='+keyStr;
  301. }
  302. $(function(){
  303. // importInit();
  304. tableInit();
  305. highlightInit();
  306. });
  307. function setTrPercentCell(tr){
  308. $(tr).find("td>.percentCell").each(function(index,e){
  309. if(e.tagName == "INPUT"){
  310. var num1 = $(tr).find("td>."+$(e).attr("num1")).val();
  311. var num2 = $(tr).find("td>."+$(e).attr("num2")).val();
  312. var result = percentage(num1, num2);
  313. $(e).val(result);
  314. }else if(e.tagName == "SPAN"){
  315. var num1 = $(tr).find("td>."+$(e).attr("num1")).html();
  316. var num2 = $(tr).find("td>."+$(e).attr("num2")).html();
  317. var result = percentage(num1, num2);
  318. $(e).html(result);
  319. }
  320. });
  321. }
  322. function percentage(num1, num2){
  323. var percent = "";
  324. if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num2) != "0" )
  325. // percent = Math.round(Number(num1) / Number(num2) * 10000) / 100.00 + "%";
  326. // percent = Math.round(Number(num1) / Number(num2) * 100) + "%";
  327. percent = Math.round(Number(num1) / Number(num2) * 100);
  328. return percent;
  329. }
  330. //function fileType(obj){
  331. // var fileType=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获得文件后缀名
  332. // if(fileType != '.xls'){
  333. // $("#excel").tips({
  334. // side:3,
  335. // msg:'请上传xls格式的文件',
  336. // bg:'#AE81FF',
  337. // time:3
  338. // });
  339. // $("#excel").val('');
  340. // document.getElementById("excel").files[0] = '请选择xls格式的文件';
  341. // }
  342. //}
  343. //function importExcle(){
  344. // if($("#excel").val()=="" || document.getElementById("excel").files[0] =='请选择xls格式的文件'){
  345. // $("#excel").tips({
  346. // side:3,
  347. // msg:'请选择文件',
  348. // bg:'#AE81FF',
  349. // time:3
  350. // });
  351. // return false;
  352. // }
  353. // $.ajax({
  354. // type : "get",
  355. // url : locat+'/annualDailyComp/readExcel.do?TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&COMPANY='+pd_COMPANY+'&excel='+$("#excel").val(),
  356. // dataType : 'json',
  357. // success : function(data){
  358. //
  359. // }
  360. // });
  361. //}
  362. //
  363. //function importInit(){
  364. // //上传
  365. // $('#excel').ace_file_input({
  366. //// style:'well',
  367. // no_file:'请选择EXCEL ...',
  368. // btn_choose:'选择',
  369. // btn_change:'更改',
  370. // droppable:false,
  371. // onchange:null,
  372. // thumbnail:false, //| true | large
  373. // whitelist:'xls|xlsx',
  374. // blacklist:'gif|png|jpg|jpeg',
  375. // allowExt: ['xls','xlsx']
  376. // //onchange:''
  377. // });
  378. //}
  379. function numFormat(num){
  380. if(!isNaN(Number(num)) && Number(num) != "0"){
  381. if(num<10) num = Number(num).toFixed(1);
  382. else num = Math.round(Number(num));
  383. }
  384. return num;
  385. }
  386. //获取本网站的顶级节点,解决被其他网站iframe引入时发生的跨域问题
  387. function getTop(obj){
  388. var tp = obj;
  389. //alert(obj.name);
  390. if (tp.mainFrame == undefined) {
  391. tp = tp.parent;
  392. return getTop(tp);
  393. } else {
  394. return tp;
  395. }
  396. }