2.0.19 • Published 10 months ago

foundation-utils v2.0.19

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

foundation-utils

工作中使用到的 util 方法

number

  • NumAdd(a, b) // 加法
    示例:

    NumAdd(1, 2); // 3
  • NumSub(a, b) // 减法
    示例:

    NumSub(3, 2); // 1
  • NumMul(a, b) // 乘法
    示例:

    NumMul(1, 2); // 2
  • NumDiv(a, b) // 除法
    示例:

    NumDiv(2, 1); // 2
  • Thousands(num: number | string) // 千分位格式化
    示例:

    Thousands(123456); // 123,456
  • ThousandsFloat(num: number | string, decimal: number) // 千分位格式化 带小数
    示例:

    ThousandsFloat(123456789, 2); // 123,456,789.00  
    ThousandsFloat(123456789.12345, 2); // 123,456,789.12
  • MoneyUnitSwitch(num: number, baseUnit: number, NaNText:string)
    示例:

    MoneyUnitSwitch(123456789.12, 10000); // 12,345.68  
    MoneyUnitSwitch(123456789.12, 100); // 1,234,567.89
  • FormatFloat(num: number, decimal?: number) //格式化数据,保留指定位数小数
    示例:

    FormatFloat(0.12345, 3); // 0.123
  • FilterNumber(value: string)
    示例:

    FilterNumber('abc123ccdd456啊789'); // 123456789
  • NumberToCapital(num: string | number) //金额转换为大写
    示例:

      NumberToCapital(1234); // 壹仟贰佰叁拾肆圆整
      NumberToCapital(123.45); // 壹佰贰拾叁圆肆角伍分
  • NumberScientificNotation(num_str: string) //科学计数法
    示例:

    NumberScientificNotation("123E4"); // 1230000
    NumberScientificNotation(12E3); // 12000

string

  • Capitalize(str: string) // 首字母大写
    示例:

    Capitalize("false"); // False
  • ToPercent(point: string) // 小数转化为百分数
    示例:

    ToPercent("1.2345"); // 123.45%

object

  • IsNonEmpty(value: string) //非空校验

  • IsNonZero(value: string) //非0校验

  • DeleteObjKeys(obj: Object, key: string | string[]) //删除 obj 中指定的元素
    示例:

    DeleteObjKeys({a:1, b:2, c:3, d:4}, ['a','b']); // {c:3, d:4}
    DeleteObjKeys({a:1, b:2, c:3, d:4}, 'a'); // {b:2, c:3, d:4}
  • RepeatObj(arr: any[], arg: string) //数组对象去重
    示例:

    let arr = [{ key: 1 }, { key: 1 }, { key: 2 }, { key: 3 }, { key: 3 }, { key: 4 }];
    RepeatObj(arr, 'key'); // [{ key: 1 }, { key: 2 }, { key: 3 }, { key: 4 }]

charType

  • GetType(value: any) // 获取对象数据类型
    示例:

    GetType("false"); // string
  • IsType(type: string)(value: any) // 是什么数据类型
    示例:

    IsType("String")("value"); // true
  • IsArray(value: any) // 是数组
    示例:

    IsArray("false"); // false
  • IsNumber(value: any) // 是number
    示例:

    IsNumber("false"); // false
  • IsObject(value: any) // 是对象
    示例:

    IsObject("false"); // false
  • IsFun(value: any) // 是函数
    示例:

    IsFun("false"); // false
  • IsString(value: any) // 是字符串
    示例:

    IsString("false"); // true
  • IsBoolean(value: any) // 是布尔
    示例:

    IsBoolean("false"); // false

date

  • Date_YMD_HMS(nS?: Number | string, reg?: string) //年月日 时分秒
    示例:

    Date_YMD_HMS(date, '-'); // 2023-01-01 00:00:00
  • Date_YMD(nS?: Number | string, reg?: string) //年月日
    示例:

    Date_YMD(date, '-'); // 2023-01-01
  • Date_HMS(nS?: Number | string) //时分秒
    示例:

    Date_HMS(date, '-'); // 00:00:00
  • Date_timestamp(timestamp?: number | string) //时间戳转换为 xx天xx小时xx分钟xx秒
    示例:

    Date_timestamp(new Date().getTime()) ; // 2天18小时02分20秒
  • Date_nextDate(date?: string, nextDay?: number, reg?: string) //指定日期后的几天
    示例:

    Date_nextDate('2023-01-01', 2, '-'); // 2023-01-03

file download

  • FileDownload(fileUrl: string, fileName?: string) //文件下载 - a 标签方式

  • IframeDownload(fileUrl: string) //文件下载 - iframe 方式

  • BlobFileDownload(fileUrl: string, fileName?: string) //文件下载 - blob 方式

  • BlobDownloadByFileUrl(fileUrl: string, fileName?: string) //文件下载 - blob 方式 (pdf、mp4 文件流下载)

  • BlobDownloadByBlob(blob: Blob, fileName?: string) //blob 文件下载

  • GetFileSuffix(fileUrl: string) //获取文件后缀名
    示例:

    let fileUrl = "https://img0.baidu.com/it/textName.txt";
    GetFileSuffix(fileUrl); // "textName.txt"
  • GetFileNameSuffix(fileUrl: string) //获取文件名后缀名
    示例:

    let fileUrl = "https://img0.baidu.com/it/textName.txt";
    GetFileNameSuffix(fileUrl); // "txt"
  • GetFileNameText(fileUrl: string) //获取文件名
    示例:

    let fileUrl = "https://img0.baidu.com/it/textName.txt";
    GetFileNameText(fileUrl); // "textName"
  • GetFileType(fileName: string) //文件类型

localStorage

  • SetLocalStorage(key: string, value: any) //存储localStorage

  • GetLocalStorage(key: string) //获取localStorage

  • RemoveLocalStorage(key: string) //删除localStorage

  • RemoveLocalStorageAll() //删除所有localStorage

loadScript

  • LoadScript(url: string, callback: Function) //动态加载一个远程脚本

  • LoadScriptQueue(urls: string[], cb: Function) //顺序加载一组远程脚本

url

  • ObjToUrlParam(obj: Object) //对象转换url参数 遇到属性值为空或0就不拼接

  • AddUrlParamFromObj(url: string, obj: Object) //给url添加参数 通过对象

  • AnalyzingUrl(url: string) //解析地址参数

  • EncodeURIComponent(url: string) //编码

  • DecodeURIComponent(url: string) //解码

  • IsDev // 是否是本都环境,根据地址来判断

  • IsTest(domain: string) // 是否是生产环境,根据地址来判断

  • IsProd(domain: string) // 是否是测试环境,根据地址来判断

randomCode

  • CreateGuid() //Guid
    示例:

    CreateGuid(); // "a1ca0f7b-51bd-4bf3-a5d5-6a74f6adc1c7"
  • CreateRandomCode(num: number) //随机验证码
    示例:

    CreateRandomCode(6); // "a1ca0f"

copy

  • DisabledCopy() //禁用复制

  • LaunchCopy() //关闭禁用复制

  • CopyContent(value:string) //复制字符串文档至剪贴板
    示例:

    CopyContent('这里是需要复制的内容')

other

  • Debounce(func: Function, delay: number) //防抖函数

  • Throttle(func: Function, wait: number) //节流函数

  • StrIpScript(value: string) //限制输入逗号

  • AuthorityComparison() //权限对比

  • AddIframeDom(url) //添加iframe到文档中

  • PrintImage(url) //打印图片

  • FilterTreeNode(tree, childKey, filterKey, value) //树数据过滤

Validator 数据校验

示例:

import Validator from "foundation-utils"
function requiredVerify(item): String | null {
  let validator = new Validator();
  validator.add(item.name, [
    { strategy: "isNonEmpty", errorMsg: "请输入用户名" },
    { strategy: "minLength", len: 6, errorMsg: "用户名长度不能小于6位" },
    { strategy: "maxLength", len: 10, errorMsg: "用户名长度不能大于10位" },
  ]);
  validator.add(item.phone, [
    { strategy: "isNonEmpty", errorMsg: "请输入电话号码" },
    {
      strategy: 'isCustomReg',
      regExp: new RegExp(/^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/),
      errorMsg: "请输入11位有效电话号码"
    }
  ]);
  validator.add(item.code, [
    {
      strategy: "isCustomFun",
      fun: (value) => {
        let reg = /(^[a-za-z0-9]+$)/;
        return !reg.test(value);
      },
      errorMsg: "请输入数组、字母组合的code"
    },
  ]);
  let errorMsg = validator.start();
  return errorMsg;
}

nc 观察者模式

示例:observer.ts文件

  import { NotificationCenter, Event } from "foundation-utils";
  import type { Class } from "foundation-utils";
  let nc_ = new NotificationCenter();
  // 事件名称
  export class changeEvent extends Event { }
  
  // 事件注册
  export function registerObServerEvent(that: object | symbol, eventName: Class<Event>, callback: Function) {
    nc_.register(that, eventName, async (event: Event) => {
      callback(event);
    });
  }
  
  // 事件销毁
  export function unRegisterObServerEvent(that: object | symbol, eventName: Class<Event>) {
    nc_.unRegister(that, eventName);
  }
  
  // 销毁所有事件
  export function unregisterAllObServerEvent(that: object | symbol) {
    nc_.unRegisterAll(that);
  }
  
  // 发送事件
  export function postObServerEvent(event: Event) {
    nc_.post(event);
  }

使用:index.vue文件

  postObServerEvent(new LetterStatusChangeEvent()); // 广播事件
  registerObServerEvent(proxy!.$el, LetterStatusChangeEvent, () => { loadData(); }); // 接收事件
  unRegisterObServerEvent(proxy!.$el, LetterStatusChangeEvent); // 销毁事件

httpService 异步请求

客户端使用示例:

  import { httpService } from "foundation-utils";

  async function loadData(){
    const url = "http://localhost:8066/user/get";
    let ret = await httpService().get(url);
    console.log(ret.data)
  }
2.0.19

10 months ago

2.0.17

10 months ago

2.0.18

10 months ago

2.0.15

10 months ago

2.0.3

10 months ago

2.0.16

10 months ago

2.0.2

10 months ago

2.0.13

10 months ago

2.0.5

10 months ago

2.0.14

10 months ago

2.0.4

10 months ago

2.0.11

10 months ago

2.0.7

10 months ago

2.0.12

10 months ago

2.0.6

10 months ago

2.0.9

10 months ago

2.0.10

10 months ago

2.0.8

10 months ago

2.0.1

10 months ago

2.0.0

10 months ago

1.0.0

2 years ago