公式

    var treeCode = $.query.get("treeCode");
    var companyCode = user.region;
    
    $(document).ready(function(){
        // 初始化时间
        initTimeFormate('yyyy-mm', 'yyyy-MM', 3);
        //切换年月日
        tabToggle();
        //加载树
        initTree();
        //点击查询
        doSearch();
        loadOptionData();
    });
    /**
     * 根据查询条件显示内容
     */
    function doSearch(){
        $('#searchBtn').click(function(){
            loadOptionData();
        });
        $('#exportExcel').click(function(){
            var fileName=$("#systemtime").val()+"同比环比对比分析报表"
            publicExport(fileName);
        });
    }
    var treeNameArr;//选中的树节点code和name的对象
    var selectArr=[];//选中的code的数组(没有拆分的)
    var codes=[];//选中的code的数组(有拆分的)
    function loadOptionData(){ 
        $('#tbl').css('opacity',0.2);
        treeNameArr={};
        selectArr=[];
        codes=[];
        var param={};
        var typeIndex = $('#timeGroup .active').val();//0,1,2
        var typeArr = ['day','month','year'];
        var _treeCode = $.fn.zTree.getZTreeObj("treeDemo").getCheckedNodes(true).reduce(function (o, v, i) {
            //if(!v.isParent){
                if (!!o) {o += ";"}
                o += v.code;
                //判断拆分公式
                if(v.code.indexOf("[")!==-1){
                    codes=codes.concat(formulaToCode(v.code));
                }else{
                    codes.push(v.code);
                }
                treeNameArr[v.code]=v;
                selectArr.push(v.code);
            //}
            return o;
        }, '');
        //param.startDate = $("#systemtime").val().replace(/-/g,"");
        param.Year=$("#systemtime").val().split("-")[0];
        param.Month=$("#systemtime").val().split("-")[1];
        param.flag=79;
        param.itemType=codes.join(";");
        console.log(codes);
        if(param.itemType==""||param.itemType.length==0){
            /*显示没有数据的div*/
            $("#noData").show();
            $("#tbl").html("");
            return ;
        }else{
            $("#noData").hide();
        }
        //得到当前选中月份的天数
        switch (typeIndex) {
            case "0"://
                break;
            case "1"://
                var startDate=$("#systemtime").val().replace("-","");
                var thisDays = getDaysInMonth(startDate.substr(0,4),startDate.substr(4,2));
                //var url='KwhAnalyse_findMonthReport.action';
                var url='EnergyTotal_findGetByYearMonth.action';
                getMonthYear(param,url,thisDays,1);
                break;
            case "2"://
                break;
        } 
    }
    function showTable(){
        var timer=setInterval(function(){
            var opacity=parseFloat($('#tbl').css('opacity'))+0.1;
            $('#tbl').css('opacity',opacity);
            if(opacity>=1){
                clearInterval(timer);
            }
        },50)
    }
    function getDay(tableData,_url,thisDays,type){
        //处理查询的数据,数据请求(日表)
        $.post(_url, tableData, function (res) {
            var rowData=res.resultList;
            for(var i=0;i<rowData.length;i++){
                rowData[i]=eval("("+rowData[i]+")");
                rowData[i].name = treeNameArr[rowData[i].sname];
                rowData[i].date = rowData[i].time;
                rowData[i].data=!!rowData[i].data?Number(rowData[i].data).toFixed(2):0;
            }
            initTableData(rowData,thisDays,type);
            showTable();
        }, 'json');   
    }
    /*
     *得到本月、上月、去年同期的数组 
     */
    function getMonthArr(){
        var arr=[];
        var smonth=new Date($("#systemtime").val()).getTime(),_i;//本月
        for(var i=smonth;i>smonth-2419200000*2;i-=2419200000){
            arr.push(new Date(i).getFullYear()+"-"+add0((new Date(i).getMonth()+1)));
        }
        arr.push(new Date(new Date(arr[0]).getTime()-2419200000*12).getFullYear()+"-"+add0((new Date(arr[0]).getMonth()+1)));//去年同期
        return arr;
    }
    function getMonthYear(tableData,_url,thisDays,type) {
        var monthArr=getMonthArr();//得到本月、上月、去年同期的数组
        //处理查询的数据,数据请求(日表)
        $.post(_url, tableData, function (res) {
            var rowData=res.list;
            for(var i=0;i<rowData.length;i++){
                rowData[i]=eval("("+rowData[i]+")");
            }
            res.listall=evalFormulaToRes(treeNameArr,rowData);
            initTableData(res.listall,thisDays,type,monthArr);
            showTable();    
        }, 'json');          
    }
    function initTableData(rowData,_thisDays,type,monthArr){
        $("#tbl").html("");
         var dataObj={},stbl="",htbl="";
        for(var i=0;i<rowData.length;i++){
            
            rowData[i].data=!!rowData[i].data?Number(rowData[i].data).toFixed(2):0;
            if(dataObj[rowData[i].sname]){
                dataObj[rowData[i].sname][rowData[i].year+"-"+add0(rowData[i].date)]=rowData[i].data;
            }else{
               dataObj[rowData[i].sname]={};
               dataObj[rowData[i].sname][rowData[i].year+"-"+add0(rowData[i].date)]=rowData[i].data;
               dataObj[rowData[i].sname]["name"]=treeNameArr[rowData[i].sname].name;
            }
        }
        //拼接表头
        htbl=
            '<thead>                                    '+
                '<tr class="yel">                        '+
                    '<th>设备名称</th>                    '+
                    '<th>单位</th>                        '+
                    '<th>'+monthArr[0]+'</th>            '+
                    '<th>'+monthArr[1]+'</th>            '+
                    '<th>'+monthArr[2]+'</th>            '+
                    '<th>较上月</th>                        '+
                    '<th>较去年同期</th>                    '+
                    '<th>较上月+百分比</th>                '+
                    '<th>较去年同期+百分比</th>                '+
                '</tr>                                    '+
            '</thead>';
        $("#tbl").append(htbl);
        //遍历选中的code
        for(var j=0;j<selectArr.length;j++){
            var rows=dataObj[selectArr[j]],unitName="";
            if(rows){
                var thisVal=!!rows[monthArr[0]]?rows[monthArr[0]]:"-";//本月
                var lastVal=!!rows[monthArr[1]]?rows[monthArr[1]]:"-";//上月
                var lastyVal=!!rows[monthArr[2]]?rows[monthArr[2]]:"-";//去年同期
                //获得单位
                var unitLit=getUnit().reduce(function(o,v,i){
                    o[v.id]=v.text;
                    return o;
                },{});
                if(unitLit[treeNameArr[selectArr[j]].unit]){
                    unitName=unitLit[treeNameArr[selectArr[j]].unit];
                }else{
                    unitName="";
                }
                stbl="<tr>                            "+
                        "<td>"+rows.name+"</td>        "+
                        "<td>"+unitName+"</td>                "+
                        "<td>"+thisVal+"</td>        "+
                        "<td>"+lastVal+"</td>        "+
                        "<td>"+lastyVal+"</td>        "+
                        "<td>"+subVal(thisVal,lastVal)+"</td>        "+
                        "<td>"+subVal(thisVal,lastyVal)+"</td>        "+
                        "<td>"+getVal(thisVal,lastVal)+"</td>        "+
                        "<td>"+getVal(thisVal,lastyVal)+"</td>        "+
                    "</tr>";
                $("#tbl").append(stbl);
            }
        }
    }
    function getVal(data1,data2){
        if(data1==""||data2==""||isNaN(data1)||isNaN(data2)){return 0}
        if(data1==0||data2==0){
            return 0;
        }else{
            return Number((data2-data1)/data2*100).toFixed(2);
        }
    }
    function subVal(data1,data2){
        if(isNaN(data1)){data1=0}
        if(isNaN(data2)){data2=0}
        return Number(data1-data2).toFixed(2);
    }
    /**
     * 判断是否存在
     */
    function fun_IsExists(newAry,name){
        var flag=false;
        var index=-1;
        for(var i=0;i<newAry.length;i++){
            if(newAry[i].name==name){
                index=i;
                flag=true;
            }
        }
        return {
            index:index,
            flag:flag
        }
    }

    /**
     * 初始化树
     */
    function initTree() {
        getTreeCodeAll(companyCode,treeCode);
        var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
        //选中第一个
        var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
        var el=zTreeObj.getNodes()[0];
        while(el.isParent){
            zTreeObj.expandNode(el, true, false, false);
            el=el.children[0];
        }
        //zTreeObj.expandNode(el, true, false, false);
        if(!!el.code){
            zTreeObj.checkNode(el)
        }else{
        }
    }
    /**
     * 初始化时间插件
     */
    function initTimeFormate(format1, format2, view, end) {
        format1 = !!format1 ? format1 : "yyyy-mm-dd";
        format2 = !!format2 ? format2 : "yyyy-MM-dd";
        view = !!view ? view : 2;
        var selector = end ? $("#systemtime_end") : $("#systemtime");
        selector.datetimepicker('remove');
        selector.datetimepicker({
            language:"zh",
            format: format1,
            autoclose: true,
            startView: view,
            minView: end ? 2 : view
        }).on("click", function () {
            selector.datetimepicker('show');
        });
        selector.val(new Date().Format(format2));
    }
    /**
     * 年月日tab切换
     */
    function tabToggle(){
        $('#timeGroup').children('button').click(function() {
            $('#timeGroup').children('button').removeClass("active");
            $(this).addClass("active");
            var index=$(this).index();
            if(index==0){
                initTimeFormate();
            }else if(index==1){
                initTimeFormate('yyyy-mm', 'yyyy-MM', 3);
            }else{
                initTimeFormate('yyyy', 'yyyy', 4);
            }
            loadOptionData();
        });
    }
    
    //获取单位
    function getUnit(){
        var unitList= [];
        $.ajaxSetup({ async : false });
        $.post("Filter_listUnit.action", {
        }, function(data, statusText) {            
            dataList = data.resultList;
            if (dataList!=null && data.resultList.length > 0) {
                for ( var i = 0; i < dataList.length; i++) {
                    dataList[i] = eval('('+dataList[i]+')');
                    
                    var datajson={id:"",text:""};//[{text:'年',id:'0'},{text:'月',id:'1'},{text:'周',id:'2'}];
                    datajson.id=dataList[i].id;
                    datajson.text=dataList[i].text;
                    unitList.push(datajson);
                    
                }
            }
         }, "json");
        $.ajaxSetup({async : true});
        return unitList;
    }
View Code

 

posted @ 2018-05-16 18:39  人在路途  阅读(141)  评论(0编辑  收藏  举报