feat: 文件浏览页支持多选、批量下载/删除与分页
- 后端: - UploadService.delete_file 下沉删除逻辑(DB 行 + 磁盘文件),单删/批删复用。 - POST /api/admin/files/batch-delete:批量硬删除,返回 deleted 数与 not_found 列表。 - list 接口加 Query 约束(limit 1-10000、offset>=0),非法返回 422。 - 前端(file_browser): - 复选框列 + 全选/反选,选中行高亮,批量操作栏(已选计数/下载/删除/取消)。 - 分页控件:每页 20/50/100/全部 切换,页码导航(首页/末页/当前±1/省略号)。 - 批量下载逐个触发(间隔 150ms 防浏览器拦截);批量删除走 batch-delete 接口。 - 删除后重载当前页,当前页空则回退一页。
This commit is contained in:
@@ -10,17 +10,35 @@
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<h1>文件浏览</h1>
|
||||
<p class="sub">查看已上传的文件、下载或删除。删除后不再显示。</p>
|
||||
<p class="sub">查看已上传的文件、下载或删除。支持多选与分页。删除后不再显示。</p>
|
||||
|
||||
<div class="toolbar">
|
||||
<button class="btn primary" id="refresh">刷新</button>
|
||||
<span class="muted" id="count"></span>
|
||||
<span class="toolbar-spacer"></span>
|
||||
<label class="page-size">每页
|
||||
<select id="pageSize">
|
||||
<option value="20">20</option>
|
||||
<option value="50">50</option>
|
||||
<option value="100" selected>100</option>
|
||||
<option value="all">全部</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="batchbar" class="batchbar hidden">
|
||||
<span class="batchbar-info">已选 <b id="selCount">0</b> 项</span>
|
||||
<button class="btn primary" id="batchDownload">批量下载</button>
|
||||
<button class="btn danger" id="batchDelete">批量删除</button>
|
||||
<button class="btn ghost" id="clearSel">取消选择</button>
|
||||
</div>
|
||||
|
||||
<div id="list">
|
||||
<div class="skel">加载中…</div>
|
||||
</div>
|
||||
|
||||
<div id="pager" class="pager hidden"></div>
|
||||
|
||||
<p class="foot"><a class="link" href="/upload">上传文件</a> · zikai file service</p>
|
||||
</div>
|
||||
<script src="/static/common.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user