/**
 * Created by onlyang on 2017/7/2.
 * es5
 */
var Steer = {};
(function ($, window, document) {
  Steer.utils = {
    // 参数Split
    paramsSplit: function (sparam, ssplit) {
      var sp = '', spd = '';
      if (sparam && sparam.length > 0) {
        if (!ssplit) { ssplit = ';;'; }
        var atp = sparam.split(ssplit);
        sp = atp[0];
        if (atp.length > 1) { spd = atp[1]; }
      }
      return [sp, spd];
    }
  };

  var STTable = {
    /*
    * 初始化表格
    * tid: 表格ID
    * data: 需要展示的数据
    * */
    init: function (tid, data) {
      mini.parse();
      let grid = mini.get(tid);
      let $table = $('#' + tid);
      if (!data) { data = []; }
      grid.setData(data);
      // 绑定所有数据
      $table.data('mini_all_data', data);
      // 过滤关闭按钮
      let clase = $('<span>', { class: 'el-icon-circle-close-outline' });
      $table.find('.mini-grid-filter').append(clase);
      $table.on('click', '.el-icon-circle-close-outline', function () {
        $(this).closest('.mini-textbox').find('.mini-textbox-input').val('');
        $.STTable.filterData(tid);
      });
      // 过滤事件
      $table.on('keyup', 'input.mini-textbox-input', function (event) {
        $.STTable.filterData(tid);
      });
      // 合计信息
      let smInfo = $('<div>', {
        class: 'mini-table-sum',
        id: tid + '_sum'
      });
      $table.after(smInfo);
      $.STTable.setSumInfo(tid, data.length, data.length);
    },
    setSumInfo: function (tid, current, all) {
      $('#' + tid + '_sum').text(current + ' / ' + all);
    },
    /*
    * 设置表格数据
    * tid: 表格ID
    * data: 需要展示的数据
    * bFilter:不重置过滤条件(默认重置)
    * */
    setData: function (tid, data, bFilter) {
      let grid = mini.get(tid);
      if (!data) { data = []; }
      grid.setData(data);
      grid.scrollIntoView(0);
      $.STTable.setSumInfo(tid, data.length, data.length);
      // 绑定所有数据
      $('#' + tid).data('mini_all_data', data);
      if (!bFilter) {
        $('#' + tid).find('.mini-grid-filter').find('input.mini-textbox-input').val('');
      }
    },
    filterData: function (tid) {
      let $table = $('#' + tid);
      let data = $table.data('mini_all_data');
      // if (event && event.keyCode === 13) {
      let inps = $table.find('input.mini-textbox-input');
      let fobjs = {};
      $.each(inps, function (i, n) {
        let $in = $(n);
        let val = $in.val();
        if (val && val.length > 0) {
          let _name = $in.attr('name');
          fobjs[_name] = val;
        }
      });
      let cData = [];
      cData = data.filter(function (v) {
        let flag = true;
        $.each(fobjs, function (ci, cn) {
          if ((v[ci] + '').indexOf(cn) < 0) {
            flag = false;
            return false;
          }
        });
        return flag;
      });
      let grid = mini.get(tid);
      grid.setData(cData);
      grid.scrollIntoView(0);
      $.STTable.setSumInfo(tid, cData.length, data.length);
    }
  };
  $.STTable = STTable;
  /*
   * SSlider 模拟Slider
   * @param {string} sActive 'show'显示,'hide'隐藏
   * @oInit
   *    title: 标题
   *    level: 2
   *    width: 200
   *    closeCallback: fn
   * @example $('#').slider('show');
   */
  var SSlider = function (sAction, oInit) {
    // 执行体
    var $thats = this;
    if (!$thats || $thats.length <= 0) {
      return;
    }
    var $that = $thats.first();
    if (sAction === 'show') {
      var iZIndex = 1900;
      if (oInit) {
        if (oInit.title) {
          $that.children('.sui-slider-main').children('.sui-slider-title').find('.sui-slider-title-text').text(oInit.title);
        }
        if (oInit.level > 1) {
          iZIndex += 10 * oInit.level;
          var ih = 800;
          if (oInit.width > 0) {
            ih = oInit.width;
          } else {
            ih = 800 - 100 * (oInit.level - 1);
            if (ih < 200) { ih = 200; }
          }
          $that.children('.sui-slider-main').css({'width': ih + 'px', 'z-index': iZIndex + 2});
          $that.children('.sui-slider-cover').css({'z-index': iZIndex + 1});
        }
      }
      $that.css('z-index', iZIndex);
      SSlider.prototype._showSlider($that, oInit);
    } else {
      SSlider.prototype._hideSlider($that, oInit);
    }
  };
  // 隐藏Slider
  SSlider.prototype._hideSlider = function ($slider, oInit) {
    $slider.children('.sui-slider-main').removeClass('sui-slider-in').removeClass('sui-slider-active').addClass('sui-slider-out');
    setTimeout(function () {
      $slider.hide();
      // $c.remove(); //移除遮盖层
      var sliderActives = $('.sui-slider-active');
      if (!sliderActives || sliderActives.length <= 0) {
        $('body').removeClass('sui-slider-body');
      }
      if (oInit && oInit.closeCallback) {
        oInit.closeCallback.call(null);
      }
    }, 300);
  };
  // 显示Slider
  SSlider.prototype._showSlider = function ($slider, oInit) {
    $('body').addClass('sui-slider-body');// body不再滚动
    // 显示遮盖层及绑定事件
    $slider.children('.sui-slider-cover').not('.sui-slider-evented').on('click', function () {
      SSlider.prototype._hideSlider($slider, oInit);
    }).addClass('sui-slider-evented');
    $slider.children('.sui-slider-main').removeClass('sui-slider-out').addClass('sui-slider-in').addClass('sui-slider-active');
    $slider.children('.sui-slider-main').children('.sui-slider-title').find('.sui-slider-title-x').not('.sui-slider-evented').on('click', function () {
      SSlider.prototype._hideSlider($slider, oInit);
    }).addClass('sui-slider-evented');
    $slider.show();
  };
  // jquery aliases 别名
  $.fn.slider = SSlider;
}(jQuery, window, document));

/*
* 验证码
* */
(function () {
  var randstr = function (length) {
    var key = {
      str: [
        // 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
        // 'o', 'p', 'q', 'r', 's', 't', 'x', 'u', 'v', 'y', 'z', 'w', 'n',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
      ],
      randint: function (n, m) {
        var c = m - n + 1;
        var num = Math.random() * c + n;
        return Math.floor(num);
      },
      randStr: function () {
        var _this = this;
        var leng = _this.str.length - 1;
        var randkey = _this.randint(0, leng);
        return _this.str[randkey];
      },
      create: function (len) {
        var _this = this;
        var l = len || 10;
        var str = '';
        for (var i = 0; i < l; i++) {
          str += _this.randStr();
        }
        return str;
      }
    };
    length = length > 0 ? length : 10;
    return key.create(length);
  };
  var randint = function (n, m) {
    var c = m - n + 1;
    var num = Math.random() * c + n;
    return Math.floor(num);
  };
  var VCode = function (dom, options) {
    this.codeDoms = [];
    this.lineDoms = [];
    this.initOptions(options);
    this.dom = dom;
    this.init();
    this.addEvent();
    this.update();
    this.mask();
  };
  VCode.prototype.init = function () {
    this.dom.style.position = 'relative';
    this.dom.style.overflow = 'hidden';
    this.dom.style.cursor = 'pointer';
    this.dom.title = '点击更换验证码';
    this.dom.style.background = this.options.bgColor;
    /*
      alert(this.options.width);
      alert(this.dom.clientWidth>0?this.dom.clientWidth:40); clientHeight
    */
    this.w = this.options.width > 0 ? this.options.width : (this.dom.clientWidth > 0 ? this.dom.clientWidth > 0 : 100);
    this.h = this.options.height > 0 ? this.options.height : (this.dom.clientHeight > 0 ? this.dom.clientHeight > 0 : 40);
    this.uW = this.w / this.options.len;
  };
  VCode.prototype.mask = function () {
    var dom = document.createElement('div');
    dom.style.cssText = [
      'width: 100%',
      'height: 100%',
      'left: 0',
      'top: 0',
      'position: absolute',
      'cursor: pointer',
      'z-index: 9999999'
    ].join(';');
    dom.title = '点击更换验证码';
    this.dom.appendChild(dom);
  };
  VCode.prototype.addEvent = function () {
    var _this = this;
    _this.dom.addEventListener('click', function () {
      // _this.update.call(_this);
      _this.update();
    });
  };
  VCode.prototype.initOptions = function (options) {
    var FunctionOptons = function () {
      this.len = 4;
      this.fontSizeMin = 24;
      this.fontSizeMax = 28;
      this.colors = [
        'green',
        'red',
        'blue',
        '#53da33',
        '#AA0000',
        '#FFBB00'
      ];
      this.bgColor = '#f6f6f6';
      this.fonts = [
        'Times New Roman',
        'Georgia',
        'Serif',
        'sans-serif',
        'arial',
        'tahoma',
        'Hiragino Sans GB'
      ];
      this.lines = 8;
      this.lineColors = [
        '#888888',
        '#FF7744',
        '#888800',
        '#008888'
      ];
      this.lineHeightMin = 1;
      this.lineHeightMax = 2;
      this.lineWidthMin = 1;
      this.lineWidthMax = 30;
    };
    this.options = new FunctionOptons();
    if (typeof options === 'object') {
      for (var i in options) {
        this.options[i] = options[i];
      }
    }
  };
  VCode.prototype.update = function () {
    for (var i = 0; i < this.codeDoms.length; i++) {
      this.dom.removeChild(this.codeDoms[i]);
    }
    for (var j = 0; j < this.lineDoms.length; j++) {
      this.dom.removeChild(this.lineDoms[j]);
    }
    this.createCode();
    this.draw();
  };
  VCode.prototype.createCode = function () {
    this.code = randstr(this.options.len);
  };
  VCode.prototype.verify = function (code) {
    return this.code === (code ? code.toLowerCase() : code);
  };
  VCode.prototype.draw = function () {
    this.codeDoms = [];
    for (var i = 0; i < this.code.length; i++) {
      this.codeDoms.push(this.drawCode(this.code[i], i));
    }
    this.drawLines();
  };
  VCode.prototype.drawCode = function (code, index) {
    var dom = document.createElement('span');
    dom.style.cssText = [
      'font-size:' + randint(this.options.fontSizeMin, this.options.fontSizeMax) + 'px',
      'color:' + this.options.colors[randint(0, this.options.colors.length - 1)],
      'position: absolute',
      'left:' + randint(this.uW * index, this.uW * index + this.uW - 15) + 'px',
      'top:' + randint(0, 5) + 'px',
      'transform:rotate(' + randint(-20, 20) + 'deg)',
      '-ms-transform:rotate(' + randint(-20, 20) + 'deg)',
      '-moz-transform:rotate(' + randint(-20, 20) + 'deg)',
      '-webkit-transform:rotate(' + randint(-20, 20) + 'deg)',
      '-o-transform:rotate(' + randint(-20, 20) + 'deg)',
      'font-family:' + this.options.fonts[randint(0, this.options.fonts.length - 1)],
      'font-weight:' + randint(500, 900)
    ].join(';');
    dom.innerHTML = code;
    this.dom.appendChild(dom);
    return dom;
  };
  VCode.prototype.drawLines = function () {
    this.lineDoms = [];
    for (var i = 0; i < this.options.lines; i++) {
      var dom = document.createElement('div');
      dom.style.cssText = [
        'position: absolute',
        'opacity: ' + randint(3, 5) / 10,
        'width:' + randint(this.options.lineWidthMin, this.options.lineWidthMax) + 'px',
        'height:' + randint(this.options.lineHeightMin, this.options.lineHeightMax) + 'px',
        'background: ' + this.options.lineColors[randint(0, this.options.lineColors.length - 1)],
        'left:' + randint(0, this.w - 20) + 'px',
        'top:' + randint(0, this.h) + 'px',
        'transform:rotate(' + randint(-30, 30) + 'deg)',
        '-ms-transform:rotate(' + randint(-30, 30) + 'deg)',
        '-moz-transform:rotate(' + randint(-30, 30) + 'deg)',
        '-webkit-transform:rotate(' + randint(-30, 30) + 'deg)',
        '-o-transform:rotate(' + randint(-30, 30) + 'deg)',
        'font-family:' + this.options.fonts[randint(0, this.options.fonts.length - 1)],
        'font-weight:' + randint(400, 900)
      ].join(';');
      this.dom.appendChild(dom);
      this.lineDoms.push(dom);
    }
  };
  this.VCode = VCode;
}).call(this);

/**
 * 组织结构图
 * @Author: ouyang
 */
(function ($) {
  $.fn.jOrgChart = function (options) {
    var opts = $.extend({}, $.fn.jOrgChart.defaults, options);
    var $this = $(this);
    if (!$this || $this.length <= 0) { return false; }
    $this.empty();

    var $showlist = $("<ul id='org' style='display:none'></ul>");
    _showall(options.data, $showlist, opts);
    $this.append($showlist);

    // build the tree
    var $org = $('#org');
    var $container = $('<div class="' + opts.chartClass + '"/>');
    if ($org.is('ul')) {
      buildNode($org.find('li:first'), $container, 0, opts);
    } else if ($org.is('li')) {
      buildNode($org, $container, 0, opts);
    }
    $this.append($container);
  };

  // Option defaults
  $.fn.jOrgChart.defaults = {
    depth: -1,
    chartClass: 'jOrgChart', // CLASS
    expandAble: true, // 是否展开/收缩
    module: { // 数据模型
      id: 'id',
      pid: 'pid',
      name: 'name',
      children: 'children'
    }
  };

  function _showall (oList, $parent, opts) {
    $.each(oList, function (index, val) {
      var aChildren = val[opts.module.children];
      var $a = $('<a title="' + val[opts.module.name] + '" href="javascript:void(0)">' + val[opts.module.name] + '</a>').data('node_data', val);
      if (aChildren && aChildren.length > 0) {
        var $li = $('<li></li>');
        $li.append($a).append('<ul></ul>').appendTo($parent);
        // 递归显示
        _showall(aChildren, $li.children('ul'), opts);
      } else {
        $('<li></li>').append($a).appendTo($parent);
      }
    });
  }

  var nodeCount = 0;
  // Method that recursively builds the tree
  function buildNode ($node, $appendTo, level, opts) {
    var $table = $('<table cellpadding="0" cellspacing="0" border="0"/>');
    var $tbody = $('<tbody/>');

    // Construct the node container(s)
    var $nodeRow = $('<tr/>').addClass('node-cells');
    var $nodeCell = $('<td/>').addClass('node-cell').attr('colspan', 2);
    var $childNodes = $node.children('ul:first').children('li');
    var $nodeDiv;

    if ($childNodes.length > 1) {
      $nodeCell.attr('colspan', $childNodes.length * 2);
    }
    // Draw the node
    // Get the contents - any markup except li and ul allowed
    var $nodeContent = $node.clone()
      .children('ul,li')
      .remove()
      .end()
      .html();
    // Increaments the node count which is used to link the source list and the org chart
    nodeCount++;
    $node.data('tree-node', nodeCount);
    $nodeDiv = $('<div>').addClass('node')
      .data('tree-node', nodeCount)
      .append($nodeContent);
    if (opts.clickCallback && typeof opts.clickCallback === 'function') {
      $nodeDiv.on('click', function () {
        $('.jOrgChart').find('div').css('border-color', 'black')
        $('.jOrgChart').find('div a').css('color', 'black')
        $nodeDiv.css('border-color', 'red')
        $nodeDiv.find('a').css('color', 'red')
        opts.clickCallback($node.children('a').data('node_data'));
      });
    }

    // Expand and contract nodes
    if (opts.expandAble && $childNodes.length > 0) {
      $nodeDiv.on('click', function () {
        var $this = $(this);
        var $tr = $this.closest('tr');

        if ($tr.hasClass('contracted')) {
          $this.css('cursor', 'n-resize');
          $tr.removeClass('contracted').addClass('expanded');
          $tr.nextAll('tr').css('visibility', '');

          // Update the <li> appropriately so that if the tree redraws collapsed/non-collapsed nodes
          // maintain their appearance
          $node.removeClass('collapsed');
        } else {
          $this.css('cursor', 's-resize');
          $tr.removeClass('expanded').addClass('contracted');
          $tr.nextAll('tr').css('visibility', 'hidden');
          $node.addClass('collapsed');
        }
      });
    }

    $nodeCell.append($nodeDiv);
    $nodeRow.append($nodeCell);
    $tbody.append($nodeRow);

    if ($childNodes.length > 0) {
      // if it can be expanded then change the cursor
      $nodeDiv.css('cursor', 'n-resize');

      // recurse until leaves found (-1) or to the level specified
      if (opts.depth === -1 || (level + 1 < opts.depth)) {
        var $downLineRow = $('<tr/>');
        var $downLineCell = $('<td/>').attr('colspan', $childNodes.length * 2);
        $downLineRow.append($downLineCell);

        // draw the connecting line from the parent node to the horizontal line
        var $downLine = $('<div></div>').addClass('line down');
        $downLineCell.append($downLine);
        $tbody.append($downLineRow);

        // Draw the horizontal lines
        var $linesRow = $('<tr/>');
        $childNodes.each(function () {
          var $left = $('<td>&nbsp;</td>').addClass('line left top');
          var $right = $('<td>&nbsp;</td>').addClass('line right top');
          $linesRow.append($left).append($right);
        });

        // horizontal line shouldn't extend beyond the first and last child branches
        $linesRow.find('td:first')
          .removeClass('top')
          .end()
          .find('td:last')
          .removeClass('top');

        $tbody.append($linesRow);
        var $childNodesRow = $('<tr/>');
        $childNodes.each(function () {
          var $td = $('<td class="node-container"/>');
          $td.attr('colspan', 2);
          // recurse through children lists and items
          buildNode($(this), $td, level + 1, opts);
          $childNodesRow.append($td);
        });
      }
      $tbody.append($childNodesRow);
    }

    // any classes on the LI element get copied to the relevant node in the tree
    // apart from the special 'collapsed' class, which collapses the sub-tree at this point
    if ($node.attr('class') !== undefined) {
      var classList = $node.attr('class').split(/\s+/);
      $.each(classList, function (index, item) {
        if (item === 'collapsed') {
          // console.log($node);
          $nodeRow.nextAll('tr').css('visibility', 'hidden');
          $nodeRow.removeClass('expanded');
          $nodeRow.addClass('contracted');
          $nodeDiv.css('cursor', 's-resize');
        } else {
          $nodeDiv.addClass(item);
        }
      });
    }

    $table.append($tbody);
    $appendTo.append($table);

    /* Prevent trees collapsing if a link inside a node is clicked */
    // $nodeDiv.children('a').click(function(e){
    //     console.log(e);
    //     e.stopPropagation();
    // });
  };
})(jQuery);
/**
 * 物料进程图-竖版 : 支持点击展示弹出框
*/

(function ($) {
  $.fn.jProcessChartCol = function (options) {
    var opts = $.extend({}, $.fn.jProcessChartCol.defaults, options);
    var $this = $(this);
    if (!$this || $this.length <= 0) { return false; }
    $this.empty();

    var $showlist = $("<ul id='org' style='display:none'></ul>");
    _showall(options.data, $showlist, opts);
    $this.append($showlist);

    // build the tree
    var $org = $('#org');
    var $container = $('<div class="' + opts.chartClass + '"/>');
    if ($org.is('ul')) {
      buildNode($org.find('li:first'), $container, 0, opts);
    } else if ($org.is('li')) {
      buildNode($org, $container, 0, opts);
    }
    $this.append($container);
  };

  // Option defaults
  $.fn.jProcessChartCol.defaults = {
    depth: -1,
    chartClass: 'jOrgChart jProcessChartCol', // CLASS
    expandAble: true, // 是否展开/收缩
    module: { // 数据模型
      id: 'id',
      pid: 'pid',
      current: 'current',
      name: 'name',
      children: 'children'
    }
  };

  function _showall (oList, $parent, opts) {
    $.each(oList, function (index, val) {
      var aChildren = val[opts.module.children];
      var aSelf = val[opts.module.name];
      var aHighLight = val[opts.module.current];
      if (aChildren && aChildren.length > 0) {
        var $li = $('<li></li>');
        var $lidiv = $('<div></div>');
        for (let i = 0; i < aSelf.length; i++) {
          aSelf[i].remark = aSelf[i].remark ? aSelf[i].remark : '';
          aSelf[i].pact_index = aSelf[i].pact_index ? aSelf[i].pact_index : '';
          aSelf[i].order_no = aSelf[i].order_no ? aSelf[i].order_no : '';
          aSelf[i].prod_order_no = aSelf[i].prod_order_no ? aSelf[i].prod_order_no : '';
          aSelf[i].roll_plan_no = aSelf[i].roll_plan_no ? aSelf[i].roll_plan_no : '';
          aSelf[i].batch_no = aSelf[i].batch_no ? aSelf[i].batch_no : '';
          aSelf[i].ht_plan_no = aSelf[i].ht_plan_no ? aSelf[i].ht_plan_no : '';
          aSelf[i].addition_1 = aSelf[i].addition_1 ? aSelf[i].addition_1 : '';
          aSelf[i].addition_2 = aSelf[i].addition_2 ? aSelf[i].addition_2 : '';
          aSelf[i].addition_3 = aSelf[i].addition_3 ? aSelf[i].addition_3 : '';
          aSelf[i].addition_4 = aSelf[i].addition_4 ? aSelf[i].addition_4 : '';
          aSelf[i].addition_5 = aSelf[i].addition_5 ? aSelf[i].addition_5 : '';
          aSelf[i].create_time = aSelf[i].create_time ? aSelf[i].create_time : '';
          aSelf[i].name = aSelf[i].name ? aSelf[i].name : '';
          aSelf[i].object_no = aSelf[i].object_no ? aSelf[i].object_no : '';
          aSelf[i].create_man_name = aSelf[i].create_man_name ? aSelf[i].create_man_name : '';
          var $a = $('<a title="' + aSelf[i].prc_code_desc + '" href="javascript:void(0)"><div class="jProcessChartColDetail" style="display: none">' +
            // '操作人:' + aSelf[i].create_man_name +
            // '</br>' + '计划号:' + aSelf[i].pact_index +
            // '</br>' + '订单号:' + aSelf[i].order_no +
            // '</br>' + '生产订单号:' + aSelf[i].prod_order_no +
            // '</br>' + '轧制计划号:' + aSelf[i].roll_plan_no +
            // '</br>' + '组批号:' + aSelf[i].batch_no +
            // '</br>' + '热处理计划号:' + aSelf[i].ht_plan_no +
            // '</br>' + '附加信息1:' + aSelf[i].addition_1 +
            // '</br>' + '附加信息2:' + aSelf[i].addition_2 +
            // '</br>' + '附加信息3:' + aSelf[i].addition_3 +
            // '</br>' + '附加信息4:' + aSelf[i].addition_4 +
            // '</br>' + '附加信息5:' + aSelf[i].addition_5 +
            // '</br>' + '备注:' + aSelf[i].remark +
            `<table>
              <tr><td style="text-align: right;width: 98px">操作人:</td><td style="text-align: left">${aSelf[i].create_man_name}<td></tr>
              <tr><td style="text-align: right;width: 98px">计划号:</td><td style="text-align: left">${aSelf[i].pact_index}<td></tr>
              <tr><td style="text-align: right;width: 98px">订单号:</td><td style="text-align: left">${aSelf[i].order_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">生产订单号:</td><td style="text-align: left">${aSelf[i].prod_order_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">轧制计划号:</td><td style="text-align: left">${aSelf[i].roll_plan_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">组批号:</td><td style="text-align: left">${aSelf[i].batch_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">热处理计划号:</td><td style="text-align: left">${aSelf[i].ht_plan_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息1:</td><td style="text-align: left">${aSelf[i].addition_1}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息2:</td><td style="text-align: left">${aSelf[i].addition_2}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息3:</td><td style="text-align: left">${aSelf[i].addition_3}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息4:</td><td style="text-align: left">${aSelf[i].addition_4}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息5:</td><td style="text-align: left">${aSelf[i].addition_5}<td></tr>
              <tr><td style="text-align: right;width: 98px">备注:</td><td style="text-align: left">${aSelf[i].remark}<td></tr>
            </table>` +
            '</div></br>' + aSelf[i].prc_code_desc + '</br>' + aSelf[i].create_time + '</a>').data('node_data', aSelf[i]);
          if (i === 0) { // 每个节点的第一项才显示编号
            $a = $('<a title="' + aSelf[i].prc_code_desc + '" href="javascript:void(0)"><div class="jProcessChartColDetail" style="display: none"><span>' +
              // '操作人:' + aSelf[i].create_man_name +
              // '</br>' + '计划号:' + aSelf[i].pact_index +
              // '</br>' + '订单号:' + aSelf[i].order_no +
              // '</br>' + '生产订单号:' + aSelf[i].prod_order_no +
              // '</br>' + '轧制计划号:' + aSelf[i].roll_plan_no +
              // '</br>' + '组批号:' + aSelf[i].batch_no +
              // '</br>' + '热处理计划号:' + aSelf[i].ht_plan_no +
              // '</br>' + '附加信息1:' + aSelf[i].addition_1 +
              // '</br>' + '附加信息2:' + aSelf[i].addition_2 +
              // '</br>' + '附加信息3:' + aSelf[i].addition_3 +
              // '</br>' + '附加信息4:' + aSelf[i].addition_4 +
              // '</br>' + '附加信息5:' + aSelf[i].addition_5 +
              // '</span></br><span>' + '备注:' + aSelf[i].remark +
              `<table>
                <tr><td style="text-align: right;width: 98px">操作人:</td><td style="text-align: left">${aSelf[i].create_man_name}<td></tr>
                <tr><td style="text-align: right;width: 98px">计划号:</td><td style="text-align: left">${aSelf[i].pact_index}<td></tr>
                <tr><td style="text-align: right;width: 98px">订单号:</td><td style="text-align: left">${aSelf[i].order_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">生产订单号:</td><td style="text-align: left">${aSelf[i].prod_order_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">轧制计划号:</td><td style="text-align: left">${aSelf[i].roll_plan_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">组批号:</td><td style="text-align: left">${aSelf[i].batch_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">热处理计划号:</td><td style="text-align: left">${aSelf[i].ht_plan_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息1:</td><td style="text-align: left">${aSelf[i].addition_1}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息2:</td><td style="text-align: left">${aSelf[i].addition_2}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息3:</td><td style="text-align: left">${aSelf[i].addition_3}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息4:</td><td style="text-align: left">${aSelf[i].addition_4}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息5:</td><td style="text-align: left">${aSelf[i].addition_5}<td></tr>
                <tr><td style="text-align: right;width: 98px">备注:</td><td style="text-align: left">${aSelf[i].remark}<td></tr>
              </table>` +
              '</span></div>' + aSelf[i].object_no + '</br>' + aSelf[i].prc_code_desc + '</br>' + aSelf[i].create_time + '</a>').data('node_data', aSelf[i]);
          }
          var $lidivchild = $('<div class="jProcessChartColDiv"></div>');
          if (aHighLight) { // 高亮
            $lidivchild.addClass('jProcessChartColDivCurrent')
          }
          $lidivchild.append($a).appendTo($lidiv);
          $lidivchild.appendTo($lidiv);
        }
        $lidiv.appendTo($li);
        $li.append('<ul></ul>').appendTo($parent);
        // 递归显示
        _showall(aChildren, $li.children(':eq(1)'), opts);
      } else { // 叶子结点
        $li = $('<li></li>');
        $lidiv = $('<div></div>');
        for (let i = 0; i < aSelf.length; i++) {
          aSelf[i].remark = aSelf[i].remark ? aSelf[i].remark : '';
          aSelf[i].pact_index = aSelf[i].pact_index ? aSelf[i].pact_index : '';
          aSelf[i].order_no = aSelf[i].order_no ? aSelf[i].order_no : '';
          aSelf[i].prod_order_no = aSelf[i].prod_order_no ? aSelf[i].prod_order_no : '';
          aSelf[i].roll_plan_no = aSelf[i].roll_plan_no ? aSelf[i].roll_plan_no : '';
          aSelf[i].batch_no = aSelf[i].batch_no ? aSelf[i].batch_no : '';
          aSelf[i].ht_plan_no = aSelf[i].ht_plan_no ? aSelf[i].ht_plan_no : '';
          aSelf[i].addition_1 = aSelf[i].addition_1 ? aSelf[i].addition_1 : '';
          aSelf[i].addition_2 = aSelf[i].addition_2 ? aSelf[i].addition_2 : '';
          aSelf[i].addition_3 = aSelf[i].addition_3 ? aSelf[i].addition_3 : '';
          aSelf[i].addition_4 = aSelf[i].addition_4 ? aSelf[i].addition_4 : '';
          aSelf[i].addition_5 = aSelf[i].addition_5 ? aSelf[i].addition_5 : '';
          aSelf[i].remark = aSelf[i].remark ? aSelf[i].remark : '';
          aSelf[i].create_time = aSelf[i].create_time ? aSelf[i].create_time : '';
          aSelf[i].name = aSelf[i].name ? aSelf[i].name : '';
          aSelf[i].object_no = aSelf[i].object_no ? aSelf[i].object_no : '';
          aSelf[i].create_man_name = aSelf[i].create_man_name ? aSelf[i].create_man_name : '';
          $a = $('<a title="' + aSelf[i].prc_code_desc + '" href="javascript:void(0)"><div class="jProcessChartColDetail" style="display: none">' +
            // '操作人:' + aSelf[i].create_man_name +
            // '</br>' + '计划号:' + aSelf[i].pact_index +
            // '</br>' + '订单号:' + aSelf[i].order_no +
            // '</br>' + '生产订单号:' + aSelf[i].prod_order_no +
            // '</br>' + '轧制计划号:' + aSelf[i].roll_plan_no +
            // '</br>' + '组批号:' + aSelf[i].batch_no +
            // '</br>' + '热处理计划号:' + aSelf[i].ht_plan_no +
            // '</br>' + '附加信息1:' + aSelf[i].addition_1 +
            // '</br>' + '附加信息2:' + aSelf[i].addition_2 +
            // '</br>' + '附加信息3:' + aSelf[i].addition_3 +
            // '</br>' + '附加信息4:' + aSelf[i].addition_4 +
            // '</br>' + '附加信息5:' + aSelf[i].addition_5 +
            // '</br>' + '备注:' + aSelf[i].remark +
            `<table>
              <tr><td style="text-align: right;width: 98px">操作人:</td><td style="text-align: left">${aSelf[i].create_man_name}<td></tr>
              <tr><td style="text-align: right;width: 98px">计划号:</td><td style="text-align: left">${aSelf[i].pact_index}<td></tr>
              <tr><td style="text-align: right;width: 98px">订单号:</td><td style="text-align: left">${aSelf[i].order_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">生产订单号:</td><td style="text-align: left">${aSelf[i].prod_order_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">轧制计划号:</td><td style="text-align: left">${aSelf[i].roll_plan_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">组批号:</td><td style="text-align: left">${aSelf[i].batch_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">热处理计划号:</td><td style="text-align: left">${aSelf[i].ht_plan_no}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息1:</td><td style="text-align: left">${aSelf[i].addition_1}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息2:</td><td style="text-align: left">${aSelf[i].addition_2}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息3:</td><td style="text-align: left">${aSelf[i].addition_3}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息4:</td><td style="text-align: left">${aSelf[i].addition_4}<td></tr>
              <tr><td style="text-align: right;width: 98px">附加信息5:</td><td style="text-align: left">${aSelf[i].addition_5}<td></tr>
              <tr><td style="text-align: right;width: 98px">备注:</td><td style="text-align: left">${aSelf[i].remark}<td></tr>
            </table>` +
            '</div></br>' + aSelf[i].prc_code_desc + '</br>' + aSelf[i].create_time + '</a>').data('node_data', aSelf[i]);
          if (i === 0) {
            $a = $('<a title="' + aSelf[i].prc_code_desc + '" href="javascript:void(0)"><div class="jProcessChartColDetail" style="display: none">' +
              // '操作人:' + aSelf[i].create_man_name +
              // '</br>' + '计划号:' + aSelf[i].pact_index +
              // '</br>' + '订单号:' + aSelf[i].order_no +
              // '</br>' + '生产订单号:' + aSelf[i].prod_order_no +
              // '</br>' + '轧制计划号:' + aSelf[i].roll_plan_no +
              // '</br>' + '组批号:' + aSelf[i].batch_no +
              // '</br>' + '热处理计划号:' + aSelf[i].ht_plan_no +
              // '</br>' + '附加信息1:' + aSelf[i].addition_1 +
              // '</br>' + '附加信息2:' + aSelf[i].addition_2 +
              // '</br>' + '附加信息3:' + aSelf[i].addition_3 +
              // '</br>' + '附加信息4:' + aSelf[i].addition_4 +
              // '</br>' + '附加信息5:' + aSelf[i].addition_5 +
              // '</br>' + '备注:' + aSelf[i].remark +
              `<table>
                <tr><td style="text-align: right;width: 98px">操作人:</td><td style="text-align: left">${aSelf[i].create_man_name}<td></tr>
                <tr><td style="text-align: right;width: 98px">计划号:</td><td style="text-align: left">${aSelf[i].pact_index}<td></tr>
                <tr><td style="text-align: right;width: 98px">订单号:</td><td style="text-align: left">${aSelf[i].order_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">生产订单号:</td><td style="text-align: left">${aSelf[i].prod_order_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">轧制计划号:</td><td style="text-align: left">${aSelf[i].roll_plan_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">组批号:</td><td style="text-align: left">${aSelf[i].batch_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">热处理计划号:</td><td style="text-align: left">${aSelf[i].ht_plan_no}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息1:</td><td style="text-align: left">${aSelf[i].addition_1}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息2:</td><td style="text-align: left">${aSelf[i].addition_2}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息3:</td><td style="text-align: left">${aSelf[i].addition_3}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息4:</td><td style="text-align: left">${aSelf[i].addition_4}<td></tr>
                <tr><td style="text-align: right;width: 98px">附加信息5:</td><td style="text-align: left">${aSelf[i].addition_5}<td></tr>
                <tr><td style="text-align: right;width: 98px">备注:</td><td style="text-align: left">${aSelf[i].remark}<td></tr>
              </table>` +
              '</div>' + aSelf[i].object_no + '</br>' + aSelf[i].prc_code_desc + '</br>' + aSelf[i].create_time + '</a>').data('node_data', aSelf[i]);
          }
          $lidivchild = $('<div class="jProcessChartColDiv"></div>');
          if (aHighLight) {
            $lidivchild.addClass('jProcessChartColDivCurrent')
          }
          $lidivchild.append($a).appendTo($lidiv);
          // $('<li></li>').append($a).appendTo($parent);
        }
        $lidiv.appendTo($li);
        $li.append('<ul></ul>').appendTo($parent);
      }
    });
  }

  var nodeCount = 0;
  // Method that recursively builds the tree
  function buildNode ($node, $appendTo, level, opts) {
    var $table = $('<table cellpadding="0" cellspacing="0" border="0"/>');
    var $tbody = $('<tbody/>');

    // Construct the node container(s)
    var $nodeRow = $('<tr/>').addClass('node-cells');
    var $nodeCell = $('<td/>').addClass('node-cell').attr('colspan', 2);
    var $childNodes = $node.children('ul:first').children('li');
    var $nodeDiv;

    if ($childNodes.length > 1) {
      $nodeCell.attr('colspan', $childNodes.length * 2);
    }
    // Draw the node
    // Get the contents - any markup except li and ul allowed
    var $nodeContent = $node.clone()
      .children('ul,li')
      .remove()
      .end()
      .html();
    // console.log('$nodeContent', $nodeContent);
    // Increaments the node count which is used to link the source list and the org chart
    nodeCount++;
    $node.data('tree-node', nodeCount);
    $nodeDiv = $('<div>').addClass('node')
      .data('tree-node', nodeCount)
      .append($nodeContent);
    $nodeDiv.find('.jProcessChartColDiv').on('click', function (e) { // 点击展示弹出框
      let _height = document.body.clientHeight - e.clientY - $(e.target).children(':first').height()
      if ($(e.target).children(':first').css('display') === 'block') {
        $(e.target).children(':first').css('display', 'none');
        $('.jProcessChartCol').find('.jProcessChartColDetail').hide(); // 关闭其他弹出框
      } else {
        $('.jProcessChartCol').find('.jProcessChartColDetail').hide(); // 关闭其他弹出框
        $(e.target).children(':first').css('display', 'block');
        if (_height < 0) {
          $(e.target).children(':first').css('top', _height + 'px')
        }
      }
    });
    if (opts.clickCallback && typeof opts.clickCallback === 'function') {
      $nodeDiv.on('click', function () {
        // $('.jProcessChart').find('div').css('border-color', 'black')
        // $('.jProcessChart').find('div a').css('color', 'black')
        // $nodeDiv.css('border-color', 'red')
        // $nodeDiv.find('a').css('color', 'red')
        // opts.clickCallback($node.children('a').data('node_data'));
      });
    }

    // Expand and contract nodes
    if (opts.expandAble && $childNodes.length > 0) {
      $nodeDiv.on('click', function () {
        var $this = $(this);
        var $tr = $this.closest('tr');

        if ($tr.hasClass('contracted')) {
          $this.css('cursor', 'n-resize');
          $tr.removeClass('contracted').addClass('expanded');
          $tr.nextAll('tr').css('visibility', '');

          // Update the <li> appropriately so that if the tree redraws collapsed/non-collapsed nodes
          // maintain their appearance
          $node.removeClass('collapsed');
        } else {
          $this.css('cursor', 's-resize');
          $tr.removeClass('expanded').addClass('contracted');
          $tr.nextAll('tr').css('visibility', 'hidden');
          $node.addClass('collapsed');
        }
      });
    }

    $nodeCell.append($nodeDiv);
    $nodeRow.append($nodeCell);
    $tbody.append($nodeRow);

    if ($childNodes.length > 0) {
      // if it can be expanded then change the cursor
      $nodeDiv.css('cursor', 'n-resize');

      // recurse until leaves found (-1) or to the level specified
      if (opts.depth === -1 || (level + 1 < opts.depth)) {
        var $downLineRow = $('<tr/>');
        var $downLineCell = $('<td/>').attr('colspan', $childNodes.length * 2);
        $downLineRow.append($downLineCell);

        // draw the connecting line from the parent node to the horizontal line
        var $downLine = $('<div></div>').addClass('line down');
        $downLineCell.append($downLine);
        $tbody.append($downLineRow);

        // Draw the horizontal lines
        var $linesRow = $('<tr/>');
        $childNodes.each(function () {
          var $left = $('<td>&nbsp;</td>').addClass('line left top');
          var $right = $('<td>&nbsp;</td>').addClass('line right top');
          $linesRow.append($left).append($right);
        });

        // horizontal line shouldn't extend beyond the first and last child branches
        $linesRow.find('td:first')
          .removeClass('top')
          .end()
          .find('td:last')
          .removeClass('top');

        $tbody.append($linesRow);
        var $childNodesRow = $('<tr/>');
        $childNodes.each(function () {
          var $td = $('<td class="node-container"/>');
          $td.attr('colspan', 2);
          // recurse through children lists and items
          buildNode($(this), $td, level + 1, opts);
          $childNodesRow.append($td);
        });
      }
      $tbody.append($childNodesRow);
    }

    // any classes on the LI element get copied to the relevant node in the tree
    // apart from the special 'collapsed' class, which collapses the sub-tree at this point
    if ($node.attr('class') !== undefined) {
      var classList = $node.attr('class').split(/\s+/);
      $.each(classList, function (index, item) {
        if (item === 'collapsed') {
          $nodeRow.nextAll('tr').css('visibility', 'hidden');
          $nodeRow.removeClass('expanded');
          $nodeRow.addClass('contracted');
          $nodeDiv.css('cursor', 's-resize');
        } else {
          $nodeDiv.addClass(item);
        }
      });
    }

    $table.append($tbody);
    $appendTo.append($table);

    /* Prevent trees collapsing if a link inside a node is clicked */
    // $nodeDiv.children('a').click(function(e){
    //     console.log(e);
    //     e.stopPropagation();
    // });
  };
})(jQuery);
/**
 * 物料进程图-横版 : 支持点击展示弹出框
 */
// (function ($) {
//   $.fn.jProcessChartRow = function (options) {
//     var opts = $.extend({}, $.fn.jProcessChartRow.defaults, options);
//     var $this = $(this);
//     if (!$this || $this.length <= 0) { return false; }
//     $this.empty();
//
//     var $showlist = $("<ul id='org' style='display:none'></ul>");
//     _showall(options.data, $showlist, opts);
//     $this.append($showlist);
//
//     // build the tree
//     var $org = $('#org');
//     var $container = $('<div class="' + opts.chartClass + '"/>');
//     if ($org.is('ul')) {
//       buildNode($org.find('li:first'), $container, 0, opts);
//     } else if ($org.is('li')) {
//       buildNode($org, $container, 0, opts);
//     }
//     $this.append($container);
//   };
//
//   // Option defaults
//   $.fn.jProcessChartRow.defaults = {
//     depth: -1,
//     chartClass: 'jOrgChart jProcessChartRow', // CLASS
//     expandAble: true, // 是否展开/收缩
//     module: { // 数据模型
//       id: 'id',
//       pid: 'pid',
//       name: 'name',
//       children: 'children'
//     }
//   };
//
//   function _showall (oList, $parent, opts) {
//     $.each(oList, function (index, val) {
//       var aChildren = val[opts.module.children];
//       var aSelf = val[opts.module.name];
//       if (aChildren && aChildren.length > 0) {
//         var $li = $('<li></li>');
//         var $lidiv = $('<div></div>');
//         for (let i = 0; i < aSelf.length; i++) {
//           var $a = $('<a title="' + aSelf[i].name + '" href="javascript:void(0)"><div class="jProcessChartRowDetail" style="display: none">xx</div></br>' + aSelf[i].name + '</br>' + aSelf[i].date + '</a>').data('node_data', aSelf[i]);
//           if (i === 0) {
//             $a = $('<a title="' + aSelf[i].name + '" href="javascript:void(0)"><div class="jProcessChartRowDetail" style="display: none">xx</div>' + aSelf[i].id + '</br>' + aSelf[i].name + '</br>' + aSelf[i].date + '</a>').data('node_data', aSelf[i]);
//           }
//           var $lidivchild = $('<div class="jProcessChartRowDiv"></div>');
//           if (aSelf[i].current) {
//             $lidivchild.addClass('jProcessChartRowDivCurrent')
//           }
//           $lidivchild.append($a).appendTo($lidiv);
//           $lidivchild.appendTo($lidiv);
//         }
//         $lidiv.appendTo($li);
//         $li.append('<ul></ul>').appendTo($parent);
//         // 递归显示
//         _showall(aChildren, $li.children(':eq(1)'), opts);
//       } else {
//         $li = $('<li></li>');
//         $lidiv = $('<div></div>');
//         for (let i = 0; i < aSelf.length; i++) {
//           $a = $('<a title="' + aSelf[i].name + '" href="javascript:void(0)"><div class="jProcessChartRowDetail" style="display: none">xx</div></br>' + aSelf[i].name + '</br>' + aSelf[i].date + '</a>').data('node_data', aSelf[i]);
//           if (i === 0) {
//             $a = $('<a title="' + aSelf[i].name + '" href="javascript:void(0)"><div class="jProcessChartRowDetail" style="display: none">xx</div>' + aSelf[i].id + '</br>' + aSelf[i].name + '</br>' + aSelf[i].date + '</a>').data('node_data', aSelf[i]);
//           }
//           $lidivchild = $('<div class="jProcessChartRowDiv"></div>');
//           if (aSelf[i].current) {
//             $lidivchild.addClass('jProcessChartRowDivCurrent')
//           }
//           $lidivchild.append($a).appendTo($lidiv);
//           // $('<li></li>').append($a).appendTo($parent);
//         }
//         $lidiv.appendTo($li);
//         $li.append('<ul></ul>').appendTo($parent);
//       }
//     });
//   }
//
//   var nodeCount = 0;
//   // Method that recursively builds the tree
//   function buildNode ($node, $appendTo, level, opts) {
//     var $table = $('<table cellpadding="0" cellspacing="0" border="0"/>');
//     var $tbody = $('<tbody/>');
//
//     // Construct the node container(s)
//     var $nodeRow = $('<tr/>').addClass('node-cells');
//     var $nodeCell = $('<td/>').addClass('node-cell').attr('colspan', 2);
//     var $childNodes = $node.children('ul:first').children('li');
//     var $nodeDiv;
//
//     if ($childNodes.length > 1) {
//       $nodeCell.attr('colspan', $childNodes.length * 2);
//     }
//     // Draw the node
//     // Get the contents - any markup except li and ul allowed
//     var $nodeContent = $node.clone()
//       .children('ul,li')
//       .remove()
//       .end()
//       .html();
//     // console.log('$nodeContent', $nodeContent);
//     // Increaments the node count which is used to link the source list and the org chart
//     nodeCount++;
//     $node.data('tree-node', nodeCount);
//     $nodeDiv = $('<div>').addClass('node')
//       .data('tree-node', nodeCount)
//       .append($nodeContent);
//     $nodeDiv.find('.jProcessChartRowDiv').on('click', function (e) {
//       if ($(e.target).children(':first').css('display') === 'block') {
//         $(e.target).children(':first').css('display', 'none');
//       } else {
//         $(e.target).children(':first').css('display', 'block');
//       }
//     })
//     if (opts.clickCallback && typeof opts.clickCallback === 'function') {
//       $nodeDiv.on('click', function () {
//         // $('.jProcessChart').find('div').css('border-color', 'black')
//         // $('.jProcessChart').find('div a').css('color', 'black')
//         // $nodeDiv.css('border-color', 'red')
//         // $nodeDiv.find('a').css('color', 'red')
//         // opts.clickCallback($node.children('a').data('node_data'));
//       });
//     }
//
//     // Expand and contract nodes
//     if (opts.expandAble && $childNodes.length > 0) {
//       $nodeDiv.on('click', function () {
//         var $this = $(this);
//         var $tr = $this.closest('tr');
//
//         if ($tr.hasClass('contracted')) {
//           $this.css('cursor', 'n-resize');
//           $tr.removeClass('contracted').addClass('expanded');
//           $tr.nextAll('tr').css('visibility', '');
//
//           // Update the <li> appropriately so that if the tree redraws collapsed/non-collapsed nodes
//           // maintain their appearance
//           $node.removeClass('collapsed');
//         } else {
//           $this.css('cursor', 's-resize');
//           $tr.removeClass('expanded').addClass('contracted');
//           $tr.nextAll('tr').css('visibility', 'hidden');
//           $node.addClass('collapsed');
//         }
//       });
//     }
//
//     $nodeCell.append($nodeDiv);
//     $nodeRow.append($nodeCell);
//     $tbody.append($nodeRow);
//
//     if ($childNodes.length > 0) {
//       // if it can be expanded then change the cursor
//       $nodeDiv.css('cursor', 'n-resize');
//
//       // recurse until leaves found (-1) or to the level specified
//       if (opts.depth === -1 || (level + 1 < opts.depth)) {
//         var $downLineRow = $('<tr/>');
//         var $downLineCell = $('<td/>').attr('colspan', $childNodes.length * 2);
//         $downLineRow.append($downLineCell);
//
//         // draw the connecting line from the parent node to the horizontal line
//         var $downLine = $('<div></div>').addClass('line down');
//         $downLineCell.append($downLine);
//         $tbody.append($downLineRow);
//
//         // Draw the horizontal lines
//         var $linesRow = $('<tr/>');
//         $childNodes.each(function () {
//           var $left = $('<td>&nbsp;</td>').addClass('line left top');
//           var $right = $('<td>&nbsp;</td>').addClass('line right top');
//           $linesRow.append($left).append($right);
//         });
//
//         // horizontal line shouldn't extend beyond the first and last child branches
//         $linesRow.find('td:first')
//           .removeClass('top')
//           .end()
//           .find('td:last')
//           .removeClass('top');
//
//         $tbody.append($linesRow);
//         var $childNodesRow = $('<tr/>');
//         $childNodes.each(function () {
//           var $td = $('<td class="node-container"/>');
//           $td.attr('colspan', 2);
//           // recurse through children lists and items
//           buildNode($(this), $td, level + 1, opts);
//           $childNodesRow.append($td);
//         });
//       }
//       $tbody.append($childNodesRow);
//     }
//
//     // any classes on the LI element get copied to the relevant node in the tree
//     // apart from the special 'collapsed' class, which collapses the sub-tree at this point
//     if ($node.attr('class') !== undefined) {
//       var classList = $node.attr('class').split(/\s+/);
//       $.each(classList, function (index, item) {
//         if (item === 'collapsed') {
//           // console.log($node);
//           $nodeRow.nextAll('tr').css('visibility', 'hidden');
//           $nodeRow.removeClass('expanded');
//           $nodeRow.addClass('contracted');
//           $nodeDiv.css('cursor', 's-resize');
//         } else {
//           $nodeDiv.addClass(item);
//         }
//       });
//     }
//
//     $table.append($tbody);
//     $appendTo.append($table);
//
//     /* Prevent trees collapsing if a link inside a node is clicked */
//     // $nodeDiv.children('a').click(function(e){
//     //     console.log(e);
//     //     e.stopPropagation();
//     // });
//   };
// })(jQuery);
/**
 *  未名所以然
 */
(function ($, window, document) {
  $.fn.easySlider = function (options) {
    alert('1234');
  }
}(jQuery, window, document));