mirror of
https://github.com/huge-dream/django-vue3-admin.git
synced 2026-09-27 06:41:10 +00:00
102 lines
3.0 KiB
TypeScript
102 lines
3.0 KiB
TypeScript
/**
|
||
* @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;
|
||
}
|