@zjlab-fe/util
v0.6.2
Published
```javascript /** * 上传内容到OSS * @param ossUrl {string} 上传地址 * @param content {string | Record<string, any>} 上传内容,类型可以是string,或者json对象 * @returns {Promise<boolean>} */ export declare function uploadToOSS(ossUrl: string, content: string | Record<
Readme
API
上传内容到OSS
/**
* 上传内容到OSS
* @param ossUrl {string} 上传地址
* @param content {string | Record<string, any>} 上传内容,类型可以是string,或者json对象
* @returns {Promise<boolean>}
*/
export declare function uploadToOSS(ossUrl: string, content: string | Record<string, any>): Promise<boolean>;检查当前域名是否是线上环境
/**
* 检查当前域名是否是线上环境,返回true表示是线上环境,返回false表示是非线上环境
* @returns {boolean}
*/
export declare function isOnline(): boolean;检查当前域名是否是公开网络域名
/**
* 检查当前域名是否是公开网络域名,返回true表示是公开网络域名,返回false表示是非公开网络域名
* @returns {boolean}
*/
export declare function isPublicNetwork(): boolean;格式化展示数字
type formatNumberReturnType<T> = T extends {
locale?: string;
precision?: number;
showByte?: boolean;
splitUnit: true;
} ? {
num: string;
unit: string;
} : string;
/**
* 格式化展示数字,例如:格式化展示文件大小/存储空间大小,或者格式化展示统计个数/次数/条数(纯数字格式化展示)
* 格式化规则如下:
* 当语言是中文时,1. >=1亿时,展示成xx亿; 2. >=1万 && <1亿时,展示成xx万; 3. <1万时,展示成xx
* 当语言是英文时,按照字节单位换算规则返回,比如1000,返回1k, 1000000,返回1M,以此类推
* @param total {number}
* @param options {object} 可选,配置项
* @param options.locale {string} 可选,语言,默认是zh,可选值有zh和en
* @param options.precision {number} 可选,精度(小数点后最多保留几位),默认是0,即没有小数点
* @param options.showByte {boolean} 可选,是否是展示字节单位,默认是false
* @param options.splitUnit {boolean} 可选,是否分离出单位,默认是false,如果为true,则返回{ num: string; unit: string }
*/
export declare function formatNumber<T extends {
locale?: string;
precision?: number;
showByte?: boolean;
splitUnit?: boolean;
}>(total: number, options?: T): formatNumberReturnType<T>;
下载文件
支持多个文件同时下载
/**
* 下载文件
* @param url {string} 文件url
* @param openWindow {bool} 可选,是否是新开标签页下载
* @param message {object} 可选,如果传入,需要传入antd或者antdv的message
* @param headers {Record<string, string>} 可选,自定义请求头
* @param locale {string} 可选,语言,默认是zh,可选值有zh和en
*/
function downloadFile(url: string, openWindow?: boolean, message?: any, headers?: Record<string, string>, locale?: string): void;提取文件类型
/**
* 提取文件类型
* @param filePath {string} 文件路径 or 文件url
* @returns ext {string} 文件类型
*/
function getFileExt(filePath: string): string;对object或者array进行trim操作
/**
* 深度遍历,对于类型是字符串的value进行trim操作
* @param obj 原始的数据
* @returns newObj trim操作后的数据
*/
function trimObj<T>(obj: T): T;iframe通信相关
通信类
/**
* iframe通信类
*/
class IfmChannel {
onMessageCallback: Record<string, any>;
/**
* 向iframe发送消息
* @param ifmDom
* @param type
* @param data
* @param callback
*/
postMessageToIfm(ifmDom: HTMLIFrameElement, type: string, data?: any, callback?: (data: any) => void): void;
/**
* 向父窗口发送消息
* @param type {string} 消息类型
* @param data {any} 可选,发送的数据
* @param callback {function} 可选,如果传入,表示等待消息回应,等同于onMessage(type, callback, true)
*/
postMessage(type: string, data?: any, callback?: (data: any) => void): void;
/**
* 监听来自父窗口的消息 or 父窗口监听来自iframe的消息
* @param type {string} 消息类型
* @param callback {function} 消息处理函数
* @param isOnce {boolean} 可选,表示消息处理函数是否是一次性的
*/
onMessage(type: string, callback: (data: any) => void, isOnce?: boolean): void;
/**
* 销毁事件监听
*/
destroy(): void;
}
// 使用
const ifmChannel = new IfmChannel();
// 给父窗口发送消息
ifmChannel.postMessage('messageType', {
name: 'xxx',
projectId: 'xxx'
});
// 监听来自父窗口的消息
ifmChannel.onMessage('messageType', (data: any) => {
// ...
});
iframe嵌入,主应用相关api
/**
* 主应用初始化,监听路由
*/
function mainAppInit(): void;
/**
* 获取iframe的最终url
* @param initUrl {string} iframe初始url
* @returns
*/
function getIframeUrl(initUrl: string): string;
iframe嵌入,子应用相关api
interface SubAppInitData {
token: string | undefined;
userInfo: IUserInfo | null;
}
/**
* 子应用初始化配置对象类型
*/
interface ISubAppInitConfig {
/** 账号信息数据会存放在window[namespace]下,默认值是_subApp,默认会将账号信息数据同步到window._subApp下 */
namespace: string;
}
/**
* 子应用初始化
* @param callback (data: SubAppInitData) => void) 可选,回调函数中会传回来自父窗口的账号信息
* @param config {ISubAppInitConfig} 可选
*
*/
function subAppInit(callback?: (data: SubAppInitData) => void, config?: ISubAppInitConfig): void;
interface IConfig {
/** 账号关联的token存放在了window[authTokenNamespace]下,authTokenNamespace的默认值是_subApp,同subAppInit中的namespace */
authTokenNamespace: string;
}
/**
* 获取经过配置的axios实例
* @param instanceConfig {IConfig} 实例化配置
* @returns axios实例
*/
function getAxiosInstanceWithAuth(instanceConfig?: IConfig): import("axios").AxiosInstance;
账号信息类型定义
interface IUserInfo {
/** 用户id */
userId: string;
/** 用户名 */
userName: string;
/** 邮箱 */
email: string;
/** 昵称 */
nickName: string;
/** 头像 */
avatar: string;
/** 所在组织名 */
orgName: string;
/** 所在组织code */
orgCode: string;
/** 所在组织id */
orgId: string;
/** 账号状态 */
status: number;
/** 用于组织内部的用户名称 */
realName?: string;
/** 根组织id,只有当前登录用户的用户信息才包含 */
rootOrgId?: string;
}
