```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<
npm install @zjlab-fe/utiljavascript
/**
* 上传内容到OSS
* @param ossUrl {string} 上传地址
* @param content {string | Record} 上传内容,类型可以是string,或者json对象
* @returns {Promise}
*/
export declare function uploadToOSS(ossUrl: string, content: string | Record): Promise;
`
$3
`javascript
/**
* 检查当前域名是否是线上环境,返回true表示是线上环境,返回false表示是非线上环境
* @returns {boolean}
*/
export declare function isOnline(): boolean;
`
$3
`javascript
/**
* 检查当前域名是否是公开网络域名,返回true表示是公开网络域名,返回false表示是非公开网络域名
* @returns {boolean}
*/
export declare function isPublicNetwork(): boolean;
`
$3
`javascript
type formatNumberReturnType = 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 locale?: string;
precision?: number;
showByte?: boolean;
splitUnit?: boolean;
}>(total: number, options?: T): formatNumberReturnType;
`
$3
支持多个文件同时下载
`javascript
/**
* 下载文件
* @param url {string} 文件url
* @param openWindow {bool} 可选,是否是新开标签页下载
* @param message {object} 可选,如果传入,需要传入antd或者antdv的message
* @param headers {Record} 可选,自定义请求头
* @param locale {string} 可选,语言,默认是zh,可选值有zh和en
*/
function downloadFile(url: string, openWindow?: boolean, message?: any, headers?: Record, locale?: string): void;
`
$3
`javascript
/**
* 提取文件类型
* @param filePath {string} 文件路径 or 文件url
* @returns ext {string} 文件类型
*/
function getFileExt(filePath: string): string;
`
$3
`javascript
/**
* 深度遍历,对于类型是字符串的value进行trim操作
* @param obj 原始的数据
* @returns newObj trim操作后的数据
*/
function trimObj(obj: T): T;
`
$3
#### 通信类
`javascript
/**
* iframe通信类
*/
class IfmChannel {
onMessageCallback: Record;
/**
* 向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
`javascript
/**
* 主应用初始化,监听路由
*/
function mainAppInit(): void;
/**
* 获取iframe的最终url
* @param initUrl {string} iframe初始url
* @returns
*/
function getIframeUrl(initUrl: string): string;
`
#### iframe嵌入,子应用相关api
`javascript
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;
`
$3
`javascript
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;
}
``