refactor: dashboard preview

This commit is contained in:
wangjiahao
2025-06-05 18:11:02 +08:00
parent 523b74e702
commit 7567c1eef2
6 changed files with 45 additions and 10 deletions
+3 -2
View File
@@ -2,12 +2,13 @@
from fastapi import APIRouter, File, UploadFile, HTTPException
from apps.dashboard.crud.dashboard_service import get_dashboard_list, preview_with_id,create_dashboard
from apps.dashboard.models.dashboard_model import CreateDashboard
from apps.dashboard.models.dashboard_model import CreateDashboard, DashboardResponse
from common.core.deps import SessionDep, CurrentUser
from typing import List
router = APIRouter(tags=["dashboard"], prefix="/dashboard")
@router.get("/list")
@router.post("/list", response_model=List[DashboardResponse])
async def datasource_list(session: SessionDep):
return get_dashboard_list(session=session)
@@ -1,9 +1,9 @@
from select import select
from sqlalchemy import select
from apps.dashboard.models.dashboard_model import CoreDashboard, CreateDashboard
from common.core.deps import SessionDep, CurrentUser
import uuid
def get_dashboard_list(session: SessionDep):
statement = select(CoreDashboard).order_by(CoreDashboard.create_time.desc())
statement = select(CoreDashboard)
dashboard_list = session.exec(statement).fetchall()
return dashboard_list
@@ -1,12 +1,10 @@
from sqlmodel import SQLModel, Field
from sqlalchemy import String, Column, Text, SmallInteger, BigInteger, Integer,DateTime
from typing import Optional
from pydantic import BaseModel
from datetime import datetime
class CoreDashboard(SQLModel, table=True):
__tablename__ = "core_dashboard"
id: str = Field(
sa_column=Column(String(50), nullable=False, primary_key=True)
)
@@ -124,6 +122,37 @@ class CoreDashboard(SQLModel, table=True):
sa_column=Column(String(50), nullable=True)
)
class DashboardResponse(BaseModel):
id: Optional[str] = None
name: Optional[str] = None
pid: Optional[str] = None
workspace_id: Optional[str] = None
org_id: Optional[str] = None
level: Optional[int] = None
node_type: Optional[str] = None
type: Optional[str] = None
canvas_style_data: Optional[str] = None
component_data: Optional[str] = None
mobile_layout: Optional[int] = None
status: Optional[int] = None
self_watermark_status: Optional[int] = None
sort: Optional[int] = None
create_time: Optional[int] = None # 或者用 datetime 类型
create_by: Optional[str] = None
update_time: Optional[int] = None # 或者用 datetime 类型
update_by: Optional[str] = None
remark: Optional[str] = None
source: Optional[str] = None
delete_flag: Optional[int] = None
delete_time: Optional[int] = None
delete_by: Optional[str] = None
version: Optional[int] = None
content_id: Optional[str] = None
check_version: Optional[str] = None
class Config:
orm_mode = True # 允许从 ORM 对象加载
# dashboard create obj
class CreateDashboard(BaseModel):
id: str = ''
+1 -1
View File
@@ -33,7 +33,7 @@ dependencies = [
"openpyxl (>=3.1.5,<4.0.0)",
"psycopg2-binary (>=2.9.10,<3.0.0)",
"oracledb (>=3.1.1,<4.0.0)",
"pyyaml (>=6.0.2,<7.0.0)"
"pyyaml (>=6.0.2,<7.0.0)",
]
[[tool.uv.index]]
url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
+1 -1
View File
@@ -1,7 +1,7 @@
import { request } from '@/utils/request'
export const dashboardApi = {
list: () => request.get('/dashboard/list'),
list: (params: any) => request.post('/dashboard/list',params),
getDashboardInfo: (params:any) => request.post(`/dashboard/get_dashboard/${params.id}`,params),
sqNameCheck: (data: any) => request.post('/dashboard/name_check',data),
moveResource: (data: any) => request.post('/dashboard/move',data),
@@ -16,6 +16,7 @@ import router from '@/router'
import {dashboardStoreWithOut} from "@/stores/dashboard/dashboard.ts";
import HandleMore from "@/views/dashboard/common/HandleMore.vue";
import ResourceGroupOpt from "@/views/dashboard/common/ResourceGroupOpt.vue";
import {dashboardApi} from "@/api/dashboard.ts";
const dashboardStore = dashboardStoreWithOut()
const resourceGroupOptRef = ref(null)
@@ -115,7 +116,11 @@ const nodeClick = (data: SQTreeNode, node: any) => {
const getTree = async () => {
state.originResourceTree = []
afterTreeInit()
const params = {}
dashboardApi.list(params).then((res: SQTreeNode[]) => {
state.originResourceTree = res?.data || []
afterTreeInit()
})
}
// @ts-ignore
const flattedTree = computed<SQTreeNode[]>(() => {