|
@@ -1,6 +1,6 @@
|
|
import React, { useState, useEffect } from "react";
|
|
import React, { useState, useEffect } from "react";
|
|
-import { Table, Button, Space, Tag, message, Tooltip } from "antd";
|
|
|
|
-import { EditOutlined, EyeOutlined } from "@ant-design/icons";
|
|
|
|
|
|
+import { Table, Button, Space, Tag, message, Tooltip, Input, Select, Row, Col } from "antd";
|
|
|
|
+import { EditOutlined, EyeOutlined, SearchOutlined, ReloadOutlined } from "@ant-design/icons";
|
|
import { useNavigate } from "react-router-dom";
|
|
import { useNavigate } from "react-router-dom";
|
|
import { autoAccessTasksApi } from "../services/api";
|
|
import { autoAccessTasksApi } from "../services/api";
|
|
import moment from "moment";
|
|
import moment from "moment";
|
|
@@ -24,6 +24,8 @@ export const STATUS_MAP = {
|
|
6: "审核不通过",
|
|
6: "审核不通过",
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+const { Option } = Select;
|
|
|
|
+
|
|
const AutoAccessTaskList = () => {
|
|
const AutoAccessTaskList = () => {
|
|
const [data, setData] = useState([]);
|
|
const [data, setData] = useState([]);
|
|
const [loading, setLoading] = useState(false);
|
|
const [loading, setLoading] = useState(false);
|
|
@@ -32,6 +34,8 @@ const AutoAccessTaskList = () => {
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
total: 0,
|
|
total: 0,
|
|
});
|
|
});
|
|
|
|
+ const [searchText, setSearchText] = useState("");
|
|
|
|
+ const [statusFilter, setStatusFilter] = useState(undefined);
|
|
const navigate = useNavigate();
|
|
const navigate = useNavigate();
|
|
|
|
|
|
const getStatusColor = (status) => {
|
|
const getStatusColor = (status) => {
|
|
@@ -64,18 +68,7 @@ const AutoAccessTaskList = () => {
|
|
</Tooltip>
|
|
</Tooltip>
|
|
),
|
|
),
|
|
},
|
|
},
|
|
- {
|
|
|
|
- title: "检索任务ID",
|
|
|
|
- dataIndex: "search_task_id",
|
|
|
|
- key: "search_task_id",
|
|
|
|
- width: 150,
|
|
|
|
- ellipsis: true,
|
|
|
|
- render: (text) => (
|
|
|
|
- <Tooltip title={text}>
|
|
|
|
- <span className="cursor-pointer">{text}</span>
|
|
|
|
- </Tooltip>
|
|
|
|
- ),
|
|
|
|
- },
|
|
|
|
|
|
+
|
|
{
|
|
{
|
|
title: "工具名称",
|
|
title: "工具名称",
|
|
dataIndex: "tools_name",
|
|
dataIndex: "tools_name",
|
|
@@ -96,17 +89,13 @@ const AutoAccessTaskList = () => {
|
|
render: (type) => <Tag color="blue">{getAccessTypeText(type)}</Tag>,
|
|
render: (type) => <Tag color="blue">{getAccessTypeText(type)}</Tag>,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- title: "工具功能描述",
|
|
|
|
- dataIndex: "tools_function_desc",
|
|
|
|
- key: "tools_function_desc",
|
|
|
|
- width: 300,
|
|
|
|
- ellipsis: true,
|
|
|
|
- render: (text) => (
|
|
|
|
- <Tooltip title={text}>
|
|
|
|
- <span className="cursor-pointer">{text}</span>
|
|
|
|
- </Tooltip>
|
|
|
|
- ),
|
|
|
|
|
|
+ title: "状态",
|
|
|
|
+ dataIndex: "status",
|
|
|
|
+ key: "status",
|
|
|
|
+ width: 100,
|
|
|
|
+ render: (status) => <Tag color={getStatusColor(status)}>{getStatusText(status)}</Tag>,
|
|
},
|
|
},
|
|
|
|
+
|
|
{
|
|
{
|
|
title: "API类名",
|
|
title: "API类名",
|
|
dataIndex: "api_class_name",
|
|
dataIndex: "api_class_name",
|
|
@@ -120,11 +109,16 @@ const AutoAccessTaskList = () => {
|
|
),
|
|
),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- title: "状态",
|
|
|
|
- dataIndex: "status",
|
|
|
|
- key: "status",
|
|
|
|
- width: 100,
|
|
|
|
- render: (status) => <Tag color={getStatusColor(status)}>{getStatusText(status)}</Tag>,
|
|
|
|
|
|
+ title: "工具功能描述",
|
|
|
|
+ dataIndex: "tools_function_desc",
|
|
|
|
+ key: "tools_function_desc",
|
|
|
|
+ width: 300,
|
|
|
|
+ ellipsis: true,
|
|
|
|
+ render: (text) => (
|
|
|
|
+ <Tooltip title={text}>
|
|
|
|
+ <span className="cursor-pointer">{text}</span>
|
|
|
|
+ </Tooltip>
|
|
|
|
+ ),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
title: "失败原因",
|
|
title: "失败原因",
|
|
@@ -179,13 +173,25 @@ const AutoAccessTaskList = () => {
|
|
},
|
|
},
|
|
];
|
|
];
|
|
|
|
|
|
- const fetchData = async (page = 1, pageSize = 10) => {
|
|
|
|
|
|
+ const fetchData = async (page = 1, pageSize = 10, search = "", status = undefined) => {
|
|
setLoading(true);
|
|
setLoading(true);
|
|
try {
|
|
try {
|
|
- const response = await autoAccessTasksApi.getList({
|
|
|
|
|
|
+ const params = {
|
|
page,
|
|
page,
|
|
pageSize,
|
|
pageSize,
|
|
- });
|
|
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ // 添加搜索参数
|
|
|
|
+ if (search) {
|
|
|
|
+ params.search = search;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 添加状态过滤参数
|
|
|
|
+ if (status !== undefined) {
|
|
|
|
+ params.status = status;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const response = await autoAccessTasksApi.getList(params);
|
|
setData(response.data.data);
|
|
setData(response.data.data);
|
|
setPagination({
|
|
setPagination({
|
|
current: response.data.page,
|
|
current: response.data.page,
|
|
@@ -200,7 +206,22 @@ const AutoAccessTaskList = () => {
|
|
};
|
|
};
|
|
|
|
|
|
const handleTableChange = (paginationConfig) => {
|
|
const handleTableChange = (paginationConfig) => {
|
|
- fetchData(paginationConfig.current, paginationConfig.pageSize);
|
|
|
|
|
|
+ fetchData(paginationConfig.current, paginationConfig.pageSize, searchText, statusFilter);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const handleSearch = () => {
|
|
|
|
+ fetchData(1, pagination.pageSize, searchText, statusFilter);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const handleReset = () => {
|
|
|
|
+ setSearchText("");
|
|
|
|
+ setStatusFilter(undefined);
|
|
|
|
+ fetchData(1, pagination.pageSize, "", undefined);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const handleStatusChange = (value) => {
|
|
|
|
+ setStatusFilter(value);
|
|
|
|
+ fetchData(1, pagination.pageSize, searchText, value);
|
|
};
|
|
};
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
@@ -209,6 +230,51 @@ const AutoAccessTaskList = () => {
|
|
|
|
|
|
return (
|
|
return (
|
|
<div className="table-container">
|
|
<div className="table-container">
|
|
|
|
+ <div style={{ marginBottom: 16, padding: 16, backgroundColor: '#fafafa', borderRadius: 6 }}>
|
|
|
|
+ <Row gutter={[16, 16]}>
|
|
|
|
+ <Col span={6}>
|
|
|
|
+ <Input
|
|
|
|
+ placeholder="搜索工具名称"
|
|
|
|
+ value={searchText}
|
|
|
|
+ onChange={(e) => setSearchText(e.target.value)}
|
|
|
|
+ allowClear
|
|
|
|
+ />
|
|
|
|
+ </Col>
|
|
|
|
+ <Col span={6}>
|
|
|
|
+ <Select
|
|
|
|
+ placeholder="选择状态"
|
|
|
|
+ value={statusFilter}
|
|
|
|
+ onChange={handleStatusChange}
|
|
|
|
+ allowClear
|
|
|
|
+ style={{ width: '100%' }}
|
|
|
|
+ >
|
|
|
|
+ {Object.entries(STATUS_MAP).map(([key, value]) => (
|
|
|
|
+ <Option key={key} value={parseInt(key)}>
|
|
|
|
+ {value}
|
|
|
|
+ </Option>
|
|
|
|
+ ))}
|
|
|
|
+ </Select>
|
|
|
|
+ </Col>
|
|
|
|
+ <Col span={6}>
|
|
|
|
+ <Space>
|
|
|
|
+ <Button
|
|
|
|
+ type="primary"
|
|
|
|
+ icon={<SearchOutlined />}
|
|
|
|
+ onClick={handleSearch}
|
|
|
|
+ >
|
|
|
|
+ 搜索
|
|
|
|
+ </Button>
|
|
|
|
+ <Button
|
|
|
|
+ icon={<ReloadOutlined />}
|
|
|
|
+ onClick={handleReset}
|
|
|
|
+ >
|
|
|
|
+ 重置
|
|
|
|
+ </Button>
|
|
|
|
+ </Space>
|
|
|
|
+ </Col>
|
|
|
|
+ </Row>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
<Table
|
|
<Table
|
|
columns={columns}
|
|
columns={columns}
|
|
dataSource={data}
|
|
dataSource={data}
|