diff --git a/backend-fastapi/main.py b/backend-fastapi/main.py index bd284e4..49f515e 100644 --- a/backend-fastapi/main.py +++ b/backend-fastapi/main.py @@ -9,6 +9,7 @@ from ai_platform.router import router as ai_platform_router from app.config import settings from core.router import router as core_router from core.websocket.router import router as websocket_router +from online_dev.router import router as online_dev_router from utils.auth_middleware import AuthPermissionMiddleware from utils.redis import RedisClient @@ -45,6 +46,7 @@ app.add_middleware(AuthPermissionMiddleware) app.include_router(core_router, prefix="/api/core", dependencies=[Depends(oauth2_scheme)]) app.include_router(ai_platform_router, prefix="/api/ai", dependencies=[Depends(oauth2_scheme)]) +app.include_router(online_dev_router, prefix="/api/online_dev", dependencies=[Depends(oauth2_scheme)]) app.include_router(websocket_router) diff --git a/backend-fastapi/online_dev/page_manager/api.py b/backend-fastapi/online_dev/page_manager/api.py new file mode 100644 index 0000000..13a1248 --- /dev/null +++ b/backend-fastapi/online_dev/page_manager/api.py @@ -0,0 +1,37 @@ +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession + +from app.database import get_db +from online_dev.page_manager.service import PageService, PageServiceException + +router = APIRouter(prefix="/page", tags=["page-render"]) + + +def _format_datetime(dt) -> str: + return dt.strftime("%Y-%m-%d %H:%M:%S") if dt else "" + + +def _build_page_out(page) -> dict: + return { + "id": str(page.id), + "application_id": page.application_id, + "name": page.name, + "code": page.code, + "category": page.category or "", + "description": page.description or "", + "status": page.status, + "version": page.version, + "page_config": page.page_config or {}, + "sort": page.sort or 0, + "sys_create_datetime": _format_datetime(page.sys_create_datetime), + "sys_update_datetime": _format_datetime(page.sys_update_datetime), + } + + +@router.get("/code/{code}", summary="Get page config by code") +async def get_page_by_code(code: str, db: AsyncSession = Depends(get_db)): + try: + page = await PageService.get_by_code(db, code) + return _build_page_out(page) + except PageServiceException as e: + raise HTTPException(status_code=400, detail=str(e)) from e diff --git a/web/apps/web-ele/src/locales/index.ts b/web/apps/web-ele/src/locales/index.ts index 4afc697..3591620 100644 --- a/web/apps/web-ele/src/locales/index.ts +++ b/web/apps/web-ele/src/locales/index.ts @@ -30,6 +30,7 @@ const modules = import.meta.glob([ './langs/*/chat.json', './langs/*/common.json', './langs/*/dept.json', + './langs/*/dashboard-design.json', './langs/*/dingtalk-sync.json', './langs/*/dict.json', './langs/*/feishu-sync.json', diff --git a/web/apps/web-ele/src/router/access.ts b/web/apps/web-ele/src/router/access.ts index b986b56..8ab3ea5 100644 --- a/web/apps/web-ele/src/router/access.ts +++ b/web/apps/web-ele/src/router/access.ts @@ -40,6 +40,7 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) { '../views/_core/system-config/index.vue', '../views/_core/ui-config/index.vue', '../views/_core/user/index.vue', + '../views/online-dev/page-render/index.vue', '../views/ai-platform/agent/editor/index.vue', '../views/ai-platform/agent/index.vue', '../views/ai-platform/knowledge/detail/index.vue',