var filters = {
  /**
   * 字符串截取
   * @string value  需要截取的字符串
   * @Number start  截取起始位置
   * @Number end    截取结束位置
   */
  tosubStr: function (value, start, end) {
    if (value) {
      return value.slice(start, end);
    } else {
      return ''
    }
  },

  pdNumFun: function (value) {
    if (value.indexOf("-") != -1) { //没有则返回-1
      return true;
    } else {
      return false;
    }
  },
 
  /**
   * 判断str中是否包含value值
   * @param str 
   * @param value 
   */
  indexOfFun: function (str, value) {
    if (str) {
      if (str.indexOf(value) != -1) { //没有则返回-1
        return true;
      } else {
        return false;
      }
    } else {
      return false;
    }
  },
  
  /**
   * 用于字典解析
   * @param arr    目标数组
   * @param value  当前的到的值
   * @param targetCode 需要匹配的字段名
   * @param returnCode 返回的字段名
   */
  codeAnalysis: function (arr, value, targetCode, returnCode) {
    var returnStr = ''
    arr.forEach(function (item) {
      if (value == item[targetCode]) {
        returnStr = item[returnCode]
      }
    })
    return returnStr
  },
  //二维数组转字符串
  arrToSting: function (value) {
    var getNameArr = []
    if (value && value.length) {
      for (var i = 0; i < value.length; i++) {
        getNameArr.push(value[i].name)
      }
    }
    return getNameArr.join(',')
  },

  //一维数组转字符串
  arrToStingOne: function (value) {
    return value.join(',')
  },

  //字符串替换,将oldstr全部变为newStr
  changeStr: function (value, oldstr, newStr) {
    return value.replace(oldstr, newStr)
  },

  /**
   * 字符串变数组取对应下标值
   * @string value  需要截取的字符串
   * @string str    分隔的字符串
   * @Number Num    下标
   */
  tosplit: function (value, str, Num) {
    if (value) {
      return value.split(str)[Num];
    } else {
      return ''
    }
  },

  getFileType: function (fileUrl) {
    var value = fileUrl.split('.')[1];
    if (value == 'doc' || value == 'docx') {
      return '6'
    } else if (value == 'xlsx' || value == 'xls') {
      return '7'
    } else if (value == 'pdf') {
      return '2'
    } else if (value == 'png' || value == 'jpg' || value == 'jpeg') {
      return '3'
    } else {
      return '1'
    }
  },

  /**
   * 找到字典对应text,用于详情显示
   * @param {*} v_data   数组
   * @param {*} value    数据库返回的值
   * @param {*} codeName 用于匹配数组中的字段名
   * @param {*} textCode 返回的字段名
   */
  getDicName: function (v_data, value, codeName, textCode) {
    var n = '';
    if (v_data) {
      for (var i = 0; i < v_data.length; i++) {
        if (v_data[i][codeName] == value) {
          n = v_data[i][textCode];
        }
      }
      return n;
    }
  },

  //保留两位小数
  toFixed: function (value, num) {
    return value.toFixed(num)
  },

  /**
   * 计算百分比
   * @param {Number} value    当前值，获取当前占比
   * @param {Number} total    总值
   */
  getPersent: function (value, total) {
    if(total<=0){
      return 50
    }else{
      return (value / total)*100; //包含返回true
    }
  },

  // 过磅状态
  status: function (value) {
    value = Number(value)
    switch (value) {
      case 0:
        return '待过磅'
        break;
      case 1:
        return '已过磅'
        break;
      case 2:
        return '一次过磅'
        break;
      case 3:
        return '已作废'
        break;
    }
  },

  /**
   * 判断数组是否包含某个字符串 {{filters.hasPromision('quotePrice',mobileButtonCodeList)}}
   * @param arr 数组 mobileButtonCodeList:wx.getStorageSync('mobileButtonCodeList')
   * @param str 字符串
   */
  hasPromision:function (str, arr) {
    //var getArr = arr.split(',')
    return arr.indexOf(str)!=-1
    //return arr.includes(str)
  },

  //判断数字包含的小数位数，最多保存两位小数点
  numberFormat: function (value, num) {
    // 将数字转换为字符串
    //var str = value.toString();
    var str = value + ""
    // 判断是否有小数点
    if (value && str.indexOf('.') != -1) {
      // 返回小数位数
      //return str.length - str.indexOf('.') - 1;
      if (str.length - str.indexOf('.') - 1 > 1) {
        return value.toFixed(num)
      } else {
        return value
      }
    } else {
      return value
    }
  },

  // 过磅状态
  dataStatus: function (value) { //0-待审核 1-审核通过2-过磅中 3-过磅完成4-审核拒绝5-人工结束
    value = Number(value)
    switch (value) {
      case 0:
        return '待审核'
        break;
      case 1:
        return '审核通过'
        break;
      case 2:
        return '过磅中'
        break;
      case 3:
        return '过磅完成'
        break;
      case 4:
        return '审核拒绝'
        break;
      case 5:
        return '人工结束'
        break;
    }
  },

  reservationType: function (value) {
    value = Number(value)
    switch (value) {
      case 2:
        return '装货'
        break;
      case 3:
        return '卸货'
        break;
    }
  },

  weighingType: function (value) {
    value = Number(value)
    switch (value) {
      case 1:
        return '一次过磅'
        break;
      case 2:
        return '二次过磅'
        break;
    }
  },

  coutNum:function(value){
    return Number(value)/100
  },

  /**
   * 判断某个字符串是否包含某个字符串
   * @param {*} value    原始字符串
   * @param {*} str      匹配字符串
   */
  isContainStr: function (value, str) {
    if (value) {
      return value.indexOf(str) != -1; //包含返回true
    } else {
      return false; //包含返回true
    }
  },

    /**
   * 计算百分比
   * @param {Number} value    当前值，获取当前占比
   * @param {Number} total    总值
   */
  getPersent: function (value, total) {
    if(total<=0){
      return 50
    }else{
      return (value / total)*100; //包含返回true
    }
  },

}

module.exports = {
  tosubStr: filters.tosubStr,
  arrToSting: filters.arrToSting,
  arrToStingOne: filters.arrToStingOne,
  pdNumFun: filters.pdNumFun,
  indexOfFun: filters.indexOfFun,
  changeStr: filters.changeStr,
  tosplit: filters.tosplit, //字符串转数组取对应下标值
  codeAnalysis: filters.codeAnalysis, //字典解析，用于详情显示
  getFileType: filters.getFileType,
  getDicName: filters.getDicName,
  toFixed: filters.toFixed,
  getPersent: filters.getPersent,
  status:filters.status,
  hasPromision:filters.hasPromision,//判断数组是否包含某个值
  numberFormat:filters.numberFormat, //判断数字包含的小数位数，最多保存两位小数点
  dataStatus:filters.dataStatus, //预约记录状态
  reservationType:filters.reservationType, //出入库类型
  weighingType:filters.weighingType, //过磅次数
  coutNum:filters.coutNum,
  isContainStr: filters.isContainStr, //判断某个字符串是否包含某个字符串
  getPersent: filters.getPersent
}
// 引用方式<wxs module="filters" src="../../utils/filter.wxs"></wxs>  {{ filters.toFix(price) }}