{"ast":null,"code":"var _jsxFileName = \"/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/PendingToolsList.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { Table, Button, Input, Space, Tag, message, Modal } from 'antd';\nimport { SearchOutlined, EditOutlined, DeleteOutlined, EyeOutlined } from '@ant-design/icons';\nimport { useNavigate } from 'react-router-dom';\nimport { pendingToolsApi } from '../services/api';\nimport moment from 'moment';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst {\n Search\n} = Input;\nconst {\n confirm\n} = Modal;\nconst PendingToolsList = () => {\n _s();\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n const [pagination, setPagination] = useState({\n current: 1,\n pageSize: 10,\n total: 0\n });\n const [searchText, setSearchText] = useState('');\n const navigate = useNavigate();\n const getStatusColor = status => {\n const statusMap = {\n '0': 'processing',\n '1': 'warning',\n '2': 'success',\n '3': 'error'\n };\n return statusMap[status] || 'default';\n };\n const getStatusText = status => {\n const statusMap = {\n '0': '待处理',\n '1': '处理中',\n '2': '已完成',\n '3': '失败'\n };\n return statusMap[status] || '未知';\n };\n const columns = [{\n title: '工具ID',\n dataIndex: 'search_task_id',\n key: 'search_task_id',\n width: 150\n }, {\n title: '工具名称',\n dataIndex: 'tools_name',\n key: 'tools_name',\n width: 150\n }, {\n title: '工具功能名称',\n dataIndex: 'tools_function_name',\n key: 'tools_function_name',\n width: 200\n }, {\n title: '工具功能描述',\n dataIndex: 'tools_function_desc',\n key: 'tools_function_desc',\n width: 300,\n ellipsis: true\n }, {\n title: '状态',\n dataIndex: 'status',\n key: 'status',\n width: 100,\n render: status => /*#__PURE__*/_jsxDEV(Tag, {\n color: getStatusColor(status),\n children: getStatusText(status)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 74,\n columnNumber: 9\n }, this)\n }, {\n title: '失败原因',\n dataIndex: 'fail_reason',\n key: 'fail_reason',\n width: 200,\n ellipsis: true\n }, {\n title: '创建时间',\n dataIndex: 'create_time',\n key: 'create_time',\n width: 180,\n render: time => moment(time).format('YYYY-MM-DD HH:mm:ss')\n }, {\n title: '更新时间',\n dataIndex: 'update_time',\n key: 'update_time',\n width: 180,\n render: time => moment(time).format('YYYY-MM-DD HH:mm:ss')\n }, {\n title: '操作',\n key: 'action',\n width: 200,\n fixed: 'right',\n render: (_, record) => /*#__PURE__*/_jsxDEV(Space, {\n size: \"small\",\n children: [/*#__PURE__*/_jsxDEV(Button, {\n type: \"primary\",\n size: \"small\",\n icon: /*#__PURE__*/_jsxDEV(EyeOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 108,\n columnNumber: 19\n }, this),\n onClick: () => navigate(`/pending-tools/${record.search_task_id}`),\n children: \"\\u8BE6\\u60C5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 105,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n size: \"small\",\n icon: /*#__PURE__*/_jsxDEV(EditOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 115,\n columnNumber: 19\n }, this),\n onClick: () => navigate(`/pending-tools/${record.search_task_id}?mode=edit`),\n children: \"\\u7F16\\u8F91\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 113,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n danger: true,\n size: \"small\",\n icon: /*#__PURE__*/_jsxDEV(DeleteOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 123,\n columnNumber: 19\n }, this),\n onClick: () => handleDelete(record.search_task_id),\n children: \"\\u5220\\u9664\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 104,\n columnNumber: 9\n }, this)\n }];\n const fetchData = async (page = 1, pageSize = 10, search = '') => {\n setLoading(true);\n try {\n const response = await pendingToolsApi.getList({\n page,\n pageSize,\n search\n });\n setData(response.data.data);\n setPagination({\n current: response.data.page,\n pageSize: response.data.pageSize,\n total: response.data.total\n });\n } catch (error) {\n message.error('获取数据失败');\n } finally {\n setLoading(false);\n }\n };\n const handleTableChange = paginationConfig => {\n fetchData(paginationConfig.current, paginationConfig.pageSize, searchText);\n };\n const handleSearch = value => {\n setSearchText(value);\n fetchData(1, pagination.pageSize, value);\n };\n const handleDelete = id => {\n confirm({\n title: '确认删除',\n content: '确定要删除这个工具吗?',\n okText: '确认',\n cancelText: '取消',\n onOk: async () => {\n try {\n await pendingToolsApi.delete(id);\n message.success('删除成功');\n fetchData(pagination.current, pagination.pageSize, searchText);\n } catch (error) {\n message.error('删除失败');\n }\n }\n });\n };\n useEffect(() => {\n fetchData();\n }, []);\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-6\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"page-header\",\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n className: \"page-title\",\n children: \"\\u5F85\\u63A5\\u5165\\u5DE5\\u5177\\u5217\\u8868\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 188,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"page-description\",\n children: \"\\u7BA1\\u7406\\u548C\\u67E5\\u770B\\u5F85\\u63A5\\u5165\\u7684\\u5DE5\\u5177\\uFF0C\\u5305\\u62EC\\u641C\\u7D22\\u3001\\u8BE6\\u60C5\\u67E5\\u770B\\u3001\\u7F16\\u8F91\\u548C\\u5220\\u9664\\u529F\\u80FD\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 189,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 187,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"table-container\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/_jsxDEV(Search, {\n placeholder: \"\\u641C\\u7D22\\u5DE5\\u5177\\u540D\\u79F0\\u3001\\u529F\\u80FD\\u540D\\u79F0\\u6216\\u63CF\\u8FF0\",\n allowClear: true,\n enterButton: /*#__PURE__*/_jsxDEV(SearchOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 197,\n columnNumber: 26\n }, this),\n size: \"large\",\n onSearch: handleSearch,\n className: \"max-w-md\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 194,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 193,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Table, {\n columns: columns,\n dataSource: data,\n rowKey: \"search_task_id\",\n pagination: pagination,\n loading: loading,\n onChange: handleTableChange,\n scroll: {\n x: 1500\n },\n size: \"middle\",\n className: \"shadow-sm\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 203,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 192,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 186,\n columnNumber: 5\n }, this);\n};\n_s(PendingToolsList, \"3rZtEN0ICPsQh6qu+CSyp8v0Cc4=\", false, function () {\n return [useNavigate];\n});\n_c = PendingToolsList;\nexport default PendingToolsList;\nvar _c;\n$RefreshReg$(_c, \"PendingToolsList\");","map":{"version":3,"names":["React","useState","useEffect","Table","Button","Input","Space","Tag","message","Modal","SearchOutlined","EditOutlined","DeleteOutlined","EyeOutlined","useNavigate","pendingToolsApi","moment","jsxDEV","_jsxDEV","Search","confirm","PendingToolsList","_s","data","setData","loading","setLoading","pagination","setPagination","current","pageSize","total","searchText","setSearchText","navigate","getStatusColor","status","statusMap","getStatusText","columns","title","dataIndex","key","width","ellipsis","render","color","children","fileName","_jsxFileName","lineNumber","columnNumber","time","format","fixed","_","record","size","type","icon","onClick","search_task_id","danger","handleDelete","fetchData","page","search","response","getList","error","handleTableChange","paginationConfig","handleSearch","value","id","content","okText","cancelText","onOk","delete","success","className","placeholder","allowClear","enterButton","onSearch","dataSource","rowKey","onChange","scroll","x","_c","$RefreshReg$"],"sources":["/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/PendingToolsList.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Table, Button, Input, Space, Tag, message, Modal } from 'antd';\nimport { SearchOutlined, EditOutlined, DeleteOutlined, EyeOutlined } from '@ant-design/icons';\nimport { useNavigate } from 'react-router-dom';\nimport { pendingToolsApi } from '../services/api';\nimport moment from 'moment';\n\nconst { Search } = Input;\nconst { confirm } = Modal;\n\nconst PendingToolsList = () => {\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n const [pagination, setPagination] = useState({\n current: 1,\n pageSize: 10,\n total: 0,\n });\n const [searchText, setSearchText] = useState('');\n const navigate = useNavigate();\n\n const getStatusColor = (status) => {\n const statusMap = {\n '0': 'processing',\n '1': 'warning',\n '2': 'success',\n '3': 'error',\n };\n return statusMap[status] || 'default';\n };\n\n const getStatusText = (status) => {\n const statusMap = {\n '0': '待处理',\n '1': '处理中',\n '2': '已完成',\n '3': '失败',\n };\n return statusMap[status] || '未知';\n };\n\n const columns = [\n {\n title: '工具ID',\n dataIndex: 'search_task_id',\n key: 'search_task_id',\n width: 150,\n },\n {\n title: '工具名称',\n dataIndex: 'tools_name',\n key: 'tools_name',\n width: 150,\n },\n {\n title: '工具功能名称',\n dataIndex: 'tools_function_name',\n key: 'tools_function_name',\n width: 200,\n },\n {\n title: '工具功能描述',\n dataIndex: 'tools_function_desc',\n key: 'tools_function_desc',\n width: 300,\n ellipsis: true,\n },\n {\n title: '状态',\n dataIndex: 'status',\n key: 'status',\n width: 100,\n render: (status) => (\n
管理和查看待接入的工具,包括搜索、详情查看、编辑和删除功能
\n