import { decryptWithSM4 } from './sm' const generateRandomString = (length) => { const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('') } export const uploadImgSignUrl = (file) => { return new Promise((resolve, reject) => { uni.request({ url: '/file/uploadBase64', method: 'POST', data: { base64File: file, fileName: `${generateRandomString(10)}_${Date.now()}.png`, fileType: 'image/png', }, success: (uploadRes) => { try { let result if (typeof uploadRes.data === 'string') { result = JSON.parse(decryptWithSM4(uploadRes.data)) } else { result = uploadRes.data } if (result.code === 200) { uni.showToast({ title: '上传成功', icon: 'none' }) resolve({ name: result.data.name, url: result.data.url, }) } else { uni.showToast({ title: '上传失败', icon: 'none' }) reject(new Error(result.message || '上传失败')) } } catch (e) { console.error('处理返回数据出错', e) uni.showToast({ title: '上传失败', icon: 'none' }) reject(e) } }, fail: (err) => { console.error('上传失败', err) uni.showToast({ title: '上传失败', icon: 'none' }) reject(err) }, }) }) } export const formatDiff = (...nums) => { let result = nums.reduce((acc, cur) => acc - cur) if (Number.isInteger(result)) { return result // 整数直接返回 } else { // 保留 3 位小数,但去掉多余的 0 return parseFloat(result.toFixed(3)) } }