UNPKG

@tanshenghu/web-utils

Version:

web公共方法

411 lines (356 loc) 11.7 kB
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;