diff --git a/app/admin/library/crud/Helper.php b/app/admin/library/crud/Helper.php index c5f1761..ade96e5 100644 --- a/app/admin/library/crud/Helper.php +++ b/app/admin/library/crud/Helper.php @@ -845,8 +845,9 @@ class Helper return $itemJson; } - public static function formatObjectKey(string $keyName): string + public static function formatObjectKey(string|int $keyName): string { + $keyName = is_int($keyName) ? strval($keyName) : $keyName; if (preg_match("/^[a-zA-Z_][a-zA-Z0-9_]+$/", $keyName)) { return $keyName; } diff --git a/web/src/views/backend/crud/design.vue b/web/src/views/backend/crud/design.vue index 6a35bde..d0a0d00 100644 --- a/web/src/views/backend/crud/design.vue +++ b/web/src/views/backend/crud/design.vue @@ -95,7 +95,7 @@ :label-width="140" :block-help="t('crud.crud.For quick combination code generation location, please fill in the relative path')" :input-attr="{ - onChange: onTableChange, + onChange: (val) => onTableChange(val ?? state.table.generateRelativePath?.replace(/\\/g, '/') ?? state.table.name ?? ''), onInput: debouncedOnRelativePathInput, }" /> @@ -1396,6 +1396,16 @@ const loadData = () => { } state.table.isCommonModel = parseInt(res.data.table.isCommonModel) state.table.databaseConnection = res.data.table.databaseConnection ? res.data.table.databaseConnection : '' + // 复制设计时,根据接口返回刷新路径,确保与 getFileData 一致 + const tableName = state.table.name || state.table.generateRelativePath?.replace(/\\/g, '/') + if (tableName) { + getFileData(tableName, state.table.isCommonModel).then((fileRes) => { + state.table.modelFile = fileRes.data.modelFile + state.table.controllerFile = fileRes.data.controllerFile + state.table.validateFile = fileRes.data.validateFile + state.table.webViewsDir = fileRes.data.webViewsDir + }).catch(() => {}) + } }) .finally(() => { state.loading.init = false