Commit Graph
112 Commits
Author SHA1 Message Date
Vicky 2fa1416c3e fix(web): el-radio 改用 2.5.5 的 label API —— 全项目单选组失效(点一个全亮)
为什么:项目锁 element-plus 2.5.5,而 2.5.5 的 el-radio 只有 `label` 属性(`value` 是 2.6.0+ 才引入的替代 API)。
源码可证:node_modules/.pnpm/element-plus@2.5.5_vue@3.4.15/.../radio/src/radio.mjs 的 radioPropsBase 只有
label,没有 value。所以 `<el-radio value="X">` 的 value 是无效 attribute,radio 的 label 全是默认空串:
点任意一个 → 模型被设成 "" → 所有 radio 的 label 都是 "" → 全部显示选中(用户看到"点个人、公司也选上了")。
初始值非空时没有匹配项,所以一开始一个都不选中,一点就全亮。

- 全项目 14 处 el-radio(6 个文件)统一把 value= 改成 :label=(值与显示文本不同时用 slot 承载文本)
  覆盖:创作者类型 / 创作者审核 / 内容审核 / 权益类型 / App 用户处置 / 举报处理 / 菜单类型
- 不升级 element-plus(会影响整个后台组件行为,需单独评估)

实测:7 个单选组逐个点选,均"只有被点的那个选中";创作者类型额外验落库值
(选个人 → INDIVIDUAL,选机构 → COMPANY)。
2026-10-15 16:44:22 +08:00
Vicky 4509323ba8 fix(web): 切换账号残留上一账号的标签/菜单;审核按钮不再对已通过的行显示
问题 1(创作者登录后还能看到「工作台」)根因:tagsView.delAllVisitedViews() 会「保留 affix 标签」,
它判断的是 userInfo 是否还在,而 userStore.reset() 是先清标签、后清 userInfo —— 顺序反了,
写死路由表里 affix 的「工作台」标签就跨账号活了下来。整页刷新时不复现,所以只有"退出后不刷新直接登录"
才看得到(PM 复现不到就是这个原因)。修法与加固:

- userStore.reset():先清账号信息再清标签,并调 permissionStore.clearRoutes() 一并清菜单状态
- permissionStore 增加 routersOwner(当前菜单属于哪个账号)+ clearRoutes();守卫发现账号变了会先 resetRouter()
  摘掉上一个账号动态加的路由,再重建(避免两套菜单并存、也避免创作者还能直接进 /dashboard)
- 守卫里"菜单拉取失败沿用上次缓存"这条:换账号后不再沿用(宁可先给空菜单)

问题 2(创作者入驻/审核):真实 UI 全流程(新增→审核→开通→凭据→登录落地)本身能跑通,
但复现出「审核」按钮对**所有状态**都显示 —— 后端状态机是 通过可从 pending/rejected/frozen 发起、
驳回只允许 pending、冻结只允许 approved,对「已通过」的行点审核提交必然 200003 红错。修法:
- 已通过的行不再显示「审核」(保留 冻结/重置密码/开通账号)
- 审核弹窗里的「驳回」只对 pending 显示,其余状态只能通过

顺带修:views/common/DashboardView 取列表时 res 可能为 undefined(拦截器把业务错误吞成 undefined),
账号切换瞬间会抛 Cannot read properties of undefined,已加可选链。
2026-10-15 16:30:29 +08:00
Vicky 8ce43ccd4c feat(web): 创作者审核页支持开号/重置密码;登录落地按角色分流 + 首登强制改密
为什么:后台能开号了,但界面还没有入口;而且创作者登录后会落到 /dashboard/index(他没有运营后台权限)
直接掉 404。这批把开号入口、一次性凭据展示、落地分流与首登改密一次补齐。

- 创作者入驻页:「新增创作者」按钮(名称/类型/联系人/邮箱/国家)、「账号」列(已开通/未开通)、
  行内「开通账号 / 重置密码」;密码一次性弹窗展示(等宽可选中 + 一键复制 + 提示只显示这一次)
- 落地分流:新增 landingPath()(取账号能进的第一个菜单),登录与访问根路径都走它 ——
  创作者落 /creator-center/workspace,超管第一条仍是工作台(行为不变)
- 首登强制改密:Layout 挂 MustChangePasswordDialog,登录或刷新后若 profile 带 mustChangePassword 就弹不可关闭的
  改密框,改完清标记;只能改密或退出登录
2026-10-15 16:01:13 +08:00
Vicky bac070b60b fix(web): 代看目标失效时清掉本地选择
为什么:实测发现目标创作者被删掉后,顶部的「当前创作者」还显示着那个已经进不去的 id(下拉里也没有对应选项,
标签却还挂着"只读代看"),和页面提示的"请先选择代看创作者"互相打架。现在探测到身份不通过且有本地目标时,
一并清掉选择与缓存,让下拉回到占位符。
2026-10-15 15:30:35 +08:00
Vicky 685c912313 feat(web): 创作者中心「当前创作者」代看下拉 + 未绑定引导页
为什么:超管点进创作者中心原本是一片"未绑定创作者主体"的报错,既没说明原因也没有出路。
这批把两件事做出来:超管能在顶部选一个创作者只读代看;没有创作者身份的账号看到明确的引导页而不是白屏。

- 新增 useCreatorAccess(身份三态:granted / need-target / unbound)+ ImpersonationBar + CreatorAccessGuide,
  四个页面用 CreatorCenterPage 统一套壳;身份不满足时不打业务接口,避免一串无意义的报错提示
- 代看目标存 localStorage,由 axios.request 统一给 /admin/creator-center 的请求加 X-Creator-Id 头
  (不做查询参数;后端只对具备 impersonate 权限的账号认这个头)
- axios 支持 silent 请求:业务码非 0 时不弹全局提示、把 Result 交给调用方判断(引导页据此分流)
- 代看只读体验:代看态下「新建作品 / 编辑 / 提交审核 / 撤回」不渲染,编辑页整页禁用并提示原因
- 顶部下拉只在有 impersonate 权限时显示;无权限账号看不到、也不会请求 targets 接口
2026-10-15 15:25:53 +08:00
Vicky 0a2e3e0b81 feat(web): 07 创作者中心四个页面(我的作品 / 作品编辑 / 收费配置 / 数据看板)
为什么:07 的接口五批都做完了,但创作者在界面上一个都点不到 —— 只能靠 curl。
这批把创作者中心做进后台管理(沿用 AppUsersView 那套 api 封装 + composable + 视图 + 样式与 console.css),
创作者用自己的后台账号登录就能完成"建草稿 → 编辑分集传片 → 提交审核 → 配置收费 → 看数据"的闭环。

- WorkspaceView:主体状态 / 我的作品(含最近一次提交的审核进度)/ 通知列表;新建草稿、按状态给出可提交的动作、撤回
- DramaEditView:作品信息(封面、预告片)、分集增删与上移下移、分片上传(复用 /admin/media)+ 断点续传
  (会话存 localStorage,中断后「继续上传」接着传)、产物挂载、提交记录与撤回;非草稿/已下线状态整页转只读
- PriceConfigView:整剧免费集数与解锁金币 + 逐集免费/收费/试看秒数;已上线只读(需先申请下线)
- DashboardView:作品 / 播放 / 互动 / 解锁收入四组指标,取不到的显示「暂无数据源」+ notes 口径说明
- 时间列统一 yyyy-MM-dd HH:mm:ss;表格列与后端字段一一对应,不在前端编字段
- media.ts 补上传进度接口;uploader 补 resumeUpload(先查服务端进度再续传)
2026-10-15 14:47:28 +08:00
Vicky f037d243cd feat(web): 08 后台四个页面落地(内容治理 / 订单与权益 / 创作者审核 / 数据看板)
为什么:08 运营后台的接口在前几轮已经实现,但运营在界面上点不到——
评论审核、举报工单、敏感词维护、订单补发/退款、权益回收、金币补发、对账、
创作者入驻与内容提交审核、运营大盘,都只能靠 curl。本轮把这四个页面补齐,
08 才算真正闭环。

- 内容治理:评论审核(通过/驳回/删除)、举报工单处理(可联动封禁)、敏感词库增删改查
- 订单与权益:订单检索与流水、补发、退款、权益检索/人工补发/回收、金币流水与人工补币、对账运行与历史
- 创作者审核:入驻审核(通过/驳回原因码/冻结)+ 资质抽屉;内容提交审核(通过/驳回)
- 数据看板:overview 五组指标 + transcode 队列与失败任务,只读;取不到的指标显示「暂无数据源」而不是 0
- 新增 console.css(工具条/抽屉/看板卡片,含深色模式),四个页面共用;时间列统一 yyyy-MM-dd HH:mm:ss
- 按钮按权限点显隐(没有 *:update / *:audit 的角色看到的是只读态),表格列与后端字段一一对应
2026-10-15 13:28:46 +08:00
Vicky 44c2c46a68 chore(web): 收口前几轮后台改动(品牌 / 媒资上传 / 轮播图 / 类型管理 / 操作日志 / App 用户)
为什么:这些改动在前几轮就已完成并在 :3005 验证过,但一直留在工作区没有入库。
下一步 3-4 的四个页面依赖其中的公共样式入口(src/styles/business/index.css)与
api/admin 的公共类型(PageResult 等),如果不先收口,新页面的提交就会夹带旧改动,
既说不清 diff 边界,也让 index.css 这类多轮共用的文件长期处于半提交状态。

本提交只做归档,不改行为:
- 品牌与接口基址改成 FruitShorts / 短剧服务(.env.*、README、vite 代理)
- 去掉前端 mock 数据目录(src/data、src/permissions、stores/auth),改为走真实接口
- 新增 api/admin 下的接口封装与 src/utils/uploader.ts(媒资分片直传)
- 新增/改造:轮播图管理、类型管理、操作日志、App 用户管理、后台布局与公共样式
2026-10-15 13:28:01 +08:00
Vicky 40546bfd01 feat: 搭建后台管理框架 2026-10-13 13:58:05 +08:00
Vicky 6d28bab72b Revert "Rename the project to ReelShortWeb."
This reverts commit 96483c8e8d.
2026-10-12 19:16:11 +08:00
VickyandCursor 96483c8e8d Rename the project to ReelShortWeb.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 19:15:13 +08:00
Vicky db15eb3ee0 first commit 2026-10-12 17:35:07 +08:00