diff --git a/apps/jingrow/frontend/src/apps/jingrow/jingrow/core/pagetype/file/form/controls/HTML.vue b/apps/jingrow/frontend/src/apps/jingrow/jingrow/core/pagetype/file/form/controls/HTML.vue
deleted file mode 100644
index 330a5d3..0000000
--- a/apps/jingrow/frontend/src/apps/jingrow/jingrow/core/pagetype/file/form/controls/HTML.vue
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/jingrow/frontend/src/core/registry/controlOverride.ts b/apps/jingrow/frontend/src/core/registry/controlOverride.ts
index 9f6a127..83a8080 100644
--- a/apps/jingrow/frontend/src/core/registry/controlOverride.ts
+++ b/apps/jingrow/frontend/src/core/registry/controlOverride.ts
@@ -1,11 +1,11 @@
// 字段控件覆盖机制
-// 约定:/src/apps///pagetype//form/controls/.vue
+// 约定:/src/views/pagetype//form/controls/.vue
type AsyncComponentLoader = () => Promise
// 扫描所有可能的控件覆盖组件
const allControlOverrides: Record = import.meta.glob(
- '/src/apps/**/pagetype/**/form/controls/**.vue'
+ '/src/views/pagetype/**/form/controls/**.vue'
)
/**
@@ -20,31 +20,23 @@ export async function resolveControlOverride(entity: string, fieldtype: string):
const entityUnderscore = entity.toLowerCase().replace(/-/g, '_')
const fieldtypeNormalized = fieldtype.replace(/\s+/g, '')
- // 构建目标路径模式
- const targetPattern = `/src/apps/**/pagetype/${entityUnderscore}/form/controls/${fieldtypeNormalized}.vue`
-
// 查找匹配的控件覆盖
const candidates = Object.keys(allControlOverrides).filter((path) => {
const segments = path.split('/').filter(Boolean)
const len = segments.length
- if (len < 7) return false // 至少需要 7 段路径
+ if (len < 6) return false // 至少需要 6 段路径:views/pagetype/{entity}/form/controls/{fieldtype}.vue
- // 检查路径结构:.../pagetype/{entity}/form/controls/{fieldtype}.vue
- const pagetypeIndex = segments.findIndex(s => s === 'pagetype')
- if (pagetypeIndex === -1 || pagetypeIndex >= len - 4) return false
-
- const entityInPath = segments[pagetypeIndex + 1]
- const formInPath = segments[pagetypeIndex + 2]
- const controlsInPath = segments[pagetypeIndex + 3]
+ // 检查路径结构:views/pagetype/{entity}/form/controls/{fieldtype}.vue
const fileName = segments[len - 1]
-
const fieldtypeInPath = fileName.replace(/\.vue$/i, '')
return (
- entityInPath === entityUnderscore &&
- formInPath === 'form' &&
- controlsInPath === 'controls' &&
+ segments[0] === 'views' &&
+ segments[1] === 'pagetype' &&
+ segments[2] === entityUnderscore &&
+ segments[3] === 'form' &&
+ segments[4] === 'controls' &&
fieldtypeInPath === fieldtypeNormalized
)
})
diff --git a/apps/jingrow/frontend/src/core/registry/pagetypeOverride.ts b/apps/jingrow/frontend/src/core/registry/pagetypeOverride.ts
index b983ff2..a1ff10a 100644
--- a/apps/jingrow/frontend/src/core/registry/pagetypeOverride.ts
+++ b/apps/jingrow/frontend/src/core/registry/pagetypeOverride.ts
@@ -1,12 +1,12 @@
// 基于约定路径自动解析 pagetype 详情覆盖组件
-// 约定:/src/apps///pagetype//.vue
+// 约定:/src/views/pagetype//.vue
type AsyncComponentLoader = () => Promise
// 扫描所有可能的覆盖组件(仅限 .vue)
// 使用 eager: false 延迟加载,生产环境下可按需分包
const allPagetypeViews: Record = import.meta.glob(
- '/src/apps/**/pagetype/**/**.vue'
+ '/src/views/pagetype/**/**.vue'
)
function getPathSegments(path: string): string[] {
@@ -24,20 +24,21 @@ export async function resolvePagetypeDetailOverride(pagetypeSlug: string): Promi
const targetHyphen = pagetypeSlug.toLowerCase()
const targetUnderscore = targetHyphen.replace(/-/g, '_')
- // 匹配末尾形如 .../pagetype//.vue 的文件
+ // 匹配形如 views/pagetype//.vue 的文件
const candidates = Object.keys(allPagetypeViews).filter((file) => {
const segs = getPathSegments(file)
const len = segs.length
if (len < 5) return false
- // 末两段应为 .vue 与
+ // 路径应为 views/pagetype//.vue
const fileName = segs[len - 1]
const folderName = segs[len - 2]
- const parentFolder = segs.findIndex((s) => s === 'pagetype')
- if (parentFolder === -1) return false
const baseName = fileName.replace(/\.vue$/i, '')
- // 需要同时满足:位于 pagetype 下,且末两级目录名与目标一致(支持下划线形式)
+ // 需要同时满足:位于 views/pagetype 下,且末两级目录名与目标一致(支持下划线形式)
return (
- (folderName === targetUnderscore && baseName === targetUnderscore)
+ segs[1] === 'views' &&
+ segs[2] === 'pagetype' &&
+ folderName === targetUnderscore &&
+ baseName === targetUnderscore
)
})
@@ -61,7 +62,7 @@ export async function resolvePagetypeDetailOverride(pagetypeSlug: string): Promi
/**
* 解析并返回指定 pagetype 的工具栏覆盖组件
- * 约定文件名:/src/apps/任意路径/pagetype/名称/名称_toolbar.vue
+ * 约定文件名:/src/views/pagetype//_toolbar.vue
*/
export async function resolvePagetypeToolbarOverride(pagetypeSlug: string): Promise {
if (!pagetypeSlug) return null
@@ -72,13 +73,15 @@ export async function resolvePagetypeToolbarOverride(pagetypeSlug: string): Prom
const segs = getPathSegments(file)
const len = segs.length
if (len < 5) return false
+ // 路径应为 views/pagetype//_toolbar.vue
const fileName = segs[len - 1]
const folderName = segs[len - 2]
- const parentFolder = segs.findIndex((s) => s === 'pagetype')
- if (parentFolder === -1) return false
const baseName = fileName.replace(/\.vue$/i, '')
return (
- folderName === targetUnderscore && baseName === `${targetUnderscore}_toolbar`
+ segs[1] === 'views' &&
+ segs[2] === 'pagetype' &&
+ folderName === targetUnderscore &&
+ baseName === `${targetUnderscore}_toolbar`
)
})
diff --git a/apps/jingrow/frontend/src/apps/jingrow/jingrow/core/pagetype/file/file_toolbar.vue b/apps/jingrow/frontend/src/views/pagetype/file/file_toolbar.vue
similarity index 100%
rename from apps/jingrow/frontend/src/apps/jingrow/jingrow/core/pagetype/file/file_toolbar.vue
rename to apps/jingrow/frontend/src/views/pagetype/file/file_toolbar.vue
diff --git a/apps/jingrow/frontend/src/apps/jingrow/jingrow/ai/pagetype/local_ai_agent/local_ai_agent_toolbar.vue b/apps/jingrow/frontend/src/views/pagetype/local_ai_agent/local_ai_agent_toolbar.vue
similarity index 100%
rename from apps/jingrow/frontend/src/apps/jingrow/jingrow/ai/pagetype/local_ai_agent/local_ai_agent_toolbar.vue
rename to apps/jingrow/frontend/src/views/pagetype/local_ai_agent/local_ai_agent_toolbar.vue
diff --git a/apps/jingrow/frontend/src/apps/jingrow/jingrow/ai/pagetype/local_ai_node/local_ai_node_toolbar.vue b/apps/jingrow/frontend/src/views/pagetype/local_ai_node/local_ai_node_toolbar.vue
similarity index 100%
rename from apps/jingrow/frontend/src/apps/jingrow/jingrow/ai/pagetype/local_ai_node/local_ai_node_toolbar.vue
rename to apps/jingrow/frontend/src/views/pagetype/local_ai_node/local_ai_node_toolbar.vue
diff --git a/apps/jingrow/frontend/src/apps/jingrow/jingrow/core/pagetype/package/package_toolbar.vue b/apps/jingrow/frontend/src/views/pagetype/package/package_toolbar.vue
similarity index 100%
rename from apps/jingrow/frontend/src/apps/jingrow/jingrow/core/pagetype/package/package_toolbar.vue
rename to apps/jingrow/frontend/src/views/pagetype/package/package_toolbar.vue