222 lines
5.1 KiB
Vue
222 lines
5.1 KiB
Vue
|
|
<template>
|
|||
|
|
<section class="downloanCenterBtn">
|
|||
|
|
<el-badge :value="badgeNum" :hidden='badgeNum==0'>
|
|||
|
|
<div class="btn" @click="openDrawer()">下载中心</div>
|
|||
|
|
</el-badge>
|
|||
|
|
<el-drawer title="下载中心" :visible.sync="drawer" :modal-append-to-body="false" size="520">
|
|||
|
|
<div class="downLoad_main">
|
|||
|
|
<div class="search_top ">
|
|||
|
|
<p style="color:#999999;">仅显示最近90天的记录</p>
|
|||
|
|
<el-input size="mini" v-model="fileName" placeholder="文件名" clearable prefix-icon="iconfont iconSearch"
|
|||
|
|
style="width:240px;" @change="getFiles()"/>
|
|||
|
|
</div>
|
|||
|
|
<ul class="infinite-list">
|
|||
|
|
<li v-for="(item,i) in filesList" class="infinite-list-item " :key="i">
|
|||
|
|
<div class="left">
|
|||
|
|
<svg class="svg" aria-hidden="true">
|
|||
|
|
<use xlink:href="#iconZip"/>
|
|||
|
|
</svg>
|
|||
|
|
</div>
|
|||
|
|
<div class="middle">
|
|||
|
|
<p class="fileName">{{ item.fileName }}【密码:{{ item.pwd }}】</p>
|
|||
|
|
<p>
|
|||
|
|
<span>来源:</span>
|
|||
|
|
<span>{{ $dict.getLabel('fileFrom', item.fileFrom) }}</span>
|
|||
|
|
<span>{{ (item.size / 1000).toFixed(2) + "KB" }}</span>
|
|||
|
|
<span>{{ item.createTime }}</span>
|
|||
|
|
</p>
|
|||
|
|
</div>
|
|||
|
|
<div class="right">
|
|||
|
|
<span class="iconfont iconResetting" v-if="item.status==0">处理中</span>
|
|||
|
|
<span v-if="item.status==2">已下载</span>
|
|||
|
|
<i class="iconfont iconDownload" @click="downFile(item)" v-if="item.status!=0">下载</i>
|
|||
|
|
</div>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
</el-drawer>
|
|||
|
|
</section>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import {mapState} from "vuex";
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
name: "downloanCenterBtn",
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
badgeNum: 0,
|
|||
|
|
drawer: false,//抽屉
|
|||
|
|
filesList: [],
|
|||
|
|
fileName: '',
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
computed: {
|
|||
|
|
...mapState(['user'])
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
openDrawer() {
|
|||
|
|
this.drawer = true;
|
|||
|
|
this.getFiles();
|
|||
|
|
},
|
|||
|
|
getFiles() {
|
|||
|
|
this.$request.post(`/app/sysuserdownload/list`, null, {
|
|||
|
|
params: {
|
|||
|
|
userId: this.user.info.id,
|
|||
|
|
fileName: this.fileName,
|
|||
|
|
current: 1,
|
|||
|
|
size: 1000,
|
|||
|
|
}
|
|||
|
|
}).then(res => {
|
|||
|
|
if (res?.data) {
|
|||
|
|
this.filesList = res.data.records;
|
|||
|
|
this.searchNum()
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//查询未完成数量
|
|||
|
|
searchNum() {
|
|||
|
|
this.$request.post(`/app/sysuserdownload/queryCountByUserId`, null, {
|
|||
|
|
params: {
|
|||
|
|
userId: this.user.info.id
|
|||
|
|
}
|
|||
|
|
}).then(res => {
|
|||
|
|
if (res?.data) {
|
|||
|
|
this.badgeNum = res.data;
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
downFile(item) {
|
|||
|
|
this.changeStatus(item.id);
|
|||
|
|
// window.open(item.accessUrl);
|
|||
|
|
let elemIF = document.createElement('iframe');
|
|||
|
|
elemIF.src = item.accessUrl;
|
|||
|
|
elemIF.style.display = 'none';
|
|||
|
|
document.body.appendChild(elemIF);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
created() {
|
|||
|
|
this.searchNum()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss" scoped>
|
|||
|
|
.downloanCenterBtn {
|
|||
|
|
.downLoad_main {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
padding: 16px;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
|
|||
|
|
.search_top {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
align-items: center;
|
|||
|
|
padding-bottom: 8px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.infinite-list {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
|
|||
|
|
.infinite-list-item {
|
|||
|
|
width: 100%;
|
|||
|
|
padding: 8px;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
background: rgba(255, 255, 255, 1);
|
|||
|
|
border-radius: 4px;
|
|||
|
|
border: 1px solid rgba(208, 212, 220, 1);
|
|||
|
|
margin-bottom: 8px;
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
|
|||
|
|
.left {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: center;
|
|||
|
|
align-items: center;
|
|||
|
|
width: 30px;
|
|||
|
|
|
|||
|
|
.svg {
|
|||
|
|
width: 24px;
|
|||
|
|
height: 24px;
|
|||
|
|
vertical-align: middle;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.middle {
|
|||
|
|
flex: 1;
|
|||
|
|
|
|||
|
|
.fileName {
|
|||
|
|
color: #333333;
|
|||
|
|
font-size: 14px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
p:nth-child(2) {
|
|||
|
|
color: #999999;
|
|||
|
|
font-size: 12px;
|
|||
|
|
|
|||
|
|
span {
|
|||
|
|
padding: 0 4px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
span:nth-child(2) {
|
|||
|
|
border-right: solid 1px #999999;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
span:nth-child(3) {
|
|||
|
|
border-right: solid 1px #999999;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.right {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: center;
|
|||
|
|
align-items: center;
|
|||
|
|
font-size: 12px;
|
|||
|
|
width: 90px;
|
|||
|
|
text-align: center;
|
|||
|
|
|
|||
|
|
span {
|
|||
|
|
color: #999999;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
i {
|
|||
|
|
display: block;
|
|||
|
|
width: 50px;
|
|||
|
|
color: #5088FF;
|
|||
|
|
font-size: 12px;
|
|||
|
|
cursor: pointer;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::-webkit-scrollbar {
|
|||
|
|
width: 4px;
|
|||
|
|
background-color: #eee;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
::-webkit-scrollbar-thumb {
|
|||
|
|
background-color: #8888;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
:deep(.el-drawer__wrapper) {
|
|||
|
|
position: fixed;
|
|||
|
|
width: 100%;
|
|||
|
|
top: 0;
|
|||
|
|
bottom: 0;
|
|||
|
|
right: 0;
|
|||
|
|
|
|||
|
|
.el-drawer__header > span:focus {
|
|||
|
|
outline: 0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</style>
|