及时清理监听事件

This commit is contained in:
jmal 2024-03-18 10:20:38 +08:00
parent 263eea0210
commit 306762738c
8 changed files with 151 additions and 63 deletions

View File

@ -386,7 +386,10 @@
>
<template slot-scope="scope">
<el-tooltip
v-if="scope.row.index === cellMouseIndex && (!scope.row.isShare || scope.row.shareBase)"
v-if="
scope.row.index === cellMouseIndex &&
(!scope.row.isShare || scope.row.shareBase)
"
class="item"
effect="light"
content="分享"
@ -690,9 +693,15 @@
>
</el-form-item>
<el-form-item label="位置:" class="details-position">
<a :href="'/?path=' + rowContextData.path + '&highlight=' + rowContextData.name">{{
rowContextData.path
}}</a>
<a
:href="
'/?path=' +
rowContextData.path +
'&highlight=' +
rowContextData.name
"
>{{ rowContextData.path }}</a
>
</el-form-item>
<el-form-item label="创建时间:">
<span>{{ rowContextData.uploadDate }}</span>
@ -807,8 +816,11 @@
>
</div>
</el-dialog>
<tag-dialog :fileList="tagDialogObjectList"
:status.sync="tagDialogVisible" @onSuccess="allocateTagSuccess"/>
<tag-dialog
:fileList="tagDialogObjectList"
:status.sync="tagDialogVisible"
@onSuccess="allocateTagSuccess"
/>
<share-dialog
:file.sync="shareDialogObject"
:status.sync="shareDialogVisible"
@ -1316,6 +1328,14 @@ export default {
}
}, 50);
},
destroyed() {
Bus.$off("fileSuccess");
Bus.$off("loadFileFaild");
Bus.$off("clickMore");
Bus.$off("renameRow");
Bus.$off("msg/file/change");
Bus.$off("msg/file/operation/fault");
},
beforeDestroy() {
window.removeEventListener("keydown", this.keydown, false);
window.removeEventListener("keyup", this.keyup, false);
@ -1381,6 +1401,7 @@ export default {
: chineseLength;
},
keydown(event) {
console.log('sdf')
const isMac = navigator.platform.startsWith("Mac");
const { key, c, keyCode, ctrlKey, metaKey } = event;
this.isCmd = (isMac && metaKey) || (!isMac && ctrlKey);
@ -4166,7 +4187,7 @@ export default {
}
a:hover {
color: #409EFF;
color: #409eff;
}
}
@ -4198,7 +4219,7 @@ export default {
>>> .plTableBox .el-table .el-table__header {
th {
background-color: #FFFFFF;
background-color: #ffffff;
}
.is-sortable:hover {
@ -4218,7 +4239,7 @@ export default {
}
.home-link:hover {
color: #409EFF;
color: #409eff;
}
.info-statistics {
@ -4247,7 +4268,7 @@ export default {
margin-left: 5px !important;
}
> > > .open-file-dialog {
> .open-file-dialog {
.el-dialog {
width: 420px;
}
@ -4261,13 +4282,13 @@ export default {
}
}
> > > .v-contextmenu-item {
> .v-contextmenu-item {
.svg-icon {
font-size: 14px;
}
}
> > > .new-text-file-dialog {
> .new-text-file-dialog {
height: 350px;
top: calc(50% - 175px);
@ -4291,7 +4312,7 @@ export default {
}
}
> > > .van-grid-item__content {
> .van-grid-item__content {
background-size: cover;
background-position: center;
padding: 0;
@ -4356,4 +4377,3 @@ export default {
}
}
</style>

View File

@ -294,6 +294,9 @@ export default {
Bus.$off('openUploader')
Bus.$off('uploadFolder')
Bus.$off('uploadFileListBack')
Bus.$off('fileListScrollTop')
Bus.$off('onDragStart')
Bus.$off('storageTypeChange')
},
methods: {
initUploader() {

View File

@ -1,14 +1,16 @@
<template>
<div>
<viewer v-show="pc"
:options="options"
:images="images"
@inited="inited"
class="viewer" ref="viewer"
<viewer
v-show="pc"
:options="options"
:images="images"
@inited="inited"
class="viewer"
ref="viewer"
>
<template slot-scope="scope">
<div v-for="(image,index) in scope.images" :key="index">
<img :src="image.thumbnail" :data-src="image.source">
<div v-for="(image, index) in scope.images" :key="index">
<img :src="image.thumbnail" :data-src="image.source" />
</div>
</template>
</viewer>
@ -110,6 +112,9 @@ export default {
this.$emit('update:status', false)
})
},
destroyed() {
Bus.$off("updateImageViewerStatus")
},
methods: {
inited(viewer) {
this.$viewer = viewer

View File

@ -1,12 +1,22 @@
<template>
<div class="sidebar-logo-container" :class="{'collapse':collapse}">
<div class="sidebar-logo-container" :class="{ collapse: collapse }">
<transition name="sidebarLogoFade">
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
<router-link
v-if="collapse"
key="collapse"
class="sidebar-logo-link"
to="/"
>
<Logo v-model="netdiskLogo" width="50" padding="8"></Logo>
</router-link>
<router-link v-else key="expand" class="sidebar-logo-link logo-expand" to="/">
<router-link
v-else
key="expand"
class="sidebar-logo-link logo-expand"
to="/"
>
<Logo v-model="netdiskLogo" width="50" padding="8"></Logo>
<h1 class="sidebar-title">{{ title }} </h1>
<h1 class="sidebar-title">{{ title }}</h1>
</router-link>
</transition>
</div>
@ -44,6 +54,9 @@ export default {
this.netdiskLogo = this.$store.state.user.netdiskLogo
})
},
destroyed() {
Bus.$off('updateLogo')
},
data() {
return {
}
@ -78,14 +91,14 @@ export default {
width: 32px;
height: 32px;
vertical-align: middle;
margin-right: 2px!important;
margin-right: 2px !important;
}
& .sidebar-logo-expand {
width: 32px;
height: 32px;
vertical-align: middle;
margin-right: 12px!important;
margin-right: 12px !important;
}
& .sidebar-title {

View File

@ -1,5 +1,5 @@
<template>
<div :class="{'has-logo':showLogo}">
<div :class="{ 'has-logo': showLogo }">
<div class="scrollbar-head">
<logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar wrap-class="scrollbar-wrapper">
@ -13,45 +13,83 @@
:collapse-transition="false"
mode="vertical"
>
<sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" />
<sidebar-item
v-for="route in routes"
:key="route.path"
:item="route"
:base-path="route.path"
/>
</el-menu>
</el-scrollbar>
</div>
<div class="scrollbar-tag" :class="{'collapse': isCollapse}">标签</div>
<div class="scrollbar-tag" :class="{ collapse: isCollapse }">标签</div>
<div class="scroll-decoration-top"></div>
<el-scrollbar class="tag-list" wrap-class="scrollbar-wrapper">
<div v-if="isCollapse">
<ul class="infinite-list">
<el-tooltip class="item" effect="dark" :content="tag.name" placement="right" v-for="tag in tagList" :key="tag.tagId">
<li class="infinite-list-item collapse">
<svg-icon :style="{ color: tag.color, fontSize: '14px' }" icon-class="tag2"></svg-icon>
</li>
</el-tooltip>
</ul>
</div>
<div v-else>
<ul class="infinite-list">
<li v-for="tag in tagList" :key="tag.id" class="infinite-list-item">
<router-link :to="'/tag?tagId=' + tag.id" @click.native="tagClick(tag)">
<svg-icon :style="{ color: tag.color, fontSize: '14px' }" icon-class="tag2"></svg-icon>
<span>{{ tag.name }}</span>
</router-link>
</li>
</ul>
</div>
<div v-if="isCollapse">
<ul class="infinite-list">
<el-tooltip
class="item"
effect="dark"
:content="tag.name"
placement="right"
v-for="tag in tagList"
:key="tag.tagId"
>
<li class="infinite-list-item collapse">
<svg-icon
:style="{ color: tag.color, fontSize: '14px' }"
icon-class="tag2"
></svg-icon>
</li>
</el-tooltip>
</ul>
</div>
<div v-else>
<ul class="infinite-list">
<li
v-for="tag in tagList"
:key="tag.id"
class="infinite-list-item"
@click="tagClick(tag)"
>
<!-- <router-link :to="'/tag?tagId=' + tag.id" @click.native="tagClick(tag)">-->
<svg-icon
:style="{ color: tag.color, fontSize: '14px' }"
icon-class="tag2"
></svg-icon>
<span>{{ tag.name }}</span>
<!-- </router-link>-->
</li>
</ul>
</div>
</el-scrollbar>
<div class="scroll-decoration-bottom"></div>
<div class="scrollbar-footer">
<div class="quota-space">
<el-progress v-show="percentage > 0" :class="{'collapse': isCollapse}" :percentage="percentage" :format="progressFormat" :color="customColors"></el-progress>
<el-progress
v-show="percentage > 0"
:class="{ collapse: isCollapse }"
:percentage="percentage"
:format="progressFormat"
:color="customColors"
></el-progress>
</div>
<div class="webdav">
<div :class="{'normal': true, 'collapse': isCollapse}" @mousemove="showCopyBtn = true" @mouseleave="showCopyBtn = false">
<div
:class="{ normal: true, collapse: isCollapse }"
@mousemove="showCopyBtn = true"
@mouseleave="showCopyBtn = false"
>
<svg-icon class="webdav-icon" icon-class="disk-drive"></svg-icon>
<div class="wedav-text">WebDAV </div>
<div class="wedav-text">WebDAV</div>
<el-tooltip placement="right" v-if="showCopyBtn">
<div slot="content">点击复制WebDAV地址<br/>{{webdavUrl}}</div>
<svg-icon class="copy-btn" icon-class="menu-fuzhi" @click="copyWebDAVLink('.copy-btn')" :data-clipboard-text="webdavUrl"></svg-icon>
<div slot="content">点击复制WebDAV地址<br />{{ webdavUrl }}</div>
<svg-icon
class="copy-btn"
icon-class="menu-fuzhi"
@click="copyWebDAVLink('.copy-btn')"
:data-clipboard-text="webdavUrl"
></svg-icon>
</el-tooltip>
</div>
</div>
@ -144,6 +182,9 @@ export default {
})
Bus.$on('msg/file/change', (msg) => this.onmessage(msg))
},
destroyed() {
Bus.$off('msg/file/change')
},
methods: {
onmessage(msg) {
const takeUpSpace = msg.space
@ -168,8 +209,9 @@ export default {
})
},
tagClick(tag) {
console.log('tagClick', tag.tagId)
Bus.$emit('tagPageChange', tag.tagId)
console.log('tagClick', tag.id)
this.$router.push(`/tag?tagId=${tag.id}`);
Bus.$emit('tagPageChange', tag.id)
},
mouseleave() {
},
@ -259,20 +301,20 @@ export default {
font-size: 14px;
height: 32px;
line-height: 32px;
>>>.el-progress-bar {
>>> .el-progress-bar {
padding-right: 40px;
margin-left: 20px;
}
>>>.el-progress__text {
>>> .el-progress__text {
margin-left: 20px;
font-size: 12px!important;
font-size: 12px !important;
}
.collapse {
>>>.el-progress-bar {
>>> .el-progress-bar {
padding-right: 4px;
margin-left: 2px;
}
>>>.el-progress__text {
>>> .el-progress__text {
margin-left: 5px;
display: block;
}
@ -287,7 +329,7 @@ export default {
padding-left: 20px;
.webdav-icon {
margin-top: 12px;
margin-right: 0!important;
margin-right: 0 !important;
}
.copy-btn {
margin-top: 10px;

View File

@ -483,6 +483,8 @@ export default {
},
destroyed() {
window.removeEventListener('popstate', this.goBack, false)
Bus.$off('fileSuccess')
Bus.$off('clickMore')
},
directives: {
// 注册一个局部的自定义指令 v-focus

View File

@ -215,7 +215,7 @@ export default {
}
},
destroyed() {
Bus.$off()
Bus.$off('msg/synced')
},
computed: {
...mapGetters([

View File

@ -36,6 +36,9 @@ export default {
console.log('tagPageChange', tagId)
this.queryCondition.tagId = tagId
})
},
destroyed() {
Bus.$off('tagPageChange')
}
}
</script>