import customMessage from './message'; //将enum转换为{label:"",value:""}形式 function enumToSelect(data: any) { const keys = Object.keys(data); return keys.map((value) => { return { label: data[value], value: value }; }); } //将枚举的value值转换为label function enumValueToLabel(value: any, enumObj: any) { if (enumObj !== undefined) { return enumObj[value]; } return ''; } //从缓存中获取用户信息 function getUserInfo() { let userInfoString = localStorage.getItem('userInfo'); if (userInfoString === null) { return {}; } return JSON.parse(userInfoString); } //将状态枚举值转换为ProTable的enumValue格式 function enumToProTableEnumValue(enumConstants: any) { const result = {}; for (const key in enumConstants) { if (enumConstants.hasOwnProperty(key)) { result[key] = { text: enumConstants[key], status: enumValueToLabel(key, enumConstants), }; } } return result; } function formatDateTime(inputDateTime: string) { const parsedDateTime = new Date(inputDateTime); const year = parsedDateTime.getFullYear(); const month = String(parsedDateTime.getMonth() + 1).padStart(2, '0'); const day = String(parsedDateTime.getDate()).padStart(2, '0'); const hour = String(parsedDateTime.getHours()).padStart(2, '0'); const minute = String(parsedDateTime.getMinutes()).padStart(2, '0'); const second = String(parsedDateTime.getSeconds()).padStart(2, '0'); const formattedDateTime = `${year}-${month}-${day} ${hour}:${minute}:${second}`; return formattedDateTime; } function formatdate(inputDateTime: string) { const parsedDateTime = new Date(inputDateTime); const year = parsedDateTime.getFullYear(); const month = String(parsedDateTime.getMonth() + 1).padStart(2, '0'); const day = String(parsedDateTime.getDate()).padStart(2, '0'); const formattedDate = `${year}-${month}-${day}`; return formattedDate; } function formatSalesCode(salesCode: any) { console.log('in'); let newSalesCode = salesCode; if (newSalesCode.indexOf('_')) { newSalesCode = newSalesCode.split('_'); if (newSalesCode?.length === 2) { newSalesCode = newSalesCode[1] + '(' + newSalesCode[0] + ')'; } } return newSalesCode; } // 将二进制流的字符串转换成 Blob 对象 function dataURItoBlob(dataURI: any) { const byteString = atob(dataURI.split(',')[1]); const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; const ab = new ArrayBuffer(byteString.length); const ia = new Uint8Array(ab); for (let i = 0; i < byteString.length; i++) { ia[i] = byteString.charCodeAt(i); } return new Blob([ab], { type: mimeString }); } // 将 Blob 对象转换成 File 对象 function blobToFile(blob: any, fileName: any) { return new File([blob], fileName, { type: blob.type }); } function appendFormData(formData: any, data: any, parentKey = null) { for (const key in data) { if (data.hasOwnProperty(key)) { const value = data[key]; const formKey = parentKey ? `${parentKey}[${key}]` : key; if (Array.isArray(value)) { // 处理数组 value.forEach((item, index) => { const arrayKey = `${formKey}[${index}]`; if (typeof item === 'object' && !Array.isArray(item)) { // 递归处理对象 appendFormData(formData, item, arrayKey); } else { // 直接添加到 FormData formData.append(arrayKey, item); } }); } else if (typeof value === 'object' && !Array.isArray(value)) { // 递归处理对象 appendFormData(formData, value, formKey); } else { // 直接添加到 FormData formData.append(formKey, value); } } } } function getAliYunOSSFileNameFromUrl(url: string) { try { // 使用URL对象解析链接 let urlObject = new URL(url); // 从路径中获取最后一个斜杠后的部分,即文件名 let pathParts = urlObject.pathname.split('/'); let fileName = pathParts[pathParts.length - 1]; // 检查文件名是否包含至少一个点(.)以确保是一个合法的文件名 if (fileName.includes('.')) { return fileName; } else { throw new Error('Invalid file name in the URL'); } } catch (error: any) { // 如果解析失败或文件名不符合预期,返回原始链接 console.error('Error extracting file name:', error.message); return url; } } export { appendFormData, blobToFile, customMessage, dataURItoBlob, enumToProTableEnumValue, enumToSelect, enumValueToLabel, formatDateTime, formatSalesCode, formatdate, getAliYunOSSFileNameFromUrl, getUserInfo, };