7 changed files with 710 additions and 474 deletions
			
			
		- 
					9src/api/material/material.js
- 
					10src/api/release/release.js
- 
					10src/utils/index.js
- 
					201src/views/components/MaterialCompontentList.vue
- 
					761src/views/immediateRelease/index.vue
- 
					31src/views/materialContent/index.vue
- 
					162src/views/materialContent/materialList/index.vue
| @ -0,0 +1,10 @@ | |||||
|  | import request from '@/utils/request' | ||||
|  | 
 | ||||
|  | // 编辑 - 发布信息
 | ||||
|  | export function saveRelease(parameter) { | ||||
|  |   return request({ | ||||
|  |     url: 'api/release/saveRelease', | ||||
|  |     method: 'post', | ||||
|  |     data: parameter | ||||
|  |   }) | ||||
|  | } | ||||
| @ -0,0 +1,201 @@ | |||||
|  | <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.material_type == 2" class="radio_img"></div> | ||||
|  |       <div class="item_format"> | ||||
|  |         <span class="item_type">{{ materialPostfix[index] }}</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 } from '@/utils/index.js' | ||||
|  | export default { | ||||
|  |   name: 'MaterialList', | ||||
|  |   components: { }, | ||||
|  |   filters: { | ||||
|  |     getSeconds(s) { | ||||
|  |       return getSeconds(s) | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   props: { | ||||
|  |     isMultiSelected: { | ||||
|  |       type: Boolean, | ||||
|  |       required: true | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       orga_id: '133221333123111', // 机构ID | ||||
|  |       rootFolderId: null, // 根目录文件夹ID | ||||
|  |       thisFoldId: null, // 当前父文件夹ID | ||||
|  |       materialFolders: [], // 文件夹list | ||||
|  |       materialList: [], // 素材库list | ||||
|  |       materialPostfix: [], // 文件后缀格式 | ||||
|  |       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 = [] | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   mounted() { | ||||
|  |     this.getMaterialList() | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     // 获取素材库list | ||||
|  |     getMaterialList() { | ||||
|  |       this.materialFolders = [] | ||||
|  |       this.materialList = [] | ||||
|  |       let params | ||||
|  |       if (this.isToFolder) { | ||||
|  |         console.log('文件夹内') | ||||
|  |         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': null, | ||||
|  |           'orga_id': this.orga_id | ||||
|  |         } | ||||
|  |       } else { | ||||
|  |         console.log('文件夹外') | ||||
|  |         localStorage.removeItem('currentFolderId') | ||||
|  |         params = { | ||||
|  |           'folder_id': null, | ||||
|  |           'material_name': null, | ||||
|  |           'material_type': null, | ||||
|  |           '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 | ||||
|  |           // 素材类型格式处理 | ||||
|  |           this.materialList.forEach((item, key) => { | ||||
|  |             this.materialPostfix[key] = item.deposit_url.substring( | ||||
|  |               item.deposit_url.lastIndexOf('.') + 1, | ||||
|  |               item.deposit_url.length | ||||
|  |             ) | ||||
|  |           }) | ||||
|  |         } 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> | ||||
						
							
						
						
							761
	
						
						src/views/immediateRelease/index.vue
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue