|
|
@@ -24,23 +24,31 @@
|
|
|
/>
|
|
|
</div>
|
|
|
</confirm-dialog>
|
|
|
- <table-dialog
|
|
|
+ <c-dialog
|
|
|
ref="assetDialog"
|
|
|
title="上播内容"
|
|
|
- :schema="assetSchema"
|
|
|
- />
|
|
|
- <selection-table-dialog
|
|
|
- ref="assetTableDialog"
|
|
|
- title="上播内容选择"
|
|
|
- message="请选择上播内容"
|
|
|
- :schema="assetTableSchema"
|
|
|
- @confirm="onChoosenAsset"
|
|
|
- />
|
|
|
+ size="xl fixed"
|
|
|
+ >
|
|
|
+ <c-transfer
|
|
|
+ class="l-flex__auto"
|
|
|
+ :source-schema="assetTableSchema"
|
|
|
+ :selectable="assetSelectable"
|
|
|
+ :add="onAddAssets"
|
|
|
+ @changed="onAssetChanged"
|
|
|
+ >
|
|
|
+ <schema-table
|
|
|
+ ref="assetContentTable"
|
|
|
+ :schema="assetSchema"
|
|
|
+ @row-click="onAssetRowClick"
|
|
|
+ @selection-change="onAssetSelectionChange"
|
|
|
+ />
|
|
|
+ </c-transfer>
|
|
|
+ </c-dialog>
|
|
|
<table-dialog
|
|
|
ref="deviceDialog"
|
|
|
title="关联的设备"
|
|
|
:schema="deviceSchema"
|
|
|
- @row-click="onToggleSelection"
|
|
|
+ @row-click="onRowClick"
|
|
|
@selection-change="onSelectionChange"
|
|
|
/>
|
|
|
<radio-table-dialog
|
|
|
@@ -59,7 +67,8 @@
|
|
|
import {
|
|
|
AssetTagInfo,
|
|
|
AssetType,
|
|
|
- AssetTypeInfo
|
|
|
+ AssetTypeInfo,
|
|
|
+ Dataset
|
|
|
} from '@/constant'
|
|
|
import {
|
|
|
parseDuration,
|
|
|
@@ -71,7 +80,7 @@ import {
|
|
|
getDatasets,
|
|
|
addDataset,
|
|
|
updateDataset,
|
|
|
- getDataset,
|
|
|
+ getFillDataset,
|
|
|
deleteDataset,
|
|
|
bindAssetsToDataset,
|
|
|
unbindAssetsFromDataset,
|
|
|
@@ -80,19 +89,23 @@ import {
|
|
|
bindDatasetToDevice,
|
|
|
unbindDatasetByDevices,
|
|
|
unbindDatasetByDevice
|
|
|
-} from './api'
|
|
|
+} from '@/api/asset'
|
|
|
import { assetPublicTableMixin } from '@/mixins/asset-table'
|
|
|
|
|
|
export default {
|
|
|
- name: 'DatasetTenant',
|
|
|
+ name: 'DatasetFill',
|
|
|
mixins: [assetPublicTableMixin],
|
|
|
data () {
|
|
|
return {
|
|
|
schema: {
|
|
|
+ list: getDatasets,
|
|
|
+ condition: { type: Dataset.FILL },
|
|
|
buttons: [
|
|
|
{ type: 'add', on: this.onAdd }
|
|
|
],
|
|
|
- list: getDatasets,
|
|
|
+ filters: [
|
|
|
+ { key: 'name', type: 'search', placeholder: '名称' }
|
|
|
+ ],
|
|
|
cols: [
|
|
|
{ prop: 'name', label: '名称', render: (data, h) => h('edit-input', {
|
|
|
props: {
|
|
|
@@ -100,12 +113,6 @@ export default {
|
|
|
},
|
|
|
on: { edit: val => this.onEditName(data, val) }
|
|
|
}), 'class-name': 'c-edit-column' },
|
|
|
- // { label: '使用情况', type: 'tag', render: ({ delFlag }) => {
|
|
|
- // return {
|
|
|
- // type: ['primary', 'success'][delFlag],
|
|
|
- // label: ['暂未使用', '已使用'][delFlag]
|
|
|
- // }
|
|
|
- // }, align: 'center' },
|
|
|
{ type: 'invoke', render: [
|
|
|
{ label: '上播内容', on: this.onEdit },
|
|
|
{ label: '关联设备', on: this.onViewDevices },
|
|
|
@@ -118,9 +125,10 @@ export default {
|
|
|
list: this.getAssetsByDataset,
|
|
|
transform: this.transformDatasetAsset,
|
|
|
buttons: [
|
|
|
- { type: 'add', on: this.onAddAsset }
|
|
|
+ { type: 'del', label: '移除', on: this.onDelAssets }
|
|
|
],
|
|
|
cols: [
|
|
|
+ { type: 'selection' },
|
|
|
{ prop: 'tagInfo', label: '类型', align: 'center', width: 80 },
|
|
|
{ prop: 'typeName', label: '文件', align: 'center', width: 80 },
|
|
|
{ prop: 'file', label: '', type: 'asset', on: this.onViewAsset },
|
|
|
@@ -168,7 +176,8 @@ export default {
|
|
|
{ prop: 'address', label: '地址' }
|
|
|
]
|
|
|
},
|
|
|
- dataset: {}
|
|
|
+ dataset: {},
|
|
|
+ assetMap: null
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
@@ -185,10 +194,13 @@ export default {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
- addDataset({ name }).then(({ data }) => {
|
|
|
+ addDataset({
|
|
|
+ type: Dataset.FILL,
|
|
|
+ name
|
|
|
+ }).then(({ data }) => {
|
|
|
done()
|
|
|
this.onEdit({ id: data })
|
|
|
- this.$refs.table.pageTo(1)
|
|
|
+ this.$refs.table.resetCondition({ name })
|
|
|
})
|
|
|
},
|
|
|
onEditName (dataset, { newVal, oldVal }) {
|
|
|
@@ -215,28 +227,35 @@ export default {
|
|
|
this.$refs.assetDialog.show()
|
|
|
},
|
|
|
getAssetsByDataset () {
|
|
|
- return getDataset(this.$datasetId).then(({ data: { mediaList } }) => {
|
|
|
+ this.assetMap = null
|
|
|
+ this.$selectionItems = null
|
|
|
+ return getFillDataset(this.$datasetId).then(({ data: { mediaList } }) => {
|
|
|
+ const map = {}
|
|
|
+ mediaList.forEach(({ keyName }) => {
|
|
|
+ map[keyName] = true
|
|
|
+ })
|
|
|
+ this.assetMap = map
|
|
|
return {
|
|
|
data: mediaList
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ assetSelectable ({ keyName }) {
|
|
|
+ return this.assetMap ? !this.assetMap[keyName] : false
|
|
|
+ },
|
|
|
transformDatasetAsset (asset) {
|
|
|
asset.tagInfo = AssetTagInfo[asset.tag]
|
|
|
asset.typeName = AssetTypeInfo[asset.type]
|
|
|
asset.file = {
|
|
|
type: asset.type,
|
|
|
url: asset.keyName,
|
|
|
- thumb: getAssetThumb(asset.minioData)
|
|
|
+ thumb: asset.minioData ? getAssetThumb(asset.minioData) : null
|
|
|
}
|
|
|
asset.name = asset.minioData.originalName
|
|
|
return asset
|
|
|
},
|
|
|
- onAddAsset () {
|
|
|
- this.$refs.assetTableDialog.show()
|
|
|
- },
|
|
|
- onChoosenAsset ({ value, done }) {
|
|
|
- bindAssetsToDataset(this.$datasetId, value.map(asset => {
|
|
|
+ onAddAssets (value) {
|
|
|
+ return bindAssetsToDataset(this.$datasetId, value.map(asset => {
|
|
|
const { tag, type, keyName } = asset
|
|
|
return {
|
|
|
tag,
|
|
|
@@ -244,10 +263,10 @@ export default {
|
|
|
keyName,
|
|
|
adDuration: getAssetDuration(asset)
|
|
|
}
|
|
|
- })).then(() => {
|
|
|
- done()
|
|
|
- this.$refs.assetDialog.getTable().pageTo()
|
|
|
- })
|
|
|
+ }))
|
|
|
+ },
|
|
|
+ onAssetChanged () {
|
|
|
+ this.$refs.assetContentTable.pageTo()
|
|
|
},
|
|
|
onEditAssetDuration (asset, { newVal, oldVal }) {
|
|
|
if (!newVal || !/^\d+$/.test(newVal) || Number(newVal) < 1) {
|
|
|
@@ -260,10 +279,29 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
+ onAssetRowClick (row) {
|
|
|
+ this.$refs.assetContentTable.getInst().toggleRowSelection(row)
|
|
|
+ },
|
|
|
+ onAssetSelectionChange (val) {
|
|
|
+ this.$selectionItems = val
|
|
|
+ },
|
|
|
+ onDelAssets () {
|
|
|
+ if (this.$selectionItems?.length) {
|
|
|
+ this.$confirm(
|
|
|
+ '移除所选素材?',
|
|
|
+ '操作确认',
|
|
|
+ { type: 'warning' }
|
|
|
+ ).then(() => unbindAssetsFromDataset(this.$datasetId, this.$selectionItems.map(({ keyName }) => keyName)))
|
|
|
+ .then(this.onAssetChanged)
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择需移除的素材'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
onDelAsset ({ keyName }) {
|
|
|
- unbindAssetsFromDataset(this.$datasetId, [keyName]).then(() => {
|
|
|
- this.$refs.assetDialog.getTable().pageTo()
|
|
|
- })
|
|
|
+ unbindAssetsFromDataset(this.$datasetId, [keyName]).then(this.onAssetChanged)
|
|
|
},
|
|
|
onViewDevices ({ id }) {
|
|
|
this.$datasetId = id
|
|
|
@@ -293,7 +331,7 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
- onToggleSelection (row) {
|
|
|
+ onRowClick (row) {
|
|
|
this.$refs.table.getInst().toggleRowSelection(row)
|
|
|
},
|
|
|
onSelectionChange (val) {
|