feat(admin): 广告位管理页——上传/链接/绑定相册/开关/排序
Task 11(广告位轮播):admin 后台广告位治理页。 - utils/ads/adsLogic:scopeKind/normalizeAlbumIds/isValidAdLinkUrl 纯逻辑 (与服务端 dto LINK_URL_PATTERN、albumIds 归一语义同源)+ vitest 6 例 - api/ads + types/api/ads.d.ts:list/create/update/delete/initUpload 五端点 (对照 embedSlots.ts 逐字风格;列表全量不分页、imageUrl 现签) - views/system/ads:列表(缩略图/备注名/链接截断/投放范围标签/启停开关 失败重拉回滚/上移下移 sortOrder 互换/硬删确认)+ 新建编辑对话框 (staging 直传 init→裸 fetch PUT、Content-Type 与申明一致;相册多选 远程搜索复用 /v1/albums 分页+本地过滤,绑定 ID 超限/失效以裸 ID 兜底; 编辑换图才带 image 三字段;albumIds 归一空→null 转全局) - 路由/菜单:system 组 ads 页(ri:advertisement-line,workspace 分组); locales zh/en 补 menus.system.ads + adsManage 子树(键集一致入单测) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -235,7 +235,8 @@
|
||||
"users": "账号管理",
|
||||
"userSync": "用户同步",
|
||||
"usage": "用量统计",
|
||||
"embedSlots": "展示位管理"
|
||||
"embedSlots": "展示位管理",
|
||||
"ads": "广告位管理"
|
||||
},
|
||||
"albums": {
|
||||
"title": "相册管理",
|
||||
@@ -922,6 +923,67 @@
|
||||
"enabledOff": "已停用(configVersion 已递增至 {version},公开端随即 404)"
|
||||
}
|
||||
},
|
||||
"adsManage": {
|
||||
"list": {
|
||||
"title": "广告位管理",
|
||||
"subtitle": "管理相册页广告轮播:图片、跳转链接、投放范围与排序。",
|
||||
"tableTitle": "广告位列表",
|
||||
"create": "新建广告位",
|
||||
"empty": "暂无广告位,点击「新建广告位」创建",
|
||||
"loadFailed": "广告位列表加载失败",
|
||||
"retry": "重试",
|
||||
"colImage": "图片",
|
||||
"colTitle": "备注名",
|
||||
"colLink": "跳转链接",
|
||||
"colScope": "投放范围",
|
||||
"colEnabled": "启用",
|
||||
"colActions": "操作",
|
||||
"scopeGlobal": "全局",
|
||||
"scopeTargeted": "定向 {n} 相册",
|
||||
"imageAlt": "广告图",
|
||||
"actionUp": "上移",
|
||||
"actionDown": "下移",
|
||||
"actionEdit": "编辑",
|
||||
"actionDelete": "删除",
|
||||
"deleteConfirm": "确定删除广告位「{name}」?删除后不可恢复(数据不保留)。",
|
||||
"deleted": "广告位已删除"
|
||||
},
|
||||
"toast": {
|
||||
"enabledOn": "广告位已启用",
|
||||
"enabledOff": "广告位已停用(观众页随即不可见)"
|
||||
},
|
||||
"form": {
|
||||
"imageLabel": "广告图",
|
||||
"imagePick": "选择图片",
|
||||
"imageRepick": "重选图片",
|
||||
"imageHint": "建议 1200×360、不超过 2MB,支持 jpeg/png/heic",
|
||||
"imageRequired": "请先上传广告图",
|
||||
"imageInvalidType": "仅支持 jpeg/png/heic 图片",
|
||||
"imageTooLarge": "图片超过 2MB 上限",
|
||||
"imageUploadFailed": "图片上传失败:{message}",
|
||||
"imageStagedTag": "新图待保存",
|
||||
"linkLabel": "跳转链接",
|
||||
"linkPlaceholder": "https://example.com/promo",
|
||||
"linkRequired": "请输入跳转链接",
|
||||
"linkInvalid": "链接须以 http(s):// 开头且不超过 2048 字符",
|
||||
"titleLabel": "备注名",
|
||||
"titlePlaceholder": "如:秋季活动推广(仅后台可见,可空)",
|
||||
"albumsLabel": "绑定相册",
|
||||
"albumsPlaceholder": "输入相册标题或 ID 搜索",
|
||||
"albumsSearching": "搜索中…",
|
||||
"albumsNoMatch": "无匹配相册",
|
||||
"albumsHint": "留空=全局投放(全部相册观众页轮播)",
|
||||
"submit": "保存"
|
||||
},
|
||||
"create": {
|
||||
"title": "新建广告位",
|
||||
"created": "广告位已创建"
|
||||
},
|
||||
"edit": {
|
||||
"title": "编辑广告位",
|
||||
"saved": "广告位已保存"
|
||||
}
|
||||
},
|
||||
"apiMsg": {
|
||||
"AUTH_INVALID_CREDENTIALS": "账号或密码错误",
|
||||
"AUTH_RATE_LIMITED": "登录失败次数过多,请稍后再试",
|
||||
|
||||
Reference in New Issue
Block a user