feat(ui06): B3c form batch — full-page create/edit form + assets tab

- 新增 /albums/form/create 与 /albums/form/:albumId 整页表单路由(隐藏路由,父菜单高亮)
- 编辑模式资料/访问页签(访问=开关行卡:标题+说明+开关);创建模式契约约束下载开关+解释提示
- 校验/提交逻辑与原对话框一致(契约镜像校验;translations 全量替换;创建仅 download 开关)
- 保存成功跳相册详情;manage/detail 两处入口改路由跳转,删除 AlbumFormDialog
- banner 上传收进详情「品牌资产」独立页签(15)
- e2e 适配:整页表单流程(form-page/goback/访问页签)、详情锚点改 summary、banner 页签
- typecheck/lint/vitest/build 全绿

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-23 06:58:01 +08:00
parent d6d012b992
commit 352d7405c2
30 changed files with 565 additions and 337 deletions
+3 -15
View File
@@ -170,8 +170,6 @@
</ElButton>
<span v-else>{{ $t('albumsManage.list.noMore') }}</span>
</div>
<AlbumFormDialog v-model="formVisible" :album="editing" @saved="onSaved" />
</div>
</template>
@@ -180,7 +178,6 @@
import { useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import { Search, Menu, Grid } from '@element-plus/icons-vue'
import AlbumFormDialog from './AlbumFormDialog.vue'
import AlbumCoverCard from '@/components/business/albums/AlbumCoverCard.vue'
import { fetchAlbumList } from '@/api/albums'
import { useCursorList } from '@/views/albums/composables/useCursorList'
@@ -243,22 +240,13 @@
]
}
// ── 创建 / 编辑 ──
const formVisible = ref(false)
const editing = ref<Api.Album.Summary | null>(null)
// ── 创建 / 编辑(UI06:整页表单路由) ──
function openCreate() {
editing.value = null
formVisible.value = true
router.push({ name: 'AlbumsFormCreate' })
}
function openEdit(album: Api.Album.Summary) {
editing.value = album
formVisible.value = true
}
function onSaved() {
loadFirst()
router.push({ name: 'AlbumsFormEdit', params: { albumId: album.id } })
}
// ── 跳转 ──