asset.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. import request, { tenantRequest } from '@/utils/request'
  2. import { State } from '@/constant'
  3. import {
  4. getAssetThumb,
  5. getAssetDiff
  6. } from '@/utils'
  7. import {
  8. send,
  9. add,
  10. del,
  11. update,
  12. submit,
  13. resolve,
  14. messageSend,
  15. confirmAndSend,
  16. addStatus,
  17. addTenant
  18. } from './base'
  19. export function addAsset (data) {
  20. return add({
  21. url: '/minio-data',
  22. method: 'POST',
  23. data: addTenant(data)
  24. }, tenantRequest)
  25. }
  26. export function getAsset (keyName) {
  27. return send({
  28. url: '/minio-data/queryById',
  29. method: 'GET',
  30. params: { keyName }
  31. })
  32. }
  33. export function getAssetsByQuery (query) {
  34. const { pageNum: currentPage, pageSize: pageCount, type, ...params } = query
  35. return request({
  36. url: '/minio-data/listByPage',
  37. method: 'POST',
  38. data: addStatus({
  39. currentPage,
  40. pageCount,
  41. typeList: type ? [type] : void 0,
  42. ...params
  43. })
  44. }).then(({ data, totalCount }) => {
  45. data.forEach(asset => {
  46. if (asset.status !== State.DRAFT) {
  47. const tag = asset.tag
  48. asset.file = {
  49. type: asset.type,
  50. url: asset.keyName,
  51. thumb: getAssetThumb(asset),
  52. files: asset.childrenData?.length
  53. ? asset.childrenData.map(({ type, keyName, size, md5, sort }) => {
  54. // 仅会为图片
  55. return { tag, type, keyName, size, md5, sort }
  56. })
  57. : null
  58. }
  59. }
  60. asset.diff = getAssetDiff(asset)
  61. })
  62. return { data, totalCount }
  63. })
  64. }
  65. export function updateAsset (data) {
  66. return update({
  67. url: '/minio-data/update',
  68. method: 'POST',
  69. data
  70. })
  71. }
  72. export function deleteAsset ({ keyName, originalName }) {
  73. return del({
  74. url: '/minio-data/delete',
  75. method: 'DELETE',
  76. params: { keyName }
  77. }, originalName)
  78. }
  79. export function deleteAssets (keyNames) {
  80. return del({
  81. url: '/minio-data/batchDelete',
  82. method: 'POST',
  83. data: keyNames
  84. }, '所选资源')
  85. }
  86. export function getAssetUrl (keyName) {
  87. return `${process.env.VUE_APP_MINIO}/${keyName}`
  88. }
  89. const LIMIT_SIZE = 1024 * 1024
  90. export function getThumbnailUrl (item, option) {
  91. let url
  92. if (item && typeof item === 'object') {
  93. const { size, keyName } = item
  94. if (size <= LIMIT_SIZE) {
  95. return getAssetUrl(keyName)
  96. }
  97. url = getAssetUrl(keyName)
  98. option = getImageProxyOption(option, size)
  99. } else {
  100. url = getAssetUrl(item)
  101. option = getImageProxyOption(option)
  102. }
  103. if (url.charAt(0) === '/') {
  104. url = `${process.env.VUE_APP_THUMBNAIL_ORIGIN || location.origin}${url}`
  105. }
  106. return `${process.env.VUE_APP_THUMBNAIL}/${option}/${url}`
  107. }
  108. function getImageProxyOption (option, size) {
  109. switch (option) {
  110. case 'size':
  111. return size ? `q${Math.ceil(LIMIT_SIZE * 100 / size)}` : 'q60'
  112. default:
  113. return option || 'x0.2,q30'
  114. }
  115. }
  116. export function submitAsset ({ keyName, originalName }) {
  117. return submit({
  118. url: '/minio-data/submit',
  119. method: 'GET',
  120. params: { keyName }
  121. }, originalName)
  122. }
  123. export function resolveAsset ({ keyName, originalName }) {
  124. return resolve({
  125. url: '/minio-data/reviewed',
  126. method: 'GET',
  127. params: { keyName }
  128. }, originalName)
  129. }
  130. export function rejectAsset ({ keyName }, remark) {
  131. return messageSend({
  132. url: '/minio-data/reject',
  133. method: 'POST',
  134. data: { keyName, remark }
  135. }, '驳回')
  136. }
  137. export function getAssetSubTags () {
  138. return tenantRequest({
  139. url: '/minio-data/subtag/queryList',
  140. method: 'GET',
  141. params: addTenant({})
  142. })
  143. }
  144. export function getAssetSubTagsByTenant (query) {
  145. const { pageNum: pageIndex, pageSize, ...params } = query
  146. return tenantRequest({
  147. url: '/minio-data/subtag/queryListPage',
  148. method: 'GET',
  149. params: addTenant({
  150. pageIndex, pageSize,
  151. ...params
  152. })
  153. })
  154. }
  155. export function addAssetSubTag (data) {
  156. return add({
  157. url: '/minio-data/subtag/add',
  158. method: 'POST',
  159. data: addTenant(data)
  160. }, tenantRequest)
  161. }
  162. export function updateAssetSubTag (data) {
  163. return update({
  164. url: '/minio-data/subtag/modify',
  165. method: 'PUT',
  166. data
  167. })
  168. }
  169. export function deleteAssetSubTag ({ id, name }) {
  170. return del({
  171. url: '/minio-data/subtag/delBatchByIds',
  172. method: 'POST',
  173. data: [id]
  174. }, name)
  175. }
  176. export function deleteAssetSubTags (ids) {
  177. return del({
  178. url: '/minio-data/subtag/delBatchByIds',
  179. method: 'POST',
  180. data: ids
  181. }, '所选标签')
  182. }
  183. export function getDatasets (query) {
  184. const { pageNum: pageIndex, pageSize, ...params } = query
  185. return tenantRequest({
  186. url: '/media/dataset/pageQuery',
  187. method: 'GET',
  188. params: addTenant({
  189. pageIndex, pageSize,
  190. ...params
  191. })
  192. })
  193. }
  194. export function addDataset (data) {
  195. return add({
  196. url: '/media/dataset',
  197. method: 'POST',
  198. data: addTenant(data)
  199. }, tenantRequest)
  200. }
  201. export function updateDataset (data) {
  202. return update({
  203. url: '/media/dataset',
  204. method: 'PUT',
  205. data
  206. })
  207. }
  208. export function getFillDataset (id) {
  209. return request({
  210. url: `/media/dataset/${id}`,
  211. params: {
  212. type: 0,
  213. flag: 1
  214. }
  215. })
  216. }
  217. export function getCommonDataset (id) {
  218. return request({
  219. url: '/media/dataset/order',
  220. params: {
  221. id,
  222. flag: 1
  223. }
  224. })
  225. }
  226. export function deleteDataset ({ id, name }) {
  227. return del({
  228. url: `/media/dataset/${id}`,
  229. method: 'DELETE'
  230. }, name)
  231. }
  232. export function bindAssetsToDataset (datasetId, assets) {
  233. return messageSend({
  234. url: '/media/dataset/batchBindAsset',
  235. method: 'POST',
  236. data: assets.map(item => {
  237. return {
  238. datasetId,
  239. ...item
  240. }
  241. })
  242. }, '添加')
  243. }
  244. export function updateDatasetAssets (datasetId, assets) {
  245. return update({
  246. url: '/media/dataset/orderBindAsset',
  247. method: 'POST',
  248. data: {
  249. id: datasetId,
  250. relationList: assets
  251. }
  252. })
  253. }
  254. export function getDevicesByDataset (query) {
  255. const { pageNum: pageIndex, pageSize, ...params } = query
  256. return request({
  257. url: '/media/dataset/pageQueryDevice',
  258. method: 'GET',
  259. params: {
  260. pageIndex, pageSize,
  261. ...params
  262. }
  263. })
  264. }
  265. export function getDatasetByDevice (id) {
  266. return request({
  267. url: `/media/dataset/${id}`,
  268. params: {
  269. type: 1,
  270. flag: 1
  271. }
  272. })
  273. }
  274. export function bindDatasetToDevice (data) {
  275. return messageSend({
  276. url: '/media/dataset/bindDevice',
  277. method: 'POST',
  278. data
  279. }, '绑定')
  280. }
  281. export function unbindDatasetByDevice ({ id, name }) {
  282. return confirmAndSend('解绑', name, {
  283. url: '/media/dataset/batchUnbindDevice',
  284. method: 'POST',
  285. data: [id]
  286. })
  287. }
  288. export function unbindDatasetByDevices (ids) {
  289. return confirmAndSend('解绑', '所选设备', {
  290. url: '/media/dataset/batchUnbindDevice',
  291. method: 'POST',
  292. data: ids
  293. })
  294. }
  295. export function unbindAssetsFromDataset (datasetId, keyNames) {
  296. return messageSend({
  297. url: `/media/dataset/batchUnbindAsset/${datasetId}`,
  298. method: 'POST',
  299. data: keyNames
  300. }, '移除')
  301. }
  302. export function updateDatasetAssetDuration (relationId, adDuration) {
  303. return update({
  304. url: '/media/dataset/assetChangDuration',
  305. method: 'POST',
  306. data: {
  307. relationId,
  308. adDuration
  309. }
  310. })
  311. }