zoukankan      html  css  js  c++  java
  • 树插件

    js

    /*!
     * jQuery ztreeSelect 1.00(用requere.js方式引入)
     */
    
    (function (factory){
        if (typeof define === 'function' && define.amd){
            define(['jquery','ztree.core','ztree.excheck'],factory);
        }else if(typeof  exports === 'object'){
              module.exports = factory;
        }else{
            factory(jQuery);
        }
    }(function($){
        $.fn.selZtree = function(params){
            var curObj = $(this);
             if($.type(params) != 'object'){
                 return;
             }else{
                 if(curObj.length > 1){
                     curObj.each(function(){
                         $(this).selZtree(params);//处理循环建立树
                     });
                 }else{
                     params.selector = '#'+curObj[0].id;
                     curObj.data('treeData',new selZtreePro(params,curObj));
                 }
             }
        };
        /**
         * 下拉选择树的构造函数
         * @param params 传递的参数
         */
        function selZtreePro(params,curObj){
            //default params
             this.defaultParams ={
                 complete:function(){},
                 async:false,
                 checkMore:false,
                 dataParams:{},
                 selector:curObj.selector,
                 url:''
             };
            this.ztreeObj = {};
            //当前对象
            this.curObj = curObj;
            curObj.siblings('.ztreeInput').remove();
            this.formObj =  curObj.after("<input  class='ztreeForm ztreeInput' readonly='readonly'/>").next();//建立input节点
            //添加展示树的div
            this.treeObj = this.formObj.after("<div><ul class='ztree' id="+"ztree"+(new Date().getTime())+" style='background:#fff;margin:0px;margin-top:2px;padding:5px;border-radius: 5px;-moz-border-radius: 5px;-webkit-border-radius: 5px;'></ul></div>").next().find('ul');
            //设置下拉框中树的位置
            this.setTreePos();
            //初始化树
            this.initTree(params);
        }
        //区域树原型,实现方式继承
        selZtreePro.prototype = {
            setting:{
                 data:{
                    simpleData: {
                        enable: true
                    }
                 },
                 async: {
                    enable: false,
                    url:"",
                    autoParam:["id", "name=n", "level=lv"],
                    otherParam:{"otherParam":"zTreeAsyncTest"},
                    dataFilter: function(){}
                 }
             },
             zNodes:[],
             initTree:function(params){//初始化树
                 var that = this;
                 $.extend(this.defaultParams,params);
                 that.getData(function(data){
                     that.initParams(data);
                     that.buildTree(data);
                     that.showTree();
                     that.clickOtherArea();
                     that.processValue();
                     that.selectNode();
                     that.change();
                     that.defaultParams.complete(that.ztreeObj,that);
                 });
    
             },
             /**
              * 初始化页面输入框参数
              * @param data 后台区域数据数组
              */
             initParams:function(data){
                 var eleObj = this.defaultParams.initValue ,id='';
                 var name = '';
                 if( eleObj != null){
                     for(var i = 0,ele;ele = eleObj[i];i++){
                         id += ele['id']+',';
                         name += ele.name+',';
                     }
                 }else{
                     id = data[0].id;
                    name = data[0].name;
                    this.defaultParams.initValue = data[0];
                 }
                
                 //id = id.substr(0,id.length-1);
                 name = name.replace(/,$/,'');
                 this.setValue(id,name);
                // this.setValue(eleObj['id'],eleObj['name']);
                 /*if (this.zNodes.length > 0){
                     return;
                 }*/
                 for(var i = 0,ele;ele = data[i];i++) {
                     ele.icon = path +'/'+ ele.icon;
                     this.zNodes.push(ele);
                 }
             },
             //更新节点信息,主要有名字,图标
            updateNodes:function(nodes){
                 
                for(var i = 0,ele;ele = nodes[i];i++){
                    var node = this.ztreeObj.getNodeByParam("id",parseInt(ele['id']),null);
                    try{
                         ele.name &&  (node.name = ele.name);
                         ele.icon &&  (node.icon = ele.icon);
                         ele.iconSkin &&  (node.iconSkin = ele.iconSkin);
                    }catch(e){};
                    this.ztreeObj.updateNode(node);
                }
            },
            //点击click触发事件
             processValue:function(){
                 var that = this;
                /* this.ztreeObj.setting.callback.onMouseDown = function(event){
                     var node = that.ztreeObj.getSelectedNodes();
                     if( node.length > 1 && !event.ctrlKey){
                         that.treeObj.hide();
                         return false;
                     }else{
                         return true;
                     }
                 };*/
                this.ztreeObj.setting.callback.onClick = function(event){
                    var id='',name='';
                    var callback = that.defaultParams.onclick;
                    var node = that.ztreeObj.getSelectedNodes();
    
                    for(var i = 0,ele;ele = node[i];i++){
                        id += ele['id']+',';
                        name += ele.name+',';
                    }
                    id = id.substr(0,id.length-1);
                    name = name.replace(/,$/,'');
                    that.setValue(id,name);
                    !event.ctrlKey && that.treeObj.hide() && that.treeObj.parent().hide();
                    callback  && callback();//click事件回调
                };
            },
            //选中节点
            selectNode:function(selectArr){
                var initObj = selectArr || this.defaultParams.initValue;
                
                for(var i = 0,ele;ele = initObj[i];i++){                
                    var node = this.ztreeObj.getNodeByParam("id",parseInt(ele['id']),null);
                    if(node){
                         this.ztreeObj.selectNode(node,false);                   
                         this.setValue(node.id,node.name);
                    }
                   
                }
            },
            //设置input值
            setValue:function(id,name){
                var obj = this.curObj;
                var formObj = this.formObj;
                obj.val('').text('');
                formObj.val('').text('');
                obj.val(id).text(name);
                formObj.val(name).text(id);
                if(this.treeObj.parent(".slimScroll")){
                    this.treeObj.parent(".slimScroll").hide();
                    this.treeObj.parent(".slimScroll").getNiceScroll().hide();
                }
            },
            //onchange事件
            change:function(){
                var oldAreaName = "";
                var that = this;
                var callback = that.defaultParams.onchange;
                // 获得焦点时,启动定时器
                this.treeObj.mouseenter(function(){
                    oldAreaName = that.formObj.val();         
                });
                this.treeObj.mouseout(function(){
                         if(that.formObj.val() != oldAreaName)
                      {               
                             callback && callback();
                      }       
                }); 
            },
            //得到后台区域信息
             getData:function(callback){
                 $.post(this.defaultParams.url,this.defaultParams.dataParams,function(dataArr){
                     if (callback != null){
                         callback(dataArr);
                     }
                });
             },
             //建立树
            buildTree:function(datas){
                this.ztreeObj = $.fn.zTree.init(this.treeObj, this.setting,datas);
                var nodes = this.ztreeObj.getNodes();
                this.setTreePos();
                this.treeObj.hide();
                if(this.treeObj.parent(".slimScroll")){
                    this.treeObj.parent(".slimScroll").hide();
                    this.treeObj.parent(".slimScroll").getNiceScroll().hide();
                }
            },
            // to show tree
            showTree:function(){
                var that = this;
                this.formObj.off('focus').on('focus',function(){
                    that.formObj.next().find('.ztree').hide();
                    that.setTreePos();
                    if(that.treeObj.parent(".slimScroll")){
                        that.treeObj.parent(".slimScroll").show();
                        that.treeObj.parent(".slimScroll").getNiceScroll().show();
                    }
                    that.treeObj.show();
                    $(that.treeObj.parent()).niceScroll({
                        cursorcolor: "#00aea2",//滚动条颜色
                        cursor "5px", //滚动条的宽度
                        cursorborder: "0", // 滚动条边框css定义
                        cursorborderradius: "5px",//以像素为滚动条边界半径
                        autohidemode: false, // 隐藏滚动条的方式 
                        railpadding: { top: 0, right: 0, left: 0, bottom: 0 }, // 设置轨道的内间距
                        background: "", // 轨道的背景颜色
                        horizrailenabled: true, // nicescroll可以管理水平滚动
                        oneaxismousemode: "auto", // 当只有水平滚动时可以用鼠标滚轮来滚动,如果设为false则不支持水平滚动,如果设为auto支持双轴滚动
                        zindex: 250,
                        spacebarenabled: false // 当按下空格时使页面向下滚动
                    });
                    $(that.treeObj.parent()).getNiceScroll().resize();
                });
                //util.setSlimScroll();
            },
            clickOtherArea:function(){
                var that = this;
                $(document).on('click',function(event){
    
                    if(that.isCheck(event)){
                         return;
                    }else{
                         that.treeObj.hide();
                         if(that.treeObj.parent(".slimScroll")){
                             that.treeObj.parent(".slimScroll").hide();
                             that.treeObj.parent(".slimScroll").getNiceScroll().hide();
                         }
                    }
                });
            },
            // to judge tree in div
            isCheck:function(event){
                var obj = $(event.target);
                if( obj.is('.ztree,.ztreeForm,.ztree *')||event.target == this.curObj[0]){
                    return true;
                }else{
                    return false;
                }
            },
            //to set tree-div height and positon
            setTreePos:function(){
                 
                this.treeObj.parent().hide();
                this.treeObj.parent().css({
                    'z-index':10,
                    position:'absolute',
                    left:this.formObj.position().left,
                    top:this.formObj.position().top + this.formObj.height() + 2,
                    140,
                    height:200,
                    'box-shadow':'0 2px 6px #999',
                    'border-radius': '5px',
                    background:"#FFF",
                    
                  /*  this.formObj.width() + 2*/
                });
                this.treeObj.parent().addClass("slimScroll");
                //util.setSlimScroll();
                
            }
        };
    }));

    css

    /*-------------------------------------
    zTree Style
    
    version:    3.5.19
    author:        Hunter.z
    email:        hunter.z@263.net
    website:    http://code.google.com/p/jquerytree/
    
    -------------------------------------*/
    .areaTreeStyle{
        display: inline;
        width: 150px;
    }
    .treeShow{
        border: 1px solid #c5c5c5; 
        -webkit-border-radius:3px; 
        -moz-border-radius:3px; 
        -o-border-radius:3px; 
        -ms-border-radius:3px; 
        border-radius:3px;
        height: 20px;
        width:158px;
        border:1px solid #BFBFBF;
    }
    .treediv{
        display:none;
        position:absolute;
        overflow-y:auto;
        width:158px;
        line-height:0px;
        height:200px;
        padding-top:4px;
        background:#fff;
        color:#fff;
        border:1px solid #cccccc
    }
    .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
    .ztree {margin:0; padding:5px; color:#333; box-sizing:border-box;}
    .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
    .ztree li ul{ margin:0; padding:0 0 0 18px}
    .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
    
    .ztree li a {padding:0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
        text-decoration:none; vertical-align:top; display: inline-block}
    .ztree li a:hover {text-decoration:none}
    .ztree li a.curSelectedNode {padding-top:0px; background-color:#0993f2; color:#fff; height:18px; text-decoration: none; }
    .ztree li a.curSelectedNode span{color:#fff !important;}
    .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:18px; border:1px #FFB951 solid; opacity:0.8;}
    .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:18px; border:1px #316AC5 solid;
        opacity:0.8; filter:alpha(opacity=80)}
    .ztree li a.tmpTargetNode_prev {}
    .ztree li a.tmpTargetNode_next {}
    .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
        font-size:12px; border:1px #7EC4CC solid; *border:0px}
    .ztree li span {line-height:18px; margin-right:2px; padding-bottom:2px; display: inline-block;  white-space:nowrap;}
    .ztree li span.button {
        line-height:0; margin:0; width:17px; height:17px; display: inline-block; vertical-align:middle;
        border:0 none; cursor: pointer;outline:none;
        background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
        background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif");
    }
    .ztree li .curSelectedNode span.button {
        background-image:url("./img/zTreeStandard_cur.png");
    }
    
    .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
    .ztree li span.button.chk.checkbox_false_full {background-position:0 0}
    .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
    .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
    .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
    .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
    .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
    .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
    .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
    .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
    .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
    .ztree li span.button.chk.radio_false_full {background-position:-28px 0}
    .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
    .ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
    .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
    .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
    .ztree li span.button.chk.radio_true_full {background-position:-42px 0}
    .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
    .ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
    .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
    .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
    
    .ztree li span.button.switch {width:18px; height:18px}
    /* .ztree li span.button.root_open{background-position:-92px -54px}
    .ztree li span.button.root_close{background-position:-74px -54px}
    .ztree li span.button.roots_open{background-position:-92px 0}
    .ztree li span.button.roots_close{background-position:-74px 0}
    .ztree li span.button.center_open{background-position:-92px -18px}
    .ztree li span.button.center_close{background-position:-74px -18px}
    .ztree li span.button.bottom_open{background-position:-92px -36px}
    .ztree li span.button.bottom_close{background-position:-74px -36px} */
    
     .ztree li span.button.root_open{background:url("./img/open.png") no-repeat center center;}
    .ztree li span.button.root_close{background:url("./img/close.png") no-repeat center center;}
    .ztree li span.button.roots_open{background:url("./img/open.png") no-repeat center center;}
    .ztree li span.button.roots_close{background:url("./img/close.png") no-repeat center center;}
    .ztree li span.button.center_open{background:url("./img/open.png") no-repeat center center;}
    .ztree li span.button.center_close{background:url("./img/close.png") no-repeat center center;}
    .ztree li span.button.bottom_open{background:url("./img/open.png") no-repeat center center;}
    .ztree li span.button.bottom_close{background:url("./img/close.png") no-repeat center center;} 
    /*light*/
    /* .light .ztree li span.button.bottom_open{background-image:url("./img/open_blue.png");}
    .light .ztree li span.button.bottom_close{background-image:url("./img/close_blue.png");}
    .light .ztree li span.button.root_open{background-image:url("./img/open_blue.png");}
    .light .ztree li span.button.root_close{background-image:url("./img/close_blue.png");}
    .light .ztree li span.button.roots_open{background-image:url("./img/open_blue.png");}
    .light .ztree li span.button.roots_close{background-image:url("./img/close_blue.png");}
    .light .ztree li span.button.center_open{background-image:url("./img/open_blue.png");}
    .light .ztree li span.button.center_close{background-image:url("./img/close_blue.png");}  */
    /*dark*/
    /* .dark .ztree li span.button.bottom_open{background-image:url("./img/open_blue.png");}
    .dark .ztree li span.button.bottom_close{background-image:url("./img/close_blue.png");}
    .dark .ztree li span.button.root_open{background-image:url("./img/open_blue.png");}
    .dark .ztree li span.button.root_close{background-image:url("./img/close_blue.png");}
    .dark .ztree li span.button.roots_open{background-image:url("./img/open_blue.png");}
    .dark .ztree li span.button.roots_close{background-image:url("./img/close_blue.png");}
    .dark .ztree li span.button.center_open{background-image:url("./img/open_blue.png");}
    .dark .ztree li span.button.center_close{background-image:url("./img/close_blue.png");}  */
    
    .ztree li span.button.noline_open{background-position:-92px -72px}
    .ztree li span.button.noline_close{background-position:-74px -72px}
    .ztree li span.button.root_docu{ background:none;}
    .ztree li span.button.roots_docu{background-position:-56px 0}
    .ztree li span.button.center_docu{background-position:-56px -18px}
    .ztree li span.button.bottom_docu{background-position:-56px -36px}
    .ztree li span.button.noline_docu{ background:none;}
    
    .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
    .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
    .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
    .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
    .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
    
    .ztree li span.button.ico_loading{margin:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
    
    ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
    
    span.tmpzTreeMove_arrow {width:18px; height:18px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
        background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
        background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
    
    ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
    .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
    .ztree li{
        display: block;
    }
    
    .ztreeInput{
        margin: 0;
        padding:0 18px 0 10px;
        width: 140px;
        height: 26px;
        line-height: 26px;
        color: #666666;
        vertical-align: middle;
        border-radius: 5px;
        -moz-border-radius: 5px;
        -webkit-border-radius: 5px;
        position: relative;
        border: 1px solid rgb(169, 169, 169);
        background: #fff url(img/icon.png) no-repeat right;
        box-sizing: border-box;
    }
    .ztreeInput:focus{
        transition:border linear .2s,box-shadow linear .5s;
        -moz-transition:border linear .2s,-moz-box-shadow linear .5s;
        -webkit-transition:border linear .2s,-webkit-box-shadow linear .5s;
        outline:none;
        border-color:#0095ff;
        box-shadow:none;
        -moz-box-shadow:none;
        -webkit-box-shadow:none;
    }
    /* .ztree span{
        color:#fff;
    } */
    /* level style*/
    /*.ztree li span.button.level0 {
        display:none;
    }
    .ztree li ul.level0 {
        padding:0;
        background:none;
    }*/
    View Code

    调用 js

    $('#areaCodeSelect').selZtree({
        url:'/sys/companyInfo/findAllcomInfo',
        dataParams:null,
        initValue:null,
        onchange:function(){
            image_path=ztreeObj.getNodeByParam('id',$('#areaCodeSelect').val()).imagePath.split(';');
        },
        onclick:function(selnode){
            //触发选中后让框隐藏
            setTimeout(function () {
                $('.ztreeInput').blur();
                $('#areaCodeSelect').parent().find('div.slimScroll').hide(); //让自己隐藏
            }, 20);
            swithData();
        },
        complete:function(ztree,obj){
            ztreeObj=ztree;
            image_path=obj.defaultParams.initValue.imagePath.split(';');
            swithData();//加载上下
        }
    });

    html

    <span>所属企业:</span>
    <label>
        <input type="hidden" id="areaCodeSelect" name="areaCode">
        <input type="text" class="ztreeInput" maxlength='64'>
    </label>

    效果:

    完整代码demo3new.js:

    require.config({
        baseUrl:'/static/ui/common/',
        paths:{
            'jquery':'js/libs/jquery-1.11.1.min',
            'domReady':'js/functionality/domReady',
            'ztree.core':'plugins/other/ztree/jquery.ztree.core',
            'ztree.excheck':'plugins/other/ztree/jquery.ztree.excheck',
            'tree':'plugins/formElems/downTree/ztreeSelect',
            'util':'js/functionality/Util',
            'echart':'plugins/chart/echarts.min',
            'bootstrap_datetimepicker':'plugins/formElems/time/bootstrap_datetimepicker/js/bootstrap-datetimepicker.min',
            'zhCN':'plugins/formElems/time/bootstrap_datetimepicker/js/bootstrap-datetimepicker.zh-CN',
            'DialogBySHF':'plugins/formElems/dialogbyshf/js/DialogBySHF',
            'nicescroll':'plugins/other/nicescroll/jquery.nicescroll.min',
            'bootstrap':'plugins/other/ipanel/bootstrap.min'
        },
        shim:{
            'bootstrap':{deps:['jquery']},
            'ztree.core':{deps:['jquery']},
            'ztree.excheck':{deps:['ztree.core']}
        }
    });
    var dateArr="";
    var rTransformerTreeCode="";
    var city="";
    var powerCodes="";//对应的公式
    var powerCodesObj={};
    var Multiple={};//倍率
    require(['jquery','domReady','util','echart','DialogBySHF','bootstrap_datetimepicker','zhCN','ztree.core','ztree.excheck','tree','nicescroll']
    ,function($,domReady,util,echart){
        var image_path=[];
        domReady(function(){
            initTimeFormate("yyyy-mm-dd");
            var ztreeObj;
            var params={
                zoomVal:1
            }
            $('#areaCodeSelect').selZtree({
                url:'/sys/companyInfo/findAllcomInfo',
                dataParams:null,
                initValue:null,
                onchange:function(){
                    image_path=ztreeObj.getNodeByParam('id',$('#areaCodeSelect').val()).imagePath.split(';');
                },
                onclick:function(selnode){
                    //触发选中后让框隐藏
                    setTimeout(function () {
                        $('.ztreeInput').blur();
                        $('#areaCodeSelect').parent().find('div.slimScroll').hide(); //让自己隐藏
                    }, 20);
                    swithData();
                },
                complete:function(ztree,obj){
                    ztreeObj=ztree;
                    image_path=obj.defaultParams.initValue.imagePath.split(';');
                    swithData();//加载上下
    //                bottomLine();
                }
            });
            //点击切换图片事件
            $('body').on('click','.img-change i',function(){
                var f=$(this).attr('class');
                $(this).parent().prev('img').css({'margin-left':0,'margin-top':0,'width':'auto','height':'auto'})
                var href=$(this).parent().prev('img').attr('src').replace('/static','');
                var index=image_path.indexOf(href);
                var length=image_path.length;
                var len;
                if(f=='c_left'){
                    if(--index<0){
                        len=length-1;
                    }else{
                        len=index;
                    }
                }else{
                    if(++index<length){
                        len=index;
                    }else{
                        len=0;
                    }
                }
                $(this).parent().prev('img').attr('src','/static'+image_path[len]);
            });
            $('body').on('mousedown','.big-image',function(e){
                var $img=$(this),$parent=$(this).closest('.layer-content');
                var oleft=parseFloat($img.css('margin-left'));
                var otop=parseFloat($img.css('margin-top'));
                var width=parseFloat($img.css('width'));
                var height=parseFloat($img.css('height'));
                var pwidth=parseFloat($parent.css('width'));
                var pheight=parseFloat($parent.css('height'));
                if(isNaN(oleft)){oleft=0;}
                if(isNaN(otop)){otop=0;}
                var ox=e.pageX||e.clientX;
                var oy=e.pageY||e.clientY;
                var x=oleft,y=otop;
                $('body').on('mousemove',function(event){
                    var nx=event.pageX||event.clientX;
                    var ny=event.pageY||event.clientY;
                    x=nx-ox;
                    y=ny-oy;
                    var ll=oleft+x;
                    var tt=otop+y;
                    if(ll>0){ll=0}
                    if(tt>0){tt=0}
                    if((ll-pwidth)<(-1*width)){ll=-(width-pwidth)}
                    if((tt-pheight)<(-1*height)){tt=-(height-pheight)}
                    $img.css({
                        'margin-left':ll+'px',
                        'margin-top':tt+'px'
                        });
                });
                $('body').on('mouseup',function(){
                    $('body').off('mousemove').off('mouseup');
                });
                return false;
            });
            //滚轮效果
            $('body').on('mousewheel','.big-image',function(e){
                params.zoomVal+=event.wheelDelta/1200;
                var o=e.target;
                if (params.zoomVal >= 0.2) {
                    o.style.transform="scale("+params.zoomVal+")";
                } else {
                    params.zoomVal=0.2;
                    o.style.transform="scale("+params.zoomVal+")";
                    return false;
                }
                var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1)) ||  // chrome & ie
                            (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1));              // firefox
                if (delta > 0) {
                    // 向上滚
                    console.log("wheelup");
                } else if (delta < 0) {
                    // 向下滚
                    console.log("wheeldown");
                }
    
            })
            //点击事件日月年
            $(".switch-change li").click(function(){
                var idx=$(this).index();
                //初始化时间
                if(idx==0){
                    initTimeFormate("yyyy-mm-dd");
                }else if(idx==1){
                    initTimeFormate('yyyy-mm', 'yyyy-MM', 3);
                }else{
                    initTimeFormate('yyyy', 'yyyy', 4);
                }
                $(".switch-change li").removeClass("cur");
                $(this).addClass("cur");
                //initBottomData('/findEnergyDayDataList',rTransformerTreeCode);
                swithData();
            })
            //点击变压器弹出事件
            $("#byq").click(function(){
                $.DialogBySHF.Dialog({ Width:1000, Height: 500, Title:"变压器详情", URL: "/demo3Edit?idx="+rTransformerTreeCode});
            })
            //关闭点击时弹出图片
            $("body").on("click",".dialog-img .img-close",function(e){
                $(e.target).closest(".dialog-img").remove();
            })
        });
        //点击弹出弹框的事件
        window.imgdialog=function(event){
            var imgstr='/static'+image_path[0];
            //创建一个dialog框
            var id='byqdialog'+new Date().getTime();
            var imghtml=
                '<div id="'+id+'" class="dialog-img">'+
                    '<div class="layer"></div>'+
                    '<div class="layer-content" style="overflow:hidden;76%;height:76%;">'+
                        '<span class="img-close">X</span>'+
                        '<img class="big-image" src="'+imgstr+'" alt="" style="auto;height:auto;cursor:all-scroll;">'+
                        '<p class="img-change"><i class="c_left">&lt</i><i class="c_right">&gt</i><p>'+
                    '</div>'+
                '</div>';
            $("body").append(imghtml);
        }
        function swithData(){
            powerCodesObj={};
            var id=$("#top-left .ztree").attr("id");
            var treeObj=$.fn.zTree.getZTreeObj(id);
            var selNode=treeObj.getSelectedNodes();
            if(selNode.length>0){
                rTransformerTreeCode=selNode[0].rTransformerTreeCode;
                powerCodes=(selNode[0].powerCodes).replace(/]/g,"_EPdel]")
                powerCodesObj[powerCodes]=selNode[0];
                city=selNode[0].city;
            }else{
                rTransformerTreeCode=treeObj.getNodes()[0].rTransformerTreeCode;
                powerCodes=(treeObj.getNodes()[0].powerCodes).replace(/]/g,"_EPdel]");
                powerCodesObj[powerCodes]=selNode[0];
                city=treeObj.getNodes()[0].city;
                
            }
            initTopData('/findIndexPage',rTransformerTreeCode);
            initBottomData('/findEnergyDayDataList',rTransformerTreeCode);
        }
        /**
         * @desc 根据公式获取code
         * @param {string} str 公式字符串
         * @return {array} _arr code组成的数组
         */
        function formulaToCode(str){
            var _arr=[];
            if(!str){return _arr}
            _arr=str.match(/[.+?]/g).join('').replace(/]/g,'').split(/[/);
            _arr.shift();
            return _arr;
        }
        /**
         * @desc 把请求到的单个code分散数据重新组合成按照公式的数据。
         * @desc 这个方法对应的要求说明:
         *          1.没有计算公式的code不能含有[]字符
         *          2.接口数据不能只有sname和data两个字段
         *          3.code只能是字母或下划线(_)开头的字母、数字和下划线组成的字符串(即:符合javascript变量命名要求)
         *          4.不同设备不能使用相同的公式
         * @param {Object} obj 用 “公式:设备对象”组成的对象。
         * @param {Array} res 请求回来的数据数组对象,如:res.jsonList
         * @return {Array} resArr 数据数组对象
         */
        function evalFormulaToRes(obj,res,other){
            other=other===undefined?['sname','data']:other;
            var resArr=[];//用于存放返回的数据对象
            if(res.length==0){return resArr;}//没有数据
            //1.解析res数组生成_tempO和_tempA
            for(var i=0,_tempO={},_tempA={};i<res.length;i++){
                if(_tempO[res[i].sname]===undefined){
                    _tempO[res[i].sname]={};
                    _tempA[res[i].sname]=[];
                }
                var keys='';
                for(var k in res[i]){
                    if(other.indexOf(k)===-1){
                        keys+=''+res[i][k];
                    }
                }
                if(keys===''){keys='tempIndex'+i}
                _tempO[res[i].sname][keys]=res[i];
                _tempA[res[i].sname].push(res[i]);
            }
            //2.外层循环每个公式
            for(var k in obj){
                if(k.split(/[[+-*/]/g).length<3){//2.1.如果公式是单个code,不存在运算直接concat进resArr
                    var key=k.replace(/[|]/g,'');
                    if(_tempA[k]!==undefined){
                        resArr=resArr.concat(_tempA[k]);
                    }else if(_tempA[key]!==undefined){
                        resArr=resArr.concat(_tempA[key]);
                    }
                }else{//2.2.公式存在运算
                    //2.2.1.取出每个code
                    var _arr=formulaToCode(k);
                    //2.2.2.根据每个code找出数据对象,把找到的数据对象的所有属性tempResArr
                    if(_arr.length>0){
                        for(var i=0,tempResArr={},len=0;i<_arr.length;i++){
                            if(_tempO[_arr[i]]!==undefined){
                                for(var n in _tempO[_arr[i]]){
                                    tempResArr[n]=_tempO[_arr[i]][n];
                                }
                            }
                        }
                    }
                    //2.2.3.循环tempResArr找出里面,每个属性生成变量
                    for(var ks in tempResArr){
                        var to=JSON.parse(JSON.stringify(tempResArr[ks]))
                        to.sname=k;to.data=formulaToData(_arr,_tempO,k,ks);
                        if(isNaN(to.data)||to.data==Infinity||to.data==-Infinity){
                            console.error('错误:"'+k+'"数据除以0');
                            to.data=0;
                        }
                        resArr.push(to);
                    }
                }
            }
            return resArr;
        }
        /**
         * @desc 将公式转换为数据
         * @param {*} _arr 
         * @param {*} _tempO 
         * @param {*} k 
         * @param {*} ks 
         */
        function formulaToData(_arr,_tempO,k,ks){
    //        var o={};
            for(var i=0;i<_arr.length;i++){
                var _str='';
                var r= new RegExp('\['+_arr[i]+'\]',"g");
                if(_tempO[_arr[i]]===undefined){//没有code
    //                _str='var _'+_arr[i]+'_='+0;
                    k=k.replace(r,0);
                }else{
                    var _to=_tempO[_arr[i]][ks];//有code没有某个属性
                    if(_to===undefined){
    //                    _str='var _'+_arr[i]+'_='+0;
                        k=k.replace(r,0);
                    }else{
    //                    _str='var _'+_arr[i]+'_='+_to.data;
                        k=k.replace(r,_to.data);
                    }
                }
    //            eval(_str);
            }
            return eval('('+k+')')+'';
        }
        function initBottomData(url,findTransformerSnameList){
            //1、将获取的公式拆分成单个code
            var codeList=formulaToCode(powerCodes);
            /*for(var i=0;i<codeList.length;i++){
                codeList[i]+='_EPdel'
            }*/
            var codestr=codeList.join(';');
            var param={};
            dateArr=[];
            var type=$(".switch-change li.cur").index();
            var dateIndex=0;//天:24,月:28-31天,年:12
            var xDate=[];
            param.snames=codestr;
            switch(type){
                case 0:
                    param.type=0;
                    param.dateTime=$("#systemtime").val();
                    dateIndex=24;
                    xDate = Object.keys(Array.apply(null, {length:24})).map(function(item){       
                        return +(parseInt(item)+1)+"时";   
                    });
                    break;
                case 1:
                    param.type=1;
                    param.dateTime=$("#systemtime").val().split('-')[0]+"-"+$("#systemtime").val().split('-')[1];
                    dateIndex=getMonthDay(param.dateTime);
                    xDate = Object.keys(Array.apply(null, {length:dateIndex})).map(function(item){       
                        return +(parseInt(item)+1)+"日";   
                    });
                    break;
                case 2:
                    param.type=2;
                    param.dateTime=$("#systemtime").val().split('-')[0];
                    dateIndex=12;
                    xDate = Object.keys(Array.apply(null, {length:12})).map(function(item){       
                        return +(parseInt(item)+1)+"月";   
                    });
                    break;
            }
            dateArr=getDateArr(param.dateTime,type);
            initbData(param,dateIndex,xDate);
        }
        function getMonthDay(date){
            var year=date.split("-")[0];    
            var month=date.split("-")[1];
            var d = new Date(year, month, 0);
            return d.getDate();
        }
        function initbData(param,dateIndex,xDate){
            $.post("/findEnergyDayDataList",param,function(data){
                var mobj={};
                var resObj={};
                var code=param.snames.split(";");
                for(var i=0;i<dateArr.length;i++){
                    var _date=dateArr[i];
                    var d=data[_date];
                    if(mobj[_date]===undefined){
                        mobj[_date]={};
                    }
                    mobj[_date]=makeObj(d);
                }
                //var oo={"[DW_GKDZ_DDZY22-Z01_EPdel]*200+[KJ_BLKJ_DDZY22-Z03_EPdel]*300+[KJ_GKDZ_DDZY22-Z02_EPdel]+[DDZY22-Z_oct1_5_EPdel]+[DDZY22-Z_oct1_6_EPdel]":'我的'}
                var dd=getddData(data,dateArr,code,dateIndex)
                initbtRight(mobj,dateArr,code,xDate);//加载单个变压器
                //将所有的code值进行组合成一个
                resObj=getaddArr(mobj,dateArr,code);
                initCurve(dd,xDate,param);
                initbottomright(dd);
                function makeObj(d){
                    var _obj={};
                    var obj={};
                    //分组
                    for(var m=0;m<d.length;m++){
                        if(_obj[d[m]["sname"]]===undefined){
                            _obj[d[m]["sname"]]=(new Array(dateIndex).join("-;")+"-").split(";");
                        }
                        var idx=parseInt(d[m]["time"])-1;
                        _obj[d[m]["sname"]][idx]=d[m]["data"]
                    }
                    for(var j=0;j<code.length;j++){
                        if(_obj[code[j]]===undefined){
                            continue;
                        }else{
                            obj[code[j]]=_obj[code[j]]
                        }
                    }
                    return obj;
                }
            })
        }
        function getddData(dataObj,dateArr,code,dateIndex){
            var resultObj={};
            for(var i=0;i<dateArr.length;i++){
                resultObj[dateArr[i]]=getArr(dataObj[dateArr[i]]);
            }
            return resultObj;
            function getArr(list){
                var arr=(new Array(dateIndex).join("-;")+"-").split(";");
                var dde=evalFormulaToRes(powerCodesObj,list);
                for(var i=0;i<dde.length;i++){
                    var idx=parseInt(dde[i]["time"]-1);
                    var d=dde[i]["data"];
                    if(!isNaN(d)){
                        d=Number(d).toFixed(2);
                    }
                    arr[idx]=d;
                }
                return arr;
            }
        }
        /**
         * 根据传入的code编码得到code名称对象
         */
        function getNnameObj(code){
            if(!code){return {}}
            for(var i=0;i<code.length;i++){
                code[i]=code[i].slice(0,code[i].lastIndexOf('_'))
            }
            var obj={};
            $.ajax({
                url:'/sys/meteringList/findMeteringListCodes',
                type:'GET',
                async:false,
                datatype:"json",
                data:{
                    deviceCode:code.join(";")
                },
                success:function(data){
                    for(var i=0;i<data.length;i++){
                        Multiple[data[i].code+'_EPdel']=data[i].e
                    }
                    obj=data.reduce(function(o,v,i){
                        o[v.code]=v.name;
                        return o;
                    },{})
                }
            })
            return obj;
        }
        /**
         * 显示每一个变压器的数据值
         */
        function initbtRight(mobj,dateArr,code,xDate){
            var dataobj,_obj=JSON.parse(JSON.stringify(mobj));
            var series=[],keys=[],addlengend=[];
            var nameobj=getNnameObj(code);
            //得到当前时间,如果没有选时间就是电脑的时间,如果有选择的时间就是选择的时间
            dataobj=_obj[dateArr[0]];
            keys=Object.keys(dataobj).sort().reverse();
            for(var i=0;i<keys.length;i++){//数组的数据乘以倍率
                var k=keys[i];
                for(var j=0;j<24;j++){
                    dataobj[k][j]=(dataobj[k][j]*1*Multiple[k]).toFixed(2)
                }
            }
            for(var i=0;i<keys.length;i++){
                var k=keys[i];
                var kk=keys[i].substring("0",keys[i].lastIndexOf("_"));
                addlengend.push(nameobj[kk]);
                series.push({
                    type:"line",
                    name:nameobj[kk],
                    smooth:true,
                    itemStyle : 
                    {  
                        normal : {  
                            lineStyle:{
                                3
                            }  
                        }  
                    },
                    symbolSize:10,
                    data:subDataArr(dataobj[k])
                })
            }
    
            initEc("bottom_lines",{
                title : {
                    text: '',
                    x:'center'
                },
                legend: {
                    data:addlengend,
                    x : 'center',
                    bottom:'7px',
                    type:'scroll'
                },
                xAxis: [{
                    type: 'category',
                    data:xDate,
                    minInterval: 2,
                    axisPointer: {
                        type: 'shadow'
                    }
                }],
                yAxis: [
                    {
                        type: 'value',
                        name:"kWh",
                        axisLabel: {
                            formatter: '{value}'
                        }
                    }
                ],
                series:series
            })
        }
        /*
         * 根据当前的年月日重新筛选数组
         * */
        function subDataArr(arr){
            var type=$(".switch-change .cur").index();
            var dateIdx=0;
            if(type==0){
                dateIdx=new Date().getHours();
            }else if(type==1){
                dateIdx=new Date().getDate();
            }else{
                dateIdx=new Date().getMonth()+1;
            }
            var _arr=arr.concat();
            for(var m=_arr.length;m>0;m--){
                //如果时间大于当前时间
                if(m>dateIdx-1){
                    //如果有值
                    if(!_arr[m]||_arr[m]=="0.00"){//如果没有这个值,或者这个值等于0,不显示
                        _arr.length=m;
                    }else{
                        break;
                    }
                }else{
                    break;
                }
            }
            return _arr;
        }
        function initbottomright(rowData){
            var t1=0,t2=0,t3=0;
            var type=$(".switch-change .cur").index();
            switch(type){
                case 0:
                    $("#thisday>p>span").text("当日用电");
                    $("#beforeday>p>span").text("昨日用电");
                    break;
                case 1:
                    $("#thisday>p>span").text("当月用电");
                    $("#beforeday>p>span").text("上月用电");
                    break;
                case 2:
                    $("#thisday>p>span").text("今年用电");
                    $("#beforeday>p>span").text("去年用电");
                    break;
            }
            var newObj=JSON.parse(JSON.stringify(rowData));
            var len=newObj[dateArr[0]].length;
            for(var i=0;i<dateArr.length;i++){
                var d=dateArr[i];
                newObj[d].length=len;
                $("#bottom_right li:eq("+i+")").find("span").eq(1).text(arrSum(newObj[d])+"kWh")
            }
            t1=parseInt($("#thisday").children().last().text())
            t2=parseInt($("#beforeday").children().last().text());
            t3=t1-t2;
            if(t2==0||isNaN(t2)){
                $("#huanbi>span").text("0%");
            }else{
                $("#huanbi>span").text(Math.abs((t1-t2)*100/t2).toFixed(2)+"%");
            }
            if(t3>0){
                //$("#huanbi").children().last().attr("class","fa fa-fw fa-long-arrow-up")箭头
                $("#huanbi").children().last().attr("class","glyphicon glyphicon-plus")
            }else if(t3<0){
                //$("#huanbi").children().last().attr("class","fa fa-fw fa-long-arrow-down")箭头
                $("#huanbi").children().last().attr("class","glyphicon glyphicon-minus")
            }else{
                $("#huanbi").children().last().attr("class","")
            }
        }
        /**
         * @desc 对一个数组进行求和。
         * @param 数组
         * @return {string} sum 
         */
        function arrSum(arr){
            if(!arr||arr.length===0){
                return 0;
            }
            var sum=arr.reduce(function(x,y){
                x=isNaN(x)?0:x;
                y=isNaN(y)?0:y;
                return Number(parseFloat(x)+parseFloat(y)).toFixed(2);
            },0)
            return sum;
        }
        function initCurve(rowData,xDate,dataObj){
            var type=dataObj.type;
            var keys=Object.keys(rowData).sort().reverse(),series=[],obj={};
            for(var i=0;i<keys.length;i++){
                var k=keys[i];
                if(i==0){rowData[k]=subDataArr(rowData[k]);}
            }
            for(var i=0;i<dateArr.length;i++){
                var _data=dateArr[i];
                series.push({
                    name:dateArr[i],
                    type:'line',
                    smooth:true,
                    itemStyle : 
                    {  
                        normal : {  
                            lineStyle:{
                                3
                            }  
                        }  
                    },
                    symbolSize:10,
                    data:rowData[_data]
                });
            }
            if(type==0){
                //获取到天气
                $.ajax({
                    url:'/weather/findAmbientData',
                    type:'GET',
                    series:series,
                    datatype:"json",
                    data:{
                        type:"hour",
                        dateTime:$("#systemtime").val(),
                        city:city
                    },
                    success:function(data){
                        var _series=series.concat();
                        var _obj=JSON.parse(JSON.stringify(series[0])),arr=(new Array(24).join("-;")+"-").split(";");
                        _obj.name="天气"
                        _obj.yAxisIndex=1;
                        for(var i=0;i<data.length;i++){
                            var row=eval("("+data[i]+")");
                            var idx=parseFloat(row.date)
                            arr[idx]=row.data
                        }
                        _obj.data=arr;
                        //_obj.data=[4,5,6,3,23,22,11,32,4,5,6,3,23,22,11,32,4,5,6,3,23,22,11,32];
                        _series.push(_obj);
                        initEc("bottom_line",{
                            title : {
                                text: '',
                                x:'center'
                            },
                            color:["#FFAE00","#1787EE",'#45BF98','#F28D4E','#C1232B','#B5C334','#FCCE10',
                                '#E87C25','#27727B','#FE8463','#9BCA63','#FAD860','#F3A43B','#60C0DD',
                                '#D7504B','#C6E579','#F4E001','#F0805A','#26C0C0'],
                            legend: {
                                data:dateArr.concat(["天气"]),
                                x : 'center',
                                bottom:'7px',
                                type:'scroll'
                            },
                            xAxis: [{
                                type: 'category',
                                data:xDate,
                                minInterval: 2,
                                axisPointer: {
                                    type: 'shadow'
                                }
                            }],
                            yAxis: [
                                {
                                    type: 'value',
                                    name:"kWh",
                                    axisLabel: {
                                        formatter: '{value}'
                                    }
                                },
                                {
                                    type: 'value',
                                    name:"℃",
                                    axisLabel: {
                                        formatter: '{value}'
                                    }
                                }
                            ],
                            series:_series
                        })
                    }
                })
            }else{
                initEc("bottom_line",{
                    title : {
                        text: '',
                        x:'center'
                    },
                    color:["#FFAE00","#1787EE"],
                    legend: {
                        data:dateArr,
                        x : 'center',
                        bottom:'7px',
                        type:'scroll'
                    },
                    xAxis: [{
                        type: 'category',
                        data:xDate,
                        minInterval: 2,
                        axisPointer: {
                            type: 'shadow'
                        }
                    }],
                    yAxis: [
                        {
                            type: 'value',
                            name:"kWh",
                            axisLabel: {
                                formatter: '{value}'
                            }
                        },
                        {
                            type: 'value',
                            name:"℃",
                            axisLabel: {
                                formatter: '{value}'
                            }
                        }
                    ],
                    series:series
                })
            }
            
        }
        //初始化echarts
        function initEc(id,op){
            var color=['#0093F1','#45BF98','#F28D4E','#C1232B','#B5C334','#FCCE10',
            '#E87C25','#27727B','#FE8463','#9BCA63','#FAD860','#F3A43B','#60C0DD',
            '#D7504B','#C6E579','#F4E001','#F0805A','#26C0C0'];
            //var unit=unitList[$('#'+id).prev('div').find('.bar-type dt.cur').attr('unit')];
            var option = {
                color:color,
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
                        type: 'cross',
                        crossStyle: {
                            color: '#999'
                        }
                    }
                },
                calculable:true,
                toolbox: {
                    right:'10px',
                    zlevel:600,
                    z:600,
                    feature: {
                        dataView: {show: true, readOnly: false},
                        magicType: {show: true, type: ['line', 'bar','stack']},
                        restore: {show: true},
                        saveAsImage: {show: true}
                    }
                },
                grid:{
                    left:'70px',
                    right:'70px',
                    bottom:'60px',
                    //x:'10%',
                    //y2:'13%',//距离最下面的边距
                },
                legend: {
                    data:['bar'],
                },
                calculable:true,
                noDataLoadingOption:{   //没有数据时,
                    effect: "bubble",
                    text:"暂无数据",
                    effectOption:{
                        effect:{
                            n:0
                        }
                    },
                    textStyle:{
                        fontSize:32,
                        fontWeight:'bold'
                    }
                },
                xAxis: [
                    {
                        type: 'category',
                        data:[],
                        axisPointer: {
                            type: 'shadow'
                        }
                    }
                ],
                yAxis: [
                    {
                        type: 'value',
                        //name:unit,
                        name:"千瓦时",
                        axisLabel: {
                            formatter: '{value}'
                        }
                    }
                ],
                series: [{
                    name:'line',
                    type:'line',
                    data:[]
                }]
            };
            var myChart = echart.init(document.getElementById(id));
            myChart.setOption($.extend({},option,op),true);  
            myChart.resize();
        }
        function getaddArr(dataObj,dateArr,code){
            var resultObj={};
            for(var i=0;i<dateArr.length;i++){
                resultObj[dateArr[i]]=getArr(dataObj[dateArr[i]]);
            }
            return resultObj;
            function getArr(obj){
                var arr=[];
                for(var key in obj){
                    for(var i=0;i<obj[key].length;i++){
                        var _arr=arr[i];
                        if(_arr==""||_arr==null||isNaN(_arr)){
                            arr[i]=0;
                        }
                        arr[i]+=parseFloat(obj[key][i]);
                    }
                }
                for(var m=0;m<arr.length;m++){
                    if(arr[m]==0){continue}
                    if(isNaN(arr[m])){continue}
                    arr[m]=Number(arr[m]).toFixed(2);
                }
                return arr;
            }
        }
        function getDateArr(date,type){
            var arr=[];
            if(type===0){//
                arr=getSubSeven(date,2);
            }else if(type===1){//
                arr=getMonthArr(date,2);
            }else if(type===2){//
                arr=[date+"",(date-1)+""]
            }else{
                
            }
            return arr;
        }
        /**
         * 传入一个日期的天数,往前面减day天,得到数组
         */
        function getSubSeven(sDate,day){
            var arr=[];
            var sTime=new Date(sDate).getTime();
            var subTime=sTime-(86400000*day)
            for(var i=sTime;i>subTime;i-=86400000){
                arr.push(new Date(i).Format("yyyy-MM-dd"));
            }
            return arr;
        }
        /**
         * @desc 得到最近n个月份的数组
         * @param {Number} sDate 开始月份
         * @param {Int} n 向前推的月份数
         * return  {Array} 
         */
        function getMonthArr(sDate,n){
            var arr=[];
            arr.push(sDate);
            while(n>1){
                //arr.unshift(getBeforMonth(sDate));
                arr.push(getBeforMonth(sDate));
                sDate=getBeforMonth(sDate);
                n--;
            }
            return arr;
        }
        function getBeforMonth(date){
            var lastMonth="";
            var year=date.split("-")[0],month=date.split("-")[1];
            if(month==1){
                lastMonth=(year-1)+"-"+12;
            }else{
                lastMonth=year+"-"+add0(month-1);
            }
            return lastMonth;
        }
        function add0(n){
            if(parseFloat(n)<10){
                return "0"+n;
            }else{
                return n;
            }
        }
        function initTopData(url,findTransformerSnameList){
            $.post(url,{treeCode:rTransformerTreeCode},function(data){
                var obj=JSON.parse(JSON.stringify(data))
                //设置属性和值
                $(".add-top>li").eq(0).find("span").text((!!data.voltageClass?Number(data.voltageClass).toFixed(2):'-')+"kV")
                $(".add-top>li").eq(1).find("span").text((!!data.transformerNum?data.transformerNum:'-')+"台")
                $(".add-top>li").eq(2).find("span").text((!!data.ratedCapacity?Number(data.ratedCapacity).toFixed(2):'-')+"kVA")
                $(".add-top>li").eq(3).find("span").text((!!data.demandNum?Number(data.demandNum).toFixed(2):'-')+"kW")
                $(".add-top>li").eq(4).find("span").text((!!data.controlDevMS?data.controlDevMS:'-')+"个")
                $(".add-top>li").eq(5).find("span").text((!!data.measuringPointNum?data.measuringPointNum:'-')+"个")
                //$(".add-top li").eq(0).find(".mdata").text((!!data.current_P?Number(data.current_P).toFixed(2):'-')+"kW")
                //$(".add-top li").eq(1).find(".mdata").text((!!data.current_IA?Number(data.current_IA).toFixed(2):'-')+"A")
                //$(".add-top li").eq(2).find(".mdata").text((!!data.monthMaxDeman?Number(data.monthMaxDeman).toFixed(2):'-')+"kW")
                //$(".add-top li").eq(3).find(".mdata").text((!!data.environTemperate?data.environTemperate:'-')+"℃")
            })
        }
        /**
         * 初始化时间插件
         */
        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');
            }).off("changeDate").on("changeDate",function(ev){
                var id=$(ev.target).attr("id");
                var time=ev.date.Format("yyyy-MM-dd")
                swithData();
            });
            selector.val(new Date().Format(format2));
        }
        /**
         * 左下角的曲线
         */
        function bottomLine(){
            var date=new Date();
            var x=[57,25,22,14,51,48,43,47,53,67,73,53,27,27,14,19,21,47,54,73,67,53,27,24];
            x.length=date.getHours();
                ec = echart.init($('#bottom_line')[0]);//初始化echart
                option = {
                tooltip : {
                        trigger: 'axis',
                        axisPointer : {            // 坐标轴指示器,坐标轴触发有效
                            type : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
                        }
                    },
                    legend: {
                        data:['昨日用电','今日用电'],
                        bottom:10
                    },
                    calculable : true,
                    xAxis : [
                        {
                            type : 'category',
                            boundaryGap : true,
                            data : ['0时','1时','2时','3时','4时','5时','6时','7时','8时','9时','10时','11时','12时','13时','14时','15时','16时','17时','18时','19时','20时','21时','22时','23时']
                        }
                    ],
                    yAxis : [
                        {
                            name : 'kWh',
                            type : 'value',
                            axisLabel : {
                                formatter: '{value} '
                            },                   
                        }
                    ],
                    series : [
                        {
                            name:'今日负荷',
                            type:'line',
                            smooth:true,
                            itemStyle : 
                            {  
                                normal : {  
                                    lineStyle:{
                                        3
                                    }  
                                }  
                            },
                        symbolSize:10,
                        data:x
                        },
                        {
                            name:'昨日负荷',
                            type:'line',
                            smooth:true,
                            itemStyle : 
                            {  
                                normal : {  
                                    lineStyle:{
                                        3
                                    }  
                                }  
                            },
                        symbolSize:10,
                        data:[50, 62, 77,80,92,91,90,73,67,53,27,14,19,25,22,14,21,47,54,57,51,48,43,47]
                        }
                    ]
                };
                ec.setOption(option, true);
            }
        }
    );
    View Code

    demo3.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>demo3new</title>
    <link href="/static/ui/common/css/demo/fontAwesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
    <link href="/static/ui/common/css/demo/Hove/css/hover-min.css" rel="stylesheet" type="text/css" />
    <link href="/static/ui/common/css/demo/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <link href="/static/ui/common/plugins/other/ztree/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" />
    <link type="text/css" rel="stylesheet" href="/static/ui/common/css/demo/comm.css" />
    <link type="text/css" rel="stylesheet" href="/static/ui/common/plugins/formElems/dialogbyshf/css/DialogBySHF.css" />
    <link type="text/css" rel="stylesheet" href="/static/ui/common/css/demo/Hove/css/hover-min.css" />
    <link type="text/css" rel="stylesheet" href="/static/ui/modules/systemMan/demo/css/demo3.css" />
    <link href="/static/ui/common/plugins/formElems/time/bootstrap_datetimepicker/css/bootstrap-datetimepicker.css"  rel="stylesheet" type="text/css">
    <style>
        /*居中显示*/
       .dialog-img{
            position: fixed;
            top: 0;
            width: 100%;
            height: 100%;
        }
        .dialog-img .layer{
            position: fixed;
            top: 0;
            width: 100%;
            height: 100%;
            background-color:#333;
            opacity:.4;
        }
        .dialog-img .layer-content{
            width:850px;
            height:400px;
            position:absolute;
            top:50%;
            left:50%;
            transform: translate(-50%,-50%);
            background-color:#f7fbfb;
            position: relative;
        }
        .layer-content>img{
            width:100%;
            height:100%
        }
        .layer-content>span{
            position: absolute;
            top: 0px;
            right: 0px;
            width: 20px;
            height: 20px;
            background-color: rgba(0,0,0,.4);
            border-radius: 15px;
            color: #fff;
            text-align: center;
            line-height: 20px;
            cursor: pointer
        }
        .date{
            background:url(/static/ui/common/plugins/formElems/time/DatePicker97/skin/date.png) no-repeat center right;
        }
        .date:focus{
            border-color: #0095ff;
            background-image: url(/static/ui/common/plugins/formElems/time/DatePicker97/skin/date3.png);
        }
        .slimScroll{
            left: 80.75px !important;
            top: 73.375px !important;
            width: 196px !important;
            height: 270px !important;
        }
        
            /* 增加的样式 */
        #top-left .top-pbar{
            height:40px;
            line-height:40px;
            margin:0;
        }
        #top-left ul.add-top{
            height:calc(100% - 52px);
            text-align:center;
        }
        ul.add-top>li{
            display: inline-block;
            vertical-align: middle;
            width: 31%;
            height:50%;
            /* padding: 0 5px; */
            border: 1px solid #ddd;
            margin: 0 0.7%;
            padding-top:2%;
        }
        ul.add-top>li:nth-child(1),ul.add-top>li:nth-child(2),ul.add-top>li:nth-child(3){
            margin-bottom:10px;
        }
        ul.add-top>li>div:first-child{
            width:80%;
            padding:20px;
            margin:auto;
            height:60%;
        }
        ul.add-top>li>div:first-child>img{
            width:60%;
            height:auto;
        }
        ul.add-top>li>p{
            height:20%;
        }
        ul.add-top>li>div:last-child{
            display:flex;
            height:20%;
            min-height:20px;
            background-color:#5A656B;
            font-size:17px;
            color:#fff;
            text-align:center;
        }
        ul.add-top>li>div:last-child>span{
            flex-grow: 1;
            align-self: center;
        }
        /* .top-pbar input{70%} */
        .top-pbar input{
            width:100% !important;
            margin:0 !important;
        }
        
        /* .top-pbar>span{
            display:inline-block;
            20% !important;
        } */
        .top-pbar>label{width:30%}
    </style>
    <body>
        <div class="main">
            <div class="row hei50 clearfix">
                <div class="col-sm-4 col-md-4" style="padding-top:0;">
                    <div class="box" id="top-left">
                        <p class="box-head"><i class="fa  fa-building-o fa-fw"></i>变电所概况</p>
                        <div>
                            <p class="top-pbar">
                                <span>所属企业:</span>
                                <label>
                                    <!--  所属企业 -->
                                    <input type="hidden" id="areaCodeSelect" name="areaCode">
                                    <input type="text" class="ztreeInput" maxlength='64'>
                                </label>
                                <span>时间:</span>
                                <label>
                                    <!--  时间选择 -->
                                    <input type="text" class="sys_select_border_1 date" id="systemtime" name="systemtime" readonly="">
                                </label>
                            </p>
                            <ul class="add-top">
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_22.png" alt=""></div>
                                    <p>电压等级</p>
                                    <div><span>-kV</span></div>
                                </li>
                                <li style="cursor:pointer" id="byq">
                                    <div><img src="/static/ui/common/img/demo/demo3_19.png" alt=""></div>
                                    <p>变压器台数</p>
                                    <div><span>-台</span></div>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_35.png" alt=""></div>
                                    <p>装机容量</p>
                                    <div><span>-kVA</span></div>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_35.png" alt=""></div>
                                    <p>申报需量</p>
                                    <div><span>-kW</span></div>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_37.png" alt=""></div>
                                    <p>测控装置</p>
                                    <div><span>-个</span></div>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_33.png" alt=""></div>
                                    <p>测量点</p>
                                    <div><span>-个</span></div>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
                <!-- <div class="col-sm-4 col-md-4" style="padding-top:0;">
                    <div class="box relative">
                        <p class="box-head"><i class="fa fa-table fa-fw"></i>运行状态</p>
                        <div style="padding:10px;overflow-y:aotu">
                            <p class="top-statu">更新时间: <span>刚刚</span></p>
                            <ul class="top-status" >
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_03.png" alt=""></div>
                                    <p>当前负荷</p>
                                    <p class="mdata">-kw</p>
                                    <div>
                                        <a href="javascript:void(0)" style="display:block;height:100%" onclick="imgdialog(this)" imgstr="/static/ui/common/img/demo/demo3_45.png">
                                            <p><img src="/static/ui/common/img/demo/demo3_45.png" alt=""></p>
                                            <div><span>配电图</span></div>
                                        </a>
                                    </div>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_05.png" alt=""></div>
                                    <p>当前电流</p>
                                    <p class="mdata">-A</p>
                                    <div>
                                        <a href="javascript:void(0)" style="display:block;height:100%">
                                            <p><img src="/static/ui/common/img/demo/demo3_48.png" alt=""></p>
                                            <div><span>视频</span></div>
                                        </a>
                                        
                                    </div>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_09.png" alt=""></div>
                                    <p>月最大需量</p>
                                    <p class="mdata">-kW</p>
                                    <div class="ock">
                                        <a href="javascript:void(0)" style="display:block;height:100%">
                                            <p><img src="/static/ui/common/img/demo/demo3_54.png" alt=""></p>
                                            <div><span>通讯</span></div>
                                        </a>
                                    </div>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_07.png" alt=""></div>
                                    <p>环境温度</p>
                                    <p class="mdata">-℃</p>
                                    <div class="ock">
                                        <a href="javascript:void(0)" style="display:block;height:100%">
                                            <p><img src="/static/ui/common/img/demo/demo3_51.png" alt=""></p>
                                            <div><span>变压器</span></div>
                                        </a>
                                        
                                    </div>
                                </li>
                                
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="col-sm-4 col-md-4" style="padding-top:0;">
                    <div class="box" >
                        <p class="box-head"><i class="fa  fa-pie-chart fa-fw"></i>当日事件记录</p>
                        <div style="padding:10px;">
                            <p style="height:30px;"></p>
                            <ul class="event">
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_12.png" alt=""></div>
                                    <p>遥测越限</p>
                                    <p>-<sub>次</sub></p>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_14.png" alt=""></div>
                                    <p>遥信变位</p>
                                    <p>-<sub>次</sub></p>
                                </li>
                                <li>
                                    <div><img src="/static/ui/common/img/demo/demo3_16.png" alt=""></div>
                                    <p>失联的装置</p>
                                    <p>-<sub>个</sub></p>
                                </li>
                            </ul>
                            <div>
                                <img src="/static/ui/common/img/demo/demo3_40.png" alt="">
                                <img src="/static/ui/common/img/demo/demo3_42.png" alt="">
                            </div>
                        </div>
                    </div>
                </div> -->
                <div class="col-sm-8 col-md-8" style="padding-top:0;">
                    <div class="box" >
                        <p class="box-head"><i class="fa fa-line-chart fa-fw"></i>线路分析(单位:kWh)</p>
                        <div>
                            <ul class="switch-change">
                                <li class="cur">
                                    <h3></h3>
                                    <p>24</p>
                                </li>
                                <li>
                                    <h3></h3>
                                    <p>31</p>
                                </li>
                                <li>
                                    <h3></h3>
                                    <p>12</p>
                                </li>
                            </ul>
                            <div id="bottom_line">
    
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row hei50 clearfix">
                <div class="col-sm-4 col-md-4" style="padding-bottom:0;">
                    <div class="box" >
                        <p class="box-head"><i class="fa fa-line-chart fa-fw"></i>用电概况</p>
                        <div>
                            <div id="bottom_right" style="height:100%;">
                                <ul class="bottom-right">
                                    <li >
                                        <div id="thisday" style="border-color:#ffae00;background-color:#EFFBF7;">
                                            <p style="background-color:#ffae00">
                                                <span>当日用电</span>
                                                <em style="border-left-color:#ffae00;"></em>
                                            </p>
                                            <span>- kWh</span>
                                        </div>
                                        
                                    </li>
                                    <li >
                                        <div id="beforeday" style="border-color:#31BEFF;background-color:#EFFBFF;">
                                            <p style="background-color:#31BEFF;">
                                                <span>昨日用电</span>
                                                <em style="border-left-color:#31BEFF;"></em>
                                            </p>
                                            <span>- kWh</span>
                                        </div>
                                    </li>
                                    <li >
                                        <div style="border-color:#94D700;background-color:#F7FBE7;" id="huanbi">
                                            <p style="background-color:#94D700;">
                                                <span>环比</span>
                                                <em style="border-left-color:#94D700;"></em>
                                            </p>
                                            <span>0%</span>
                                            <!-- 默认向下的箭头 -->
                                            <!-- <em class="fa fa-fw fa-long-arrow-down" style="font-size: 22px;color:#94D700"></em> -->
                                            <em style="font-size: 22px;color:#94D700"></em>
                                        </div>
                                    </li>
                                </ul>
                                <ul class="bottom-bottom" style="display:none">
                                    <li>
                                        <p>12:30-12:45</p>
                                        <p>最大用电时间</p>
                                    </li>
                                    <li>
                                        <p>240kW</p>
                                        <p>该短时间平均功率</p>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="col-sm-8 col-md-8" style="padding-bottom:0;">
                    <div class="box" >
                        <p class="box-head"><i class="fa fa-line-chart fa-fw"></i>支路分析(单位:kWh)</p>
                        <div>
                            <ul class="switch-change" style="display:none">
                                <li class="cur">
                                    <h3></h3>
                                    <p>24</p>
                                </li>
                                <li>
                                    <h3></h3>
                                    <p>31</p>
                                </li>
                                <li>
                                    <h3></h3>
                                    <p>12</p>
                                </li>
                            </ul>
                            <div id="bottom_lines">
    
                            </div>
                        </div>
                    </div>
                </div>
                
            </div>
        </div>
        <!-- 弹出图片的框 -->
        <div class="dialog-img" style="display:none">
            <div class="layer"></div>
            <div class="layer-content" >
                <span class="img-close">X</span>
                <img src="/static/ui/common/img/demo/map_03.jpg" alt="">
            </div>
        </div>
      <script type="text/javascript">
            var path = "/static";
        </script>
          <script type="text/javascript" src="/static/ui/common/js/libs/require.js" data-main="/static/ui/modules/systemMan/demo/js/demo3new.js"></script>  
    </body>
    </html>
    View Code
  • 相关阅读:
    怎样应对突发性的开发需求
    ASP.NET过滤HTML标签只保留换行与空格的方法
    sqlserver 各种判断是否存在(表名、函数、存储过程等)
    Timing advance of GSM(时间提前量)
    对.NET中Hashtable和ArryList的理解
    GPS原始经纬度转百度经纬度
    baidu经纬度坐标与google经纬度坐标都转换
    .NET资料之-根据两点经纬度计算直线距离
    .net处理JSON简明教程
    在asp.net中要不使用其他插件的情况下只能使用定时器来检查, 并执行任务.
  • 原文地址:https://www.cnblogs.com/pengfei25/p/10449369.html
Copyright © 2011-2022 走看看