@tanshenghu/web-utils
Version:
web公共方法
411 lines (356 loc) • 11.7 kB
TypeScript
declare type SetCookieTypes = {
/** 键名 */
key: string,
/** 键值 */
value: string,
/** 过期时间以小时为单位 */
expire?: number,
/** 业务域名 */
domain?: string,
/** 存储路径 */
path?: string,
}
declare type SeekTypes = {
equal: (expression: Function | boolean, target: any) => SeekTypes,
else: (target: any) => SeekTypes,
get: Function,
}
declare type PollQueryTypes = {
/** 需要轮询的函数 */
func: Function,
/** 轮询的间隔
* @default 1000
*/
interval?: number,
/** 轮询时最多不超过的次数
* @default 1
*/
execCount?: number,
}
declare type WinOpenTypes = {
url: string,
params?: object,
type?: string,
target?: string,
getEle?: Function,
}
declare const Common: {
/**
* 数据类型的判断
* @param {any} data - 需要判断的原始数据
* @param {string} [type] - 期望的数据类型名称
* @returns {boolean|string}
*/
isType: (data: any, type?: string) => boolean | string,
/**
* 带样式的log日志
*/
log: (...args: any) => void,
/**
* 数据对象继承、合并
*/
extend: (...args: any) => object,
/**
* 判断空对象,不包含空字符串
* @param {any} data - 传入的对象参数
* @returns {boolean}
*/
isEmpty: (data: any) => boolean,
/**
* 数据克隆
* @param {array|object} data - 需要克隆的数据
* @returns {array|object} 克隆之后的全新数据
*/
clone: (data: any) => any,
/**
* 获取客户端Cookie
* @param {string} key - cookie键名
* @returns {string|null}
*/
getCookie: (key: string) => string | null,
/**
* 设置客户端Cookie
* @param {string} options.key - 键名
* @param {string} options.value - 键值
* @param {number} options.expire - 过期时间以小时为单位
* @param {string} options.domain - 业务域名
* @param {string} options.path - 存储路径
*/
setCookie: (options: SetCookieTypes) => void,
/**
* 删除客户端Cookie
* @param {string} key - 需要删除的cookie键名
*/
removeCookie: (key: string) => void,
/**
* 日期时间格式化
* @param {number|date} date 时间戳、日期对象
* @param {string} t 需要转化的日期格式
*/
dateFormat: (date: number | Date, t: string) => string,
/**
* 文件下载
* @param {object} data - 文件的Blob对象
* @param {string} fileName - 保存的文件名称
* @param {string} type - 文件的Type类型
* @description 因为现在大多前后端分离,都是发接口请求,所以需要另外写这种方法完成下载功能
*/
download: (data: Blob, fileName: string, type: string) => void,
/**
* 告别多重的if else switch等判断语句
* @returns {object}
* @exports
* seek()
* .equal(1+0===1, '一')
* .equal(1+1===2, '二')
* .equal(1+2===3, '三')
* .else('十')
* .get()
*/
seek: (args?: {all: boolean}) => SeekTypes,
/**
* 根据uri获取其中的文件名称
* @param {string} url - uri链接地址
* @returns {string}
*/
getUriFileName: (url: string) => string,
/**
* 根据uri获取其中的域名
* @param {string} url - uri链接地址
*/
getUriHostName: (url: string) => string,
/**
* 根据uri获取其中的pathname部分
* @param {string} url - uri链接地址
* @param {boolean} [search = false] - 是否带search、hash
*/
getUriPathName: (url: string, search?: boolean) => string,
/**
* url parse方法
* @param {string} url - url字符串参数
*/
urlParse: (url: string) => object | never,
/**
* 金额保留N位有效小数
* @param {string|number} n - 金额
* @param {number} [decimal=2] - 小数位数
* @param {boolean} least - 至少两位小数
* @returns {string}
*/
moneyfixed: (n: number | string, decimal?: number, least?: boolean) => string,
/**
* 保留两位有效小数 一般运用于金额显示
* @param {string|number} n - 金额
* @param {boolean} least - 至少两位小数 least为true至少两位有效小数
* @returns {string}
*/
money2fixed: (n: number | string, least?: boolean) => string,
/**
* 金额千分位处理
* @param {number|string} n 金额
*/
moneyFormat: (n: number | string) => string,
/**
* 复制文案
* @param {string} text - 需要复制的文案
* @returns {void}
*/
copyText: (text: string) => void,
/**
* 获取url所有参数
* @param {string} urlQuery - url路径
* @returns {object}
*/
getRequest: (urlQuery?: string) => any,
/**
* list数据向上,向下移动
* @param {array} list - 列表list数据
* @param {number} index - 当前操作的数据索引
* @param {number} step - 移动的步数
* @returns {array} - 返回移动好的list数据
*/
moveUpDown: (list: Array<any>, index: number, step?: number) => Array<any>,
/**
* unicode 转换
* @param {string} str - 待转换的原字符串
* @param {string} [type] - 类型
* @returns {string}
*/
getUnicode: (str: string, type?: 'js' | 'css' | 'html') => string,
/**
* 把对象转为常量只读属性
* @param {array|object} data - 需要定义为常量的数据
* @returns {array|object}
*/
constant: (data: object) => object,
/**
* 数据删除
* @param {array} list - 数组对象
* @param {function} callback - 回调函数,需要返回boolean类型,告知组件方法是否需要删除该选项
* @param {boolean} [depth] - 是否需要递归深层次的删除
* @returns {array}
*/
removeItems: (list: Array<any>, callback: Function, depth?: boolean) => Array<any>,
/**
* 将数组、对象等数据序列化操作
* @param {array|object} data - 将要序列化操作的数据
*/
serialize: (data: object) => object,
/**
* 手动触发某个事件 只运用于浏览器端
* @param {object} ele - 节点DOM对象
* @param {string} eventName - 事件名称
*/
trigger: (ele: HTMLElement, eventName: string) => void,
/**
* 拼接参数字符串
* @param {object} params - 数据对象参数
* @returns {string}
*/
queryString: (params: {[K: string]: any}) => string,
/**
* 轮询调用
* @param {function} param0.func - 需要轮询的函数
* @param {number} param0.interval - 轮询的间隔
* @param {number} param0.execCount - 轮询时最多不超过的次数
*/
pollQuery: (options: PollQueryTypes) => void,
/**
* 类似open方法 可新开启一个tab界面,支持get、post等方式
* @param {url} options.url - 需要打开调用的url路径
* @param {object} [options.params] - 调用url时所需要的参数
* @param {string} [options.type] - url以某种方式调用
* @param {string} [options.target] - 打开tab的方式,如: _blank, _new, _self 等等
* @param {function} [options.getEle] - 获取触发DOM节点,过时即失效
*/
winOpen: (options: WinOpenTypes) => void,
/**
* 添加内链样式
* @param {string} css - css样式表
* @param {object} [options.ele] - 添加至指定的容器里面
* @param {object} [options.before] - 添加至指定的容器之前
* @param {object} [options.id] - 添加id属性
*/
appendStyle: (css: string, opt: any) => void,
/**
* 取深层的数据值
* @param {object} obj - 原始数据对象
* @param {string} keyName - 取值 链式key
* @param {boolean} [log=true] - 是否打印错误日志
*/
deepValue: (obj: object, keyName: string, log?: boolean) => any,
/**
* 过滤指定的数据
* @param {object} obj - 将要过滤的对象
* @param {string|array} fields - 指定需要过滤的字段名称
* @param {boolean} ignore - 是否忽略字段
* @returns {object}
*/
omit: (obj: Array<any> | object, fields: Array<string> | string, ignore?: boolean) => any,
/**
* 组件Key
* 生成随机数
*/
getRndKey: () => string,
/**
* 获取html纯文本、与防xss转义
* @param {Element | string} el - DOM节点
* @param {number} [type] - DOM节点
*/
elementText: (el: string | Element, type?: number) => string,
/**
* 不同色值的转换 不支持英文色值
* @param {string} colorValue - 色值
* @param {boolean} [intact] - 是否返回完整的处理结果
*/
color: (colorValue: string, intact?: boolean) => string,
/**
* 数字的精度问题处理
* @param {string | number} num - 数字
*/
decNumber: (num: string | number) => number,
/**
* toFixed 数字的精度问题处理
* @param {number} num - 数字
* @param {number} digit - 保留有效小数位数
*/
decToFixed: (num: number, digit?: number) => string,
/**
* 创建默认的数据结构
* @param {string} keyPath - 字段路径
* @param {object} data - 数据对象
*/
wideJson: (keyPath: string, data?: {[K: string]: any}) => object,
/**
* 将svg源码转换为background-image的形式,当背景用
* 此方法一般很少用到,在此作为工具方法提供
* @param {string} svgCode - svg源码
*/
svg2bg: (svgCode: string) => string,
/**
* 判断是否NaN类型
* @param {any} n - 待验证的数据类型
*/
isNaN: (n: any) => boolean,
/**
* 睡眠、延迟方法
* @param {number | function} timer - 睡眠时间,即毫秒数
*/
sleep: (timer: number | Function) => Promise<any>,
/**
* 合并参数, 注意hash,一般运用场景少,不包含此功能
* @param {string} url - url链接地址
* @param {object} data - 将要拼在url后面的参数对象
*/
concatSearch: (url: string, data?: {[K:string]: any}) => string,
/**
* 定时任务
* @param {function} func - 执行主体函数
* @param {number} [time] - 执行时间间隔
* @param {function} [premise] - 前提条件, 主要功能针对某些情况满足条件需要自动放弃任务
* @returns object
*/
setTimeTask: (func: Function, time?: number, premise?: Function) => {start: Function, intact: Function, stop: Function, destruct: Function},
/**
* css属性支持情况
* @param {string} name - css属性名称
* @returns boolean
*/
checkCssProperty: (name: string) => boolean,
/**
* 隐身数据展示 如:姓名、手机、身份证 等
* @param {string} value - 字符串数据
* @param {array} indexs - 显示位的坐标
* @returns string
*/
secrecy: (value: string, indexs: number[]) => string,
/**
* uuid 生成
* @param {string} [tpl] - 生成的uuid模板
* @returns string
*/
uuid: (tpl?: string) => string,
/**
* proTable中的 valueEnum 与 dataSource数据结构互转
* @param {array|object} data - 需要转换的数据
*/
enumSource: (data: any) => any,
/**
* 简单的防爆处理函数, 简单的场景可以适用, 严格场景还是采用节流、防抖来处理比较好
* @param {number} sleep - 相隔下个事务处理间隔的秒数
*/
burst: (sleep?: number) => boolean,
/**
* 多个参数、对象之间的数据合并操作
* 与assign最大不同之处就是assign没有排除忽略字段,如果undefined也会合并过来
* 偶尔有些时候不满足业务要求, merge的忽略字段默认为[undefined]
* 如果想更换忽略参数,按Array格式传进merge的最后一个参数里即可
* @example
* ```
* merge({name: '福虎'}, {name: undefined, sex: '男'}, {wechat: 'TanShenghu'});
* // 结果: {name: '福虎', sex: '男', wechat: 'TanShenghu'}
* ```
*/
merge: (...args: any) => object,
}
export default Common;