highwayEmergencyProjectDettable.js 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033
  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_ROLENAME = $('#pd_ROLENAME').html();
  5. var pd_TABLETYPE = $('#pd_TABLETYPE').html();
  6. var pd_COMPANY = $("input[name='COMPANY']").val();
  7. var pd_COMPANY_ID = $("input[name='COMPANY_ID']").val();
  8. var pd_YEAR = $("input[name='YEAR']").val();
  9. var pd_ROAD_ID = $("input[name='ROAD_ID']").val();
  10. var pd_ROAD = $("input[name='ROAD']").val();
  11. var pd_mode = $("#pd_mode").html();
  12. var editflag = 0;
  13. var recordData = new Object();
  14. var recordBeforeValue = new Object();
  15. var sublistRecordData = new Object();
  16. var sublistRecordBeforeValue = new Object();
  17. var status = $('input[name="STATUS"]').val();
  18. var currStatus = status;
  19. var rocordInfoList = new Object();
  20. var sublistRecordInfoList = new Object();
  21. var validateJsonData = new Object();
  22. var labelsObj = new Object();
  23. var validateObj = new Object();
  24. function tableInit(){
  25. //子表行总计各行初始化
  26. $('.sublisttr').each(function(index,e){
  27. setUnitTotalCell(e);
  28. });
  29. //小计行的总计列
  30. setTotalCell(0);
  31. setTotalCell(1);
  32. //重新计算工程估算
  33. $('.PROJECT_COST').val($('.sumCell.TOTAL_COST').val());
  34. // setProjectScale();
  35. //数字格式化
  36. $("input.editInput").each(function(index,e){
  37. if($(e).attr('name')=='UNIT_PRICE'||$(e).attr('name')=='AUDIT_FEE'||$(e).hasClass('PLAN_COST')){
  38. var num = $(e).val();
  39. num = numFormat(num);
  40. $(e).val(num);
  41. }
  42. });
  43. // $('.PROJECT_COST').val(numFormat($('.PROJECT_COST').val()));
  44. //留痕标红
  45. setRecordInfo();
  46. setSubRecordInfo();
  47. }
  48. function setTotalCell(index){
  49. if(index < $('.totaltr').find('.sumCell').length){
  50. var totalvalue = 0;
  51. for(var i=0; i<$('.sublisttr').length; i++){
  52. var editcellval = $('.sublisttr').eq(i).find('input[totalType="sum"]').eq(index).val();
  53. if(typeof(editcellval) != "undefined")
  54. totalvalue += Number(editcellval);
  55. }
  56. //单位 元——万元
  57. if(pd_TABLETYPE != 'highway_scientific_project_dettable') totalvalue = totalvalue/10000;
  58. $('.totaltr').find('.sumCell').eq(index).val(numFormat(totalvalue) + '');
  59. }
  60. }
  61. function editTable(){
  62. if(editflag == 0){
  63. $('#editbutton').html('编辑中');
  64. $("select.editInput").removeAttr("disabled");
  65. $(".keyWordsCheckbox").removeAttr("disabled");
  66. // if(pd_ROLENAME != '控股集团管理员'){
  67. // $("input.editInput:not(.AUDIT_FEE)").removeAttr("readonly");
  68. // $("textarea.editInput:not(.AUDIT_MAKER)").removeAttr("readonly");
  69. // //textarea替换
  70. // $('textarea:not(.AUDIT_MAKER)').show();
  71. // $('pre:not(.AUDIT_MAKER)').hide();
  72. // }else{
  73. // $("input.editInput").removeAttr("readonly");
  74. // $("textarea.editInput").removeAttr("readonly");
  75. // //textarea替换
  76. // $('textarea').show();
  77. // $('pre').hide();
  78. // }
  79. $("input.editInput").removeAttr("readonly");
  80. $("textarea.editInput").removeAttr("readonly");
  81. //textarea替换
  82. $('textarea').show();
  83. $('pre').hide();
  84. editflag = 1;
  85. }else if(editflag == 1){
  86. $('#editbutton').html('编辑');
  87. $("input.editInput").attr("readonly","readonly" );
  88. $("textarea.editInput").attr("readonly","readonly" );
  89. $("select.editInput").attr("disabled","disabled" );
  90. $(".keyWordsCheckbox").attr("disabled","disabled" );
  91. editflag = 0;
  92. //textarea替换
  93. $('textarea').hide();
  94. $('textarea.bz').show();
  95. $('textarea').each(function(index,e){
  96. $(e).parent().find('pre').html($(e).val());
  97. })
  98. $('pre').show();
  99. }
  100. }
  101. function changeTableName(name){
  102. var projectName = name + "---" + $('.PROJECT_NAME').val();
  103. $.ajax({
  104. type : "get",
  105. url : locat+'/annualPlan/changeTableName.do?TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID
  106. +'&COMPANY='+pd_COMPANY+'&ROAD='+pd_ROAD + '&PROJECT_NAME='+projectName,
  107. dataType : 'json',
  108. success : function(data){
  109. //alert("change success!");
  110. }
  111. });
  112. saveTable("1");
  113. }
  114. function saveTable(type){
  115. getTop(globalThis).jzts();
  116. for(var o=0;o<validateObj.length;o++){
  117. var isnotnull = 0;
  118. if(validateObj[o].notnull == '1'){
  119. if(!$('.editInput[name="'+validateObj[o].column+'"]').val()){
  120. isnotnull = 1;
  121. }else if($('.editInput[name="'+validateObj[o].column+'"]').val().trim()==''){
  122. isnotnull = 1;
  123. }
  124. }
  125. if(isnotnull == 1){
  126. if(validateObj[o].column=='PLAN_COST'||validateObj[o].column=='PLAN_QUANTITIES'){
  127. $('.editInput.'+validateObj[o].column).each(function(index,e){
  128. if(!$(e).val()){
  129. var vobj = $(e).parent();
  130. vobj.find('.vtip').remove();
  131. vobj.append("<div class='vtip'>该字段不能为空</div>");
  132. vobj.find('.vtip').width(vobj.width());
  133. }
  134. })
  135. }else{
  136. var vobj = $('.editInput[name="'+validateObj[o].column+'"]').parent();
  137. vobj.find('.vtip').remove();
  138. vobj.append("<div class='vtip'>该字段不能为空</div>");
  139. vobj.find('.vtip').width(vobj.width());
  140. }
  141. }
  142. }
  143. if($('.vtip').length == 0){
  144. // changeStatus(type);
  145. if(editflag == 1){
  146. $('#editbutton').html('编辑');
  147. $("input.editInput").attr("readonly","readonly" );
  148. $("textarea.editInput").attr("readonly","readonly" );
  149. $("select.editInput").attr("disabled","disabled" );
  150. $(".keyWordsCheckbox").attr("disabled","disabled" );
  151. editflag = 0;
  152. //textarea替换
  153. $('textarea').hide();
  154. $('textarea.bz').show();
  155. $('textarea').each(function(index,e){
  156. $(e).parent().find('pre').html($(e).val());
  157. })
  158. $('pre').show();
  159. }
  160. var tabledata = dataResult();
  161. //进度月度分解
  162. var dataYDFJ = dataYDFJResult();
  163. $.ajax({
  164. type : "post",
  165. url : locat+'/annualDailyComp/saveDocData.do?TABLETYPE='
  166. +pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD_ID='+$('input[name="ROAD_ID"]').val()
  167. +'&mode='+pd_mode+'&PROJECT_NAME='+$('.PROJECT_NAME').val()+'&COMPANY='+pd_COMPANY+'&ROAD='+$("input[name='ROAD']").val(),
  168. data:{
  169. data:JSON.stringify(tabledata),
  170. dataYDFJ:JSON.stringify(dataYDFJ)
  171. },
  172. dataType : 'json',
  173. success : function(data){
  174. if(data.msg == 'success'){
  175. //保存后不能改项目名称
  176. $('.PROJECT_NAME').removeClass("editInput");
  177. //留痕
  178. if(JSON.stringify(recordData) != "{}") saveRecordInfo();
  179. if(JSON.stringify(sublistRecordData) != "{}") saveSublistRecordInfo();
  180. //保存后更新input原始值
  181. for(var i=0;i<$('.editInput').length;i++){
  182. var e = $('.editInput')[i];
  183. $(e).attr('value',$(e).val());
  184. }
  185. //保存后更新子表id
  186. if(data.idlist){
  187. for(var i=0;i<data.idlist.length;i++){
  188. var name = data.idlist[i].name;
  189. var id = data.idlist[i].id;
  190. for(var j=0;j<$(".ITEM_NAME").length;j++){
  191. if($(".ITEM_NAME").eq(j).val() == name){
  192. $(".ITEM_NAME").eq(j).parent().parent().find("td>input[name='ID']").val(id);
  193. break;
  194. }
  195. }
  196. }
  197. }
  198. $('#pd_mode').html("edit");
  199. getTop(globalThis).hangge();
  200. bootbox.dialog({
  201. message: "<span class='bigger-110'>保存成功!</span>",
  202. buttons:
  203. {
  204. "button" :
  205. {
  206. "label" : "确定",
  207. "className" : "btn-sm btn-success",
  208. "callback" : function(){
  209. var selfhref = "yjmonthProgress/showTableRecod.do?YEAR="+pd_YEAR
  210. +"&COMPANY_ID="+pd_COMPANY_ID+"&COMPANY="+pd_COMPANY
  211. +"&ROAD_ID="+$('input[name="ROAD_ID"]').val()
  212. +"&ROAD="+$('input[name="ROAD"]').val()
  213. +"&PROJECT_NAME="+$('.PROJECT_NAME').val()
  214. self.location.href = selfhref;
  215. }
  216. }
  217. }
  218. });
  219. }else{
  220. getTop(globalThis).hangge();
  221. bootbox.dialog({
  222. message: "<span class='bigger-110'>"+data.msg+"</span>",
  223. buttons:
  224. {
  225. "button" :
  226. {
  227. "label" : "确定",
  228. "className" : "btn-sm btn-success"
  229. }
  230. }
  231. });
  232. }
  233. },
  234. error:function(){
  235. getTop(globalThis).hangge();
  236. bootbox.dialog({
  237. message: "<span class='bigger-110'>保存失败!</span>",
  238. buttons:
  239. {
  240. "button" :
  241. {
  242. "label" : "确定",
  243. "className" : "btn-sm btn-success"
  244. }
  245. }
  246. });
  247. }
  248. });
  249. // updateStatus(type);
  250. }else{
  251. getTop(globalThis).hangge();
  252. bootbox.dialog({
  253. message: "<span class='bigger-110'>仍有数据不符合要求!</span>",
  254. buttons:
  255. {
  256. "button" :
  257. {
  258. "label" : "确定",
  259. "className" : "btn-sm btn-success"
  260. }
  261. }
  262. });
  263. }
  264. }
  265. function changeStatus(type){
  266. for(var i=0;i<$("input[name='STATUS']").length;i++){
  267. var e = $("input[name='STATUS']")[i];
  268. $(e).attr('value',type);
  269. $(e).val(type);
  270. currStatus = type;
  271. }
  272. }
  273. function updateStatus(type){
  274. $.ajax({
  275. type : "get",
  276. url : locat+'/annualDailyComp/updateStatus.do?STATUS='+type+'&TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID
  277. +'&COMPANY='+pd_COMPANY+'&ROAD='+pd_ROAD,
  278. dataType : 'json',
  279. success : function(data){
  280. //alert("change success!");
  281. }
  282. });
  283. }
  284. function addNewTableInfo(name){
  285. var projectName = name + "---" + $('.PROJECT_NAME').val();
  286. $.ajax({
  287. type : "get",
  288. url : locat+'/annualPlan/addNewTableInfo.do?TABLETYPE='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID
  289. +'&COMPANY='+pd_COMPANY+'&ROAD='+pd_ROAD + '&PROJECT_NAME='+projectName,
  290. dataType : 'json',
  291. success : function(data){
  292. //alert("change success!");
  293. }
  294. });
  295. saveTable("1");
  296. }
  297. //主表留痕标红
  298. function saveRecordInfo(){
  299. if($("input[name='PROJECT_NAME']").val() || pd_TABLETYPE=='highway_technica_statable' || pd_TABLETYPE=='highway_traiffcinfo_sumtable'){
  300. $.ajax({
  301. type : "post",
  302. url : locat+'/annualDailyComp/saveRecordInfo.do?TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID
  303. +'&YEAR='+pd_YEAR+'&BEFORE_STATUS='+status+'&AFTER_STATUS='+currStatus
  304. +'&ROAD_ID='+$('input[name="ROAD_ID"]').val()+'&type=PROJECT_NAME',
  305. data:{
  306. recordData:JSON.stringify(recordData),
  307. recordBeforeValue:JSON.stringify(recordBeforeValue)
  308. },
  309. dataType : 'json',
  310. success : function(data){
  311. recordData = new Object();
  312. recordBeforeValue = new Object();
  313. //留痕标红
  314. setRecordInfo();
  315. }
  316. });
  317. }
  318. }
  319. //子表留痕标红
  320. function saveSublistRecordInfo(){
  321. // var projectName = $("input[name='PROJECT_NAME']").val()?$("input[name='PROJECT_NAME']").val():'';
  322. if($("input[name='PROJECT_NAME']").val()){
  323. $.ajax({
  324. type : "post",
  325. url : locat+'/annualDailyComp/saveRecordInfo.do?TABLE_NAME='+pd_TABLETYPE+'_cost&COMPANY_ID='
  326. +pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&BEFORE_STATUS='+status+'&AFTER_STATUS='+currStatus
  327. +'&ROAD_ID='+$('input[name="ROAD_ID"]').val()+'&PROJECT_NAME='+$("input[name='PROJECT_NAME']").val()+'&type=ITEM_ID',
  328. data:{
  329. recordData:JSON.stringify(sublistRecordData),
  330. recordBeforeValue:JSON.stringify(sublistRecordBeforeValue)
  331. },
  332. dataType : 'json',
  333. success : function(data){
  334. sublistRecordData = new Object();
  335. sublistRecordBeforeValue = new Object();
  336. //留痕标红
  337. setSubRecordInfo();
  338. }
  339. });
  340. }
  341. }
  342. function dataResult(){
  343. var mapArry1 = $("#Form1").serializeArray();
  344. var dataArry = [];
  345. var recordmap = new Object();
  346. for(var i=0; i<mapArry1.length; i++){
  347. recordmap[mapArry1[i].name] = mapArry1[i].value;
  348. }
  349. var mapArry3 = $("#Form3").serializeArray();
  350. for(var i=0; i<mapArry3.length; i++){
  351. recordmap[mapArry3[i].name] = mapArry3[i].value;
  352. }
  353. dataArry.push(recordmap);
  354. var mapArry2 = $("#Form2").serializeArray();
  355. var cellcount = mapArry2.length/8;
  356. var recordcount = 8;
  357. for(var i=0; i<recordcount; i++){
  358. var recordmap = new Object();
  359. for(var j=0; j<cellcount; j++){
  360. recordmap[mapArry2[i*cellcount+j].name] = mapArry2[i*cellcount+j].value;
  361. }
  362. dataArry.push(recordmap);
  363. }
  364. return dataArry;
  365. }
  366. //主表编辑input失焦后操作
  367. function editValue(e){
  368. if(!$(e).attr('readonly')){
  369. //数字格式化
  370. // var num = "";
  371. // if(e.tagName == "INPUT"){
  372. // num = $(e).val();
  373. // num = numFormat(num);
  374. // $(e).val(num);
  375. // }
  376. if($(e).attr("totalType") == "sum") setTotalCell($(e).parent().parent().find('input[totalType="sum"]').index(e));
  377. setTrPercentCell($(e).parent().parent()[0]);
  378. setTrPercentCell($(".totaltr")[0]);
  379. if($('#pd_mode').html() == 'edit') setRecordData(e);
  380. //校验
  381. validateTip(e);
  382. }
  383. }
  384. //子表编辑input失焦后操作
  385. function editSublistValue(e){
  386. if(!$(e).attr('readonly')){
  387. //数字格式化
  388. // var num = "";
  389. // if(e.tagName == "INPUT"){
  390. // num = $(e).val();
  391. // num = numFormat(num);
  392. // $(e).val(num);
  393. // }
  394. if($(e).attr("totalType") == "sum") setTotalCell($(e).parent().parent().find('input[totalType="sum"]').index(e));
  395. setTrPercentCell($(e).parent().parent()[0]);
  396. setTrPercentCell($(".totaltr")[0]);
  397. if($('#pd_mode').html() == 'edit') setSublistRecordData(e);
  398. //校验
  399. validateTip(e);
  400. }
  401. }
  402. function resetUnitTotal(e){
  403. if(!$(e).attr('readonly')){
  404. setUnitTotalCell($(e).parent().parent()[0]);
  405. setTotalCell(0);
  406. $('.PROJECT_COST').val($('.sumCell.TOTAL_COST').val());
  407. //重新计算月度进程百分比
  408. $('.COST_RATIO').each(function(index,e){
  409. setCostRatio(e);
  410. })
  411. setProjectScale();
  412. }
  413. }
  414. //主表留痕数据
  415. function setRecordData(e){
  416. if(e){
  417. var key = $(e).attr('name');
  418. // var roadid = $("input[name='PROJECT_NAME']").val();
  419. var roadid = $("input[name='PROJECT_NAME']").val()?$("input[name='PROJECT_NAME']").val():'';
  420. var value = $(e).val();
  421. var beforeValue = $(e).attr('value');
  422. if($(e).val() != $(e).attr('value') && $(e).attr('value') != ''){
  423. if(!recordData[roadid]){
  424. recordData[roadid] = new Object();
  425. recordBeforeValue[roadid] = new Object();
  426. }
  427. recordData[roadid][key] = value;
  428. recordBeforeValue[roadid][key] = beforeValue;
  429. }else if($(e).val() == $(e).attr('value') && $(e).attr('value') != ''){
  430. if(roadid in recordData && key in recordData[roadid]){
  431. delete recordData[roadid][key];
  432. delete recordBeforeValue[roadid][key];
  433. if(JSON.stringify(recordData[roadid]) == "{}"){
  434. delete recordData[roadid];
  435. delete recordBeforeValue[roadid];
  436. }
  437. }
  438. }
  439. }
  440. }
  441. //子表留痕数据
  442. function setSublistRecordData(e){
  443. var key = $(e).attr('name');
  444. var roadid = $(e).parent().parent().find('td>input[name="ID"]').val();
  445. var value = $(e).val();
  446. var beforeValue = $(e).attr('value');
  447. if($(e).val() != $(e).attr('value') && $(e).attr('value') != ''){
  448. if(!sublistRecordData[roadid]){
  449. sublistRecordData[roadid] = new Object();
  450. sublistRecordBeforeValue[roadid] = new Object();
  451. }
  452. sublistRecordData[roadid][key] = value;
  453. sublistRecordBeforeValue[roadid][key] = beforeValue;
  454. }else if($(e).val() == $(e).attr('value') && $(e).attr('value') != ''){
  455. if(key in sublistRecordData[roadid] && roadid in sublistRecordData){
  456. delete sublistRecordData[roadid][key];
  457. delete sublistRecordBeforeValue[roadid][key];
  458. if(JSON.stringify(sublistRecordData[roadid]) == "{}"){
  459. delete sublistRecordData[roadid];
  460. delete sublistRecordBeforeValue[roadid];
  461. }
  462. }
  463. }
  464. }
  465. function setTrPercentCell(tr){
  466. $(tr).find("td>.percentCell").each(function(index,e){
  467. if(e.tagName == "INPUT"){
  468. var num1 = $(tr).find("td>."+$(e).attr("num1")).val();
  469. var num2 = $(tr).find("td>."+$(e).attr("num2")).val();
  470. var result = percentage(num1, num2);
  471. $(e).val(result);
  472. }else if(e.tagName == "SPAN"){
  473. var num1 = $(tr).find("td>."+$(e).attr("num1")).html();
  474. var num2 = $(tr).find("td>."+$(e).attr("num2")).html();
  475. var result = percentage(num1, num2);
  476. $(e).html(result);
  477. }
  478. });
  479. }
  480. function setUnitTotalCell(tr){
  481. $(tr).find("td>.unitTotalCell").each(function(index,e){
  482. var num1 = $(tr).find("td>."+$(e).attr("num1")).val();
  483. var num2 = $(tr).find("td>."+$(e).attr("num2")).val();
  484. var result = unitTotal(num1, num2);
  485. $(e).val(result);
  486. });
  487. }
  488. function percentage(num1, num2){
  489. var percent = "";
  490. if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num2) != "0" )
  491. percent = Math.round(Number(num1) / Number(num2) * 100);
  492. // percent = Math.round(Number(num1) / Number(num2) * 100) + "%";
  493. return percent;
  494. }
  495. function unitTotal(num1, num2){
  496. var unitTotal = "";
  497. if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num1) != "0" && Number(num2) != "0") unitTotal = Number(num1) * Number(num2);
  498. if(!isNaN(Number(unitTotal)) && Number(unitTotal) != "0") unitTotal = numFormat(unitTotal);
  499. return unitTotal;
  500. }
  501. function numFormat(num){
  502. if(!isNaN(Number(num)) && Number(num) != "0"){
  503. if(num<10) num = Number(num).toFixed(1);
  504. else num = Math.round(Number(num));
  505. }
  506. return num;
  507. }
  508. function setProjectScale(){
  509. var cost = $(".PROJECT_COST").val();
  510. var result = "";
  511. if(typeof(cost) != "undefined" && cost != ""){
  512. cost = Number(cost);
  513. if(cost < 500) result = "小修";
  514. else if(cost >= 500 && cost < 5000) result = "中修";
  515. else if(cost >= 5000) result = "大修";
  516. }
  517. $('.PROJECT_SCALE').val(result);
  518. }
  519. function setProjectName(){
  520. var name = $(".PROJECT_NAME").val();
  521. $('.sublisttr>td>input[name="PROJECT_NAME"]').attr('value',name);
  522. }
  523. function setCategory(){
  524. var value = $('.CATEGORY>option:selected').text();
  525. $('input[name="CATEGORY"]').val(value);
  526. // $('input[name="CATEGORY"]').attr('value',value);
  527. //留痕
  528. if($('#pd_mode').html() == 'edit') setRecordData($('input[name="CATEGORY"]')[0]);
  529. }
  530. function setCategorySelect(){
  531. var value = $('input[name="CATEGORY"]').val();
  532. $(".CATEGORY>option:selected").removeAttr("selected");
  533. if(value == "") $(".CATEGORY>option").eq(0).attr("selected","selected");
  534. else $(".CATEGORY>option:contains('"+value+"')").attr("selected","selected");
  535. }
  536. function setKeyWords(){
  537. var arr = [];
  538. $("input[type='checkbox']:checked").each(function (index,e) {
  539. arr.push($(this).parent().text());
  540. });
  541. $('input[name="KEY_WORDS"]').val(arr.join(","));
  542. //留痕
  543. if($('#pd_mode').html() == 'edit') setRecordData($('input[name="KEY_WORDS"]')[0]);
  544. }
  545. function setKeyWordsLabels(){
  546. $('#keyWordsCell').html('');
  547. var categoryType = $('.CATEGORY>option:selected').text();
  548. var arr = [];
  549. if(categoryType != ''){
  550. arr = labelsObj[pd_TABLETYPE][categoryType];
  551. }
  552. var str = '';
  553. for(var i=0; i<arr.length; i++){
  554. str += '<label><input class="keyWordsCheckbox" type="checkbox" onchange="setKeyWords();"/>'+arr[i]+'</label>';
  555. }
  556. $('#keyWordsCell').html(str);
  557. //设置关键字数值
  558. setKeyWords();
  559. }
  560. function setLabelsSelected(){
  561. if($('input[name="KEY_WORDS"]').attr('value')){
  562. var arr = $('input[name="KEY_WORDS"]').attr('value').split(',');
  563. for(var i=0; i<arr.length; i++){
  564. $(".keyWordsCheckbox").each(function (index,e) {
  565. if($(this).parent().text() == arr[i]) $(this).attr("checked","checked");
  566. });
  567. }
  568. }
  569. //设置关键字数值
  570. setKeyWords();
  571. }
  572. function setRoad(){
  573. var value = $('.ROAD>option:selected').text();
  574. var idvalue = $('.ROAD>option:selected').val();
  575. $('input[name="ROAD"]').val(value);
  576. $('input[name="ROAD_ID"]').val(idvalue);
  577. //留痕
  578. if($('#pd_mode').html() == 'edit'){
  579. setRecordData($('input[name="ROAD"]')[0]);
  580. setRecordData($('input[name="ROAD_ID"]')[0]);
  581. }
  582. }
  583. function setRoadSelect(){
  584. var value = $('input[name="ROAD_ID"]').val();
  585. $(".ROAD>option:selected").removeAttr("selected");
  586. if(value == ""){
  587. $(".ROAD>option").eq(0).attr("selected","selected");
  588. setRoad();
  589. }else{
  590. $(".ROAD>option[value='"+value+"']").attr("selected","selected");
  591. }
  592. }
  593. //主表查询留痕数据并标红
  594. function setRecordInfo(){
  595. if($("input[name='PROJECT_NAME']").val() || pd_TABLETYPE=='highway_technica_statable' || pd_TABLETYPE=='highway_traiffcinfo_sumtable'){
  596. var ritype = 1;
  597. if(pd_TABLETYPE=='highway_technica_statable' || pd_TABLETYPE=='highway_traiffcinfo_sumtable') ritype = 3;
  598. $.ajax({
  599. type : "get",
  600. url : locat+'/annualDailyComp/showRecodInfo.do?TABLE_NAME='+pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID
  601. +'&YEAR='+pd_YEAR+'&ROAD_ID='+$('input[name="ROAD_ID"]').val()
  602. +'&PROJECT_NAME='+$("input[name='PROJECT_NAME']").val()+'&type='+ritype,
  603. dataType : 'json',
  604. success : function(data){
  605. for(var e in rocordInfoList){
  606. $('.highlight').removeClass(e);
  607. }
  608. $('.highlight').removeClass('highlight');
  609. rocordInfoList = data.rocordInfoList;
  610. for(var e in data.rocordInfoList){
  611. if(data.rocordInfoList[e].TABLE_FIELDS == "KEY_WORDS"){
  612. $('input[name="KEY_WORDS"]').addClass("highlight " + e);
  613. $('#keyWordsCell label').css('color','red');
  614. }else if(data.rocordInfoList[e].TABLE_FIELDS == "CATEGORY"){
  615. $('input[name="CATEGORY"]').addClass("highlight " + e);
  616. $('.CATEGORY').addClass("highlight");
  617. }else if(data.rocordInfoList[e].TABLE_FIELDS == "ROAD"){
  618. $('input[name="ROAD"]').addClass("highlight " + e);
  619. $('.ROAD').addClass("highlight");
  620. }else {
  621. $('.'+data.rocordInfoList[e].TABLE_FIELDS).addClass("highlight " + e);
  622. //pre
  623. $('textarea.highlight').each(function(index,e){
  624. $(e).parent().find('pre').attr('class',$(e).attr('class'));
  625. });
  626. }
  627. }
  628. }
  629. });
  630. }
  631. }
  632. //子表查询留痕数据并标红
  633. function setSubRecordInfo(){
  634. if($("input[name='PROJECT_NAME']").val()){
  635. $.ajax({
  636. type : "get",
  637. url : locat+'/annualDailyComp/showRecodInfo.do?TABLE_NAME='+pd_TABLETYPE+'_cost&COMPANY_ID='+pd_COMPANY_ID
  638. +'&YEAR='+pd_YEAR+'&ROAD_ID='+$('input[name="ROAD_ID"]').val()
  639. +'&PROJECT_NAME='+$("input[name='PROJECT_NAME']").val()+'&type=2',
  640. dataType : 'json',
  641. success : function(data){
  642. for(var e in sublistRecordInfoList){
  643. $('.subhighlight').removeClass(e);
  644. }
  645. $('.subhighlight').removeClass('subhighlight');
  646. sublistRecordInfoList = data.rocordInfoList;
  647. for(var e in sublistRecordInfoList){
  648. $('input[name="ID"]').each(function(index,obj){
  649. if($(this).val() == sublistRecordInfoList[e].ITEM_ID){
  650. $(this).parent().parent().find('td>.'+sublistRecordInfoList[e].TABLE_FIELDS).addClass("subhighlight " + e);
  651. }
  652. })
  653. }
  654. }
  655. });
  656. }
  657. }
  658. function highlightInit(){
  659. $('.editInput').off("mouseover mouseout").on("mouseover mouseout",function(event){
  660. if($(this).attr('class').split(' ').length > 2){
  661. if(event.type == "mouseover"){
  662. var indexClass = $(this).attr('class').split(' ')[3];
  663. var typeClass = $(this).attr('class').split(' ')[2];
  664. if(typeClass == 'subhighlight'){
  665. var before = sublistRecordInfoList[indexClass].BEFORE_VAL?sublistRecordInfoList[indexClass].BEFORE_VAL:"空";
  666. var after = sublistRecordInfoList[indexClass].AFTER?sublistRecordInfoList[indexClass].AFTER:"空";
  667. var modifier = sublistRecordInfoList[indexClass].MODIFIER;
  668. var time = sublistRecordInfoList[indexClass].MODIFY_TIME;
  669. }else{
  670. var before = rocordInfoList[indexClass].BEFORE_VAL?rocordInfoList[indexClass].BEFORE_VAL:"空";
  671. var after = rocordInfoList[indexClass].AFTER?rocordInfoList[indexClass].AFTER:"空";
  672. var modifier = rocordInfoList[indexClass].MODIFIER;
  673. var time = rocordInfoList[indexClass].MODIFY_TIME;
  674. }
  675. $(this).parent().append('<div id="recordInfoDiv">修改人:'+modifier+'<br/>修改时间:'+time+'<br/>'+before+'<br/>'+after+'</div>');
  676. $('#recordInfoDiv').width($(this).parent().width());
  677. }else if(event.type == "mouseout"){
  678. $("#recordInfoDiv").remove();
  679. }
  680. }
  681. });
  682. $('#keyWordsCell').off("mouseover mouseout").on("mouseover mouseout",function(event){
  683. if($('input[name="KEY_WORDS"]').attr('class').split(' ').length > 1){
  684. if(event.type == "mouseover"){
  685. var indexClass = $('input[name="KEY_WORDS"]').attr('class').split(' ')[2];
  686. var typeClass = $('input[name="KEY_WORDS"]').attr('class').split(' ')[1];
  687. var before = rocordInfoList[indexClass].BEFORE_VAL?rocordInfoList[indexClass].BEFORE_VAL:"空";
  688. var after = rocordInfoList[indexClass].AFTER?rocordInfoList[indexClass].AFTER:"空";
  689. var modifier = rocordInfoList[indexClass].MODIFIER;
  690. var time = rocordInfoList[indexClass].MODIFY_TIME;
  691. $('#keyWordsCell').append('<div id="recordInfoDiv">修改人:'+modifier+'<br/>修改时间:'+time+'<br/>'+before+'<br/>'+after+'</div>');
  692. $('#recordInfoDiv').width($('#keyWordsCell').width());
  693. }else if(event.type == "mouseout"){
  694. $("#recordInfoDiv").remove();
  695. }
  696. }
  697. });
  698. $('#categoryCell').off("mouseover mouseout").on("mouseover mouseout",function(event){
  699. if($('input[name="CATEGORY"]').attr('class').split(' ').length > 1){
  700. if(event.type == "mouseover"){
  701. var indexClass = $('input[name="CATEGORY"]').attr('class').split(' ')[2];
  702. var typeClass = $('input[name="CATEGORY"]').attr('class').split(' ')[1];
  703. var before = rocordInfoList[indexClass].BEFORE_VAL?rocordInfoList[indexClass].BEFORE_VAL:"空";
  704. var after = rocordInfoList[indexClass].AFTER?rocordInfoList[indexClass].AFTER:"空";
  705. var modifier = rocordInfoList[indexClass].MODIFIER;
  706. var time = rocordInfoList[indexClass].MODIFY_TIME;
  707. $('#categoryCell').append('<div id="recordInfoDiv">修改人:'+modifier+'<br/>修改时间:'+time+'<br/>'+before+'<br/>'+after+'</div>');
  708. $('#recordInfoDiv').width($('#categoryCell').width());
  709. }else if(event.type == "mouseout"){
  710. $("#recordInfoDiv").remove();
  711. }
  712. }
  713. });
  714. $('#roadCell').off("mouseover mouseout").on("mouseover mouseout",function(event){
  715. if($('input[name="ROAD"]').attr('class').split(' ').length > 1){
  716. if(event.type == "mouseover"){
  717. var indexClass = $('input[name="ROAD"]').attr('class').split(' ')[2];
  718. var typeClass = $('input[name="ROAD"]').attr('class').split(' ')[1];
  719. var before = rocordInfoList[indexClass].BEFORE_VAL?rocordInfoList[indexClass].BEFORE_VAL:"空";
  720. var after = rocordInfoList[indexClass].AFTER?rocordInfoList[indexClass].AFTER:"空";
  721. var modifier = rocordInfoList[indexClass].MODIFIER;
  722. var time = rocordInfoList[indexClass].MODIFY_TIME;
  723. $('#roadCell').append('<div id="recordInfoDiv">修改人:'+modifier+'<br/>修改时间:'+time+'<br/>'+before+'<br/>'+after+'</div>');
  724. $('#recordInfoDiv').width($('#roadCell').width());
  725. }else if(event.type == "mouseout"){
  726. $("#recordInfoDiv").remove();
  727. }
  728. }
  729. });
  730. }
  731. function uploadPic() {
  732. //var form = document.getElementById('upload'),
  733. var formData = new FormData($( "#upload" )[0]);
  734. var tabledata = dataResult();
  735. //var path = $("#pic").val();
  736. $.ajax({
  737. url:locat+'/annualDailyComp/importDoc?data='+JSON.stringify(tabledata)+'&TABLETYPE='
  738. +pd_TABLETYPE+'&COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&ROAD_ID='+pd_ROAD_ID,
  739. type:"post",
  740. data: formData,
  741. async: false,
  742. cache: false,
  743. contentType: false,
  744. processData: false,
  745. success:function(res){
  746. if(res){
  747. if(res.length>0){
  748. alert(res);
  749. }else{
  750. alert("上传成功!");
  751. }
  752. location.reload(true);
  753. }
  754. console.log(res);
  755. },
  756. error:function(err){
  757. alert("上传失败!");
  758. }
  759. })
  760. }
  761. //获取校验json
  762. function getValidateJson(){
  763. $.ajax({
  764. type : "get",
  765. url : locat + "/annualDailyComp/getValidateJson.do?TABLETYPE=" + pd_TABLETYPE,
  766. dataType : 'json',
  767. success : function(data){
  768. Object.assign(validateJsonData,data.map,data.submap);
  769. }
  770. });
  771. }
  772. //校验规则
  773. function validateFun(name,val,e){
  774. if(name){
  775. //月度分解计划总和不能大于工程估算
  776. if(name == 'SumPlanCost'){
  777. var project_cost = $('.PROJECT_COST').val();
  778. if(!isNaN(Number(val)) && !isNaN(Number(project_cost))){
  779. if (Number(val) > Number(project_cost)) return "该字段不能大于工程估算";
  780. else return "";
  781. }else return "";
  782. }
  783. if(name.indexOf('PLAN_COST') == 0) name = 'PLAN_COST';
  784. else if(name.indexOf('PLAN_QUANTITIES') == 0) name = 'PLAN_QUANTITIES';
  785. var vtype = validateJsonData[name].type;
  786. var vlength = validateJsonData[name].length;
  787. var vscale = validateJsonData[name].scale;
  788. var vnotnull = validateJsonData[name].notnull;
  789. if(val != ""){
  790. if(vtype == 'decimal'){
  791. var re = new RegExp("^(\\-|\\+)?\\d+(\\.\\d+)?$");
  792. //是否为数字
  793. if(!re.test(val)) return "请填写数字";
  794. //小数位数
  795. if(vscale == "1") $(e).val(numFormat(val));
  796. if(vscale != "1"){
  797. if(val.split(".").length = 2){
  798. if(val.split(".")[1].length > vscale) return "小数精度不超过"+vscale;
  799. }
  800. // re = new RegExp("/^\\d+(\\.\\d{1,"+vscale+"})?$/");
  801. // if(!re.test(val)) return "小数精度不超过"+vscale;
  802. }
  803. }
  804. //长度
  805. if(val.length > vlength) return "长度超长";
  806. }else{
  807. if(vnotnull == '1') return "该字段不能为空";
  808. }
  809. //分报告名称非空校验
  810. if(name == 'UNIT'||name == 'UNIT_PRICE'||name == 'NUMBER'||name == 'ITEM_NAME'){
  811. if($(e).parent().parent().find('>td>.UNIT').val()!=''
  812. ||$(e).parent().parent().find('>td>.UNIT_PRICE').val()!=''
  813. ||$(e).parent().parent().find('>td>.NUMBER').val()!=''
  814. ||$(e).parent().parent().find('>td>.ITEM_NAME').val()!=''){
  815. validatecostdataTip($(e).parent().parent().find('>td>.UNIT')[0]);
  816. validatecostdataTip($(e).parent().parent().find('>td>.UNIT_PRICE')[0]);
  817. validatecostdataTip($(e).parent().parent().find('>td>.NUMBER')[0]);
  818. validatecostdataTip($(e).parent().parent().find('>td>.ITEM_NAME')[0]);
  819. }else if($(e).parent().parent().find('>td>.UNIT').val()==''
  820. &&$(e).parent().parent().find('>td>.UNIT_PRICE').val()==''
  821. &&$(e).parent().parent().find('>td>.NUMBER').val()==''
  822. &&$(e).parent().parent().find('>td>.ITEM_NAME').val()==''){
  823. $(e).parent().parent().find('>td>.vtip').remove();
  824. }
  825. }
  826. //份报告名称为空后,重新校验名称重复
  827. if(name == 'ITEM_NAME'){
  828. for(var i=0; i<$('.ITEM_NAME').parent().find('.vtip').length; i++){
  829. if($('.ITEM_NAME').parent().find('.vtip').eq(i).html()=='该字段不能重复'){
  830. var reValidateE = $('.ITEM_NAME').parent().find('.vtip').eq(i).parent().find('.ITEM_NAME')[0];
  831. $('.ITEM_NAME').parent().find('.vtip').eq(i).remove();
  832. for(var j=0; j<$('.ITEM_NAME').length; j++){
  833. if($('.ITEM_NAME')[j] != reValidateE && $('.ITEM_NAME').eq(j).val() == $(reValidateE).val()){
  834. $(reValidateE).parent().append("<div class='vtip'>该字段不能重复</div>");
  835. $(reValidateE).parent().find('.vtip').width($(e).parent().width());
  836. }
  837. }
  838. }
  839. }
  840. if(val != ""){
  841. for(var i=0; i<$('.ITEM_NAME').length; i++){
  842. if($('.ITEM_NAME')[i] != e && $('.ITEM_NAME').eq(i).val() == val) return "该字段不能重复";
  843. }
  844. }
  845. }
  846. }
  847. return "";
  848. }
  849. //分报道非空校验提示
  850. function validatecostdataTip(e){
  851. $(e).val($(e).val().trim());
  852. if($(e).val()==""){
  853. $(e).parent().find('.vtip').remove();
  854. $(e).parent().append("<div class='vtip'>该字段不能为空</div>");
  855. $(e).parent().find('.vtip').width($(e).parent().width());
  856. }
  857. }
  858. //校验提示
  859. function validateTip(e){
  860. $(e).val($(e).val().trim());
  861. $(e).parent().find('.vtip').remove();
  862. var vtip = validateFun($(e).attr('name'),$(e).val(),e);
  863. if(vtip != ""){
  864. $(e).parent().append("<div class='vtip'>"+vtip+"</div>");
  865. $(e).parent().find('.vtip').width($(e).parent().width());
  866. }
  867. }
  868. function getKeywordsJson(){
  869. $.ajax({
  870. type : "get",
  871. url : locat + "/static/ace/json/keywords.json",
  872. dataType : 'json',
  873. success : function(data){
  874. labelsObj = data;
  875. setKeyWordsLabels();
  876. setLabelsSelected();
  877. //新增初始化可编辑
  878. if(pd_mode == 'add'){
  879. $("select.editInput").removeAttr("disabled");
  880. $(".keyWordsCheckbox").removeAttr("disabled");
  881. $("input.editInput").removeAttr("readonly");
  882. $("textarea.editInput").removeAttr("readonly");
  883. //textarea替换
  884. $('textarea').show();
  885. $('pre').hide();
  886. }else{
  887. $('textarea').hide();
  888. $('textarea.bz').show();
  889. $('pre').show();
  890. //checkbox禁用
  891. $(".keyWordsCheckbox").attr("disabled","disabled" );
  892. }
  893. }
  894. });
  895. }
  896. function notnullvalidate(){
  897. $.ajax({
  898. type : "get",
  899. url : locat + "/static/ace/json/doc.json",
  900. dataType : 'json',
  901. success : function(data){
  902. validateObj = data[pd_TABLETYPE];
  903. }
  904. });
  905. }
  906. /**********进度月度分解**********/
  907. function monthPlanInit(){
  908. setSumPlanCost();
  909. $('.COST_RATIO').each(function(index,e){
  910. setCostRatio(e);
  911. })
  912. }
  913. //小计行总计
  914. function setSumPlanCost(){
  915. var totalvalue = 0;
  916. $('.ydfj_tr .PLAN_COST').each(function(index,e){
  917. var editcellval = $(e).val();
  918. if(typeof(editcellval) != "undefined")
  919. totalvalue += Number(editcellval);
  920. });
  921. $('.ydfj_sum_tr .PLAN_COST').val(numFormat(totalvalue) + '');
  922. }
  923. //计算百分比
  924. function setCostRatio(e){
  925. var num1 = $(e).parent().parent().find("td>.PLAN_COST").val();
  926. var num2 = $('.PROJECT_COST').val();
  927. var result = percentage(num1, num2);
  928. $(e).html(result);
  929. //验证总计是否大于PROJECT_COST
  930. if($(e).is($('.ydfj_sum_tr .COST_RATIO'))) validateSumPlanCostTip($('.ydfj_sum_tr .PLAN_COST')[0]);
  931. }
  932. function editYDFJValue(e){
  933. if(!$(e).attr('readonly')){
  934. if($(e).hasClass('PLAN_COST')){
  935. setSumPlanCost();
  936. setCostRatio($(e).parent().parent().find("td>.COST_RATIO")[0]);
  937. setCostRatio($('.ydfj_sum_tr .COST_RATIO')[0]);
  938. }
  939. //校验
  940. validateTip(e);
  941. }
  942. }
  943. //月度总和校验提示
  944. function validateSumPlanCostTip(e){
  945. $(e).val($(e).val().trim());
  946. $(e).parent().find('.vtip').remove();
  947. var vtip = validateFun('SumPlanCost',$(e).val(),e);
  948. if(vtip != ""){
  949. $(e).parent().append("<div class='vtip'>"+vtip+"</div>");
  950. $(e).parent().find('.vtip').width($(e).parent().width());
  951. }
  952. }
  953. function dataYDFJResult(){
  954. var dataYDFJ = new Object();
  955. if(pd_TABLETYPE != "highway_scientific_project_dettable"){
  956. var mapArry = $("#Form4").serializeArray();
  957. for(var i=0; i<mapArry.length; i++){
  958. dataYDFJ[mapArry[i].name] = mapArry[i].value;
  959. }
  960. }
  961. return dataYDFJ;
  962. }
  963. function removeDefaut(e){
  964. if($(e).hasClass('PLAN_QUANTITIES') && $(e).val() == '--' && $(e).attr("readonly") != "readonly") $(e).val('');
  965. else if(($(e).hasClass('PLAN_COST') && $(e).val() == '0' || $(e).val() == '0.0') && $(e).attr("readonly") != "readonly") $(e).val('');
  966. }
  967. function setDefaut(e){
  968. if($(e).hasClass('PLAN_QUANTITIES') && $(e).val() == '' && $(e).attr("readonly") != "readonly") $(e).val('--');
  969. else if($(e).hasClass('PLAN_COST') && $(e).val() == '' && $(e).attr("readonly") != "readonly") $(e).val('0');
  970. }
  971. /**********进度月度分解**********/
  972. $(function(){
  973. notnullvalidate();
  974. monthPlanInit();
  975. tableInit();
  976. setCategorySelect();
  977. setCategory();
  978. getKeywordsJson();
  979. highlightInit();
  980. setProjectScale();
  981. // setKeyWordsLabels();
  982. // setLabelsSelected();
  983. getValidateJson();
  984. setRoadSelect();
  985. });
  986. //获取本网站的顶级节点,解决被其他网站iframe引入时发生的跨域问题
  987. function getTop(obj){
  988. var tp = obj;
  989. //alert(obj.name);
  990. if (tp.mainFrame == undefined) {
  991. tp = tp.parent;
  992. return getTop(tp);
  993. } else {
  994. return tp;
  995. }
  996. }