asset.js 7.1 KB

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