bonus-material-app/src/utils/bnsBase.js

61 lines
1.8 KiB
JavaScript

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))
}
}