diff --git a/backend/app/main.py b/backend/app/main.py index fa51d44..8d0211b 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -460,8 +460,17 @@ def create_app(): @app.get("/api/logs", tags=["Log"], description="日志列表", response_model=TableResponse) async def log_list(p:dict = Depends(pagination_query), user: DB.User = Depends(get_current_user)): page, page_size = p["page"], p["page_size"] + users = await DB.User.all() res = await DB.WorkLogs.all().order_by('-id').limit(page_size).offset((page - 1) * page_size) - return TableResponse(data=[x.json() for x in res], total=len(res)) + count = await DB.WorkLogs.all().count() + data = [] + for l in res: + u = next((x for x in users if x.id == l.user_id), None) + obj = l.json() + if u: + obj["user"] = u.username + data.append(obj) + return TableResponse(data=data, total=count) return app diff --git a/frontend/src/pages/Log/Detail.jsx b/frontend/src/pages/Log/Detail.jsx new file mode 100644 index 0000000..5345fd6 --- /dev/null +++ b/frontend/src/pages/Log/Detail.jsx @@ -0,0 +1,24 @@ +import { Collapse, Modal } from "antd" +import { useState } from "react" + +const LogDetail = ({ record }) => { + const [open, setOpen] = useState(false) + + const items = record?.result?.logs?.map((e, i) => ({ + key: i + '', + label: e?.title, + children:

{e?.result?.err || e?.result?.out }

+ })) + + + console.log(items) + + return <> + setOpen(true)}>查看 + setOpen(false)} title="日志详情"> + + + +} + +export default LogDetail; \ No newline at end of file diff --git a/frontend/src/pages/Log/index.jsx b/frontend/src/pages/Log/index.jsx index 9a591e9..2fbb150 100644 --- a/frontend/src/pages/Log/index.jsx +++ b/frontend/src/pages/Log/index.jsx @@ -1,8 +1,9 @@ import { ProTable } from "@ant-design/pro-components"; -import { Card } from "antd"; +import { Card, Space, Typography } from "antd"; import { useRef } from "react"; import { formatSeconds } from "../Flow"; import { tableList } from "../../api/log"; +import LogDetail from "./Detail"; const LogPage = () => { const actionRef = useRef(null); @@ -22,21 +23,21 @@ const LogPage = () => { } }, { - dataIndex: 'last_user', + dataIndex: 'user', title: '执行用户', }, { - dataIndex: 'last_run_time', + dataIndex: 'create_time', title: '执行时间', - render: (_, record) => record?.last_run_time ? new Date(record?.last_run_time * 1000).toLocaleString() : '-' + render: (_, record) => record?.create_time ? new Date(record?.create_time * 1000).toLocaleString() : '-' }, { dataIndex: 'time', title: '执行耗时', - render: (_, record) => record?.time ? formatSeconds(record?.time) : '-', + render: (_, record) => record?.result?.time ? formatSeconds(record?.result?.time) : '-', }, { - dataIndex: 'last_status', + dataIndex: 'status', title: '执行结果', valueType: 'select', valueEnum: { @@ -53,14 +54,17 @@ const LogPage = () => { width: 60, fixed: 'right', render: (_, record) => [ - 查看 + ] } ]; - const onRequest = async (params) => { - const res = await tableList(params) - console.log(res); - return {}; + const onRequest = async ({current: page, pageSize: page_size,...params}) => { + const res = await tableList({ page, page_size, ...params }) + let index = (page - 1) * page_size + 1; + res?.data?.forEach((e, i) => { + e.index = index + i + }); + return res; } return