Skip to content

feat(寄件): 为 2024 版界面新增凭码上传与寄件管理 - #12

Open
dawnStamp wants to merge 5 commits into
vastsa:mainfrom
dawnStamp:feature/delivery-code
Open

dawnStamp wants to merge 5 commits into
vastsa:mainfrom
dawnStamp:feature/delivery-code

Conversation

@dawnStamp

@dawnStamp dawnStamp commented Sep 19, 2026

Copy link
Copy Markdown

关联需求:vastsa/FileCodeBox#513
配套后端 PR:vastsa/FileCodeBox#534

背景

公网部署时,开放游客上传容易被用于垃圾投递和资源滥用,直接关闭又会影响临时访客提交文件。配套后端通过管理员发放的寄件码提供受限上传权限,本 PR 为这一流程增加 2024 版界面,使管理员能够管理授权,访客能够无需注册登录完成投递。

修改范围

仅修改 FileCodeBox 的 2024 版 Vue 前端。2023 版前端源码未修改,本 PR 不包含其原生寄件界面。

  • 增加凭码寄件入口和验证页面,支持通过寄件链接自动验证。
  • 验证后复用现有发送页面,支持文件、文本及已有上传方式,并展示用途和剩余寄件次数。
  • 后台增加寄件码创建、编辑、启停、删除及关联收件查看入口。
  • 创建成功后展示口令、寄件链接和二维码,便于管理员分发。
  • 复用原文件管理组件查看收件,沿用详情、下载、编辑和删除能力。
  • 沿用现有管理员权限守卫、中英文切换及深色模式;寄件上传凭证与管理员会话分开处理。

管理与交互增强

  • 寄件管理增加关键字搜索、状态/存储/标签筛选、排序和分页,支持选择后批量启停、删除及修改次数或有效期。
  • 支持编辑口令、用途、存储位置、备注及标签,显示成功次数、上传占用及总次数。
  • 创建成功展示有效期、剩余次数、口令、寄件链接及二维码;列表支持再次查看与复制口令。
  • 通过寄件链接自动验证,成功后复用原发送页和发件记录,多文件沿用原 ZIP 打包流程。
  • “查看收件”复用文件管理列表,按寄件码限制关联范围;历史私有收件及处理中记录保留兼容展示。
  • 统一寄件管理与系统设置的存储选项、文件管理与寄件管理的删除按钮及操作栏交互。

兼容与报错修复

  • 剪贴板 API 不可用或权限被拒绝时继续尝试兼容复制,清理临时节点并恢复焦点;口令复制仍失败时支持手动选取。
  • 粘贴图片后切换到文件面板、清除旧多文件选择并保留文字草稿;提交过程中忽略新的粘贴操作,避免状态混淆。
  • 寄件请求使用独立凭证,避免管理员令牌覆盖寄件令牌,也避免寄件验证失败错误地清除管理员会话。
  • 架构检查脚本使用 fileURLToPath 解析路径,并统一路径分隔符,修复 Windows 下 URL 路径和排除规则匹配问题。
  • 增加主题功能标记,供后端识别 2024 原生寄件 UI,并将旧入口跳转至对应页面。

权限说明

寄件码只授予上传权限,不授予管理员权限。上传完成后返回独立取件码,接收者仍通过原取件流程获取内容。此功能依赖配套后端的寄件 API,不能仅靠前端界面实现访问控制。

演示

已在本地运行配套前后端,完成创建寄件码及一次文本投递。附图使用演示口令和临时数据。

截图来源:后端 6d94d41、前端 d81ab40。后续清理仅涉及个人标识、说明文档和注释,不改变截图中的 2024 原生功能。合并后已在独立临时目录通过架构检查、TypeScript 类型检查和 Vite 生产构建。尚未执行完整浏览器回归或 Windows 复测。

上游同步状态

已合入上游本地 NAS 分享页面(3075ff1),解决后台导航冲突,同时保留寄件管理与本地分享入口。

功能截图

图片来自配套前后端的本地演示,均非真实业务数据。截图资源保存在 fork 的独立文档分支,不包含在本 PR 的源码差异中。

寄件管理:筛选、标签与批量操作

寄件管理:筛选、标签与批量操作

创建寄件码:用途、有效期与次数

创建寄件码:用途、有效期与次数

寄件码分享:口令、链接与二维码

寄件码分享:口令、链接与二维码

访客凭码寄件:复用发送页面

访客凭码寄件:复用发送页面

文本寄件成功:生成独立取件码

文本寄件成功:生成独立取件码

dawnStamp and others added 4 commits September 15, 2026 20:01
移除已撤销寄件码筛选。粘贴图片后切换文件面板并提示,保留文字草稿。刷新列表放在页面标题旁,凭码寄件与创建按钮放在列表标题栏。
新增搜索排序、批量启停和期限次数修改、备注标签及32位寄件码编辑。

创建成功展示寄件链接和二维码,支持自动验证跳转上传;存储选项与系统设置统一,并明确独立有效期和次数规则。
@vercel

vercel Bot commented Sep 19, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the vastsa's projects Team on Vercel.

A member of the Team first needs to authorize it.

@vastsa

vastsa commented Sep 19, 2026

Copy link
Copy Markdown
Owner

可以贴一下截图哦

@dawnStamp

Copy link
Copy Markdown
Author

可以贴一下截图哦

提交里已有截图,改动已兼容现有功能 ui。

@vastsa

vastsa commented Sep 19, 2026

Copy link
Copy Markdown
Owner

先说结论:这个方向是对的,前端这侧也做得很认真,感谢。

凭码寄件复用现有发送页,而不是再做一套上传;publicApiClient / createDeliveryUploadClient 和 admin token 分开,寄件 401 不会清掉管理员会话。管理页复用文件列表看收件,创建后给口令/链接/二维码,这些都贴合 2024 的现有结构。说明里把「只改 2024、依赖配套后端、没做完整回归」写清楚了,也很好。

配套后端:vastsa/FileCodeBox#534

和后端一起看,按现状还不建议直接合,建议对齐这几件事:

  1. 先和当前 main 的 NAS 分享页对一下路由、后台导航、公共文件服务
    分支还没合上游本地 NAS 页,合并前这块会撞。

  2. 和后端统一产品语义
    这边走普通发送,成功后给取件码;后端 2023 兜底页是私有收件、访客拿不到取件码。多文件这边 ZIP 算 1 次。前后端、两套主题需要先定一种行为。

  3. 管理页拆一下
    DeliveryManageView.vue 八百多行、useDeliveryAdmin.ts 五百行,筛选/批量/编辑/分享挤在一块,后续难改。按列表、创建/编辑、批量操作拆开更合适。

  4. 寄件 token 要能续期
    后端 JWT 15 分钟,大文件分片超时会 401,这边目前没有 refresh。

  5. 别把 delivery session 直接 spread 进 config
    useSendFlow...getDeliverySession() 会把 token、remaining 等混进配置对象,后续很容易踩。覆盖 upload_size / expire_style 等白名单字段就行。

后端那侧还有:影子表 DeliveryFile、第二条上传 /api/delivery/upload、后端 HTML 管理页、用尽物理删码、全表内存筛选。前端可以继续复用发送页和管理布局,不必再为 2023 补一套原生界面。

方向保留,这版跟后端一起瘦身、对齐 2.7 再看。

@dawnStamp

Copy link
Copy Markdown
Author

先说结论:这个方向是对的,前端这侧也做得很认真,感谢。

凭码寄件复用现有发送页,而不是再做一套上传;publicApiClient / createDeliveryUploadClient 和 admin token 分开,寄件 401 不会清掉管理员会话。管理页复用文件列表看收件,创建后给口令/链接/二维码,这些都贴合 2024 的现有结构。说明里把「只改 2024、依赖配套后端、没做完整回归」写清楚了,也很好。

配套后端:vastsa/FileCodeBox#534

和后端一起看,按现状还不建议直接合,建议对齐这几件事:

  1. 先和当前 main 的 NAS 分享页对一下路由、后台导航、公共文件服务
    分支还没合上游本地 NAS 页,合并前这块会撞。
  2. 和后端统一产品语义
    这边走普通发送,成功后给取件码;后端 2023 兜底页是私有收件、访客拿不到取件码。多文件这边 ZIP 算 1 次。前后端、两套主题需要先定一种行为。
  3. 管理页拆一下
    DeliveryManageView.vue 八百多行、useDeliveryAdmin.ts 五百行,筛选/批量/编辑/分享挤在一块,后续难改。按列表、创建/编辑、批量操作拆开更合适。
  4. 寄件 token 要能续期
    后端 JWT 15 分钟,大文件分片超时会 401,这边目前没有 refresh。
  5. 别把 delivery session 直接 spread 进 config
    useSendFlow...getDeliverySession() 会把 token、remaining 等混进配置对象,后续很容易踩。覆盖 upload_size / expire_style 等白名单字段就行。

后端那侧还有:影子表 DeliveryFile、第二条上传 /api/delivery/upload、后端 HTML 管理页、用尽物理删码、全表内存筛选。前端可以继续复用发送页和管理布局,不必再为 2023 补一套原生界面。

方向保留,这版跟后端一起瘦身、对齐 2.7 再看。

好的,我去优化上传一下,确实有些考虑的不周全。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants