highwayPlanSumtable.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  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 = $("input[name='COMPANY']").val();
  6. var pd_COMPANY_ID = $("input[name='COMPANY_ID']").val();
  7. var pd_YEAR = $("input[name='YEAR']").val();
  8. var pd_ROAD_ID = $("input[name='ROAD_ID']").val();
  9. var pd_ROAD = $("input[name='ROAD']").val();
  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. var totalcells = $('.totaltr').find('.sumCell');
  21. for(var i=0; i<totalcells.length; i++){
  22. setTotalCell(i);
  23. }
  24. //小计行的百分比初始化
  25. $('#Form table tbody tr').each(function(index,e){
  26. setTrPercentCell(e);
  27. });
  28. //小计序号
  29. $('.totaltr').find('.indexCell').html($('.edittr').length+1);
  30. //留痕标红
  31. setRecordInfo();
  32. //数字格式化
  33. $("input.num").each(function(index,e){
  34. var num = $(e).val();
  35. num = numFormat(num);
  36. $(e).val(num);
  37. });
  38. $(".RESERVE_DESIGN").each(function(index,e){
  39. var num = $(e).val();
  40. num = numFormat(num);
  41. $(e).val(num);
  42. });
  43. }
  44. function setTotalCell(index){
  45. if(index < $('.totaltr').find('.sumCell').length){
  46. var totalvalue = 0;
  47. for(var i=0; i<$('.edittr').length; i++){
  48. var editcellval = $('.edittr').eq(i).find('input[totalType="sum"]').eq(index).val();
  49. if(typeof(editcellval) != "undefined")
  50. totalvalue += Number(editcellval);
  51. }
  52. $('.totaltr').find('.sumCell').eq(index).html(numFormat(totalvalue) + '');
  53. }
  54. }
  55. function editTable(){
  56. if(editflag == 0){
  57. $('#editbutton').html('编辑中');
  58. $(".editInput").removeAttr("readonly");
  59. editflag = 1;
  60. }else if(editflag == 1){
  61. $('#editbutton').html('编辑');
  62. $(".editInput").attr("readonly","readonly" );
  63. editflag = 0;
  64. }
  65. }
  66. function saveTable(type){
  67. saveTableRecords(type);
  68. }
  69. function saveTableRecords(type){
  70. debugger;
  71. if(editflag == 1){
  72. $('#editbutton').html('编辑');
  73. $(".editInput").attr("readonly","readonly");
  74. editflag = 0;
  75. }
  76. var tabledata = dataResult();
  77. $.ajax({
  78. type : "post",
  79. /*url : locat+'/annualDailyComp/saveData.do?data='+JSON.stringify(tabledata)+'&TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID
  80. +'&COMPANY='+pd_COMPANY + '&ROAD='+pd_ROAD,*/
  81. url:locat+'/annualDailyComp/saveData.do?',
  82. contentType: "application/x-www-form-urlencoded; charset=utf-8",
  83. data:{
  84. data:JSON.stringify(tabledata),
  85. TABLETYPE:pd_TABLETYPE,
  86. COMPANY_ID:pd_COMPANY_ID,
  87. YEAR:pd_YEAR,
  88. ROAD_ID:pd_ROAD_ID,
  89. COMPANY:pd_COMPANY,
  90. ROAD:pd_ROAD
  91. },
  92. dataType : 'json',
  93. success : function(data){
  94. if(JSON.stringify(recordData) != "{}") saveRecordInfo();
  95. //保存后更新input原始值
  96. for(var i=0;i<$('.editInput').length;i++){
  97. var e = $('.editInput')[i];
  98. $(e).attr('value',$(e).val());
  99. }
  100. if(data.msg == 'success'){
  101. getTop(globalThis).hangge();
  102. bootbox.dialog({
  103. message: "<span class='bigger-110'>保存成功!</span>",
  104. buttons:
  105. {
  106. "button" :
  107. {
  108. "label" : "确定",
  109. "className" : "btn-sm btn-success",
  110. }
  111. }
  112. });
  113. updateStatus(type);
  114. }else{
  115. getTop(globalThis).hangge();
  116. bootbox.dialog({
  117. message: "<span class='bigger-110'>"+data.msg+"</span>",
  118. buttons:
  119. {
  120. "button" :
  121. {
  122. "label" : "确定",
  123. "className" : "btn-sm btn-success"
  124. }
  125. }
  126. });
  127. }
  128. },
  129. error:function(){
  130. getTop(globalThis).hangge();
  131. bootbox.dialog({
  132. message: "<span class='bigger-110'>保存失败!</span>",
  133. buttons:
  134. {
  135. "button" :
  136. {
  137. "label" : "确定",
  138. "className" : "btn-sm btn-success"
  139. }
  140. }
  141. });
  142. }
  143. });
  144. }
  145. function updateStatus(type){
  146. $.ajax({
  147. type : "get",
  148. url : locat+'/annualDailyComp/updateStatus.do?STATUS='+type+'&TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID
  149. +'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID +'&COMPANY='+pd_COMPANY+'&ROAD='+pd_ROAD + '&ROAD_ID='+ pd_ROAD_ID,
  150. dataType : 'json',
  151. success : function(data){
  152. //alert("change success!");
  153. }
  154. });
  155. }
  156. function saveRecordInfo(){
  157. $.ajax({
  158. type : "get",
  159. url : locat+'/annualDailyComp/saveRecordInfo.do?recordData='+JSON.stringify(recordData)
  160. +'&recordBeforeValue='+JSON.stringify(recordBeforeValue)+'&TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID
  161. +'&YEAR='+pd_YEAR+'&BEFORE_STATUS='+status+'&AFTER_STATUS='+currStatus+'&type=ROAD_ID',
  162. dataType : 'json',
  163. success : function(data){
  164. recordData = new Object();
  165. recordBeforeValue = new Object();
  166. //留痕标红
  167. setRecordInfo();
  168. }
  169. });
  170. }
  171. function dataResult(){
  172. var mapArry = $("#Form").serializeArray();
  173. var dataArry = [];
  174. var recordmap = new Object();
  175. for(var i=0; i<mapArry.length; i++){
  176. recordmap[mapArry[i].name] = mapArry[i].value.replace("%","");
  177. }
  178. dataArry.push(recordmap);
  179. return dataArry;
  180. }
  181. function editValue(e){
  182. if(!$(e).attr('readonly')){
  183. //数字格式化
  184. // var num = "";
  185. // if(e.tagName == "INPUT"){
  186. // num = $(e).val();
  187. // num = numFormat(num);
  188. // $(e).val(num);
  189. // }
  190. if($(e).attr("totalType") == "sum") setTotalCell($(e).parent().parent().find('input[totalType="sum"]').index(e));
  191. setTrPercentCell($(e).parent().parent()[0]);
  192. setTrPercentCell($(".totaltr")[0]);
  193. if($('#pd_mode').html() == 'edit') setRecordData(e);
  194. }
  195. }
  196. function setRecordData(e){
  197. var key = $(e).attr('name');
  198. var roadid = $("input[name='ROAD_ID']").val();
  199. var value = $(e).val();
  200. var beforeValue = $(e).attr('value');
  201. if($(e).val() != $(e).attr('value') && $(e).attr('value') != ''){
  202. if(!recordData[roadid]){
  203. recordData[roadid] = new Object();
  204. recordBeforeValue[roadid] = new Object();
  205. }
  206. recordData[roadid][key] = value;
  207. recordBeforeValue[roadid][key] = beforeValue;
  208. }else if($(e).val() == $(e).attr('value') && $(e).attr('value') != ''){
  209. if(key in recordData[roadid] && roadid in recordData){
  210. delete recordData[roadid][key];
  211. delete recordBeforeValue[roadid][key];
  212. if(JSON.stringify(recordData[roadid]) == "{}"){
  213. delete recordData[roadid];
  214. delete recordBeforeValue[roadid];
  215. }
  216. }
  217. }
  218. }
  219. function setRecordInfo(){
  220. $.ajax({
  221. type : "get",
  222. url : locat+'/annualDailyComp/showRecodInfo.do?TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR,
  223. dataType : 'json',
  224. success : function(data){
  225. for(var e in rocordInfoList){
  226. $('.highlight').removeClass(e);
  227. }
  228. $('.highlight').removeClass('highlight');
  229. rocordInfoList = data.rocordInfoList;
  230. for(var e in data.rocordInfoList){
  231. $("input[name='"+data.rocordInfoList[e].TABLE_FIELDS+"']").addClass("highlight " + e);
  232. }
  233. }
  234. });
  235. }
  236. function highlightInit(){
  237. $('.editInput').off("mouseover mouseout").on("mouseover mouseout",function(event){
  238. if($(this).attr('class').split(' ').length > 2){
  239. if(event.type == "mouseover"){
  240. var indexClass = $(this).attr('class').split(' ')[3];
  241. var before = rocordInfoList[indexClass].BEFORE_VAL;
  242. var after = rocordInfoList[indexClass].AFTER;
  243. var modifier = rocordInfoList[indexClass].MODIFIER;
  244. var time = rocordInfoList[indexClass].MODIFY_TIME;
  245. $(this).parent().append('<div id="recordInfoDiv">修改人:'+modifier+'<br/>修改时间:'+time+'<br/>'+before+'<br/>'+after+'</div>');
  246. $('#recordInfoDiv').width($(this).parent().width());
  247. }else if(event.type == "mouseout"){
  248. $("#recordInfoDiv").remove();
  249. }
  250. }
  251. });
  252. }
  253. $(function(){
  254. tableInit();
  255. highlightInit();
  256. });
  257. function setTrPercentCell(tr){
  258. $(tr).find("td>.percentCell").each(function(index,e){
  259. if(e.tagName == "INPUT"){
  260. var num1 = $(tr).find("td>."+$(e).attr("num1")).val();
  261. var num2 = $(tr).find("td>."+$(e).attr("num2")).val();
  262. var result = percentage(num1, num2);
  263. $(e).val(result);
  264. }else if(e.tagName == "SPAN"){
  265. var num1 = $(tr).find("td>."+$(e).attr("num1")).html();
  266. var num2 = $(tr).find("td>."+$(e).attr("num2")).html();
  267. var result = percentage(num1, num2);
  268. $(e).html(result);
  269. }
  270. });
  271. }
  272. function percentage(num1, num2){
  273. var percent = "";
  274. if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num2) != "0" )
  275. // percent = Math.round(Number(num1) / Number(num2) * 10000) / 100.00 + "%";
  276. // percent = Math.round(Number(num1) / Number(num2) * 100) + "%";
  277. percent = Math.round(Number(num1) / Number(num2) * 100);
  278. return percent;
  279. }
  280. function numFormat(num){
  281. if(!isNaN(Number(num)) && Number(num) != "0"){
  282. if(num<10) num = Number(num).toFixed(1);
  283. else num = Math.round(Number(num));
  284. }
  285. return num;
  286. }
  287. //获取本网站的顶级节点,解决被其他网站iframe引入时发生的跨域问题
  288. function getTop(obj){
  289. var tp = obj;
  290. //alert(obj.name);
  291. if (tp.mainFrame == undefined) {
  292. tp = tp.parent;
  293. return getTop(tp);
  294. } else {
  295. return tp;
  296. }
  297. }