Files
cunkebao_v3/Backend/src/components/note/NoteAnnexRecycle.vue
2025-03-18 14:39:17 +08:00

207 lines
5.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="lum-dialog-mask">
<el-container
class="lum-dialog-box animated bounceInDown"
v-outside="close"
>
<el-header height="60px" class="header no-select">
<p> 30 天删除的附件({{ tableData.length }})</p>
<p class="tools">
<i class="el-icon-close" @click="close" />
</p>
</el-header>
<el-main class="main lum-scrollbar">
<el-table :data="tableData" size="mini">
<div slot="empty">暂无相关数据</div>
<el-table-column
prop="original_name"
label="附件名称"
width="180"
:show-overflow-tooltip="true"
>
<template slot-scope="scope">
<el-button type="text" @click="downloadAnnex(scope.row.id)">{{
scope.row.original_name
}}</el-button>
</template>
</el-table-column>
<el-table-column
prop="title"
label="所属笔记"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="day"
label="剩余天数"
align="center"
width="80"
>
</el-table-column>
<el-table-column
fixed="right"
label="操作"
width="100"
align="center"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="recoverAnnex(scope.row)"
>恢复</el-button
>
<el-popover
placement="top"
@hide="lock(false)"
@show="lock(true)"
:ref="`popover-${scope.$index}`"
>
<p style="margin-bottom: 10px">
{{
scope.row.original_name
}}附件您确定要永久删除吗<br />
</p>
<div style="text-align: right; margin: 0">
<el-button
size="mini"
type="text"
@click="
scope._self.$refs[`popover-${scope.$index}`].doClose()
"
>
取消</el-button
>
<el-button
type="primary"
size="mini"
@click="deleteAnnex(scope.row, scope.$index)"
>确定</el-button
>
</div>
<el-button
slot="reference"
type="text"
size="small"
style="color: #ec5252; margin-left: 5px"
>删除</el-button
>
</el-popover>
</template>
</el-table-column>
</el-table>
</el-main>
<el-footer class="footer" height="30px">
<p class="footer-tip">移动至回收站的附件和笔记将在 30 天后自动清除</p>
</el-footer>
</el-container>
</div>
</template>
<script>
import Vue from 'vue'
import { Table, TableColumn } from 'element-ui'
Vue.use(Table)
Vue.use(TableColumn)
import {
ServeGetRecoverAnnexList,
ServeRecoverArticleAnnex,
ServeDownloadAnnex,
ServeForeverDeleteAnnex,
} from '@/api/article'
export default {
name: 'NoteAnnexRecycle',
data() {
return {
tableData: [],
closeLock: false,
}
},
created() {
this.loadList()
},
methods: {
loadList() {
ServeGetRecoverAnnexList().then(res => {
if (res.code == 200) {
this.tableData = res.data.rows
}
})
},
// 关闭当前窗口
close() {
if (!this.closeLock) this.$emit('close')
},
// 给遮罩层加锁
lock(value) {
this.closeLock = value
},
// 恢复附件
recoverAnnex(data, index) {
ServeRecoverArticleAnnex({
annex_id: data.id,
}).then(res => {
if (res.code == 200) {
this.tableData.splice(index, 1)
}
})
},
//永久删除附件
deleteAnnex(data, index) {
ServeForeverDeleteAnnex({
annex_id: data.id,
})
.then(res => {
this.$refs[`popover-${index}`].doClose()
this.lock(false)
if (res.code == 200) {
this.tableData.splice(index, 1)
} else {
this.$notify({
message: '附件删除失败...',
})
}
})
.catch(() => {
this.$refs[`popover-${index}`].doClose()
this.lock(false)
})
},
//下载笔记附件
downloadAnnex: ServeDownloadAnnex,
},
}
</script>
<style lang="less" scoped>
.lum-dialog-box {
width: 700px;
height: 80%;
max-width: 700px;
.main {
padding-top: 0;
}
.footer {
.footer-tip {
color: #a7afbc;
font-size: 12px;
font-weight: 400;
line-height: 1.6;
}
}
}
/deep/ .tab-header-row .cell {
font-size: 14px;
font-weight: 400;
color: rgb(172, 167, 167);
}
</style>