asset.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import { tenantRequest } from '@/utils/request'
  2. import {
  3. update,
  4. del,
  5. submit,
  6. resolve,
  7. reject,
  8. addStatusScope,
  9. canDel
  10. } from './base'
  11. import { AssetType } from '@/constant'
  12. export function getAssets (query) {
  13. const { pageNum: currentPage, pageSize: pageCount, ...params } = query
  14. return tenantRequest({
  15. url: '/minio-data/listByPage',
  16. method: 'POST',
  17. data: addStatusScope({
  18. currentPage, pageCount,
  19. ...params
  20. })
  21. }).then(({ data, totalCount }) => {
  22. data.forEach(asset => {
  23. if (asset.type === AssetType.IMAGE) {
  24. asset.thumbnail = asset.keyName
  25. } else if (asset.type === AssetType.VIDEO && asset.screenshot !== 'analyzing') {
  26. asset.thumbnail = asset.screenshot
  27. }
  28. })
  29. return { data, totalCount }
  30. })
  31. }
  32. export function getAssetsWithDel (query) {
  33. return getAssets(query).then(({ data, totalCount }) => {
  34. data.forEach(asset => {
  35. asset.del = canDel(asset)
  36. })
  37. return { data, totalCount }
  38. })
  39. }
  40. export function updateAsset (data) {
  41. return update({
  42. url: '/minio-data/update',
  43. method: 'POST',
  44. data
  45. })
  46. }
  47. export function deleteAsset ({ keyName, originalName }) {
  48. return del({
  49. url: '/minio-data/delete',
  50. method: 'DELETE',
  51. params: { keyName }
  52. }, originalName)
  53. }
  54. export function getAssetUrl (keyName) {
  55. return `${process.env.VUE_APP_MINIO}/${keyName}`
  56. }
  57. const LIMIT_SIZE = 1024 * 1024
  58. export function getThumbnailUrl (item, option) {
  59. let url
  60. if (item && typeof item === 'object') {
  61. const { size, keyName } = item
  62. if (size <= LIMIT_SIZE) {
  63. return getAssetUrl(keyName)
  64. }
  65. url = getAssetUrl(keyName)
  66. option = getImageProxyOption(option, size)
  67. } else {
  68. url = getAssetUrl(item)
  69. option = getImageProxyOption(option)
  70. }
  71. if (url.charAt(0) === '/') {
  72. url = `${location.origin}${url}`
  73. }
  74. return `${process.env.VUE_APP_THUMBNAIL}/${option}/${url}`
  75. }
  76. function getImageProxyOption (option, size) {
  77. switch (option) {
  78. case 'size':
  79. return size ? `q${Math.ceil(LIMIT_SIZE * 100 / size)}` : 'q60'
  80. default:
  81. return option || 'x0.2,q30'
  82. }
  83. }
  84. export function submitAsset ({ keyName, originalName }) {
  85. return submit({
  86. url: '/minio-data/submit',
  87. method: 'GET',
  88. params: { keyName }
  89. }, originalName)
  90. }
  91. export function resolveAsset ({ keyName, originalName }) {
  92. return resolve({
  93. url: '/minio-data/reviewed',
  94. method: 'GET',
  95. params: { keyName }
  96. }, originalName)
  97. }
  98. export function rejectAsset ({ keyName, originalName }, reason) {
  99. return reject({
  100. url: '/minio-data/reject',
  101. method: 'GET',
  102. params: { keyName },
  103. data: { reason }
  104. }, originalName)
  105. }