123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- var locat = (window.location+'').split('/');
- $(function(){if('fhsms'== locat[3]){locat = locat[0]+'//'+locat[2];}else{locat = locat[0]+'//'+locat[2]+'/'+locat[3];};});
- $(getTop(globalThis).hangge());
- var pd_TABLETYPE = $('#pd_TABLETYPE').html();
- var subtable = $('#subtable').html();
- var pd_COMPANY = $("#pd_COMPANY").html();
- var pd_COMPANY_ID = $("#pd_COMPANY_ID").html();
- var pd_YEAR = $("#pd_YEAR").html();
- var pd_mode = $("#pd_mode").html();
- var editflag = 0;
- var validateJsonData = new Object();
- function tableInit(){
- //小计行的总计列
- // setTotalCell(0);
- $('#simple-table tbody .edittr').each(function(index,e){
- //行内总计
- setRowSumCell(e);
- //百分比初始化
- setTrPercentCell(e);
-
- });
-
- //小计行的总计列
- var totalcells = $('#simple-table .totaltr .sumCell');
- for(var i=0; i<totalcells.length; i++){
- setTotalCell(i);
- }
- //总计行百分比初始化
- $('#simple-table tbody .totaltr').each(function(index,e){
- setTrPercentCell(e);
- });
-
- }
- function setTotalCell(index){
- if(index < $('#simple-table .totaltr .sumCell').length){
- var totalvalue = 0;
- for(var i=0; i<$('#simple-table .edittr').length; i++){
- var editcellval;
- if($('#simple-table .edittr').eq(i).find('[totalType="sum"]')[index].tagName == "INPUT")
- editcellval = $('#simple-table .edittr').eq(i).find('[totalType="sum"]').eq(index).val();
- else if($('#simple-table .edittr').eq(i).find('[totalType="sum"]')[index].tagName == "SPAN")
- editcellval = $('#simple-table .edittr').eq(i).find('[totalType="sum"]').eq(index).html();
- if(typeof(editcellval) != "undefined")
- totalvalue += Number(editcellval);
- }
- $('#simple-table .totaltr .sumCell').eq(index).html(numFormat(totalvalue) + '');
- $('#simple-table_tableColumnClone .totaltr .sumCell').eq(index).html(numFormat(totalvalue) + '');
- }
- }
- function editTable(){
- if(editflag == 0){
- $('#editbutton').html('编辑中');
- $("input.editInput").removeAttr("readonly");
- editflag = 1;
- }else if(editflag == 1){
- $('#editbutton').html('编辑');
- $("input.editInput").attr("readonly","readonly" );
- editflag = 0;
- }
- }
- function saveTable(type){
- if($('.vtip').length == 0){
- if(editflag == 1){
- $('#editbutton').html('编辑');
- $("input.editInput").attr("readonly","readonly" );
- editflag = 0;
- }
- var tabledata = dataResult();
- $.ajax({
- /* type : "get",
- url : locat+'/scientific/saveData.do?data='+JSON.stringify(tabledata)+'&TABLETYPE='+pd_TABLETYPE,*/
- type : "post",
- url : locat+'/scientific/saveData.do?TABLETYPE='+pd_TABLETYPE,
- data:{
- data:JSON.stringify(tabledata)
- },
- dataType : 'json',
- success : function(data){
- //保存后不能改项目名称
- $('.PROJECT_NAME').removeClass("editInput");
- //self.location.reload()
- $('#pd_mode').html("edit");
-
- getTop(globalThis).hangge();
- bootbox.dialog({
- message: "<span class='bigger-110'>保存成功!</span>",
- buttons:
- {
- "button" :
- {
- "label" : "确定",
- "className" : "btn-sm btn-success",
- "callback" : function(){
- //var selfhref = self.location.href;
- self.location.href;
- }
- }
- }
- });
- }
- });
- }else{
- getTop(globalThis).hangge();
- bootbox.dialog({
- message: "<span class='bigger-110'>仍有数据不符合要求!</span>",
- buttons:
- {
- "button" :
- {
- "label" : "确定",
- "className" : "btn-sm btn-success",
- "callback" : function(){
- //var selfhref = self.location.href;
- self.location.href;
- }
- }
- }
- });
- }
- }
- function dataResult(){
- var mapArry = $('#simple-table form').serializeArray();
- var dataArry = [];
- var cellcount = 55;
- var recordcount = $('#simple-table .edittr').length;
- for(var i=0; i<recordcount; i++){
- var recordmap = new Object();
- for(var j=0; j<cellcount; j++){
- recordmap[mapArry[i*cellcount+j].name] = mapArry[i*cellcount+j].value;
- }
- dataArry.push(recordmap);
- }
- return dataArry;
- }
- //主表编辑input失焦后操作
- function editValue(e){
- if(!$(e).attr('readonly')){
- //计算行内累计值
- setRowSumCell($(e).parent().parent()[0]);
- //计算行内百分比
- setTrPercentCell($(e).parent().parent()[0]);
- //计算小计行百分比
- setTrPercentCell($("#simple-table .totaltr")[0]);
- //小计行总计
- if($(e).attr("totalType") == "sum")
- setTotalCell($(e).parent().parent().find('[totalType="sum"]').index(e));
- $(e).parent().parent().find('.rowSumCell[totalType="sum"]').each(function(index,e){
- setTotalCell($(e).parent().parent().find('[totalType="sum"]').index(e));
- });
- //计算小计行百分比
- setTrPercentCell($("#simple-table .totaltr")[0]);
- //校验
- validateTip(e);
- }
- }
- function setSJWCGCL(e){
- var trindex = $('#simple-table_tableColumnClone tbody tr').index($(e).parent().parent());
- $('#simple-table tbody tr').eq(trindex).find('td .SJWCGCL').val($(e).val());
- }
- function resetUnitTotal(e){
- if(!$(e).attr('readonly')){
- setUnitTotalCell($(e).parent().parent()[0]);
- setTotalCell(0);
- $('.PROJECT_COST').val($('.sumCell.TOTAL_COST').val());
- setProjectScale();
- }
- }
- function setTrPercentCell(tr){
- $(tr).find("td>.percentCell").each(function(index,e){
- var num1,num2;
- if($(tr).find("td>."+$(e).attr("num1"))[0].tagName == "INPUT") num1 = $(tr).find("td>."+$(e).attr("num1")).val();
- else if($(tr).find("td>."+$(e).attr("num1"))[0].tagName == "SPAN") num1 = $(tr).find("td>."+$(e).attr("num1")).html();
- if($(tr).find("td>."+$(e).attr("num2"))[0].tagName == "INPUT") num2 = $(tr).find("td>."+$(e).attr("num2")).val();
- else if($(tr).find("td>."+$(e).attr("num2"))[0].tagName == "SPAN") num2 = $(tr).find("td>."+$(e).attr("num2")).html();
- var result = percentage(num1, num2);
- if(e.tagName == "INPUT") $(e).val(result);
- else if(e.tagName == "SPAN") $(e).html(result);
- });
- }
- function setRowSumCell(tr){
- $(tr).find("td>.rowSumCell").each(function(index,e){
- var totalvalue = 0;
- var sumtype = $(e).attr('class').split(' ')[1] + '_';
- for(var i=1; i<13; i++){
- var editcellval ="";
- if(sumtype=="PLAN_COST_"){
- editcellval = $(tr).find("td>."+sumtype+i).html();
- }
- else{
- editcellval = $(tr).find("td>."+sumtype+i).val();
- }
- if(typeof(editcellval) != "undefined")
- totalvalue += Number(editcellval);
- }
- $(e).html(numFormat(totalvalue) + '');
- });
- }
- function setUnitTotalCell(tr){
- $(tr).find("td>.unitTotalCell").each(function(index,e){
- var num1 = $(tr).find("td>."+$(e).attr("num1")).val();
- var num2 = $(tr).find("td>."+$(e).attr("num2")).val();
- var result = unitTotal(num1, num2);
- $(e).val(result);
- });
- }
- function percentage(num1, num2){
- var percent = "";
- if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num2) != "0" && num1 != '')
- percent = Math.round(Number(num1) / Number(num2) * 100) ;
- return percent;
- }
- function unitTotal(num1, num2){
- var unitTotal = "";
- if(!isNaN(Number(num1)) && !isNaN(Number(num2)) && Number(num1) != "0" && Number(num2) != "0") unitTotal = Number(num1) * Number(num2);
- if(!isNaN(Number(unitTotal)) && Number(unitTotal) != "0") unitTotal = numFormat(unitTotal);
- return unitTotal;
- }
- function numFormat(num){
- if(!isNaN(Number(num)) && Number(num) != "0"){
- if(num<10) num = Number(num).toFixed(1);
- else num = Math.round(Number(num));
- }
- return num;
- }
- //获取校验json
- function getValidateJson(){
- $.ajax({
- type : "get",
- url : locat + "/annualDailyComp/getValidateJson.do?TABLETYPE=" + pd_TABLETYPE,
- dataType : 'json',
- success : function(data){
- Object.assign(validateJsonData,data.map,data.submap);
- }
- });
- }
- //校验规则
- function validateFun(name,val,e){
- if(name){
- if(name.indexOf('ACTUAL_COST') == 0) name = 'ACTUAL_COST';
- else if(name.indexOf('PAY_COST') == 0) name = 'PAY_COST';
- var vtype = validateJsonData[name].type;
- var vlength = validateJsonData[name].length;
- var vscale = validateJsonData[name].scale;
- var vnotnull = validateJsonData[name].notnull;
- if(val != ""){
- if(vtype == 'decimal'){
- var re = new RegExp("^(\\-|\\+)?\\d+(\\.\\d+)?$");
- //是否为数字
- if(!re.test(val)) return "请填写数字";
- //小数位数
- if(vscale == "1") $(e).val(numFormat(val));
- if(vscale != "1"){
- if(val.split(".").length = 2){
- if(val.split(".")[1].length > vscale) return "小数精度不超过"+vscale;
- }
- // re = new RegExp("/^\\d+(\\.\\d{1,"+vscale+"})?$/");
- // if(!re.test(val)) return "小数精度不超过"+vscale;
- }
- }
- //长度
- if(val.length > vlength) return "长度超长";
- //分报告名称不能重复
- if(name == 'ITEM_NAME'){
- for(var i=0; i<$('.ITEM_NAME').length; i++){
- if($('.ITEM_NAME')[i] != e && $('.ITEM_NAME').eq(i).val() == val) return "该字段不能重复";
- }
- }
- }else{
- if(vnotnull == '1') return "该字段不能为空";
- //分报告名称非空校验
- if(name == 'ITEM_NAME'){
- if($(e).parent().parent().find('>td>.UNIT').val()!=''
- ||$(e).parent().parent().find('>td>.UNIT_PRICE').val()!=''
- ||$(e).parent().parent().find('>td>.NUMBER').val()!=''){
- return "该字段不能为空";
- }
- }
- }
- //分报告名称非空校验
- if(name == 'UNIT'||name == 'UNIT_PRICE'||name == 'NUMBER'){
- $(e).parent().parent().find('>td>.ITEM_NAME').parent().find('.vtip').remove();
- if($(e).parent().parent().find('>td>.UNIT').val()!=''
- ||$(e).parent().parent().find('>td>.UNIT_PRICE').val()!=''
- ||$(e).parent().parent().find('>td>.NUMBER').val()!=''){
- validateTip($(e).parent().parent().find('>td>.ITEM_NAME')[0]);
- }
- }
- }
- return "";
- }
- //校验提示
- function validateTip(e){
- $(e).val($(e).val().trim());
- $(e).parent().find('.vtip').remove();
- var vtip = validateFun($(e).attr('name'),$(e).val(),e);
- if(vtip != ""){
- $(e).parent().append("<div class='vtip'>"+vtip+"</div>");
- $(e).parent().find('.vtip').width($(e).parent().width());
- }
- }
- //删除
- function del(){
- if($('.ace:checked').length > 0){
- var roads=[],pnames=[];
- $('.ace:checked').each(function(index,e){
- roads.push($(e).parent().parent().parent().find('[name="ROAD_ID"]').val());
- pnames.push($(e).parent().parent().parent().find('[name="PROJECT_NAME"]').val());
- });
- bootbox.confirm("确定要删除吗?", function(result) {
- if(result) {
- $.ajax({
- type : "get",
- url : locat+'/test/deleteData.do?COMPANY_ID='+pd_COMPANY_ID+'&YEAR='+pd_YEAR+'&roads='+roads.join(',')+'&pnames='+pnames.join(',')+'&TABLETYPE='+pd_TABLETYPE,
- dataType : 'json',
- success : function(data){
- if("success" == data.msg){
- location.reload(true);
- }else if("false" == data.msg){
- getTop(globalThis).hangge();
- bootbox.dialog({
- message: "<span class='bigger-110'>删除失败!</span>",
- buttons:
- {
- "button" :
- {
- "label" : "确定",
- "className" : "btn-sm btn-success"
- }
- }
- });
- }
- }
- });
- }
- });
- }
- }
- $(function(){
- tableInit();
- getValidateJson();
- });
- //获取本网站的顶级节点,解决被其他网站iframe引入时发生的跨域问题
- function getTop(obj){
- var tp = obj;
- //alert(obj.name);
- if (tp.mainFrame == undefined) {
- tp = tp.parent;
- return getTop(tp);
- } else {
- return tp;
- }
- }
|