|
|
619b965cf8
|
🐛 修复分享页下载文件时页面闪动问题
- 问题:使用window.open()下载文件会导致页面短暂失焦,产生闪动效果
- 修复:改用隐藏的<a>标签触发下载,避免打开新标签页
- 新增triggerDownload()方法处理文件下载
- 影响文件:frontend/share.html (line 744-795)
|
2025-11-18 18:10:03 +08:00 |
|
|
|
bce225ec5c
|
feat: 添加管理员可控的F12调试模式开关
## 功能说明
- 管理员登录后可在管理后台页面看到"调试模式"卡片
- 点击开关按钮可启用/禁用F12和开发者工具
- 调试模式状态保存在localStorage,页面刷新后保持
- 同时控制主应用(app.html)和分享页面(share.html)的调试权限
## 技术实现
1. app.js新增debugMode配置和toggleDebugMode方法
2. app.html添加调试模式开关UI,并修改防调试代码支持debugMode控制
3. share.html添加防调试代码,受localStorage中的debugMode控制
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-14 16:04:17 +08:00 |
|
|
|
024e807f75
|
fix: 优化时间显示逻辑,支持分钟和小时级别的到期提醒
问题: 0.01天(约14分钟)显示为"今天过期",不够精确
原因: 使用Math.ceil向上取整,导致小于1天的时间都显示为1天
修复内容:
1. 改用Math.floor向下取整,更准确反映剩余时间
2. 新增diffMinutes和diffHours变量,支持分钟和小时级别显示
3. 优化判断逻辑:
- 0-59分钟: 显示"X分钟后过期"
- 1-23小时: 显示"X小时后过期"
- 1天: 显示"明天过期"
- 2-7天: 显示"X天后过期"
- 7天以上: 显示具体日期时间
修改文件:
- frontend/app.js: formatExpireTime方法(第1317-1335行)
- frontend/share.html: formatExpireTime方法(第836-854行)
测试示例:
- 0.01天(14分钟) → "14分钟后过期 (2025-11-14 12:27)"
- 0.5天(12小时) → "12小时后过期 (2025-11-15 00:00)"
- 1天 → "明天过期 (2025-11-15 12:13)"
- 7天 → "7天后过期 (2025-11-21 12:13)"
关于过期文件清理:
已分析当前机制,过期分享无法访问但记录不会自动删除。
详细分析和解决方案见《分享过期处理机制分析报告.md》。
当前实现是安全的,自动清理功能可作为后续优化。
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-14 15:22:19 +08:00 |
|
|
|
84e9a19f3e
|
fix: 修复分享到期时间显示的两个问题
问题1: 分享成功提示中到期时间显示为"永久有效"
- 修复: backend/database.js 的create方法添加返回expires_at字段
- 修复: backend/server.js 的API响应中添加expires_at字段
- 现在创建分享后会正确显示设置的到期时间
问题2: share.html分享页面不显示到期时间
- 新增: 在分享信息中添加到期时间显示(frontend/share.html:527-528)
- 新增: 添加formatExpireTime/isExpiringSoon/isExpired方法
- 效果: 访问分享页面时可以看到"到期时间"或"永久有效"
改进:
- 使用颜色区分状态(绿色=永久/正常, 黄色=即将过期, 红色=已过期)
- 友好的时间显示格式(X天后过期/明天过期等)
注意: 关于0.01天显示问题的优化方案已文档化,需要手动修改app.js
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-14 13:54:38 +08:00 |
|
|
|
70b03c3c6b
|
fix: 修复分享页面文件名过长导致布局溢出的问题
修改内容:
1. 单文件显示 (.single-file-name):
- 添加 max-width: 100% 限制最大宽度
- 使用 -webkit-line-clamp: 3 限制最多显示3行
- 超出部分显示省略号 (...)
- 改用 word-break: break-word 更优雅的换行
2. 列表视图文件名:
- 添加 .file-name-container 和 .file-name-text 类
- 使用 overflow: hidden 和 text-overflow: ellipsis
- 单行显示,超出显示省略号
- 设置 min-width: 0 确保flex容器正确缩小
修复效果:
- 文件名再长也不会溢出到界面外
- 单文件视图最多显示3行
- 列表视图单行显示带省略号
- 鼠标悬停在网格视图文件名上会显示完整文件名(title属性)
|
2025-11-14 09:20:13 +08:00 |
|
|
|
cd79496fc4
|
fix: 修复分享页面时间显示问题,正确显示本地时间
- 修改 share.html 中的 formatDate 函数
- 与 app.js 保持一致的 UTC 时间处理逻辑
- 使用 toLocaleString 格式化为本地时间
- 修复分享页面显示 13号(UTC) 而不是 14号(CST) 的问题
|
2025-11-14 01:08:47 +08:00 |
|
WanWanYun
|
136d45dee7
|
优化: 分享所有文件时支持点击文件图标放大查看,并可返回列表
功能描述:
- 在分享所有文件(目录分享)时,点击文件图标可以放大查看
- 显示效果与分享单个文件时相同(居中大图标显示)
- 左上角显示"返回列表"按钮,点击可返回文件列表
- 单个文件分享时不显示返回按钮(避免混淆)
实现内容:
1. 添加状态管理
- viewingFile: 当前正在查看的文件(null表示在列表视图)
2. 新增方法
- handleFileClick(file): 处理文件点击
* 图片/视频/音频 → 打开媒体预览(保持原有行为)
* 其他文件 → 显示详情页面
- viewFileDetail(file): 设置viewingFile显示详情
- backToList(): 清除viewingFile返回列表
3. 修改HTML模板
- 标题添加返回按钮(条件:viewingFile存在且不是单文件分享)
- 单文件显示条件:viewingFile || files.length === 1
- 网格/列表视图条件:添加 !viewingFile 限制
- 单文件显示内容:使用 viewingFile || files[0]
4. 防止bug设计
- shareInfo.share_type !== 'file' 确保单文件分享不显示返回按钮
- handleFileClick 区分媒体文件和普通文件
- viewingFile 为null时正常显示文件列表
用户体验提升:
✅ 点击文件图标即可放大查看详情
✅ 查看体验与单文件分享一致
✅ 返回按钮清晰明了
✅ 媒体文件仍然打开预览
✅ 单文件分享不显示返回按钮(避免混淆)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-12 18:24:29 +08:00 |
|
WanWanYun
|
2dc6323554
|
修复: 移除API地址硬编码,统一使用nginx代理
- 修复frontend/app.js中的localhost:40001硬编码
- 修复frontend/share.html中的localhost:40001硬编码
- 所有API请求现在统一通过nginx代理访问
- 支持任意端口号部署,无需修改前端代码
|
2025-11-11 23:54:40 +08:00 |
|
WanWanYun
|
0f133962dc
|
Initial commit - 玩玩云文件管理系统 v1.0.0
- 完整的前后端代码
- 支持本地存储和SFTP存储
- 文件分享功能
- 上传工具源代码
- 完整的部署文档
- Nginx配置模板
技术栈:
- 后端: Node.js + Express + SQLite
- 前端: Vue.js 3 + Axios
- 存储: 本地存储 / SFTP远程存储
|
2025-11-10 21:50:16 +08:00 |
|