Blame view
src/components/Media/Layout.vue
2.58 KB
93a68cfa1
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
<template> <div id="Media"> <div class="layout column"> <v-toolbar class="elevation-0 transparent"> <v-btn-toggle> <v-btn flat> <v-icon>cloud_upload</v-icon> Upload </v-btn> <v-btn flat> <v-icon>folder</v-icon> Add Folder </v-btn> </v-btn-toggle> <v-spacer></v-spacer> <v-btn-toggle v-model="view"> <v-btn flat value="list"> <v-icon>view_headline</v-icon> </v-btn> <v-btn flat value="grid"> <v-icon>view_list</v-icon> </v-btn> </v-btn-toggle> </v-toolbar> <v-divider></v-divider> </div> <div class="layout row"> <div class="media-aside media-menu"> <v-list dense class="transparent"> <v-list-tile v-for="(item,index) in mediaMenu" :key="index" :to="item.to"> <v-list-tile-action v-if="item.icon"> <v-icon>{{ item.icon }}</v-icon> </v-list-tile-action> <v-list-tile-content> <v-list-tile-title>{{ item.title }}</v-list-tile-title> </v-list-tile-content> </v-list-tile> </v-list> </div> <div class="media-content flex transparent"> <router-view name="MediaList"></router-view> </div> <div class="media-aside media-detail"> <router-view name="MediaDetail"></router-view> </div> </div> </div> </template> <script> export default { data: () => ({ size: 'lg', view: 'grid', imageMime: [ 'image/jpeg', 'image/png', 'image/svg+xml' ], mediaMenu: [ { icon: 'photo', title: 'Images', to: { path: '/media/image' }, }, { icon: 'videocam', title: 'Video', to: { path: '/media/video' }, }, { icon: 'volume_down', title: 'Audio', to: { path: '/media/audio' }, }, { icon: 'insert_drive_file', title: 'Document', to: { path: '/media/doc' }, }, ], }), computed: { files () { return this.$store.state.file.items; } }, created () { this.$store.dispatch('listFiles'); }, methods: { isImage (file) { return this.imageMime.includes(file.fileType); }, mimeIcons (file) { return this.imageMime.includes(file.fileType) ? 'image' : 'insert_drive_file'; } }, }; </script> <style lang="stylus" scoped> .media-menu { min-width:260px; border-right:1px solid #eee; min-height:calc(100vh - 50px - 64px); } .media-detail { min-width:300px; border-left:1px solid #eee; } </style> |