{"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, Popover } 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 render: text => {\n var _children;\n return /*#__PURE__*/_jsxDEV(Popover, {\n width: 250,\n content: /*#__PURE__*/_jsxDEV(\"div\", {\n style: {\n maxHeight: \"calc(100vh - 35px)\",\n overflowY: \"auto\",\n color: textColor || \"inherit\"\n },\n children: popContent ? /*#__PURE__*/_jsxDEV(\"pre\", {\n style: {\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\"\n },\n children: popContent\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 60,\n columnNumber: 17\n }, this) : typeof children === \"string\" ? (_children = children) === null || _children === void 0 ? void 0 : _children.split(\"\\n\").map((text, idx) => /*#__PURE__*/_jsxDEV(Typography.Paragraph, {\n ellipsis: {\n rows: 10,\n expandable: true,\n wrapper: \"span\"\n },\n style: {\n color: textColor || \"inherit\"\n },\n children: text\n }, idx, false, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 19\n }, this)) : /*#__PURE__*/_jsxDEV(Typography.Paragraph, {\n ellipsis: {\n rows: 10,\n expandable: true,\n wrapper: \"span\"\n },\n style: {\n color: textColor || \"inherit\"\n },\n children: children\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 83,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 52,\n columnNumber: 13\n }, this),\n className: className || \"\",\n style: {\n maxWidth: 500\n },\n children: text\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 49,\n columnNumber: 9\n }, this);\n }\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: 129,\n columnNumber: 27\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: 240,\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: 162,\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: 159,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n size: \"small\",\n icon: /*#__PURE__*/_jsxDEV(EditOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 169,\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: 167,\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: 177,\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: 174,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 158,\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: 242,\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: 243,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 241,\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: 251,\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: 248,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 247,\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: 257,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 246,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 240,\n columnNumber: 5\n }, this);\n};\n_s(PendingToolsList, \"TB/H5YC/cmHSutrILtBFR9krqW0=\", 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","Popover","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","render","text","_children","content","style","maxHeight","overflowY","color","textColor","children","popContent","wordBreak","whiteSpace","fileName","_jsxFileName","lineNumber","columnNumber","split","map","idx","Typography","Paragraph","ellipsis","rows","expandable","wrapper","className","maxWidth","time","format","fixed","_","record","size","type","icon","onClick","search_task_id","danger","handleDelete","fetchData","page","search","response","getList","error","handleTableChange","paginationConfig","handleSearch","value","id","okText","cancelText","onOk","delete","success","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, Popover } 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 render: (text) => (\n \n {popContent}\n
\n ) : typeof children === \"string\" ? (\n children?.split(\"\\n\").map((text, idx) => (\n
管理和查看待接入的工具,包括搜索、详情查看、编辑和删除功能
\n