【前端】智能库房综合管理系统前端项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.4 KiB

  1. export function Now() {
  2. return window.performance
  3. ? window.performance.now() / 1000
  4. : Date.now() / 1000
  5. }
  6. export function Fill(array, value) {
  7. if (array.fill) {
  8. array.fill(value)
  9. } else {
  10. for (let i = 0; i < array.length; i++) {
  11. array[i] = value
  12. }
  13. }
  14. }
  15. export function Base64ToArrayBuffer(base64) {
  16. const binary = window.atob(base64)
  17. const length = binary.length
  18. const bytes = new Uint8Array(length)
  19. for (let i = 0; i < length; i++) {
  20. bytes[i] = binary.charCodeAt(i)
  21. }
  22. return bytes.buffer
  23. }
  24. /**
  25. *
  26. * @param {object} param
  27. * @param {string|object|Array} param.data 数据传入后url参数将被忽略
  28. * @param {string} param.url 文件下载地址
  29. * @param {string} param.name 文件名称
  30. * @param {string} param.mimeType 文件mime类型
  31. * @returns
  32. */
  33. export function download(blob, name = 'JSMpeg_' + Date.now(), mimeType = '') {
  34. if (!blob) return
  35. const a = document.createElement('a')
  36. a.style.display = 'none'
  37. a.download = name
  38. if (typeof blob === 'string') {
  39. a.href = blob
  40. } else {
  41. blob =
  42. blob instanceof Blob
  43. ? blob
  44. : new Blob(blob instanceof Array ? blob : [blob], {
  45. type: mimeType
  46. })
  47. a.href = URL.createObjectURL(blob)
  48. }
  49. setTimeout(() => {
  50. a.click()
  51. }, 0)
  52. setTimeout(() => {
  53. a.remove()
  54. }, 1)
  55. if (blob instanceof Blob) {
  56. setTimeout(() => {
  57. URL.revokeObjectURL(blob)
  58. }, 1000)
  59. }
  60. }