layui.config({
  version: true,
  closeFooter: true,
  tabAutoRefresh: false,
  base: getProjectUrl() + 'assets/module/'
}).extend({}).use(['layer', 'admin', 'index', 'table', 'laydate', 'form'], function () {
  var $ = layui.jquery;
  var index = layui.index;
  var admin = layui.admin;
  var table = layui.table;
  var laydate = layui.laydate;
  var form = layui.form;


  //全局配置table
  table.set({
    page: true,
    size: 'sm',
    cellMinWidth: 80,
    defaultToolbar: ['filter'],
    limit: 15,
    limits: [15, 50, 100, 200]
  });

  //关闭当前页面 跳到指定页面
  window.closeCurrentPageJumpOne = function (titlex, urlx, refresh, time) {
    //不传时间 为0
    var time = time ? time : 0;
    setTimeout(function () {
      index.openTab({
        title: titlex,
        url: urlx
      });
      if (refresh) {
        admin.refresh(urlx);
      }
    }, time)
    setTimeout(function () {
      index.closeTab(window.location.pathname + window.location.search);
    }, (time + 500))
  }

});

/**
 * 获取当前项目的根路径,通过获取layui.js全路径截取assets之前的地址
 * */
function getProjectUrl() {
  var layuiDir = layui.cache.dir;
  if (!layuiDir) {
    var js = document.scripts, last = js.length - 1, src;
    for (var i = last; i > 0; i--) {
      if (js[i].readyState === 'interactive') {
        src = js[i].src;
        break;
      }
    }
    var jsPath = src || js[last].src;
    layuiDir = jsPath.substring(0, jsPath.lastIndexOf('/') + 1);
  }
  return layuiDir.substring(0, layuiDir.indexOf('assets'));
}

/**
 *  获取参数
 * @param variable
 * @returns {string}
 */
function getQueryVariable(variable) {
  let query = window.location.search.substring(1);
  let vars = query.split("&");
  for (let i = 0; i < vars.length; i++) {
    let pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  }
  return '';
}

/**
 * 获取地址栏参数
 * @param value
 * @returns {*}
 */
function getRequest(value) {
  var url = decodeURI(location.search);
  var object = {};
  if (url.indexOf("?") != -1) {
    var str = url.substr(1);
    var strs = str.split("&");
    for (var i = 0; i < strs.length; i++) {
      object[strs[i].split("=")[0]] = strs[i].split("=")[1]
    }
  }
  return object[value];
}

/**
 * 判断数组内元素是否全相同
 * @param array
 * @returns {boolean}
 */
function isAllEqual(array) {
  if (array.length > 0) {
    return !array.some(function (value, index) {
      return value !== array[0];
    });
  } else {
    return true;
  }
}

/**
 *
 * @param url
 * @param type
 * @param param
 * @param callback
 * @param isload
 * @constructor
 */
function Request(url, type, param, callback, isload) {
  if (isload == undefined) {
    var index = layer.load(2);
  }

  //设置携带cookie
  $.ajaxSetup({
    xhrFields: {
      withCredentials: true
    }
  });

  var params = $.extend({}, param);

  $.ajax({
    type: type,
    url: url,
    data: params,
    xhrFields: {withCredentials: true},
    timeout: 30000,
    success: function (data) {
      typeof callback == 'function' && callback(data);
      if (isload == undefined) {
        layer.close(index);
      }
    },
    error: function () {
      layer.closeAll('loading');
      layer.msg('网络出现问题,请重试!');
    }
  });
}

/**
 *
 * @param res
 * @returns {{msg: string, code: number, data: Array, count: number}|{msg: string, code: *, data: *, count: number}}
 * @constructor
 */
function LayUiTableParseData(res) {
  if (res.code == 0) {
    return {
      code: res.code,
      msg: "",
      count: res.data.total ? res.data.total : 0,
      data: res.data.list
    }
  } else {
    return {
      code: 0,
      msg: "",
      count: 0,
      data: []
    }
  }
}

/**
 * 判断数组中是否包含某个值
 * @param arr 数组
 * @param str 值
 * @returns {boolean}
 */
function contains(arr, str) {
  var i = arr.length;
  while (i--) {
    if (arr[i] == str) {
      return true;
    }
  }
  return false;
}

/**
 * 防抖函数
 * @param fn
 * @param delay
 * @returns {Function}
 */
function debounce(fn, delay) {

  // 定时器,用来 setTimeout
  var timer

  // 返回一个函数,这个函数会在一个时间区间结束后的 delay 毫秒时执行 fn 函数
  return function () {

    // 保存函数调用时的上下文和参数,传递给 fn
    var context = this
    var args = arguments

    // 每次这个返回的函数被调用,就清除定时器,以保证不执行 fn
    clearTimeout(timer)

    // 当返回的函数被最后一次调用后(也就是用户停止了某个连续的操作),
    // 再过 delay 毫秒就执行 fn
    timer = setTimeout(function () {
      fn.apply(context, args)
    }, delay)
  }
}

/**
 * 获取业务员
 * @param id dom对象
 * @param data  存入选中数据
 * @returns {*}
 */
function getSales(id, name, data, clickClose, layVerify, layVerType) {
  var salesChange = xmSelect.render({
    el: id,
    radio: true,
    searchTips: '请输入搜索',
    model: {
      label: {
        type: 'text'
      }
    },
    toolbar: {
      show: true,
      list: ['CLEAR']
    },
    layVerify: layVerify || '',
    layVerType: layVerType || '',
    filterable: true,
    data: [],
    name: name,
    clickClose: clickClose,
    on: function (res) {

    }
  })
  Request('/api/taxinfo/getSales', 'GET', {}, function (res) {
    let off = res.data.off; //离职
    let on = res.data.on; //在职
    let arr = [];
    arr.push({
      name: "在职", children: on
    })
    arr.push({
      name: "离职", children: off
    })
    salesChange.update({
      data: arr,
      autoRow: true,
    })

    if (data && data.length > 0) {
      salesChange.setValue(data)
    }
  }, false);

  return salesChange;
}

/**
 * 判断文件后缀类型
 * @param file_url
 * @returns {string}
 */
function getFileExt(file_url) {
  var file_ext_name = "";
  if (file_url) {
    if (file_url.indexOf("/") != -1) {
      var file_arr = file_url.split("/");
      var file_id = file_arr.pop();
    } else {
      var file_id = file_url;
    }

    var file_type = parseInt(file_id.substr(7, 3))
    var file_ext_map = {
      "1": "png",
      "2": "jpeg",
      "3": "pdf",
      "4": "text",
      "5": "xls",
      "6": "xlsx",
      "7": "doc",
      "8": "docx",
      "9": "ppt",
      "10": "zip",
      "11": "tar",
      "12": "html",
      "13": "mp4"
    };
    file_ext_name = file_ext_map[file_type];
  }
  return file_ext_name;
}