From 089bf5d2378b3c4a61d795b2a92bede2c193b771 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:22:58 +0800
Subject: [PATCH] 1
---
src/components/note/NoteAnnexRecycle.vue | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 205 insertions(+), 0 deletions(-)
diff --git a/src/components/note/NoteAnnexRecycle.vue b/src/components/note/NoteAnnexRecycle.vue
new file mode 100644
index 0000000..64343f0
--- /dev/null
+++ b/src/components/note/NoteAnnexRecycle.vue
@@ -0,0 +1,205 @@
+<template>
+ <div class="lum-dialog-mask">
+ <el-container
+ class="lum-dialog-box animated bounceInDown"
+ >
+ <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="230"
+ :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: 100%;
+ height: 80%;
+ max-width: 800px;
+
+ .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>
--
Gitblit v1.9.3