5 changed files with 84 additions and 270 deletions
-
210src/views/components/MaterialCompontentList.vue
-
5src/views/components/MyAlbum.vue
-
118src/views/content/material/materialList/index.vue
-
11src/views/dashboard/HomeThemeGallery.vue
-
10src/views/immediateRelease/index.vue
@ -1,210 +0,0 @@ |
|||
<template> |
|||
<div ref="materialContent" class="material_content"> |
|||
<div v-if="isToFolder" class="material_item cont_upload"> |
|||
<el-button class="return_btn" round type="primary" @click="returnFolder">返回</el-button> |
|||
</div> |
|||
<!-- 文件夹list --> |
|||
<div v-for="(item,index) in materialFolders" :key="item.id" :class="['material_item', 'folder']" @dblclick="floderDbClick(item,index)"> |
|||
<div class="icon_bg"> |
|||
<svg v-if="!item.imgPath" class="font-icon icon" aria-hidden="true"> |
|||
<use xlink:href="#icon-wenjianjia" /> |
|||
</svg> |
|||
<img v-else :src="item.imgPath" /> |
|||
</div> |
|||
<p class="file_name">{{ item.name }}</p> |
|||
</div> |
|||
<div v-for="(item, index) in materialList" :key="'list-'+index" :class="['material_item', 'item_cont', { 'item_multi': selectedListId.includes(item.material_id) }]"> |
|||
<img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt /> |
|||
<div v-if="!item.img_path && item.material_type == 2" class="radio_img"></div> |
|||
<div class="item_format"> |
|||
<span class="item_type">{{ item.deposit_url | getFileFormat }}</span> |
|||
<span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span> |
|||
</div> |
|||
<div class="file_name">{{ item.material_name }}</div> |
|||
<span v-if="isMultiSelected" class="checked_btn" @click="checkedItem(item)"></span> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { getMaterialList } from '@/api/material/material' |
|||
import { getSeconds, getFileFormat } from '@/utils/index.js' |
|||
export default { |
|||
name: 'MaterialList', |
|||
components: {}, |
|||
filters: { |
|||
getSeconds(s) { |
|||
return getSeconds(s) |
|||
}, |
|||
getFileFormat(str) { |
|||
return getFileFormat(str) |
|||
} |
|||
}, |
|||
props: { |
|||
isMultiSelected: { |
|||
type: Boolean, |
|||
required: true |
|||
}, |
|||
activeItemIndex: { |
|||
type: Number, |
|||
required: true |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
orga_id: '133221333123111', // 机构ID |
|||
rootFolderId: null, // 根目录文件夹ID |
|||
thisFoldId: null, // 当前父文件夹ID |
|||
materialFolders: [], // 文件夹list |
|||
materialList: [], // 素材库list |
|||
materialType: null, |
|||
materialTypeNot: null, |
|||
selectedMaterial: [], // 素材选中 |
|||
selectedListId: [], // 素材选中的material_id |
|||
selectinFolderid: [], // 素材选中的和文件关联表id -- in_folder_id |
|||
isToFolder: false, // 是否进入文件夹 |
|||
isReturn: false, // 是否返回父级文件夹 |
|||
currentFolderId: null // 当前进入文件夹的ID |
|||
} |
|||
}, |
|||
computed: { |
|||
changePlaceholder() { |
|||
return this.publishType === 0 ? '即时发布 2022-01-01' : '定时发布 2022-01-01' |
|||
}, |
|||
defaultImg() { |
|||
return 'this.src="' + require('@/assets/images/menu_bg_02.png') + '"' |
|||
} |
|||
}, |
|||
watch: { |
|||
isMultiSelected(newName, oldName) { |
|||
if (newName === false) { |
|||
this.selectedListId = [] |
|||
} |
|||
}, |
|||
activeItemIndex(val) { |
|||
console.log(val) |
|||
if (val == 0) { |
|||
this.materialType = null |
|||
this.materialTypeNot = 2 |
|||
} else { |
|||
this.materialType = val - 1 |
|||
} |
|||
this.getMaterialList() |
|||
} |
|||
}, |
|||
mounted() { |
|||
this.materialTypeNot = 2 |
|||
this.getMaterialList() |
|||
}, |
|||
methods: { |
|||
// 获取素材库list |
|||
getMaterialList() { |
|||
this.materialFolders = [] |
|||
this.materialList = [] |
|||
let params |
|||
if (this.isToFolder) { |
|||
let folder_id |
|||
if (this.isReturn) { |
|||
folder_id = this.rootFolderId |
|||
} else { |
|||
this.currentFolderId = localStorage.getItem('currentFolderId') |
|||
folder_id = this.currentFolderId |
|||
} |
|||
params = { |
|||
'folder_id': folder_id, |
|||
'material_name': null, |
|||
'material_type': this.materialType, |
|||
'material_type_not': this.materialTypeNot, |
|||
'orga_id': this.orga_id |
|||
} |
|||
} else { |
|||
console.log('文件夹外') |
|||
localStorage.removeItem('currentFolderId') |
|||
params = { |
|||
'folder_id': null, |
|||
'material_name': null, |
|||
'material_type': this.materialType, |
|||
'material_type_not': this.materialTypeNot, |
|||
'orga_id': this.orga_id |
|||
} |
|||
} |
|||
getMaterialList(params).then(res => { |
|||
if (res.code == 200) { |
|||
if (!this.isToFolder) { |
|||
localStorage.setItem('rootFolderId', res.data.thisFoldId) |
|||
} |
|||
this.materialFolders = res.data.materialFolders |
|||
this.materialList = res.data.pageThemeVO |
|||
// 创建文件夹获取data |
|||
this.thisFoldId = res.data.thisFoldId |
|||
} else { |
|||
this.$message({ |
|||
message: res.msg, |
|||
type: 'error' |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
returnFolder() { |
|||
this.isReturn = false |
|||
this.isToFolder = false |
|||
this.rootFolderId = localStorage.getItem('rootFolderId') |
|||
this.getMaterialList() |
|||
}, |
|||
// 文件夹双击操作 |
|||
floderDbClick(item, index) { |
|||
this.isToFolder = true |
|||
this.currentFolderId = item.id |
|||
localStorage.setItem('currentFolderId', this.currentFolderId) |
|||
this.getMaterialList() |
|||
this.selectedListId = [] |
|||
}, |
|||
// 素材 - 多选 |
|||
checkedItem(item) { |
|||
const id = item.material_id |
|||
const inFolderId = item.in_folder_id |
|||
const type = item.material_type |
|||
const arr = this.selectedListId |
|||
if (arr.includes(id)) { |
|||
const index = arr.indexOf(id) |
|||
if (index > -1) { |
|||
arr.splice(index, 1) |
|||
this.selectinFolderid.splice(index, 1) |
|||
this.selectedMaterial.splice(index, 1) |
|||
} |
|||
} else { |
|||
this.selectedListId.push(id) |
|||
this.selectinFolderid.push(inFolderId) |
|||
this.selectedMaterial.push(item) |
|||
this.formatType = type |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.material_content { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
.material_item { |
|||
position: relative; |
|||
width: 174px; |
|||
height: 182px; |
|||
border-radius: 4px; |
|||
margin: 0 20px 20px 0; |
|||
overflow: hidden; |
|||
} |
|||
.item_cont { |
|||
border-color: #dcdde3; |
|||
img { |
|||
width: 100%; |
|||
height: 148px; |
|||
} |
|||
.radio_img { |
|||
width: 100%; |
|||
height: 148px; |
|||
} |
|||
} |
|||
} |
|||
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue