123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /**
- * @description 安全地解析 json 字符串
- * @param {String} jsonString 需要解析的 json 字符串
- * @param {String} defaultValue 默认值
- */
- import { uiContext } from '@fast-crud/fast-crud';
- export function parse(jsonString = '{}', defaultValue = {}) {
- let result = defaultValue;
- try {
- result = JSON.parse(jsonString);
- } catch (error) {
- console.log(error);
- }
- return result;
- }
- /**
- * @description 接口请求返回
- * @param {Any} data 返回值
- * @param {String} msg 状态信息
- * @param {Number} code 状态码
- */
- export function response(data = {}, msg = '', code = 0) {
- return [200, { code, msg, data }];
- }
- /**
- * @description 接口请求返回 正确返回
- * @param {Any} data 返回值
- * @param {String} msg 状态信息
- */
- export function responseSuccess(data = {}, msg = '成功') {
- return response(data, msg);
- }
- /**
- * @description 接口请求返回 错误返回
- * @param {Any} data 返回值
- * @param {String} msg 状态信息
- * @param {Number} code 状态码
- */
- export function responseError(data = {}, msg = '请求失败', code = 500) {
- return response(data, msg, code);
- }
- /**
- * @description 记录和显示错误
- * @param {Error} error 错误对象
- */
- export function errorLog(error: any, notification = true) {
- // 打印到控制台
- console.error(error);
- // 显示提示
- if (notification) {
- uiContext.get().notification.error({ message: error.message });
- }
- }
- /**
- * @description 创建一个错误
- * @param {String} msg 错误信息
- */
- export function errorCreate(msg: any, notification = true) {
- const error = new Error(msg);
- errorLog(error, notification);
- // throw error;
- }
- /**
- * @description base64转file
- * @param {String} base64 base64字符串
- * @param {String} fileName 文件名
- */
- export function base64ToFile(base64: any, fileName: string) {
- // 将base64按照 , 进行分割 将前缀 与后续内容分隔开
- let data = base64.split(',');
- // 利用正则表达式 从前缀中获取图片的类型信息(image/png、image/jpeg、image/webp等)
- let type = data[0].match(/:(.*?);/)[1];
- // 从图片的类型信息中 获取具体的文件格式后缀(png、jpeg、webp)
- let suffix = type.split('/')[1];
- // 使用atob()对base64数据进行解码 结果是一个文件数据流 以字符串的格式输出
- const bstr = window.atob(data[1]);
- // 获取解码结果字符串的长度
- let n = bstr.length;
- // 根据解码结果字符串的长度创建一个等长的整形数字数组
- // 但在创建时 所有元素初始值都为 0
- const u8arr = new Uint8Array(n);
- // 将整形数组的每个元素填充为解码结果字符串对应位置字符的UTF-16 编码单元
- while (n--) {
- // charCodeAt():获取给定索引处字符对应的 UTF-16 代码单元
- u8arr[n] = bstr.charCodeAt(n);
- }
- // 利用构造函数创建File文件对象
- // new File(bits, name, options)
- const file = new File([u8arr], `${fileName}.${suffix}`, {
- type: type,
- });
- // 将File文件对象返回给方法的调用者
- return file;
- }
|