const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second].map(formatNumber).join(':')}`
}
const formatTime2 = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()

  return `${[year, month, day].map(formatNumber).join('-')}`
}
const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}
const app = getApp()
const baseURL = app.globalData.url
const monitURL = app.globalData.monitUrl

function request(method, url, data, cookie) {
  return new Promise(function (resolve, reject) {
    let header = {
      'content-type': 'application/json',
      // 'content-type': 'application/x-www-form-urlencoded',
      'Cookie': 'JSESSIONID=' + cookie
    };
    wx.request({
      url: baseURL + url,
      method: method,
      data: method === 'POST' ? JSON.stringify(data) : data,
      header: header,
      success(res) {
        resolve(res.data);
      },
      fail(err) {
        //请求失败
        reject(err.data)
      }
    })
  })
}

function request2(options, loading) {
  return new Promise(function (resolve, reject) {
    if (loading) {
      wx.showLoading({
        title: '请稍后...',
        mask: true
      })
    }
    wx.request({
      url: baseURL + options.url,
      method: options.method,
      data: options.data || {},
      header: options.header || {
        'content-type': 'application/x-www-form-urlencoded'
      },
      success(res) {
        resolve(res.data);
      },
      fail(err) {
        //请求失败
        reject(err.data)
      },
      complete: function (res) {
        if (loading) {
          wx.hideLoading();
        }
      }
    })
  })
}

function md5(string) {  
  function md5_RotateLeft(lValue, iShiftBits) {  
      return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));  
  }  
  function md5_AddUnsigned(lX, lY) {  
      var lX4, lY4, lX8, lY8, lResult;  
      lX8 = (lX & 0x80000000);  
      lY8 = (lY & 0x80000000);  
      lX4 = (lX & 0x40000000);  
      lY4 = (lY & 0x40000000);  
      lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);  
      if (lX4 & lY4) {  
          return (lResult ^ 0x80000000 ^ lX8 ^ lY8);  
      }  
      if (lX4 | lY4) {  
          if (lResult & 0x40000000) {  
              return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);  
          } else {  
              return (lResult ^ 0x40000000 ^ lX8 ^ lY8);  
          }  
      } else {  
          return (lResult ^ lX8 ^ lY8);  
      }  
  }  
  function md5_F(x, y, z) {  
      return (x & y) | ((~x) & z);  
  }  
  function md5_G(x, y, z) {  
      return (x & z) | (y & (~z));  
  }  
  function md5_H(x, y, z) {  
      return (x ^ y ^ z);  
  }  
  function md5_I(x, y, z) {  
      return (y ^ (x | (~z)));  
  }  
  function md5_FF(a, b, c, d, x, s, ac) {  
      a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_F(b, c, d), x), ac));  
      return md5_AddUnsigned(md5_RotateLeft(a, s), b);  
  };  
  function md5_GG(a, b, c, d, x, s, ac) {  
      a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_G(b, c, d), x), ac));  
      return md5_AddUnsigned(md5_RotateLeft(a, s), b);  
  };  
  function md5_HH(a, b, c, d, x, s, ac) {  
      a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_H(b, c, d), x), ac));  
      return md5_AddUnsigned(md5_RotateLeft(a, s), b);  
  };  
  function md5_II(a, b, c, d, x, s, ac) {  
      a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_I(b, c, d), x), ac));  
      return md5_AddUnsigned(md5_RotateLeft(a, s), b);  
  };  
  function md5_ConvertToWordArray(string) {  
      var lWordCount;  
      var lMessageLength = string.length;  
      var lNumberOfWords_temp1 = lMessageLength + 8;  
      var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;  
      var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;  
      var lWordArray = Array(lNumberOfWords - 1);  
      var lBytePosition = 0;  
      var lByteCount = 0;  
      while (lByteCount < lMessageLength) {  
          lWordCount = (lByteCount - (lByteCount % 4)) / 4;  
          lBytePosition = (lByteCount % 4) * 8;  
          lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));  
          lByteCount++;  
      }  
      lWordCount = (lByteCount - (lByteCount % 4)) / 4;  
      lBytePosition = (lByteCount % 4) * 8;  
      lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);  
      lWordArray[lNumberOfWords - 2] = lMessageLength << 3;  
      lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;  
      return lWordArray;  
  };  
  function md5_WordToHex(lValue) {  
      var WordToHexValue = "",  
          WordToHexValue_temp = "",  
          lByte, lCount;  
      for (lCount = 0; lCount <= 3; lCount++) {  
          lByte = (lValue >>> (lCount * 8)) & 255;  
          WordToHexValue_temp = "0" + lByte.toString(16);  
          WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);  
      }  
      return WordToHexValue;  
  };  
  function md5_Utf8Encode(string) {  
      string = string.replace(/\r\n/g, "\n");  
      var utftext = "";  
      for (var n = 0; n < string.length; n++) {  
          var c = string.charCodeAt(n);  
          if (c < 128) {  
              utftext += String.fromCharCode(c);  
          } else if ((c > 127) && (c < 2048)) {  
              utftext += String.fromCharCode((c >> 6) | 192);  
              utftext += String.fromCharCode((c & 63) | 128);  
          } else {  
              utftext += String.fromCharCode((c >> 12) | 224);  
              utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
              utftext += String.fromCharCode((c & 63) | 128);  
          }  
      }  
      return utftext;  
  };  
  var x = Array();  
  var k, AA, BB, CC, DD, a, b, c, d;  
  var S11 = 7,  
      S12 = 12,  
      S13 = 17,  
      S14 = 22;  
  var S21 = 5,  
      S22 = 9,  
      S23 = 14,  
      S24 = 20;  
  var S31 = 4,  
      S32 = 11,  
      S33 = 16,  
      S34 = 23;  
  var S41 = 6,  
      S42 = 10,  
      S43 = 15,  
      S44 = 21;  
  string = md5_Utf8Encode(string);  
  x = md5_ConvertToWordArray(string);  
  a = 0x67452301;  
  b = 0xEFCDAB89;  
  c = 0x98BADCFE;  
  d = 0x10325476;  
  for (k = 0; k < x.length; k += 16) {  
      AA = a;  
      BB = b;  
      CC = c;  
      DD = d;  
      a = md5_FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);  
      d = md5_FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);  
      c = md5_FF(c, d, a, b, x[k + 2], S13, 0x242070DB);  
      b = md5_FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);  
      a = md5_FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);  
      d = md5_FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);  
      c = md5_FF(c, d, a, b, x[k + 6], S13, 0xA8304613);  
      b = md5_FF(b, c, d, a, x[k + 7], S14, 0xFD469501);  
      a = md5_FF(a, b, c, d, x[k + 8], S11, 0x698098D8);  
      d = md5_FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);  
      c = md5_FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);  
      b = md5_FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);  
      a = md5_FF(a, b, c, d, x[k + 12], S11, 0x6B901122);  
      d = md5_FF(d, a, b, c, x[k + 13], S12, 0xFD987193);  
      c = md5_FF(c, d, a, b, x[k + 14], S13, 0xA679438E);  
      b = md5_FF(b, c, d, a, x[k + 15], S14, 0x49B40821);  
      a = md5_GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);  
      d = md5_GG(d, a, b, c, x[k + 6], S22, 0xC040B340);  
      c = md5_GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);  
      b = md5_GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);  
      a = md5_GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);  
      d = md5_GG(d, a, b, c, x[k + 10], S22, 0x2441453);  
      c = md5_GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);  
      b = md5_GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);  
      a = md5_GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);  
      d = md5_GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);  
      c = md5_GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);  
      b = md5_GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);  
      a = md5_GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);  
      d = md5_GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);  
      c = md5_GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);  
      b = md5_GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);  
      a = md5_HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);  
      d = md5_HH(d, a, b, c, x[k + 8], S32, 0x8771F681);  
      c = md5_HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);  
      b = md5_HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);  
      a = md5_HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);  
      d = md5_HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);  
      c = md5_HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);  
      b = md5_HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);  
      a = md5_HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);  
      d = md5_HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);  
      c = md5_HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);  
      b = md5_HH(b, c, d, a, x[k + 6], S34, 0x4881D05);  
      a = md5_HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);  
      d = md5_HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);  
      c = md5_HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);  
      b = md5_HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);  
      a = md5_II(a, b, c, d, x[k + 0], S41, 0xF4292244);  
      d = md5_II(d, a, b, c, x[k + 7], S42, 0x432AFF97);  
      c = md5_II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);  
      b = md5_II(b, c, d, a, x[k + 5], S44, 0xFC93A039);  
      a = md5_II(a, b, c, d, x[k + 12], S41, 0x655B59C3);  
      d = md5_II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);  
      c = md5_II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);  
      b = md5_II(b, c, d, a, x[k + 1], S44, 0x85845DD1);  
      a = md5_II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);  
      d = md5_II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);  
      c = md5_II(c, d, a, b, x[k + 6], S43, 0xA3014314);  
      b = md5_II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);  
      a = md5_II(a, b, c, d, x[k + 4], S41, 0xF7537E82);  
      d = md5_II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);  
      c = md5_II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);  
      b = md5_II(b, c, d, a, x[k + 9], S44, 0xEB86D391);  
      a = md5_AddUnsigned(a, AA);  
      b = md5_AddUnsigned(b, BB);  
      c = md5_AddUnsigned(c, CC);  
      d = md5_AddUnsigned(d, DD);  
  }  
  return (md5_WordToHex(a) + md5_WordToHex(b) + md5_WordToHex(c) + md5_WordToHex(d)).toLowerCase();  
} 

// const api = {
//   login: (data) => request('GET', `main/login/toLogin`, data),
//   list: (data) => request('GET', `main/projectManage/ajaxForWaitOrder`, data),
//   // 电站详情
//   entryDetail: (data) => request('GET', `main/projectManage/entryDetail`, data),
//   saveOrEditCustomerEntry: (data) => request('GET', `main/projectManage/saveOrEditCustomerEntry`, data),
//   // 项目列表
//   projectList: (data) => request('GET', `main/projectManage/projectList`, data),
//   // 项目删除
//   appletsDelete: (data) => request('GET', `main/projectManage/appletsDelete`, data),
//   // 安装方式
//   installWayList: (data) => request('GET', `main/projectManage/installWayList`, data),
//   // 获取省
//   getProvinceList: (data) => request('GET', `main/redirect/getProvinceList`, data),
//   // 获取市
//   getCitysByProName: (data) => request('GET', `main/redirect/getCitysByProName`, data),
//   // 获取区
//   getAreaByCityName: (data) => request('GET', `main/redirect/getAreaByCityName`, data),
//   // 信息录入
//   saveOrEditCustomerEntry: (data) => request('GET', `main/projectManage/saveOrEditCustomerEntry`, data),
//   // 系统工程师统计
//   statistic: (data) => request('GET', `main/projectManage/statistic`, data),
//   // 驳回
//   appletsFailed: (data) => request('GET', `main/projectManage/appletsFailed`, data),
//   // 匹配方案
//   findAllPlan: (data) => request('GET', `main/projectManage/findAllPlan`, data),
//   // 审核通过并匹配
//   appletsToExamine: (data) => request('GET', `main/projectManage/appletsToExamine`, data),
//   // 确认下单
//   batchOrder: (data) => request('GET', `main/projectManage/batchOrder`, data),
//   // 确认下单
//   batchReceive: (data) => request('GET', `main/projectManage/batchReceive`, data),
//   // 安装完成
//   batchInstall: (data) => request('GET', `main/projectManage/batchInstall`, data),
//   // 并网验收
//   mergeAccept: (data) => request('GET', `main/projectManage/mergeAccept`, data),
//   // 验收退回
//   notAccept: (data) => request('GET', `main/projectManage/notAccept`, data),
//   // 验收确认
//   sureAccept: (data) => request('GET', `main/projectManage/sureAccept`, data),
//   // 交付
//   accept: (data) => request('GET', `main/projectManage/accept`, data),
//   //并网验收
//   mergeAccept: (data) => request('GET', `main/projectManage/mergeAccept`, data),
//   //电站详情
//   entryDetail: (data) => request('GET', `main/projectManage/entryDetail`, data),
//   //查看方案
//   viewMatchedPlan: (data) => request('GET', `main/projectManage/viewMatchedPlan`, data),
//   //查看验收报告
//   toMergeAccept: (data) => request('GET', `main/projectManage/toMergeAccept`, data),
//   //暂存验收报告
//   tempSaveReport: (data) => request('GET', `main/projectManage/tempSaveReport`, data),
//   //发送短信验证码
//   sendMsg: (data) => request('GET', `main/customer/sendMsg`, data),
//   //提交忘记密码
//   checkConfirmCode: (data, cookie) => request('GET', `main/customer/checkConfirmCode`, data, cookie),
//   //根据规格获取方案类型
//   findPlanByAssembly: (data) => request('GET', `main/customer/findPlanByAssembly`, data),
//   //获取逆变器并网箱
//   getElectricPlanAll: (data) => request('GET', `main/projectManage/getElectricPlanAll`, data),
//   //根据组件总块数 获取逆变器并网箱
//   findElectricPlan: (data) => request('GET', `main/projectManage/findElectricPlan`, data),
//   //申请单列表
//   applyOrderList: (data) => request2({
//     url: 'main/apply/ajaxForApplyOrderList',
//     method: 'GET',
//     data
//   }, true),
//   //入库单列表
//   inStockList: (data) => request2({
//     url: 'main/inStock/inStockList',
//     method: 'GET',
//     data
//   }, true),
//   //出库单列表
//   outStockList: (data) => request2({
//     url: 'main/outStock/outStockList',
//     method: 'POST',
//     data
//   }, true),
//   //调拨单列表
//   allocationList: (data) => request2({
//     url: 'main/allocation/allocationList',
//     method: 'GET',
//     data
//   }, true),
//   //盘点单列表
//   inventoryList: (data) => request2({
//     url: 'main/smInventory/listInventoryOrder',
//     method: 'POST',
//     data
//   }, true),
//   //订单查询列表
//   allLists: (data) => request2({
//     url: 'main/allOrder/list',
//     method: 'GET',
//     data
//   }, true),
//   //仓库列表
//   warehouseList: (data) => request('GET', `main/apply/warehouseList`, data),
//   //调拨单发货方式
//   getDelivery: (data) => request('POST', `main/allocation/getDelivery`, data),
//   //物料统计
//   getIndexNumber: (data) => request('GET', `main/allocation/getIndexNumber`, data),
//   //物料组
//   listMaterialGroup: (data) => request('GET', `main/apply/listMaterialGroup`, data),
//   //物料类型
//   listMaterialType: (data) => request('GET', `main/apply/listMaterialType`, data),
//   //物料列表
//   findMaterialAndBom: (data) => request2({
//     url: 'main/apply/findMaterialAndBom',
//     method: 'GET',
//     data
//   }, true),
//   //可出库物料列表
//   findMaterialList: (data) => request2({
//     url: 'main/apply/findMaterialList',
//     method: 'GET',
//     data
//   }, true),
//   //保存物料申请单  
//   saveApplyOrder: (data) => request2({
//     url: 'main/apply/saveApplyOrder?userId=' + wx.getStorageSync('userId'),
//     method: 'POST',
//     header: {
//       'content-type': 'application/json',
//     },
//     data
//   }, true),
//   //物料申请单详情
//   applyDetail: (data) => request('GET', `main/apply/applyOrderDetail`, data),
//   //出库单详情
//   outStockOrderDetail: (data) => request2({
//     url: 'main/outStock/outStockOrderDetail',
//     method: 'POST',
//     data
//   }, true),
//   //调拨单详情
//   allocationDetail: (data) => request2({
//     url: 'main/allocation/allocationDetail',
//     method: 'GET',
//     data
//   }, true),
//   //盘点单详情
//   inventoryOrderDetail: (data) => request2({
//     url: 'main/smInventory/inventoryOrderDetail',
//     method: 'POST',
//     data
//   }, true),
//   //订单查询详情
//   allOrderDetail: (data) => request2({
//     url: 'main/allOrder/orderDetail',
//     method: 'GET',
//     data
//   }, true),
//   //调拨单入库
//   inAllocationOrder: (data) => request2({
//     url: 'main/allocation/inAllocationOrder?userId=' + wx.getStorageSync('userId'),
//     method: 'POST',
//     header: {
//       'content-type': 'application/json',
//     },
//     data
//   }, true),
//   //调拨单出库
//   outAllocationOrder: (data) => request2({
//     url: 'main/allocation/outAllocationOrder?userId=' + wx.getStorageSync('userId'),
//     method: 'POST',
//     header: {
//       'content-type': 'application/json',
//     },
//     data
//   }, true),
//   //新增使用出库单  
//   saveOutStockOrder: (data) => request2({
//     url: 'main/outStock/saveOutStockOrder',
//     method: 'POST',
//     header: {
//       'content-type': 'application/json',
//     },
//     data
//   }, true),
//   //入库单详情  
//   inStockOrderDetail: (data) => request2({
//     url: 'main/inStock/inStockOrderDetail',
//     method: 'GET',
//     data
//   }, true),
//   //入库单入库
//   inStockAdd: (data) => request2({
//     url: 'main/inStock/inStock?userId=' + wx.getStorageSync('userId'),
//     method: 'POST',
//     header: {
//       'content-type': 'application/json',
//     },
//     data
//   }, true),
//   //入库单打回
//   inStockGiveBack: (data) => request2({
//     url: 'main/inStock/giveBack?userId=' + wx.getStorageSync('userId'),
//     method: 'POST',
//     data
//   }, true),
//   //订单查询删除
//   deleteOrder: (data) => request2({
//     url: 'main/allOrder/deleteOrder',
//     method: 'POST',
//     data
//   }, true),
//   findPlanByAssembly: (data) => request('GET', `main/projectManage/findPlanByAssembly`, data),
//   // 获取民族
//   getNationals: (data) => request('GET', `main/projectManage/getNationals`, data),
//   // 进件申请（第一次）
//   saveIncomingApplication: (data) => request('POST', `main/projectManage/saveIncomingApplication`, data),
//   //3、查询征信接口
//   lookCreditResult: (data) => request('GET', `main/projectManage/lookCreditResult`, data),
//   //进件详情
//   getOnceIncomingApplication: (data) => request('GET', `main/projectManage/getOnceIncomingApplication`, data),
//   //获取省
//   getProvince: (data) => request('GET', `main/projectManage/getProvince`, data),
//   //根据省的id 获取市
//   getCityByPros: (data) => request('GET', `main/projectManage/getCityByPros`, data),
//   //根据市的id 获取区
//   getAreaByCity: (data) => request('GET', `main/projectManage/getAreaByCity`, data),
//   //进件结果查询
//   lookApplyResult: (data) => request('GET', `main/projectManage/lookApplyResult`, data),
//   //二次申请
//   nextIncomingApplication: (data) => request('POST', `main/projectManage/nextIncomingApplication`, data),
//   //
//   uploadTwoAttachment: (data) => request('GET', `main/projectManage/uploadTwoAttachment`, data),
//   //

// }
const toast = (title, time, icon) => {
  wx.showToast({
    title: title,
    duration: time,
    icon: icon,
    mask: true
  })
}

const req = (url, data, method, header, contentType) => {
  let noTokenUrl = ['oauth/miniapp/token','oauth/miniapp/logout'];
  if(noTokenUrl.some((item)=>{return item== url})){//不需要加token
    var _header = {
      'Content-Type': contentType === '1' ? 'application/json' : 'application/x-www-form-urlencoded',
      'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=',
      'Tenant-Id': '000000',
    }
  }else{//需要加token   
    var _header = {
      'Content-Type': contentType === '1' ? 'application/json' : 'application/x-www-form-urlencoded',
      'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=',     
      'Blade-Requested-With':'BladeHttpRequest',
      'Blade-Auth':  'bearer ' + wx.getStorageSync('TOKEN'),     
    }
  }    
  return new Promise((resolve, reject) => {
    wx.request({
      url: monitURL + url,
      data: data,
      method: method,
      header: {..._header,...header},
      success: function (res) {
        resolve(res.data)
      },
      fail: function (res) {
        reject(res);
      },
      complete: function (res) {
        if(res.data.code == '401'){//登录失效
          console.log('登录失效')
          wx.showModal({
            content: '登录过期，是否重新登录？',
            success(res) {
              if (res.cancel) {} else if (res.confirm) {
                wx.clearStorage()
                wx.reLaunch({
                  url: '/pages/index/index',
                })
              }
            }
          })
        }
      }
    })
  })
}

var turnEmpty = obj => {
  if (obj == undefined) {
    return ''
  } else if (obj == 'undefined') {
    return ''
  } else if (obj == null) {
    return ''
  } else if (obj == 'null') {
    return ''
  } else {
    return obj
  }
}

/* 防抖函数封装 */
function debounce(fn, interval) {
  let timer;
  let delay = interval || 1000; // 间隔的时间，如果interval不传，则默认1秒
  return function () {
    let that = this;
    let args = arguments; // 保存此处的arguments，因为setTimeout是全局的，arguments不是防抖函数需要的。
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(function () {
      fn.apply(that, args); // 用apply指向调用debounce的对象，相当于this.fn(args);
    }, delay);
  };
}

/**
 * 根据身份证号，获取精缺周岁年龄
 * @param {Object} idNumber    身份证号
 */
function getAgeByPid(idNumber){
  var birthYear = idNumber.substr(6,4)
  var birthMonth = idNumber.substr(10,2)
  var birthDay = idNumber.substr(12,2)
  var d = new Date();
  var nowYear = d.getFullYear();
  var nowMonth = d.getMonth() + 1;
  var nowDay = d.getDate();
  var returnAge = 0 
  if(nowYear == birthYear){
      returnAge = 0;//同年 则为0岁
  }else{
      var ageDiff = nowYear - birthYear ; //年之差
      if(ageDiff > 0){
        if(nowMonth == birthMonth){
            var dayDiff = nowDay - birthDay;//日之差
            if(dayDiff < 0){
              returnAge = ageDiff - 1;
            }else{
              returnAge = ageDiff ;
            }
        }else{
          var monthDiff = nowMonth - birthMonth;//月之差
          if(monthDiff < 0){
            returnAge = ageDiff - 1;
          }else{
            returnAge = ageDiff ;
          }
        }
      }else{
        returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
      }
  }
  return returnAge;//返回周岁年龄
}

var filterItem = function(key, value, arr){
  if (!(arr && arr.length > 0)) {
    return {}
  }
  var item = [];
  for(var i = 0; i<arr.length; i++){
    if(arr[i][key]*1 >= value){
      item.push(arr[i])
    }
  }
  return item.length ? item[0] : {}
}

module.exports = {
  formatTime,
  formatTime2,
  // api,
  toast,
  req,
  turnEmpty,
  debounce,
  getAgeByPid,
  md5,
  idCard(value,rule, param, models) {
    if (!value || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(value)) {
      return true;
    }
  },
  validatePhoneNumber(value,rule, param, models) { 
    if (!value || !/^[1][3-9]\d{9}$/i.test(value)) { 
      return true; 
    } 
  },
  validateBankNum(value,rule, param, models) { //长度在15到19位
    if (!value || !/^(?:[1-9]\d{14}(?:\d|L|U|C|X|P|S|Q|R|Z|N|G|B|E|K|H|V|W|Y|T)?|\d{15,19})$/.test(value)) { 
      return true; 
    } 
  },
  isDate(str){
    // 日期字符串的格式：yyyy-mm-dd
    var datePattern = /^\d{4}-\d{1,2}-\d{1,2}$/;
    return datePattern.test(str);
  },
  num(rule, value, param, models) {
    if (!value || !/^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/.test(value)) {
      return rule.message;
    }
  },
  filterItem:filterItem,
}