| <style lang="less"> | 
| @import "./cardList.less"; | 
| </style> | 
| <template> | 
|   <div class="search"> | 
|     <Card> | 
|       <Tabs value="1"> | 
|         <TabPane label="文件/应用类" name="1"> | 
|           <div class="card-wrapper" id="image"> | 
|             <Card v-for="(item, i) in data" :key="i" class="card"> | 
|               <div class="content"> | 
|                 <img | 
|                   @click="showPic(item, i)" | 
|                   v-if="item.type.indexOf('image')>=0" | 
|                   class="img" | 
|                   :src="item.url" | 
|                 /> | 
|                 <div | 
|                   v-else-if="item.type.indexOf('video')>=0" | 
|                   class="video" | 
|                   @click="showVideo(item)" | 
|                 > | 
|                   <!-- 文件小于5MB显示video --> | 
|                   <video class="cover" v-if="item.size<1024 * 1024 * 5"> | 
|                     <source :src="item.url" /> | 
|                   </video> | 
|                   <img class="play" src="@/assets/icon/play.png" /> | 
|                 </div> | 
|                 <div v-else class="other"> | 
|                   <div class="name">{{item.name}}</div> | 
|                   <div class="key">{{item.fkey}}</div> | 
|                   <div | 
|                     class="info" | 
|                   >文件类型:{{item.type}} 文件大小:{{((item.size * 1.0) / (1024 * 1024)).toFixed(2)}} MB 创建时间:{{item.createTime}}</div> | 
|                 </div> | 
|                 <div class="actions"> | 
|                   <div class="btn"> | 
|                     <Tooltip content="下载" placement="top"> | 
|                       <Icon @click="download(item)" type="md-download" size="16" /> | 
|                     </Tooltip> | 
|                   </div> | 
|                   <div class="btn"> | 
|                     <Tooltip content="重命名" placement="top"> | 
|                       <Icon @click="rename(item)" type="md-create" size="16" /> | 
|                     </Tooltip> | 
|                   </div> | 
|                   <div class="btn"> | 
|                     <Tooltip content="复制" placement="top"> | 
|                       <Icon @click="copy(item)" type="md-copy" size="16" /> | 
|                     </Tooltip> | 
|                   </div> | 
|                   <div class="btn-no"> | 
|                     <Tooltip content="删除" placement="top"> | 
|                       <Icon @click="remove(item)" type="md-trash" size="16" /> | 
|                     </Tooltip> | 
|                   </div> | 
|                 </div> | 
|               </div> | 
|             </Card> | 
|           </div> | 
|         </TabPane> | 
|         <TabPane label="项目类" name="2"> | 
|           <div class="card-wrapper"> | 
|             <Card @click="showProject(item)" v-for="(item, i) in data2" :key="i" class="card"> | 
|               <div class="project"> | 
|                 <img class="img" :src="item.url" /> | 
|                 <div class="content"> | 
|                   <div class="title">{{item.title}}</div> | 
|                   <div class="desc">{{item.description}}</div> | 
|                   <div class="info"> | 
|                     <div class="time"> | 
|                       <Time :time="new Date()" :interval="1" /> | 
|                     </div> | 
|                     <div class="avatar"> | 
|                       <div v-for="(iitem, i) in item.author" :key="i" class="item"> | 
|                         <Tooltip :content="iitem.name" placement="top"> | 
|                           <Avatar :src="iitem.avatar" size="small" class="c" /> | 
|                         </Tooltip> | 
|                       </div> | 
|                     </div> | 
|                   </div> | 
|                 </div> | 
|               </div> | 
|             </Card> | 
|           </div> | 
|         </TabPane> | 
|       </Tabs> | 
|     </Card> | 
|   | 
|     <Modal | 
|       v-model="videoVisible" | 
|       :title="videoTitle" | 
|       :width="800" | 
|       @on-cancel="closeVideo" | 
|       draggable | 
|     > | 
|       <div id="dplayer-card" style="height: 500px"></div> | 
|       <div slot="footer"> | 
|         <span>文件类型:{{file.type}} 文件大小:{{file.msize}} 创建时间:{{file.createTime}}</span> | 
|       </div> | 
|     </Modal> | 
|   </div> | 
| </template> | 
|   | 
| <script> | 
| import "viewerjs/dist/viewer.css"; | 
| import Viewer from "viewerjs"; | 
| import DPlayer from "dplayer"; | 
| export default { | 
|   name: "card-list", | 
|   data() { | 
|     return { | 
|       dp: null, | 
|       videoVisible: false, | 
|       picTitle: "", | 
|       videoTitle: "", | 
|       file: {}, | 
|       data: [ | 
|         { | 
|           url: | 
|             "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", | 
|           name: "XBoot", | 
|           type: "image", | 
|           fkey: "XBoot 是很不错的Web前后端分离架构开发平台", | 
|           size: 28659, | 
|           createTime: "2018-10-22" | 
|         }, | 
|         { | 
|           url: | 
|             "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", | 
|           name: "Exrick", | 
|           type: "image", | 
|           fkey: "XBoot 是很不错的Web前后端分离架构开发平台", | 
|           size: 18659, | 
|           createTime: "2018-10-22" | 
|         }, | 
|         { | 
|           url: | 
|             "https://cloud.video.taobao.com//play/u/95292294/p/1/e/6/t/1/210877258798.mp4", | 
|           name: "视频", | 
|           type: "video", | 
|           fkey: "XBoot 是很不错的Web前后端分离架构开发平台", | 
|           size: 8659, | 
|           createTime: "2018-10-22" | 
|         }, | 
|         { | 
|           url: | 
|             "https://icarusion.gitee.io/iview/e1cf12c07bf6458992569e67927d767e.png", | 
|           name: "XBoot", | 
|           type: "txt", | 
|           fkey: "XBoot 是很不错的Web前后端分离架构开发平台", | 
|           size: 8659, | 
|           createTime: "2018-10-22" | 
|         } | 
|       ], | 
|       data2: [ | 
|         { | 
|           url: | 
|             "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", | 
|           title: "XBoot", | 
|           description: "XBoot 是很不错的Web前后端分离架构开发平台", | 
|           author: [ | 
|             { | 
|               name: "XBoot", | 
|               avatar: "https://s1.ax1x.com/2018/05/19/CcdVQP.png" | 
|             }, | 
|             { | 
|               name: "Exrick", | 
|               avatar: "https://ooo.0o0.ooo/2021/01/16/VuODA1yUSCeXzFM.png" | 
|             } | 
|           ], | 
|           createTime: "2018-10-22" | 
|         }, | 
|         { | 
|           url: | 
|             "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", | 
|           title: "Exrick", | 
|           description: "XBoot 是很不错的Web前后端分离架构开发平台", | 
|           author: [ | 
|             { | 
|               name: "XBoot", | 
|               avatar: "https://s1.ax1x.com/2018/05/19/CcdVQP.png" | 
|             }, | 
|             { | 
|               name: "Exrick", | 
|               avatar: "https://ooo.0o0.ooo/2021/01/16/VuODA1yUSCeXzFM.png" | 
|             } | 
|           ], | 
|           createTime: "2018-10-22" | 
|         } | 
|       ] | 
|     }; | 
|   }, | 
|   methods: { | 
|     init() {}, | 
|     showPic(v, i) { | 
|       let viewer = new Viewer(document.getElementById("image"), { | 
|         hidden: function() { | 
|           viewer.destroy(); | 
|         } | 
|       }); | 
|       viewer.view(i); | 
|     }, | 
|     showVideo(v) { | 
|       this.dp = new DPlayer({ | 
|         container: document.getElementById("dplayer-card"), | 
|         screenshot: true, | 
|         video: { | 
|           url: v.url | 
|         } | 
|       }); | 
|       this.file = v; | 
|       this.file.msize = ((v.size * 1.0) / (1024 * 1024)).toFixed(2) + " MB"; | 
|       this.videoTitle = v.name + "(" + v.fkey + ")"; | 
|       this.videoVisible = true; | 
|     }, | 
|     closeVideo() { | 
|       this.dp.destroy(); | 
|     }, | 
|     download(v) { | 
|       window.open( | 
|         v.url + "?attname=&response-content-type=application/octet-stream" | 
|       ); | 
|     }, | 
|     copy(v) { | 
|       this.$Message.info("点击了 " + v.name + " 的复制图标"); | 
|     }, | 
|     remove(v) { | 
|       this.$Message.info("点击了 " + v.name + " 的删除图标"); | 
|     }, | 
|     rename(v) { | 
|       this.$Message.info("点击了 " + v.name + " 的重命名图标"); | 
|     } | 
|   }, | 
|   mounted() { | 
|     this.init(); | 
|   } | 
| }; | 
| </script> |