水印优化+定时任务删除+照片管理

This commit is contained in:
2026-09-28 11:40:38 +08:00
parent 0129cb1290
commit dbb0178918
10 changed files with 613 additions and 0 deletions
@@ -79,6 +79,10 @@
<span class="mi-icon"><img class="ci" src="/admin/icons/bill.svg" width="18" height="18" alt=""></span>
<span class="mi-text">财务管理</span>
</button>
<button class="module-item" data-module="photos">
<span class="mi-icon"><img class="ci" src="/admin/icons/camera.svg" width="18" height="18" alt=""></span>
<span class="mi-text">相片管理</span>
</button>
<button class="module-item" data-module="ai">
<span class="mi-icon"><img class="ci" src="/admin/icons/assistant.svg" width="18" height="18"
alt=""></span>
@@ -175,6 +179,27 @@
<!-- ==================== AI 助手模块 ====================
和 App 端共用同一套后端接口(/api/ai/**),历史存在服务端的
chat_session / chat_message 里 —— 所以两边看到的会话是同一批。 -->
<!-- ==================== 相片管理 ==================== -->
<section class="module-panel" data-module-panel="photos" style="display:none">
<div class="toolbar">
<span class="toolbar-title">相片管理</span>
<span class="toolbar-note" id="photo-hint"></span>
<div class="spacer"></div>
<button id="photo-reload">刷新</button>
</div>
<div class="module-body">
<main class="photo-main">
<!-- 缩略图网格。点一张看大图,右上角可下载/删除 -->
<div id="photo-grid" class="photo-grid"></div>
<div id="photo-more" class="photo-more" style="display:none">
<button id="photo-more-btn">加载更多</button>
</div>
</main>
</div>
</section>
<section class="module-panel" data-module-panel="ai" style="display:none">
<div class="toolbar">
@@ -226,6 +251,21 @@
</div>
</div>
<!-- ==================== 相片大图查看 ==================== -->
<div id="photo-view">
<div class="pv-head">
<span class="pv-title" id="pv-title"></span>
<div class="spacer"></div>
<button id="pv-download">下载原图</button>
<button class="danger" id="pv-delete">删除</button>
<button id="pv-close">关闭</button>
</div>
<div class="pv-body">
<img id="pv-img" alt="">
</div>
<div class="pv-meta" id="pv-meta"></div>
</div>
<!-- ==================== 目录名输入 / 目录选择弹窗 ==================== -->
<div id="dialog">
<div class="dialog-box">