61 lines
1.8 KiB
JavaScript
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))
|
|
}
|
|
} |