123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <template>
- <div class="file-list">
- <el-empty description="暂无文件" v-if="fileData.length == 0"></el-empty>
- <div
- v-for="(item,index) in fileData"
- :key="index"
- class="file-item"
- @mouseenter="isIconShowIndex = index"
- @mouseleave="isIconShowIndex = 10000000000"
- @click="fileClick(item)">
- <div class="image">
- <el-image
- style="width: 100%; height: 100%"
- :src="item.cover || require('../../../assets/file_icons/unknow.png')"
- fit="fill">
- </el-image>
- </div>
- <p>{{item.document}}</p>
- <div class="icon" v-show="item.fileType != 'folder' && isCollect == true && isIconShowIndex === index || $route.path == '/archivesmag_list'">
- <img
- src="@/assets/file_icons/收藏.png"
- alt
- v-show="item.isCollect == 1 || $route.path == '/archivesmag_list'"
- @click.stop="collectClick(item)"
- />
- <img
- src="@/assets/file_icons/未收藏.png"
- alt
- v-show="item.isCollect == 0"
- @click.stop="collectClick(item)"
- />
- </div>
- </div>
- <!--文件信息面板-->
- <drawer ref="drawer"
- :currentSelectFile="currentSelectFile"
- v-show="currentSelectFile"
- @downLoad="dialogVisible = true">
- </drawer>
- </div>
- </template>
- <script>
- import Drawer from '@/SManagement/archives/components/Drawer'
- export default {
- name: "FileList",
- data() {
- return {
- //收藏配置
- params: {
- accesstoken: "6de4ba3e3e8967a875ae42ab24c2da48",
- classname: "system.attachment.MediaCenter",
- method: "collectAttachment",
- content: {
- collecttype: "营销物料",
- attachmentid: 1
- }
- },
- //当前悬浮在什么位置
- isIconShowIndex: '',
- //当前选中的文件
- currentSelectFile: '',
- };
- },
- components: {
- Drawer,
- },
- props: {
- fileData: {
- default() {
- return [];
- }
- },
- //是否显示收藏
- isCollect: {
- type: Boolean
- }
- },
- computed: {},
- watch: {},
- created() {
- },
- methods: {
- //文件单击事件
- fileClick(item) {
- if (item.postfix == "folder") {
- this.$emit("upFileData", item.parentid, item.document,item.attachmentid);
- } else {
- this.currentSelectFile = this.fileType.fileList(item)
- this.$refs.drawer.isFileInfoPanlShow = true
- }
- },
- //收藏
- collectClick(item) {
- let id = item.isCollect == 0 ? 1 : 0;
- if (item.isCollect == 0) {
- this.params.method = "collectAttachment";
- this.params.content.collecttype = "营销物料",
- this.params.content.attachmentid = item.attachmentid
- } else {
- this.params.method = "uncollectAttachment";
- this.params.content.attachmentid = item.attachmentid;
- }
- //发送收藏请求
- this.$api.requested(this.params).then(res => {
- if (res.code == 1) {
- this.$emit("statusChange", id, item);
- if(this.params.method == "collectAttachment") {
- this.$notify({
- title: "提示",
- message: "收藏成功",
- type: "success"
- });
- } else {
- this.$notify({
- title: "提示",
- message: "取消收藏",
- type: "success"
- });
- }
- } else {
- this.$notify({
- title: "提示",
- message: "操作失败",
- type: "error"
- });
- }
- })
- },
- },
-
- };
- </script>
- <style scoped>
- * {
- box-sizing: border-box;
- }
- .file-list {
- display: flex;
- flex-wrap: wrap;
- }
- .file-list .file-item {
- padding: 16px 0 12px 0;
- margin-right: 12px;
- cursor: pointer;
- border-radius: 4px;
- position: relative;
- }
- .file-list .file-item:hover {
- background: #f1f4f9;
- }
- .file-list .file-item .image {
- width: 64px;
- height: 64px;
- position: relative;
- left: 50%;
- transform: translateX(-50%);
- }
- .file-list .file-item .image img {
- width: 100%;
- height: 100%;
- }
- .file-list .file-item p {
- font-size: 14px;
- width: 120px;
- font-family: PingFang SC-Regular, PingFang SC;
- font-weight: 400;
- color: #333333;
- text-align: center;
- padding: 0 9px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .file-list .file-item .icon {
- position: absolute;
- top: 0;
- right: 0;
- margin: 8px 8px 0 0;
- }
- /deep/.el-empty {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%,-50%);
- }
- </style>
|