ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vue项目封装的简易方法

2022-05-30 21:00:26  阅读:138  来源: 互联网

标签:vue return image resValue 简易 length str time 封装


// 日期格式化
export function parseTime(time: string, pattern: string) {
  if (arguments.length === 0 || !time) {
    return null
  }
  const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    } else if (typeof time === 'string') {
      time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

/**
 * 去除 数组中的空字符串
*/
export function trimSpace(array: any) {
  for (var i = 0; i < array.length; i++) {
    if (array[i] == " " || array[i] == "" || array[i] == null || typeof (array[i]) == "undefined") {
      array.splice(i, 1);
      i = i - 1;
    }
  }
  return array;
}

/**
* 数据非空验证
* @desc 验证数据是否为 null undefined [] {} ''
* @param data
* @return {boolean}
*/
export function isEmpty(data: any) {
  if (data === null) return true
  if (data === undefined) return true
  if (Object.prototype.toString.call(data) === '[object Array]') return data.length === 0
  if (Object.prototype.toString.call(data) === '[object Object]') return Object.keys(data).length === 0
  if (typeof data === 'string') return data.trim() === ''
  return false
}

/**
 * 过滤空字段
 */
export const getNewParmes = (parme: any, ignoreArr: Array<any>) => {
  let parmes = parme
  let tempValue = { ...parme }
  if (parmes) {
    let keys = Object.keys(parmes);
    for (let i = 0; i < keys.length; i++) {
      const key = keys[i];
      if (!ignoreArr.includes(key)) {
        const value = parmes[key];
        if (isEmpty(value)) {
          delete parmes[key];
        }
      }
    }
  }
  tempValue = { ...parmes }
  if (isEmpty(tempValue)) {
    tempValue = {}
  }
  return tempValue;
}

/**
 * js计算中的科学计数法
*/
export const toolNumber = (num_str: any) => {
  num_str = num_str.toString();
  if (num_str.indexOf("+") != -1) {
    num_str = num_str.replace("+", "");
  }
  if (num_str.indexOf("E") != -1 || num_str.indexOf("e") != -1) {
    var resValue = "",
      power: number = 0,
      result = null,
      dotIndex = 0,
      resArr: any = [],
      sym = "";
    var numStr = num_str.toString();
    if (numStr[0] == "-") {
      // 如果为负数,转成正数处理,先去掉‘-’号,并保存‘-’.
      numStr = numStr.substr(1);
      sym = "-";
    }
    if (numStr.indexOf("E") != -1 || numStr.indexOf("e") != -1) {
      var regExp = new RegExp(
        "^(((\\d+.?\\d+)|(\\d+))[Ee]{1}((-(\\d+))|(\\d+)))$",
        "ig"
      );
      result = regExp.exec(numStr);
      if (result != null) {
        resValue = result[2];
        power = Number(result[5]);
        result = null;
      }
      if (!resValue && !power) {
        return false;
      }
      dotIndex = resValue.indexOf(".") == -1 ? 0 : resValue.indexOf(".");
      resValue = resValue.replace(".", "");
      resArr = resValue.split("");
      if (Number(power) >= 0) {
        var subres = resValue.substr(dotIndex);
        power = Number(power);
        //幂数大于小数点后面的数字位数时,后面加0
        for (var i = 0; i <= power - subres.length; i++) {
          resArr.push("0");
        }
        if (power - subres.length < 0) {
          resArr.splice(dotIndex + power, 0, ".");
        }
      } else {
        power = power.replace("-", "");
        power = Number(power);
        //幂数大于等于 小数点的index位置, 前面加0
        for (var i = 0; i < power - dotIndex; i++) {
          resArr.unshift("0");
        }
        var n = power - dotIndex >= 0 ? 1 : -(power - dotIndex);
        resArr.splice(n, 0, ".");
      }
    }
    resValue = resArr.join("");

    return sym + resValue;
  } else {
    return num_str;
  }
}

/**
 * 拼接 图片 URL  
 */
export const getNewUrl = (url: string, width: number | string = 100, height: number | string = 100, sku: string = 'nihao') => {
  let oldUrl = `${url}`;
  let newUrl = '';
  if (!isEmpty(url)) {
    if (url.indexOf("img.nihaojewelry.com") !== -1) {
      let iconArr = url.split('.');
      newUrl = `${oldUrl.replace(`.${iconArr[iconArr.length - 1]}`, `_thumb_${width}x${height}/${sku}.${iconArr[iconArr.length - 1]}`)}`;
    } else {
      newUrl = `${oldUrl}?x-oss-process=image/format,webp,image/resize,m_fill,w_${width},h_${height}`;
    }
  }
  return newUrl;

  // skuImg: "http://image.nihaostyles.com/product/2021/6/10/1402800346123866112.jpg?x-oss-process=image/resize,m_fixed,limit_0,h_120,w_120"
  // skuImg: "http://image.nihaostyles.com/product/2021/6/10/1402800346123866112.jpg"
  // 主站 图片URL import { getNewUrl } from '/@/utils/erp';
  // https://img.nihaojewelry.com/product/2022/4/13/1514075147882074112_thumb_200x200/NHMEY713729.jpg
  // https://img.nihaojewelry.com/product/2022/4/13/1514075147882074112.jpg
  // 一种类型
  // https://img.nihaojewelry.com/
  // 其他类型
  // https://image.nihaostyles.com/
  // https://hz-oss-ck.oss-cn-hangzhou.aliyuncs.com/
  // = = = = = =
  // let newUrl = `${item.skuImg.replace(`.${iconArr[iconArr.length - 1]}`, `_thumb_${130}x${130}/${item.sku}.${iconArr[iconArr.length - 1]}`)}`;
  // = = = = = 
  // http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,m_fixed,limit_0,h_4096,w_4096
  // https://cc-west-usa.oss-us-west-1.aliyuncs.com/4cf4abeb-1519-4f27-adec-328bd95fc176.jpg?x-oss-process=image/format,webp,image/resize,m_fill,w_179,h_190

}

 

// 日期格式化 export function parseTime(time: string, pattern: string) {   if (arguments.length === 0 || !time) {     return null   }   const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'   let date   if (typeof time === 'object') {     date = time   } else {     if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {       time = parseInt(time)     } else if (typeof time === 'string') {       time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');     }     if ((typeof time === 'number') && (time.toString().length === 10)) {       time = time * 1000     }     date = new Date(time)   }   const formatObj = {     y: date.getFullYear(),     m: date.getMonth() + 1,     d: date.getDate(),     h: date.getHours(),     i: date.getMinutes(),     s: date.getSeconds(),     a: date.getDay()   }   const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {     let value = formatObj[key]     // Note: getDay() returns 0 on Sunday     if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }     if (result.length > 0 && value < 10) {       value = '0' + value     }     return value || 0   })   return time_str }
/**  * 去除 数组中的空字符串 */ export function trimSpace(array: any) {   for (var i = 0; i < array.length; i++) {     if (array[i] == " " || array[i] == "" || array[i] == null || typeof (array[i]) == "undefined") {       array.splice(i, 1);       i = i - 1;     }   }   return array; }
/** * 数据非空验证 * @desc 验证数据是否为 null undefined [] {} '' * @paramdata * @return{boolean} */ export function isEmpty(data: any) {   if (data === null) return true   if (data === undefined) return true   if (Object.prototype.toString.call(data) === '[object Array]') return data.length === 0   if (Object.prototype.toString.call(data) === '[object Object]') return Object.keys(data).length === 0   if (typeof data === 'string') return data.trim() === ''   return false }
/**  * 过滤空字段  */ export const getNewParmes = (parme: any, ignoreArr: Array<any>) => {   let parmes = parme   let tempValue = { ...parme }   if (parmes) {     let keys = Object.keys(parmes);     for (let i = 0; i < keys.length; i++) {       const key = keys[i];       if (!ignoreArr.includes(key)) {         const value = parmes[key];         if (isEmpty(value)) {           delete parmes[key];         }       }     }   }   tempValue = { ...parmes }   if (isEmpty(tempValue)) {     tempValue = {}   }   return tempValue; }
/**  * js计算中的科学计数法 */ export const toolNumber = (num_str: any) => {   num_str = num_str.toString();   if (num_str.indexOf("+") != -1) {     num_str = num_str.replace("+", "");   }   if (num_str.indexOf("E") != -1 || num_str.indexOf("e") != -1) {     var resValue = "",       power: number = 0,       result = null,       dotIndex = 0,       resArr: any = [],       sym = "";     var numStr = num_str.toString();     if (numStr[0] == "-") {       // 如果为负数,转成正数处理,先去掉‘-’号,并保存‘-’.       numStr = numStr.substr(1);       sym = "-";     }     if (numStr.indexOf("E") != -1 || numStr.indexOf("e") != -1) {       var regExp = new RegExp(         "^(((\\d+.?\\d+)|(\\d+))[Ee]{1}((-(\\d+))|(\\d+)))$",         "ig"       );       result = regExp.exec(numStr);       if (result != null) {         resValue = result[2];         power = Number(result[5]);         result = null;       }       if (!resValue && !power) {         return false;       }       dotIndex = resValue.indexOf(".") == -1 ? 0 : resValue.indexOf(".");       resValue = resValue.replace(".", "");       resArr = resValue.split("");       if (Number(power) >= 0) {         var subres = resValue.substr(dotIndex);         power = Number(power);         //幂数大于小数点后面的数字位数时,后面加0         for (var i = 0; i <= power - subres.length; i++) {           resArr.push("0");         }         if (power - subres.length < 0) {           resArr.splice(dotIndex + power, 0, ".");         }       } else {         power = power.replace("-", "");         power = Number(power);         //幂数大于等于 小数点的index位置, 前面加0         for (var i = 0; i < power - dotIndex; i++) {           resArr.unshift("0");         }         var n = power - dotIndex >= 0 ? 1 : -(power - dotIndex);         resArr.splice(n, 0, ".");       }     }     resValue = resArr.join("");
    return sym + resValue;   } else {     return num_str;   } }
/**  * 拼接 图片 URL    */ export const getNewUrl = (url: string, width: number | string = 100, height: number | string = 100, sku: string = 'nihao') => {   let oldUrl = `${url}`;   let newUrl = '';   if (!isEmpty(url)) {     if (url.indexOf("img.nihaojewelry.com") !== -1) {       let iconArr = url.split('.');       newUrl = `${oldUrl.replace(`.${iconArr[iconArr.length - 1]}`, `_thumb_${width}x${height}/${sku}.${iconArr[iconArr.length - 1]}`)}`;     } else {       newUrl = `${oldUrl}?x-oss-process=image/format,webp,image/resize,m_fill,w_${width},h_${height}`;     }   }   return newUrl;
  // skuImg: "http://image.nihaostyles.com/product/2021/6/10/1402800346123866112.jpg?x-oss-process=image/resize,m_fixed,limit_0,h_120,w_120"   // skuImg: "http://image.nihaostyles.com/product/2021/6/10/1402800346123866112.jpg"   // 主站 图片URL import { getNewUrl } from '/@/utils/erp';   // https://img.nihaojewelry.com/product/2022/4/13/1514075147882074112_thumb_200x200/NHMEY713729.jpg   // https://img.nihaojewelry.com/product/2022/4/13/1514075147882074112.jpg   // 一种类型   // https://img.nihaojewelry.com/   // 其他类型   // https://image.nihaostyles.com/   // https://hz-oss-ck.oss-cn-hangzhou.aliyuncs.com/   // = = = = = =   // let newUrl = `${item.skuImg.replace(`.${iconArr[iconArr.length - 1]}`, `_thumb_${130}x${130}/${item.sku}.${iconArr[iconArr.length - 1]}`)}`;   // = = = = =   // http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,m_fixed,limit_0,h_4096,w_4096   // https://cc-west-usa.oss-us-west-1.aliyuncs.com/4cf4abeb-1519-4f27-adec-328bd95fc176.jpg?x-oss-process=image/format,webp,image/resize,m_fill,w_179,h_190
}

标签:vue,return,image,resValue,简易,length,str,time,封装
来源: https://www.cnblogs.com/lpx520/p/16328243.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有