8 changed files with 549 additions and 311 deletions
			
			
		- 
					9src/api/theme/theme.js
- 
					4src/assets/styles/adminIndex.scss
- 
					30src/views/ThemeGallery/index.vue
- 
					314src/views/components/ThemeGalleryList.vue
- 
					390src/views/components/materialFolder.vue
- 
					16src/views/dashboard/HomeThemeGallery.vue
- 
					19src/views/immediateRelease/index.vue
- 
					12src/views/materialContent/materialList/index.vue
| @ -0,0 +1,390 @@ | |||||
|  | <template> | ||||
|  |   <div v-if="themeItemActive==2" style="display:flex; flex-wrap: wrap"> | ||||
|  |     <!-- 我的画册-创建文件夹btn --> | ||||
|  |     <div v-if="!isToFolder" class="theme_mkdir cont_upload" @click="handleMkdir(0)"> | ||||
|  |       <svg class="font-icon icon" aria-hidden="true"> | ||||
|  |         <use xlink:href="#icon-a-xinzeng" /> | ||||
|  |       </svg> | ||||
|  |       <el-button class="mkdir_btn" round type="primary">创建文件夹</el-button> | ||||
|  |     </div> | ||||
|  |     <div v-else class="theme_mkdir cont_upload"> | ||||
|  |       <el-button class="cont_upload_btn" round type="primary">添加</el-button> | ||||
|  |       <el-button class="return_btn" round type="primary" @click="breadcrumbToAlbum">返回</el-button> | ||||
|  |     </div> | ||||
|  |     <!-- 我的画册-某一文件夹 --> | ||||
|  |     <div v-for="(item,index) in childMaterialFolders" :key="item.id" :class="[,'theme_mkdir', 'folder', { 'item_multi': folderChecked == index }]" @click.stop="editFolder(item,index)" @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> | ||||
|  |       <span v-if="folderChecked == index" class="checked_btn"></span> | ||||
|  |     </div> | ||||
|  |     <!-- 创建文件夹layer / 编辑 --> | ||||
|  |     <div class="publish_layer"> | ||||
|  |       <el-dialog title="创建文件夹" :close-on-click-modal="false" :show-close="false" :visible.sync="mkdirVisible" width="616px" height="384px"> | ||||
|  |         <el-form ref="folderForm" :inline="true" :model="folderForm" size="small" label-width="100px"> | ||||
|  |           <el-form-item | ||||
|  |             label="文件夹名称" | ||||
|  |             prop="name" | ||||
|  |             :rules="[ | ||||
|  |               { required: true, message: '请输入名称', trigger: 'blur' } | ||||
|  |             ]" | ||||
|  |           > | ||||
|  |             <el-input v-model="folderForm.name" style="width: 336px" /> | ||||
|  |           </el-form-item> | ||||
|  |           <el-form-item label="封面" prop="file"> | ||||
|  |             <UploadCover ref="childUpload" /> | ||||
|  |           </el-form-item> | ||||
|  |         </el-form> | ||||
|  |         <div slot="footer" class="dialog-footer"> | ||||
|  |           <el-button type="primary" round @click="submitFolderForm('folderForm')">保 存</el-button> | ||||
|  |           <el-button round @click="mkdirVisible=false">取 消</el-button> | ||||
|  |         </div> | ||||
|  |       </el-dialog> | ||||
|  |     </div> | ||||
|  |     <!-- 移动至layer --> | ||||
|  |     <div class="wjj_layer"> | ||||
|  |       <!-- width="736px" --> | ||||
|  |       <el-dialog title="移动至" :close-on-click-modal="false" :show-close="false" :visible.sync="movingVisible" width="576px" height="384px"> | ||||
|  |         <div class="wjj_list"> | ||||
|  |           <div v-for="(item, index) in folderList" :key="index" :class="['wjj_item', { 'wjj_item_active': folderListChecked == index }]" @click="wjjSelected(item,index)"> | ||||
|  |             <svg class="font-icon icon" aria-hidden="true"> | ||||
|  |               <use xlink:href="#icon-wenjianjia" /> | ||||
|  |             </svg> | ||||
|  |             <p class="wjj_name">{{ item.name }}</p> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |         <div slot="footer" class="dialog-footer"> | ||||
|  |           <el-button type="primary" round @click="moveFile">确定</el-button> | ||||
|  |           <el-button round @click="movingVisible=false">取消</el-button> | ||||
|  |         </div> | ||||
|  |       </el-dialog> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import { FetchSaveThemeFolder, FetchDeleteThemeFolder, FetchMoveMyThemeMaterial } from '@/api/theme/theme.js' | ||||
|  | import UploadCover from './upload_cover' | ||||
|  | export default { | ||||
|  |   name: 'MaterialFolder', | ||||
|  |   components: { UploadCover }, | ||||
|  |   props: { | ||||
|  |     themeItemActive: { | ||||
|  |       type: String, | ||||
|  |       required: true | ||||
|  |     }, | ||||
|  |     materialFolders: { | ||||
|  |       type: Array, | ||||
|  |       required: true | ||||
|  |     }, | ||||
|  |     isToFolder: { | ||||
|  |       type: Boolean, | ||||
|  |       required: true | ||||
|  |     }, | ||||
|  |     thisFoldId: { | ||||
|  |       type: String, | ||||
|  |       required: true | ||||
|  |     }, | ||||
|  |     selectedListId: { | ||||
|  |       type: Array, | ||||
|  |       required: true | ||||
|  |     }, | ||||
|  |     selectInFolderid: { | ||||
|  |       type: Array, | ||||
|  |       required: true | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       orga_id: '133221333123111', // 机构ID | ||||
|  |       movingVisible: false, | ||||
|  |       folderForm: { // form | ||||
|  |         fid: '', | ||||
|  |         id: '', | ||||
|  |         img_path: '', | ||||
|  |         name: '', | ||||
|  |         orga_id: '' | ||||
|  |       }, | ||||
|  |       childMaterialFolders: [], // 文件夹list | ||||
|  |       rootFolderId: null, | ||||
|  |       isEditFolder: false, // 是否编辑文件夹 | ||||
|  |       mkdirVisible: false, // 新建编辑layer | ||||
|  |       folderChecked: -1, // 文件夹是否单击选中 | ||||
|  |       isEditMaterial: false, // 是否是编辑素材 | ||||
|  |       folderList: [], // 文件夹list | ||||
|  |       folderListChecked: -1, | ||||
|  |       currentFolder: '', // 当前进入的文件夹名 | ||||
|  |       currentFolderId: null | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     defaultImg() { | ||||
|  |       return 'this.src="' + require('@/assets/images/menu_bg_02.png') + '"' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     materialFolders(newName, oldName) { | ||||
|  |       this.childMaterialFolders = newName | ||||
|  |     }, | ||||
|  |     thisFoldId(newName, oldName) { | ||||
|  |       this.thisChildFoldId = newName | ||||
|  |     }, | ||||
|  |     selectedListId(newName, oldName) { | ||||
|  |       this.ChildSelectedListId = newName | ||||
|  |     }, | ||||
|  |     selectInFolderid(newName, oldName) { | ||||
|  |       this.ChildSelectInFolderid = newName | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   mounted() { | ||||
|  |     console.log('444444444444') | ||||
|  |     console.log(this.childMaterialFolders) | ||||
|  |     console.log('555') | ||||
|  |     // this.$emit('getMyAlbum') | ||||
|  |     document.addEventListener('click', this.hiddenFolderActiveClick) | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     breadcrumbToAlbum() { | ||||
|  |       this.$router.push('/theme') | ||||
|  |       this.$emit('getMyAlbum') | ||||
|  |     }, | ||||
|  |     // 新建 / 编辑 文件夹 | ||||
|  |     handleMkdir(mkdirType) { | ||||
|  |       this.mkdirVisible = true | ||||
|  |       this.folderForm.fid = this.thisChildFoldId | ||||
|  |       this.folderForm.orga_id = this.orga_id | ||||
|  |       if (mkdirType === 0) { | ||||
|  |         this.$nextTick(() => { | ||||
|  |           this.$refs.childUpload.imageUrl = '' | ||||
|  |           this.folderForm.img_path = '' | ||||
|  |           this.folderForm.name = '' | ||||
|  |         }) | ||||
|  |         delete this.folderForm.id | ||||
|  |       } else { | ||||
|  |         this.$nextTick(() => { | ||||
|  |           this.$refs.childUpload.imageUrl = this.folderForm.img_path | ||||
|  |         }) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 文件夹双击操作 | ||||
|  |     floderDbClick(item, index) { | ||||
|  |       this.isEditMaterial = false | ||||
|  |       this.$router.replace( | ||||
|  |         { | ||||
|  |           path: '/theme', query: { folderTag: 1 } | ||||
|  |         } | ||||
|  |       ) | ||||
|  |       this.currentFolder = item.name | ||||
|  |       this.currentFolderId = item.id | ||||
|  |       localStorage.setItem('currentFolder', this.currentFolder) | ||||
|  |       localStorage.setItem('currentFolderId', this.currentFolderId) | ||||
|  |       this.$emit('getMyAlbum') | ||||
|  |       this.ChildSelectedListId = [] | ||||
|  |       this.folderChecked = -1 | ||||
|  |       this.isEditFolder = false | ||||
|  |     }, | ||||
|  |     // 点击其他区域选中的文件夹 去掉选中样式 | ||||
|  |     hiddenFolderActiveClick() { | ||||
|  |       this.folderChecked = -1 | ||||
|  |       this.isEditFolder = false | ||||
|  |     }, | ||||
|  |     // 选择 编辑 文件夹 | ||||
|  |     editFolder(item, index) { | ||||
|  |       this.isEditMaterial = false | ||||
|  |       this.ChildSelectedListId = [] | ||||
|  |       // 有选择中的文件夹时,同时存在素材多选操作时 | ||||
|  |       this.$emit('changedMultiSelected') | ||||
|  |       if (index != this.folderChecked) { | ||||
|  |         this.folderChecked = index | ||||
|  |         this.isEditFolder = true | ||||
|  |         this.folderForm = { | ||||
|  |           fid: item.fid, | ||||
|  |           id: item.id, | ||||
|  |           name: item.name, | ||||
|  |           img_path: item.imgPath, | ||||
|  |           orga_id: item.orgaId | ||||
|  |         } | ||||
|  |       } else { | ||||
|  |         this.folderChecked = -1 | ||||
|  |         this.isEditFolder = false | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 删除 文件夹 | ||||
|  |     deleteMaterialFolder() { | ||||
|  |       console.log(this.folderForm.id) | ||||
|  |       this.$confirm('此操作将永久删除该文件夹, 是否继续?', '提示', { | ||||
|  |         confirmButtonText: '确定', | ||||
|  |         cancelButtonText: '取消', | ||||
|  |         type: 'warning' | ||||
|  |       }).then(() => { | ||||
|  |         const ids = [] | ||||
|  |         ids.push(this.folderForm.id) | ||||
|  |         const params = { | ||||
|  |           ids: ids | ||||
|  |         } | ||||
|  |         FetchDeleteThemeFolder(params).then(res => { | ||||
|  |           if (res.code === 200) { | ||||
|  |             this.$message({ | ||||
|  |               message: '删除文件夹成功', | ||||
|  |               type: 'success' | ||||
|  |             }) | ||||
|  |             // this.getMyAlbum() | ||||
|  |             this.$emit('getMyAlbum') | ||||
|  |             this.folderChecked = -1 | ||||
|  |             this.isEditFolder = false | ||||
|  |           } | ||||
|  |         }) | ||||
|  |       }).catch(() => { | ||||
|  |         this.$message({ | ||||
|  |           message: '已取消删除', | ||||
|  |           type: 'info' | ||||
|  |         }) | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 提交表单 - 新建/编辑 | ||||
|  |     submitFolderForm(formName) { | ||||
|  |       this.folderForm.img_path = this.$refs.childUpload.imageUrl | ||||
|  |       console.log(this.folderForm) | ||||
|  |       this.$refs[formName].validate((valid) => { | ||||
|  |         if (valid) { | ||||
|  |           FetchSaveThemeFolder(this.folderForm).then(res => { | ||||
|  |             if (res.code === 200) { | ||||
|  |               this.$message({ | ||||
|  |                 message: '创建文件夹成功', | ||||
|  |                 duration: 2000, | ||||
|  |                 type: 'success' | ||||
|  |               }) | ||||
|  |               this.mkdirVisible = false | ||||
|  |               // this.getMyAlbum() | ||||
|  |               this.$emit('getMyAlbum') | ||||
|  |             } else { | ||||
|  |               this.$message({ | ||||
|  |                 message: '创建文件夹失败', | ||||
|  |                 duration: 2000, | ||||
|  |                 type: 'warning' | ||||
|  |               }) | ||||
|  |             } | ||||
|  |           }) | ||||
|  |         } else { | ||||
|  |           console.log('error submit!!') | ||||
|  |           return false | ||||
|  |         } | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 点击-移动btn | ||||
|  |     moveingTo(index) { | ||||
|  |       this.folderList = [] | ||||
|  |       if (this.childMaterialFolders.length > 0) { | ||||
|  |         this.folderList = this.childMaterialFolders.slice(0, this.materialFolders.length) | ||||
|  |       } | ||||
|  |       this.rootFolderId = localStorage.getItem('rootFolderId') | ||||
|  |       const returnFolder = { | ||||
|  |         id: this.rootFolderId, | ||||
|  |         name: '返回上一级' | ||||
|  |       } | ||||
|  |       this.folderList.unshift(returnFolder) | ||||
|  |       this.movingVisible = true | ||||
|  |     }, | ||||
|  |     // 文件夹list - 选中操作 | ||||
|  |     wjjSelected(item, index) { | ||||
|  |       this.folderListChecked = index | ||||
|  |       this.thisChildFoldId = item.id | ||||
|  |     }, | ||||
|  |     // 点击确定 - 移动素材 | ||||
|  |     moveFile() { | ||||
|  |       if (this.childMaterialFolders.length > 0) { | ||||
|  |         if (this.thisChildFoldId == this.rootFolderId) { | ||||
|  |           this.$message({ | ||||
|  |             message: '不能讲文件移动到自身目录下哦~', | ||||
|  |             type: 'error' | ||||
|  |           }) | ||||
|  |           return | ||||
|  |         } | ||||
|  |       } else { | ||||
|  |         this.thisChildFoldId = this.rootFolderId | ||||
|  |       } | ||||
|  |       const params = { | ||||
|  |         'folder_id': this.thisChildFoldId, | ||||
|  |         'ids': this.ChildSelectInFolderid, | ||||
|  |         'material_ids': this.ChildSelectedListId | ||||
|  |       } | ||||
|  |       FetchMoveMyThemeMaterial(params).then(res => { | ||||
|  |         if (res.code === 200) { | ||||
|  |           this.$message({ | ||||
|  |             message: '移动成功', | ||||
|  |             type: 'success' | ||||
|  |           }) | ||||
|  |           this.movingVisible = false | ||||
|  |           // this.getMyAlbum() | ||||
|  |           this.$emit('getMyAlbum') | ||||
|  |           this.ChildSelectedListId = [] | ||||
|  |         } | ||||
|  |       }) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss" scoped> | ||||
|  | .el-tabs { | ||||
|  |   margin-bottom: 0; | ||||
|  | } | ||||
|  | ::v-deep .el-tabs__item.is-active { | ||||
|  |   color: #3a8aeb; | ||||
|  | } | ||||
|  | 
 | ||||
|  |   .theme_mkdir { | ||||
|  |     position: relative; | ||||
|  |     width: 140px; | ||||
|  |     height: 250px; | ||||
|  |     margin: 0 24px 24px 0; | ||||
|  |     &.cont_upload .font-icon { | ||||
|  |       width: 45px; | ||||
|  |       height: 45px; | ||||
|  |       margin-bottom: 20px; | ||||
|  |     } | ||||
|  |     &.folder .font-icon { | ||||
|  |       width: 84px; | ||||
|  |       height: 69px; | ||||
|  |     } | ||||
|  |     .icon_bg{ | ||||
|  |       img{ | ||||
|  |         display: block; | ||||
|  |         width: 140px; | ||||
|  |         height: 250px; | ||||
|  |       } | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .theme_item { | ||||
|  |     width: 140px; | ||||
|  |     height: 250px; | ||||
|  |   } | ||||
|  |   .icon_bg { | ||||
|  |     height: 220px; | ||||
|  |   } | ||||
|  |   .theme_item { | ||||
|  |     .file_name { | ||||
|  |       position: absolute; | ||||
|  |       left: 0; | ||||
|  |       bottom: 0; | ||||
|  |       width: 100%; | ||||
|  |       height: 30px; | ||||
|  |       background: rgba(255, 255, 255, 0.6); | ||||
|  |       line-height: 30px; | ||||
|  |     } | ||||
|  |   } | ||||
|  | 
 | ||||
|  | .material_crumbs { | ||||
|  |   padding: 15px 24px 0 24px; | ||||
|  |   line-height: 30px; | ||||
|  |   background: #fff; | ||||
|  |   ::v-deep .el-breadcrumb { | ||||
|  |     font-size: 12px; | ||||
|  |     color: #999999; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
|  | 
 | ||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue