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