{"ast":null,"code":"var _jsxFileName = \"/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/PendingToolsDetail.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { Form, Input, Select, Button, Card, Descriptions, Tag, message, Spin } from 'antd';\nimport { useParams, useNavigate, useLocation } from 'react-router-dom';\nimport { ArrowLeftOutlined } from '@ant-design/icons';\nimport { pendingToolsApi } from '../services/api';\nimport moment from 'moment';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst {\n TextArea\n} = Input;\nconst {\n Option\n} = Select;\nconst PendingToolsDetail = () => {\n _s();\n const [form] = Form.useForm();\n const [data, setData] = useState(null);\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const {\n id\n } = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n const isEditMode = location.search.includes('mode=edit');\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 fetchData = async () => {\n try {\n const response = await pendingToolsApi.getDetail(id);\n setData(response.data);\n if (response.data.task) {\n form.setFieldsValue(response.data.task);\n }\n } catch (error) {\n message.error('获取详情失败');\n } finally {\n setLoading(false);\n }\n };\n const handleSave = async values => {\n setSaving(true);\n try {\n await pendingToolsApi.update(id, values);\n message.success('更新成功');\n navigate('/pending-tools');\n } catch (error) {\n message.error('更新失败');\n } finally {\n setSaving(false);\n }\n };\n useEffect(() => {\n fetchData();\n }, [id]);\n if (loading) {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n style: {\n textAlign: 'center',\n padding: '50px'\n },\n children: /*#__PURE__*/_jsxDEV(Spin, {\n size: \"large\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 74,\n columnNumber: 7\n }, this);\n }\n if (!data) {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: \"\\u6570\\u636E\\u4E0D\\u5B58\\u5728\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 81,\n columnNumber: 12\n }, this);\n }\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"detail-container\",\n children: [/*#__PURE__*/_jsxDEV(Button, {\n icon: /*#__PURE__*/_jsxDEV(ArrowLeftOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 87,\n columnNumber: 15\n }, this),\n onClick: () => navigate('/pending-tools'),\n style: {\n marginBottom: 16\n },\n children: \"\\u8FD4\\u56DE\\u5217\\u8868\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 86,\n columnNumber: 7\n }, this), isEditMode ? /*#__PURE__*/_jsxDEV(Card, {\n title: \"\\u7F16\\u8F91\\u5F85\\u63A5\\u5165\\u5DE5\\u5177\",\n style: {\n marginBottom: 24\n },\n children: /*#__PURE__*/_jsxDEV(Form, {\n form: form,\n layout: \"vertical\",\n onFinish: handleSave,\n className: \"form-container\",\n children: [/*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u5DE5\\u5177\\u540D\\u79F0\",\n name: \"tools_name\",\n rules: [{\n required: true,\n message: '请输入工具名称'\n }],\n children: /*#__PURE__*/_jsxDEV(Input, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 107,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 102,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u5DE5\\u5177\\u529F\\u80FD\\u540D\\u79F0\",\n name: \"tools_function_name\",\n rules: [{\n required: true,\n message: '请输入工具功能名称'\n }],\n children: /*#__PURE__*/_jsxDEV(Input, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 115,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 110,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u5DE5\\u5177\\u529F\\u80FD\\u63CF\\u8FF0\",\n name: \"tools_function_desc\",\n children: /*#__PURE__*/_jsxDEV(TextArea, {\n rows: 4\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 122,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 118,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u72B6\\u6001\",\n name: \"status\",\n rules: [{\n required: true,\n message: '请选择状态'\n }],\n children: /*#__PURE__*/_jsxDEV(Select, {\n children: [/*#__PURE__*/_jsxDEV(Option, {\n value: \"0\",\n children: \"\\u5F85\\u5904\\u7406\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 131,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"1\",\n children: \"\\u5904\\u7406\\u4E2D\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 132,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"2\",\n children: \"\\u5DF2\\u5B8C\\u6210\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 133,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"3\",\n children: \"\\u5931\\u8D25\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 134,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 130,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 125,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u5931\\u8D25\\u539F\\u56E0\",\n name: \"fail_reason\",\n children: /*#__PURE__*/_jsxDEV(TextArea, {\n rows: 3\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 142,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 138,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"button-group\",\n children: [/*#__PURE__*/_jsxDEV(Button, {\n onClick: () => navigate('/pending-tools'),\n children: \"\\u53D6\\u6D88\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 146,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n type: \"primary\",\n htmlType: \"submit\",\n loading: saving,\n children: \"\\u4FDD\\u5B58\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 149,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 145,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 96,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 95,\n columnNumber: 9\n }, this) : /*#__PURE__*/_jsxDEV(_Fragment, {\n children: [/*#__PURE__*/_jsxDEV(Card, {\n title: \"\\u57FA\\u672C\\u4FE1\\u606F\",\n style: {\n marginBottom: 24\n },\n children: /*#__PURE__*/_jsxDEV(Descriptions, {\n column: 2,\n bordered: true,\n children: [/*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5DE5\\u5177ID\",\n children: data.task.search_task_id\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 159,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5DE5\\u5177\\u540D\\u79F0\",\n children: data.task.tools_name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 162,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5DE5\\u5177\\u529F\\u80FD\\u540D\\u79F0\",\n children: data.task.tools_function_name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 165,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u72B6\\u6001\",\n children: /*#__PURE__*/_jsxDEV(Tag, {\n color: getStatusColor(data.task.status),\n children: getStatusText(data.task.status)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 169,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 168,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5DE5\\u5177\\u529F\\u80FD\\u63CF\\u8FF0\",\n span: 2,\n children: data.task.tools_function_desc\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 173,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5931\\u8D25\\u539F\\u56E0\",\n span: 2,\n children: data.task.fail_reason || '无'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 176,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u521B\\u5EFA\\u65F6\\u95F4\",\n children: moment(data.task.create_time).format('YYYY-MM-DD HH:mm:ss')\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 179,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u66F4\\u65B0\\u65F6\\u95F4\",\n children: moment(data.task.update_time).format('YYYY-MM-DD HH:mm:ss')\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 182,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 158,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 157,\n columnNumber: 11\n }, this), data.detail && /*#__PURE__*/_jsxDEV(Card, {\n title: \"\\u8BE6\\u7EC6\\u4FE1\\u606F\",\n children: /*#__PURE__*/_jsxDEV(Descriptions, {\n column: 2,\n bordered: true,\n children: [/*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u68C0\\u7D22\\u6E20\\u9053\",\n children: data.detail.search_channel\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 191,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u68C0\\u7D22\\u7ED3\\u679C\",\n span: 2,\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n style: {\n maxHeight: '200px',\n overflow: 'auto'\n },\n children: /*#__PURE__*/_jsxDEV(\"pre\", {\n style: {\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n },\n children: data.detail.search_result || '无'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 196,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 195,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 194,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 190,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 189,\n columnNumber: 13\n }, this)]\n }, void 0, true)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 85,\n columnNumber: 5\n }, this);\n};\n_s(PendingToolsDetail, \"zaoVSOc9hXK/wTbAg7QOfM3lMK4=\", false, function () {\n return [Form.useForm, useParams, useNavigate, useLocation];\n});\n_c = PendingToolsDetail;\nexport default PendingToolsDetail;\nvar _c;\n$RefreshReg$(_c, \"PendingToolsDetail\");","map":{"version":3,"names":["React","useState","useEffect","Form","Input","Select","Button","Card","Descriptions","Tag","message","Spin","useParams","useNavigate","useLocation","ArrowLeftOutlined","pendingToolsApi","moment","jsxDEV","_jsxDEV","Fragment","_Fragment","TextArea","Option","PendingToolsDetail","_s","form","useForm","data","setData","loading","setLoading","saving","setSaving","id","navigate","location","isEditMode","search","includes","getStatusColor","status","statusMap","getStatusText","fetchData","response","getDetail","task","setFieldsValue","error","handleSave","values","update","success","style","textAlign","padding","children","size","fileName","_jsxFileName","lineNumber","columnNumber","className","icon","onClick","marginBottom","title","layout","onFinish","Item","label","name","rules","required","rows","value","type","htmlType","column","bordered","search_task_id","tools_name","tools_function_name","color","span","tools_function_desc","fail_reason","create_time","format","update_time","detail","search_channel","maxHeight","overflow","whiteSpace","wordBreak","search_result","_c","$RefreshReg$"],"sources":["/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/PendingToolsDetail.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Form, Input, Select, Button, Card, Descriptions, Tag, message, Spin } from 'antd';\nimport { useParams, useNavigate, useLocation } from 'react-router-dom';\nimport { ArrowLeftOutlined } from '@ant-design/icons';\nimport { pendingToolsApi } from '../services/api';\nimport moment from 'moment';\n\nconst { TextArea } = Input;\nconst { Option } = Select;\n\nconst PendingToolsDetail = () => {\n const [form] = Form.useForm();\n const [data, setData] = useState(null);\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const { id } = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n const isEditMode = location.search.includes('mode=edit');\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 fetchData = async () => {\n try {\n const response = await pendingToolsApi.getDetail(id);\n setData(response.data);\n if (response.data.task) {\n form.setFieldsValue(response.data.task);\n }\n } catch (error) {\n message.error('获取详情失败');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSave = async (values) => {\n setSaving(true);\n try {\n await pendingToolsApi.update(id, values);\n message.success('更新成功');\n navigate('/pending-tools');\n } catch (error) {\n message.error('更新失败');\n } finally {\n setSaving(false);\n }\n };\n\n useEffect(() => {\n fetchData();\n }, [id]);\n\n if (loading) {\n return (\n
\n \n
\n );\n }\n\n if (!data) {\n return
数据不存在
;\n }\n\n return (\n
\n }\n onClick={() => navigate('/pending-tools')}\n style={{ marginBottom: 16 }}\n >\n 返回列表\n \n\n {isEditMode ? (\n \n \n \n \n \n\n \n \n \n\n \n