{"ast":null,"code":"var _jsxFileName = \"/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/ToolsLibraryList.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { Table, Button, Space, Tag, message, Modal } from 'antd';\nimport { EditOutlined, EyeOutlined, SendOutlined } from '@ant-design/icons';\nimport { useNavigate } from 'react-router-dom';\nimport { toolsLibraryApi } from '../services/api';\nimport moment from 'moment';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst {\n confirm\n} = Modal;\nconst ToolsLibraryList = () => {\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 navigate = useNavigate();\n const getStatusColor = status => {\n const statusMap = {\n 'normal': 'success',\n 'offline': 'default'\n };\n return statusMap[status] || 'warning';\n };\n const getStatusText = status => {\n const statusMap = {\n 'normal': '正常',\n 'offline': '已下线'\n };\n return statusMap[status] || status;\n };\n const getCallTypeText = type => {\n const typeMap = {\n 'api': 'API调用',\n 'browser_auto_operate': '浏览器自动操作'\n };\n return typeMap[type] || type;\n };\n const getApiProviderText = provider => {\n const providerMap = {\n 'official': '官方',\n '302ai': '302AI',\n 'official_api': '官方API'\n };\n return providerMap[provider] || provider;\n };\n const columns = [{\n title: '工具ID',\n dataIndex: 'tools_id',\n key: 'tools_id',\n width: 200,\n ellipsis: true\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_full_name',\n key: 'tools_full_name',\n width: 250,\n ellipsis: true\n }, {\n title: '工具描述',\n dataIndex: 'tools_desc',\n key: 'tools_desc',\n width: 300,\n ellipsis: true\n }, {\n title: '版本',\n dataIndex: 'tools_version',\n key: 'tools_version',\n width: 80,\n render: version => /*#__PURE__*/_jsxDEV(Tag, {\n color: \"geekblue\",\n children: version\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 93,\n columnNumber: 9\n }, this)\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: 102,\n columnNumber: 9\n }, this)\n }, {\n title: '调用方式',\n dataIndex: 'call_type',\n key: 'call_type',\n width: 120,\n render: type => /*#__PURE__*/_jsxDEV(Tag, {\n color: \"blue\",\n children: getCallTypeText(type)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 111,\n columnNumber: 9\n }, this)\n }, {\n title: 'API提供方',\n dataIndex: 'api_provider',\n key: 'api_provider',\n width: 120,\n render: provider => /*#__PURE__*/_jsxDEV(Tag, {\n color: \"purple\",\n children: getApiProviderText(provider)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 9\n }, this)\n }, {\n title: 'API路径',\n dataIndex: 'api_url_path',\n key: 'api_url_path',\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: 154,\n columnNumber: 19\n }, this),\n onClick: () => navigate(`/tools-library/${record.tools_id}`),\n children: \"\\u8BE6\\u60C5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 151,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n size: \"small\",\n icon: /*#__PURE__*/_jsxDEV(EditOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 161,\n columnNumber: 19\n }, this),\n onClick: () => navigate(`/tools-library/${record.tools_id}?mode=edit`),\n children: \"\\u7F16\\u8F91\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 159,\n columnNumber: 11\n }, this), record.status !== 'normal' && /*#__PURE__*/_jsxDEV(Button, {\n type: \"primary\",\n size: \"small\",\n icon: /*#__PURE__*/_jsxDEV(SendOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 170,\n columnNumber: 21\n }, this),\n onClick: () => handlePublish(record.tools_id),\n children: \"\\u53D1\\u5E03\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 167,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 150,\n columnNumber: 9\n }, this)\n }];\n const fetchData = async (page = 1, pageSize = 10) => {\n setLoading(true);\n try {\n const response = await toolsLibraryApi.getList({\n page,\n pageSize\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);\n };\n const handlePublish = id => {\n confirm({\n title: '确认发布',\n content: '确定要发布这个工具吗?',\n okText: '确认',\n cancelText: '取消',\n onOk: async () => {\n try {\n await toolsLibraryApi.publish(id);\n message.success('发布成功');\n fetchData(pagination.current, pagination.pageSize);\n } catch (error) {\n message.error('发布失败');\n }\n }\n });\n };\n useEffect(() => {\n fetchData();\n }, []);\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"table-container\",\n children: /*#__PURE__*/_jsxDEV(Table, {\n columns: columns,\n dataSource: data,\n rowKey: \"tools_id\",\n pagination: pagination,\n loading: loading,\n onChange: handleTableChange,\n scroll: {\n x: 2200\n },\n size: \"middle\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 229,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 228,\n columnNumber: 5\n }, this);\n};\n_s(ToolsLibraryList, \"lnskqU4402sHhIwn9gDCCjz/dQI=\", false, function () {\n return [useNavigate];\n});\n_c = ToolsLibraryList;\nexport default ToolsLibraryList;\nvar _c;\n$RefreshReg$(_c, \"ToolsLibraryList\");","map":{"version":3,"names":["React","useState","useEffect","Table","Button","Space","Tag","message","Modal","EditOutlined","EyeOutlined","SendOutlined","useNavigate","toolsLibraryApi","moment","jsxDEV","_jsxDEV","confirm","ToolsLibraryList","_s","data","setData","loading","setLoading","pagination","setPagination","current","pageSize","total","navigate","getStatusColor","status","statusMap","getStatusText","getCallTypeText","type","typeMap","getApiProviderText","provider","providerMap","columns","title","dataIndex","key","width","ellipsis","render","version","color","children","fileName","_jsxFileName","lineNumber","columnNumber","time","format","fixed","_","record","size","icon","onClick","tools_id","handlePublish","fetchData","page","response","getList","error","handleTableChange","paginationConfig","id","content","okText","cancelText","onOk","publish","success","className","dataSource","rowKey","onChange","scroll","x","_c","$RefreshReg$"],"sources":["/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/ToolsLibraryList.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Table, Button, Space, Tag, message, Modal } from 'antd';\nimport { EditOutlined, EyeOutlined, SendOutlined } from '@ant-design/icons';\nimport { useNavigate } from 'react-router-dom';\nimport { toolsLibraryApi } from '../services/api';\nimport moment from 'moment';\n\nconst { confirm } = Modal;\n\nconst ToolsLibraryList = () => {\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 navigate = useNavigate();\n\n const getStatusColor = (status) => {\n const statusMap = {\n 'normal': 'success',\n 'offline': 'default',\n };\n return statusMap[status] || 'warning';\n };\n\n const getStatusText = (status) => {\n const statusMap = {\n 'normal': '正常',\n 'offline': '已下线',\n };\n return statusMap[status] || status;\n };\n\n const getCallTypeText = (type) => {\n const typeMap = {\n 'api': 'API调用',\n 'browser_auto_operate': '浏览器自动操作',\n };\n return typeMap[type] || type;\n };\n\n const getApiProviderText = (provider) => {\n const providerMap = {\n 'official': '官方',\n '302ai': '302AI',\n 'official_api': '官方API',\n };\n return providerMap[provider] || provider;\n };\n\n const columns = [\n {\n title: '工具ID',\n dataIndex: 'tools_id',\n key: 'tools_id',\n width: 200,\n ellipsis: true,\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_full_name',\n key: 'tools_full_name',\n width: 250,\n ellipsis: true,\n },\n {\n title: '工具描述',\n dataIndex: 'tools_desc',\n key: 'tools_desc',\n width: 300,\n ellipsis: true,\n },\n {\n title: '版本',\n dataIndex: 'tools_version',\n key: 'tools_version',\n width: 80,\n render: (version) => (\n