2.0.1 • Published 2 years ago
lg-tools v2.0.1
lg-tools
常用工具函数
安装
$ npm install lg-tools
# OR
$ yarn add lg-tools
使用
import Tools from 'lg-tools';
API
/**
* 获取queryString参数值
* @param key
* @param queryString
* @returns T
*/
static query<T = any>(key?: string | null, queryString?: string): T;
/**
* 将对象转换为query参数
* eg. {name: 'muzili', age: 30} --> ?name=muzili&age=30
* @param obj
* @param hasPrefix 是否需要添加 `?` 前缀,默认true
*/
static convertToQueryWith(obj: Record<string, string | number | boolean>, hasPrefix?: boolean): string;
/**
* 将对象转为formData格式
* @param object
* @returns
*/
static convertToFormDataWith(object: Record<string, any>): FormData;
/**
* 处理日期格式
* @param v 时间戳 / 日期字符串 / 日期对象
* @param format 格式 YYYY-MM-DD HH:mm:ss
*/
static dateFormat(v: number | string | Date, format?: string): string;
/**
* 删除数组中的指定元素
* @param arr
* @param key
* @param value
*/
static del<T>(arr: T[], key: keyof T, value: any): T[];
/**
* 对象数组根据指定key去重
* @param arr
* @param key
* @returns
*/
static unique<T extends object>(arr: T[], key: keyof T): T[];
/**
* 手机号码格式
* 对于参数格式,手机号固定长度为11位,程序将其分为三部分,如对于手机号:188 1234 5678,其中:
* $1 -> 188;$2 -> 1234;$3 -> 5678
* 如果format字段填写的格式为:'$1 **** $3',则返回数据为:188 **** 5678
* 这样封装的目的在于手机号的格式可以自由组合,更加灵活。
* @param phone 手机号
* @param format 格式字符串 如:'$1 $2 $3',默认值:$1 **** $2
*/
static phoneFormatter(phone: string, format?: string): string;
/**
* px转vw
* @param pixel
*/
static px2vw(pixel: number): string;
/**
* 剪贴板
* @param value 复制内容
* @returns Promise
*/
static clipboard(value: string): Promise<unknown>;
/**
* 时间倒计时(返回时分秒)
* @param timeStamp 时间戳
* @param format 返回格式 dd hh:mm:ss,不传则返回元组类型[天,时,分,秒]
* @param type 倒计时格式 default/秒制;ms/毫秒制
* @param showDay 是否显示天 true-超过24小时天数+1;false-超过24小时累计小时值,默认为true
* @param pending 倒计时持续状态
* @param complete 倒计时结束
*/
static timeDown(params: {
timeStamp: number;
format?: string;
type?: 'default' | 'ms';
showDay?: boolean;
pending: (time: string | string[]) => void;
complete: () => void;
}): number | undefined;
/**
* 获取数据类型
* @param target
*/
static toRawType(target: any): string;
/**
* 百度统计
* @param options
*/
static track(options: ITrackPv | ITrackEs): void;
/**
* 随机字符
* @param length
* @param type
*/
static randomCharacters(length: number, type?: 'default' | 'uppercase' | 'lowercase' | 'digital'): string;
/**
* 获取指定范围内的随机数
* @param min
* @param max
*/
static randomDecimals(min: number, max: number): number;
/**
* 获取指定范围内的随机整数
* @param min
* @param max
*/
static randomInteger(min: number, max: number): number;
/**
* 全屏
*/
static launchFullscreen(): void;
/**
* 退出全屏
*/
static exitFullscreen(): void;
/**
* Blob流转Excel
* @param data 流
* @param fileName 导出文件名
*/
static exportExcel(data: Blob, fileName: string): Promise<unknown>;
/**
* 获取年份集合
* @param start 开始年/默认值:1970
* @param end 结束年/默认值:当前年
* @returns
*/
static getYears(start?: number, end?: number): string[];
/**
* 获取月份集合:[1-12]
* @returns
*/
static getMonths(): string[];
/**
* 获取某月的天数集合
* @param options 可选项/如果赋值,则表示获取精确天数,默认为31天即[1-31]
* @returns
*/
static getDays(options?: {
year: number;
month: number;
}): string[];
/**
* 批量下载文件
* @param urls 文件地址
* @returns
*/
static downloadFiles(urls: string[]): void;
/**
* 处理数字小于10时的格式/在小于10的数字前面拼接0
* @param num
* @returns
*/
static numFormat(num: number): string;
/**
* 获取当前运行环境
* @returns
* - android:安卓环境
* - ios:iOS环境
* - weixin:微信环境
* - alipay:支付宝环境
* - unknown:未知环境
*/
static getEnv(): "unknown" | "weixin" | "alipay" | "android" | "ios";
/**
* 获取文件存储路径
* 一般用于规范对象存储时的文件管理规范
* 生成格式如下:存储目录名/日期/随机字符(3个)+时间戳_图片本身名字.后缀名
* 示例:admin/avatar/20210630/ULK1625036350104_logo.png
* @param file
* @param dirName
* @returns
*/
static getFilePath(file: File, dirName: string): string;
/**
* base64转码
* @param target 图片链接 / 文件对象
* @returns
*/
static base64(target: string | File): Promise<unknown>;
/**
* 动态加载script标签
* @param src {string | string[]} 加载脚本的地址,
* @param type {string} 默认值:text/javascript
*/
static loadScript(src: string | string[], type?: string): void;
/**
* 深拷贝
* @param source 源数据
* @returns
*/
static deepClone<T = any>(source: T): T;
/**
* 更新对象,支持namePath形式
* 如果你需要深拷贝更新,请试用Tools.deepUpdate
* @param source 原始对象
* @param keyPath eg: 'user' or 'user.name'
* @param value 更新值
*/
static update(source: Record<string, any>, keyPath: string, value: any): Record<string, any>;
/**
* 深拷贝更新对象值
* @param source 原始对象
* @param keyPath eg: 'user' or 'user.name'
* @param value 更新值
* @returns
*/
static deepUpdate(source: Record<string, any>, keyPath: string, value: any): Record<string, any>;
/**
* 获取上一天
* @returns 返回日期对象
*/
static getLastDay(): Date;
/**
* 获取上一月
* @returns 返回日期对象
*/
static getLastMonth(): Date;
/**
* 函数防抖
* @param cb 回调函数
* @param delay 延迟时间,默认500ms
* @returns
*/
static debounce(cb: (...args: any) => void, delay?: number): (...args: any) => void;
/**
* 校验字符串是否为JSON字符串
* @param value 校验值
* @returns
*/
static isJSON(value: string): boolean;
/**
* 输入日期查询星座
* @param $1 日期/数值类型,为数值类型是,$1表示月份(1-12)
* @param $2 数值类型 日期(天)(1-31)
* @returns 如果匹配,则返回对应星座,否则返回空字符串('')
*/
static getConstellation($1: number | Date, $2?: number): string;
/**
* Canvas - 绘制多行文本
* @param context canvas 上下文
* @param text 绘制文本
* @param x 文本左上角x坐标
* @param y 文本左上角y坐标
* @param lineHeight 一行所占的高度(行高)
* @param maxWidth 一行所占的最大宽度,用于计算判断遍历fill文本时是否应该换行,默认为canvas宽度
* @param maxRows 最多行(默认最多显示5行)
* @returns 返回所占高度(用于动态绘制后续元素)
*/
static canvasFillText(context: CanvasRenderingContext2D, text: string, x: number, y: number, lineHeight: number, maxWidth?: number, rows?: number): number;
/**
* 文本溢出省略处理
* @param str 源字符串
* @param len 长度 / 规则,指定前后保留的位数,默认为6
* @param type 省略类型: 'head' | 'centre' | 'tail'
* @returns
*/
static ellipsis(str: string, len?: number, type?: 'head' | 'centre' | 'tail'): string;
/**
* 解析日期字符串
* 一般用于根据年月筛选时,将日期字符串返回起始传递给后端(严格上来将后端处理即可)
* 如:2022-02,返回 {start: '202-02-01 00:00:00', end: '202-02-28 23:59:59'}
* @param dateString 日期字符串,格式:YYYY-MM
* @returns
*/
static analysisDateString(dateString: string): {
start: undefined;
end: undefined;
} | {
start: string;
end: string;
};
2.0.1
2 years ago
2.0.0
2 years ago
1.0.53
3 years ago
1.0.52
3 years ago
1.0.48
3 years ago
1.0.47
3 years ago
1.0.46
3 years ago
1.0.49
3 years ago
1.0.50
3 years ago
1.0.44
3 years ago
1.0.43
3 years ago
1.0.42
3 years ago
1.0.41
3 years ago
1.0.45
3 years ago
1.0.40
3 years ago
1.0.39
3 years ago
1.0.38
3 years ago
1.0.37
3 years ago
1.0.36
3 years ago
1.0.35
3 years ago
1.0.34
3 years ago
1.0.32
3 years ago
1.0.31
3 years ago
1.0.30
3 years ago
1.0.26
3 years ago
1.0.29
3 years ago
1.0.28
3 years ago
1.0.27
3 years ago
1.0.22
3 years ago
1.0.25
3 years ago
1.0.24
3 years ago
1.0.23
3 years ago
1.0.21
4 years ago
1.0.20
4 years ago
1.0.19
4 years ago
1.0.18
4 years ago
1.0.17
4 years ago
1.0.16
4 years ago
1.0.15
4 years ago
1.0.14
4 years ago
1.0.13
4 years ago
1.0.12
4 years ago
1.0.9
4 years ago
1.0.8
4 years ago
1.0.11
4 years ago
1.0.10
4 years ago
1.0.6
4 years ago
1.0.5
4 years ago
1.0.4
4 years ago
1.0.3
4 years ago
1.0.2
4 years ago
1.0.1
4 years ago
1.0.0
4 years ago