highwayPlanCompSumtable.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  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.editInput").each(function(index,e){
  34. var num = $(e).val();
  35. num = numFormat(num);
  36. $(e).val(num);
  37. });
  38. }
  39. function setTotalCell(index){
  40. if(index < $('.totaltr').find('.sumCell').length){
  41. var totalvalue = 0;
  42. for(var i=0; i<$('.edittr').length; i++){
  43. var editcellval = $('.edittr').eq(i).find('input[totalType="sum"]').eq(index).val();
  44. if(typeof(editcellval) != "undefined")
  45. totalvalue += Number(editcellval);
  46. }
  47. $('.totaltr').find('.sumCell').eq(index).html(numFormat(totalvalue) + '');
  48. }
  49. }
  50. function editTable(){
  51. if(editflag == 0){
  52. $('#editbutton').html('编辑中');
  53. $(".editInput").removeAttr("readonly");
  54. $("#savebutton").removeAttr("disabled");
  55. editflag = 1;
  56. }else if(editflag == 1){
  57. $('#editbutton').html('编辑');
  58. $("#savebutton").attr("disabled","disabled");
  59. $(".editInput").attr("readonly","readonly" );
  60. editflag = 0;
  61. }
  62. }
  63. function saveTable(type){
  64. $("#savebutton").attr("disabled","disabled");
  65. if(type == 5){
  66. addNewSHPanle();
  67. //updateStatus(5);
  68. }else{
  69. saveTableRecords(type);
  70. }
  71. }
  72. function saveTableRecords(type){
  73. debugger;
  74. if(editflag == 1){
  75. $('#editbutton').html('编辑');
  76. $(".editInput").attr("readonly","readonly");
  77. editflag = 0;
  78. }
  79. var tabledata = dataResult();
  80. $.ajax({
  81. type : "post",
  82. //type : "get",
  83. contentType: "application/x-www-form-urlencoded; charset=utf-8",
  84. //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,
  85. url : locat+'/annualDailyComp/saveData.do',
  86. data:{
  87. data:JSON.stringify(tabledata),
  88. TABLETYPE:pd_TABLETYPE,
  89. COMPANY_ID:pd_COMPANY_ID,
  90. YEAR:pd_YEAR,
  91. ROAD_ID:pd_ROAD_ID
  92. },
  93. dataType : 'json',
  94. success : function(data){
  95. if(JSON.stringify(recordData) != "{}") saveRecordInfo();
  96. //保存后更新input原始值
  97. for(var i=0;i<$('.editInput').length;i++){
  98. var e = $('.editInput')[i];
  99. $(e).attr('value',$(e).val());
  100. }
  101. if(data.msg == 'success'){
  102. getTop(globalThis).hangge();
  103. bootbox.dialog({
  104. message: "<span class='bigger-110'>保存成功!</span>",
  105. buttons:
  106. {
  107. "button" :
  108. {
  109. "label" : "确定",
  110. "className" : "btn-sm btn-success",
  111. }
  112. }
  113. });
  114. updateStatus(type);
  115. }else{
  116. getTop(globalThis).hangge();
  117. bootbox.dialog({
  118. message: "<span class='bigger-110'>"+data.msg+"</span>",
  119. buttons:
  120. {
  121. "button" :
  122. {
  123. "label" : "确定",
  124. "className" : "btn-sm btn-success"
  125. }
  126. }
  127. });
  128. }
  129. },
  130. error:function(){
  131. getTop(globalThis).hangge();
  132. bootbox.dialog({
  133. message: "<span class='bigger-110'>保存失败!</span>",
  134. buttons:
  135. {
  136. "button" :
  137. {
  138. "label" : "确定",
  139. "className" : "btn-sm btn-success"
  140. }
  141. }
  142. });
  143. }
  144. });
  145. }
  146. //增加审核意见弹出框
  147. function addNewSHPanle(){
  148. getTop(globalThis).jzts();
  149. var diag = new getTop(globalThis).Dialog();
  150. diag.Drag=true;
  151. diag.Title ="填写审核意见";
  152. diag.URL = locat + '/annualMassagePanel/addNewSHPanel.do?TABLETYPE=' + pd_TABLETYPE +'&COMPANY_ID='+ pd_COMPANY_ID
  153. + '&YEAR='+pd_YEAR + '&ROAD_ID='+ pd_ROAD_ID + '&ROLE_NAME=' + pd_ROLENAME + '&TABLE_NAME=' + pd_NAME;
  154. diag.Width = 400;
  155. diag.Height = 200;
  156. diag.CancelEvent = function(){ //关闭事件
  157. diag.close();
  158. };
  159. diag.show();
  160. }
  161. function updateStatus(type){
  162. debugger;
  163. $.ajax({
  164. type : "get",
  165. url : locat+'/annualDailyComp/updateStatus.do?STATUS='+type+'&TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID
  166. +'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID +'&COMPANY='+pd_COMPANY+'&ROAD='+pd_ROAD + '&ROAD_ID='+ pd_ROAD_ID,
  167. dataType : 'json',
  168. success : function(data){
  169. //alert("change success!");
  170. }
  171. });
  172. }
  173. function saveRecordInfo(){
  174. debugger;
  175. $.ajax({
  176. type : "get",
  177. url : locat+'/annualDailyComp/saveRecordInfo.do?recordData='+JSON.stringify(recordData)
  178. +'&recordBeforeValue='+JSON.stringify(recordBeforeValue)+'&TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID
  179. +'&YEAR='+pd_YEAR+'&BEFORE_STATUS='+status+'&AFTER_STATUS='+currStatus+'&type=ROAD_ID',
  180. dataType : 'json',
  181. success : function(data){
  182. recordData = new Object();
  183. recordBeforeValue = new Object();
  184. //留痕标红
  185. setRecordInfo();
  186. }
  187. });
  188. }
  189. function dataResult(){
  190. debugger;
  191. var mapArry = $("#Form").serializeArray();
  192. var dataArry = [];
  193. var recordmap = new Object();
  194. for(var i=0; i<mapArry.length; i++){
  195. recordmap[mapArry[i].name] = mapArry[i].value.replace("%","");
  196. }
  197. dataArry.push(recordmap);
  198. return dataArry;
  199. }
  200. function editValue(e){
  201. debugger;
  202. if(!$(e).attr('readonly')){
  203. //数字格式化
  204. var num = "";
  205. if(e.tagName == "INPUT"){
  206. num = $(e).val();
  207. num = numFormat(num);
  208. $(e).val(num);
  209. }
  210. if($(e).attr("totalType") == "sum") setTotalCell($(e).parent().parent().find('input[totalType="sum"]').index(e));
  211. setTrPercentCell($(e).parent().parent()[0]);
  212. setTrPercentCell($(".totaltr")[0]);
  213. if($('#pd_mode').html() == 'edit') setRecordData(e);
  214. }
  215. }
  216. function setRecordData(e){
  217. debugger;
  218. var key = $(e).attr('name');
  219. var roadid = $("input[name='ROAD_ID']").val();
  220. var value = $(e).val();
  221. var beforeValue = $(e).attr('value');
  222. if($(e).val() != $(e).attr('value') && $(e).attr('value') != ''){
  223. if(!recordData[roadid]){
  224. recordData[roadid] = new Object();
  225. recordBeforeValue[roadid] = new Object();
  226. }
  227. recordData[roadid][key] = value;
  228. recordBeforeValue[roadid][key] = beforeValue;
  229. }else if($(e).val() == $(e).attr('value') && $(e).attr('value') != ''){
  230. if(key in recordData[roadid] && roadid in recordData){
  231. delete recordData[roadid][key];
  232. delete recordBeforeValue[roadid][key];
  233. if(JSON.stringify(recordData[roadid]) == "{}"){
  234. delete recordData[roadid];
  235. delete recordBeforeValue[roadid];
  236. }
  237. }
  238. }
  239. }
  240. function setRecordInfo(){
  241. debugger;
  242. $.ajax({
  243. type : "get",
  244. url : locat+'/annualDailyComp/showRecodInfo.do?TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR,
  245. dataType : 'json',
  246. success : function(data){
  247. for(var e in rocordInfoList){
  248. $('.highlight').removeClass(e);
  249. }
  250. $('.highlight').removeClass('highlight');
  251. rocordInfoList = data.rocordInfoList;
  252. for(var e in data.rocordInfoList){
  253. $("input[name='"+data.rocordInfoList[e].TABLE_FIELDS+"']").addClass("highlight " + e);
  254. }
  255. }
  256. });
  257. }
  258. function highlightInit(){
  259. $('.editInput').off("mouseover mouseout").on("mouseover mouseout",function(event){
  260. if($(this).attr('class').split(' ').length > 2){
  261. if(event.type == "mouseover"){
  262. var indexClass = $(this).attr('class').split(' ')[3];
  263. var before = rocordInfoList[indexClass].BEFORE_VAL;
  264. var after = rocordInfoList[indexClass].AFTER;
  265. $(this).parent().append('<div id="recordInfoDiv">'+before+'--'+after+'</div>');
  266. }else if(event.type == "mouseout"){
  267. $("#recordInfoDiv").remove();
  268. }
  269. }
  270. });
  271. }
  272. function excelExport(){
  273. 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';
  274. }
  275. //function excelExport(){
  276. // var arry = [];
  277. // $('.edittr:eq(0)>td>input').each(function(index,e){
  278. // var n = $(e).attr('name');
  279. // if(n!='SERIAL_NUM'&&n!='STATUS'&&n!='COMPANY'&&n!='YEAR'&&n!='COMPANY_ID'&&n!='ROAD_ID'){
  280. // var key = $(e).attr('name');
  281. // arry.push(key);
  282. // }
  283. // });
  284. // var keyStr = arry.join(',');
  285. // window.location.href=locat+'/annualDailyComp/export.do?TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&keyStr='+keyStr;
  286. //}
  287. $(function(){
  288. tableInit();
  289. highlightInit();
  290. dljszkxzInit();
  291. });
  292. function setTrPercentCell(tr){
  293. $(tr).find("td>.percentCell").each(function(index,e){
  294. if(e.tagName == "INPUT"){
  295. var num1 = $(tr).find("td>."+$(e).attr("num1")).val();
  296. var num2 = $(tr).find("td>."+$(e).attr("num2")).val();
  297. var result = percentage(num1, num2);
  298. $(e).val(result);
  299. }else if(e.tagName == "SPAN"){
  300. var num1 = $(tr).find("td>."+$(e).attr("num1")).html();
  301. var num2 = $(tr).find("td>."+$(e).attr("num2")).html();
  302. var result = percentage(num1, num2);
  303. $(e).html(result);
  304. }
  305. });
  306. }
  307. function percentage(num1, num2){
  308. var percent = "";
  309. if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num2) != "0" )
  310. // percent = Math.round(Number(num1) / Number(num2) * 10000) / 100.00 + "%";
  311. // percent = Math.round(Number(num1) / Number(num2) * 100) + "%";
  312. percent = Math.round(Number(num1) / Number(num2) * 100);
  313. return percent;
  314. }
  315. function numFormat(num){
  316. if(!isNaN(Number(num)) && Number(num) != "0"){
  317. if(num<10) num = Number(num).toFixed(1);
  318. else num = Math.round(Number(num));
  319. }
  320. return num;
  321. }
  322. //上传excel控件
  323. function uploadPic() {
  324. //var form = document.getElementById('upload'),
  325. var formData = new FormData($( "#upload" )[0]);
  326. var x=document.getElementById("pic").value;
  327. if(x=="")
  328. {
  329. alert("请选择文件");
  330. return false;
  331. }
  332. var tabledata = dataResult();
  333. //var path = $("#pic").val();
  334. $.ajax({
  335. url:locat+'/annualDailyComp/importExcel?data='+JSON.stringify(tabledata)+'&TABLETYPE='
  336. +pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID +'&ROAD='+pd_ROAD,
  337. type:"post",
  338. data: formData,
  339. async: false,
  340. cache: false,
  341. contentType: false,
  342. processData: false,
  343. success:function(res){
  344. if(res.length>0){
  345. alert(res);
  346. /*getTop(globalThis).hangge();
  347. bootbox.dialog({
  348. message: "<span class='bigger-110'>"+res+"</span>",
  349. buttons:
  350. {
  351. "button" :
  352. {
  353. "label" : "确定",
  354. "className" : "btn-sm btn-success"
  355. }
  356. }
  357. }); */
  358. }else{
  359. updateStatus(1);
  360. //alert("上传成功!");
  361. getTop(globalThis).hangge();
  362. bootbox.dialog({
  363. message: "<span class='bigger-110'>上传成功!</span>",
  364. buttons:
  365. {
  366. "button" :
  367. {
  368. "label" : "确定",
  369. "className" : "btn-sm btn-success",
  370. callback: function () {
  371. var selfhref = self.location.href;
  372. self.location.href = selfhref;
  373. }
  374. }
  375. }
  376. });
  377. }
  378. },
  379. error:function(err){
  380. //alert("上传失败!");
  381. getTop(globalThis).hangge();
  382. bootbox.dialog({
  383. message: "<span class='bigger-110'>上传失败!</span>",
  384. buttons:
  385. {
  386. "button" :
  387. {
  388. "label" : "确定",
  389. "className" : "btn-sm btn-success"
  390. }
  391. }
  392. });
  393. }
  394. });
  395. }
  396. /**********高速公路养护质量目标表新增计算**********/
  397. function dljszkxzInit(){
  398. if(pd_TABLETYPE == "highway_quality_goals_table"){
  399. setPQI($('.PCI_STATUS')[0]);
  400. //setPQI($('.PCI_TARGET')[0]);
  401. $('#SRI_PWI.active').on('click',function(){
  402. var bval = $('#SRI_PWI').html();
  403. if(bval == 'SRI'){
  404. $('#SRI_PWI').html('PWI');
  405. $('.SRI_PWI').val('PWI');
  406. $('.SRI_PWI').attr('value','PWI');
  407. }else if(bval == 'PWI'){
  408. $('#SRI_PWI').html('SRI');
  409. $('.SRI_PWI').val('SRI');
  410. $('.SRI_PWI').attr('value','SRI');
  411. }
  412. setPQI($('.PCI_STATUS')[0]);
  413. //setPQI($('.PCI_TARGET')[0]);
  414. });
  415. }
  416. };
  417. function setMQI(e){
  418. var type = '_'+e.name.split('_')[1]
  419. if(type == '_STATUS'){
  420. var totalvalue = 0;
  421. var mc = ['SCI','PQI','BCI','TCI'];
  422. var qz = [0.08,0.7,0.12,0.1];
  423. for(var i=0;i<mc.length;i++){
  424. var editcellval = $('.'+mc[i]+type).val();
  425. if(typeof(editcellval) != "undefined") totalvalue += Number(editcellval)*qz[i];
  426. }
  427. $('.MQI'+type).val(numFormat(totalvalue) + '');
  428. }
  429. }
  430. function setPQI(e){
  431. var type = '_'+e.name.split('_')[1]
  432. var totalvalue = 0;
  433. var mc = ['PCI','RQI','RDI','PBI'];
  434. var qz = [0.35,0.3,0.15,0.1,0.1];
  435. mc.push($('#SRI_PWI').html());
  436. for(var i=0;i<mc.length;i++){
  437. var editcellval = $('.'+mc[i]+type).val();
  438. if(typeof(editcellval) != "undefined") totalvalue += Number(editcellval)*qz[i];
  439. }
  440. $('.PQI'+type).val(numFormat(totalvalue) + '');
  441. //重设MQI
  442. setMQI(e);
  443. }
  444. /**********高速公路养护质量目标表新增计算**********/
  445. //获取本网站的顶级节点,解决被其他网站iframe引入时发生的跨域问题
  446. function getTop(obj){
  447. var tp = obj;
  448. //alert(obj.name);
  449. if (tp.mainFrame == undefined) {
  450. tp = tp.parent;
  451. return getTop(tp);
  452. } else {
  453. return tp;
  454. }
  455. }