修复自定义app里面的pagetype列表页和详情页无法覆盖默认模板的问题
This commit is contained in:
parent
9f712cf2f6
commit
84facc2b2a
@ -26,8 +26,6 @@ type SourceEntry = {
|
|||||||
|
|
||||||
const allPagetypeViews: Record<string, SourceEntry> = {}
|
const allPagetypeViews: Record<string, SourceEntry> = {}
|
||||||
|
|
||||||
// 保留占位,若后续需要扩展路径解析可重新启用
|
|
||||||
|
|
||||||
function extractAppName(absPath: string): string {
|
function extractAppName(absPath: string): string {
|
||||||
// 形如 @apps/<app>/frontend/src/...
|
// 形如 @apps/<app>/frontend/src/...
|
||||||
const parts = absPath.split('/')
|
const parts = absPath.split('/')
|
||||||
@ -88,35 +86,41 @@ function ensureIndexed(entity: string): Indexed {
|
|||||||
for (const file of Object.keys(allPagetypeViews)) {
|
for (const file of Object.keys(allPagetypeViews)) {
|
||||||
const segs = file.split('/').filter(Boolean)
|
const segs = file.split('/').filter(Boolean)
|
||||||
const len = segs.length
|
const len = segs.length
|
||||||
if (len < 5) continue
|
if (!file.includes('/pagetype/')) continue
|
||||||
|
const pagetypeIdx = segs.indexOf('pagetype')
|
||||||
|
if (pagetypeIdx < 0 || pagetypeIdx + 2 >= len) continue
|
||||||
|
|
||||||
const fileName = segs[len - 1]
|
const fileName = segs[len - 1]
|
||||||
const folderName = segs[len - 2]
|
const folderName = segs[pagetypeIdx + 1]
|
||||||
const baseName = fileName.replace(/\.vue$/i, '')
|
const baseName = fileName.replace(/\.vue$/i, '')
|
||||||
const entity = folderName
|
// 统一转为小写进行索引和匹配
|
||||||
|
const folderNameLower = folderName.toLowerCase()
|
||||||
|
const baseNameLower = baseName.toLowerCase()
|
||||||
|
const entity = folderNameLower
|
||||||
const bucket = ensureIndexed(entity)
|
const bucket = ensureIndexed(entity)
|
||||||
|
|
||||||
// 详情页覆盖:<pagetype>.vue
|
// 详情页覆盖:<pagetype>.vue
|
||||||
if (baseName === folderName) {
|
if (baseNameLower === folderNameLower) {
|
||||||
bucket.detail.push(file)
|
bucket.detail.push(file)
|
||||||
}
|
}
|
||||||
// 详情页工具栏覆盖:<pagetype>_toolbar.vue
|
// 详情页工具栏覆盖:<pagetype>_toolbar.vue
|
||||||
else if (baseName === `${folderName}_toolbar`) {
|
else if (baseNameLower === `${folderNameLower}_toolbar`) {
|
||||||
bucket.toolbar.push(file)
|
bucket.toolbar.push(file)
|
||||||
}
|
}
|
||||||
// 列表页覆盖:<pagetype>_list.vue
|
// 列表页覆盖:<pagetype>_list.vue
|
||||||
else if (baseName === `${folderName}_list`) {
|
else if (baseNameLower === `${folderNameLower}_list`) {
|
||||||
bucket.list.push(file)
|
bucket.list.push(file)
|
||||||
}
|
}
|
||||||
// 列表页工具栏覆盖:<pagetype>_list_toolbar.vue
|
// 列表页工具栏覆盖:<pagetype>_list_toolbar.vue
|
||||||
else if (baseName === `${folderName}_list_toolbar`) {
|
else if (baseNameLower === `${folderNameLower}_list_toolbar`) {
|
||||||
bucket.listToolbar.push(file)
|
bucket.listToolbar.push(file)
|
||||||
}
|
}
|
||||||
// 列表页过滤栏覆盖:<pagetype>_list_filterbar.vue
|
// 列表页过滤栏覆盖:<pagetype>_list_filterbar.vue
|
||||||
else if (baseName === `${folderName}_list_filterbar`) {
|
else if (baseNameLower === `${folderNameLower}_list_filterbar`) {
|
||||||
bucket.filterbar.push(file)
|
bucket.filterbar.push(file)
|
||||||
}
|
}
|
||||||
// 列表页操作列覆盖:<pagetype>_list_actions.vue
|
// 列表页操作列覆盖:<pagetype>_list_actions.vue
|
||||||
else if (baseName === `${folderName}_list_actions`) {
|
else if (baseNameLower === `${folderNameLower}_list_actions`) {
|
||||||
bucket.actions.push(file)
|
bucket.actions.push(file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user