{"ast":null,"code":"var _jsxFileName = \"/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/AutoAccessTaskDetail.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 { autoAccessTasksApi } from '../services/api';\nimport moment from 'moment';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst {\n TextArea\n} = Input;\nconst {\n Option\n} = Select;\nconst AutoAccessTaskDetail = () => {\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 '4': 'error'\n };\n return statusMap[status] || 'default';\n };\n const getStatusText = status => {\n const statusMap = {\n '0': '待处理',\n '1': '处理中',\n '2': '已完成',\n '3': '失败',\n '4': '异常'\n };\n return statusMap[status] || '未知';\n };\n const getAccessTypeText = type => {\n const typeMap = {\n 'api_no_crack': 'API无破解',\n 'api_crack': 'API破解',\n 'browser_auto_operate': '浏览器自动操作'\n };\n return typeMap[type] || type;\n };\n const fetchData = async () => {\n try {\n const response = await autoAccessTasksApi.getDetail(id);\n setData(response.data);\n form.setFieldsValue(response.data);\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 autoAccessTasksApi.update(id, values);\n message.success('更新成功');\n navigate('/auto-access-tasks');\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: 84,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 83,\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: 90,\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: 96,\n columnNumber: 15\n }, this),\n onClick: () => navigate('/auto-access-tasks'),\n style: {\n marginBottom: 16\n },\n children: \"\\u8FD4\\u56DE\\u5217\\u8868\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 95,\n columnNumber: 7\n }, this), isEditMode ? /*#__PURE__*/_jsxDEV(Card, {\n title: \"\\u7F16\\u8F91\\u81EA\\u52A8\\u63A5\\u5165\\u4EFB\\u52A1\",\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: \"\\u68C0\\u7D22\\u4EFB\\u52A1ID\",\n name: \"search_task_id\",\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: 111,\n columnNumber: 13\n }, this), /*#__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: 123,\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: \"\\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: 131,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 126,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u63A5\\u5165\\u65B9\\u5F0F\",\n name: \"access_type\",\n rules: [{\n required: true,\n message: '请选择接入方式'\n }],\n children: /*#__PURE__*/_jsxDEV(Select, {\n children: [/*#__PURE__*/_jsxDEV(Option, {\n value: \"api_no_crack\",\n children: \"API\\u65E0\\u7834\\u89E3\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 140,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"api_crack\",\n children: \"API\\u7834\\u89E3\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 141,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"browser_auto_operate\",\n children: \"\\u6D4F\\u89C8\\u5668\\u81EA\\u52A8\\u64CD\\u4F5C\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 142,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 139,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 134,\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: 150,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 146,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"API\\u6587\\u6863\",\n name: \"api_doc\",\n children: /*#__PURE__*/_jsxDEV(TextArea, {\n rows: 6\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 157,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 153,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"API\\u7C7B\\u540D\",\n name: \"api_class_name\",\n children: /*#__PURE__*/_jsxDEV(Input, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 164,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 160,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u64CD\\u4F5C\\u8DEF\\u5F84\\u6570\\u636E\",\n name: \"operate_path_data\",\n children: /*#__PURE__*/_jsxDEV(TextArea, {\n rows: 4\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 171,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 167,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\u6E90\\u5185\\u5BB9\\u94FE\\u63A5\",\n name: \"origin_content_link\",\n children: /*#__PURE__*/_jsxDEV(Input, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 178,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 174,\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: 187,\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: 188,\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: 189,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"3\",\n children: \"\\u5931\\u8D25\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 190,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"4\",\n children: \"\\u5F02\\u5E38\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 191,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 186,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 181,\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: 199,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 195,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"button-group\",\n children: [/*#__PURE__*/_jsxDEV(Button, {\n onClick: () => navigate('/auto-access-tasks'),\n children: \"\\u53D6\\u6D88\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 203,\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: 206,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 202,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 105,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 104,\n columnNumber: 9\n }, this) : /*#__PURE__*/_jsxDEV(Card, {\n title: \"\\u81EA\\u52A8\\u63A5\\u5165\\u4EFB\\u52A1\\u8BE6\\u60C5\",\n children: /*#__PURE__*/_jsxDEV(Descriptions, {\n column: 2,\n bordered: true,\n children: [/*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u63A5\\u5165\\u4EFB\\u52A1ID\",\n children: data.access_task_id\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 215,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u68C0\\u7D22\\u4EFB\\u52A1ID\",\n children: data.search_task_id\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 218,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5DE5\\u5177\\u540D\\u79F0\",\n children: data.tools_name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 221,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5DE5\\u5177\\u529F\\u80FD\\u540D\\u79F0\",\n children: data.tools_function_name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 224,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u63A5\\u5165\\u65B9\\u5F0F\",\n children: /*#__PURE__*/_jsxDEV(Tag, {\n color: \"blue\",\n children: getAccessTypeText(data.access_type)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 228,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 227,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u72B6\\u6001\",\n children: /*#__PURE__*/_jsxDEV(Tag, {\n color: getStatusColor(data.status),\n children: getStatusText(data.status)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 231,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 230,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5DE5\\u5177\\u529F\\u80FD\\u63CF\\u8FF0\",\n span: 2,\n children: data.tools_function_desc\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 235,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"API\\u6587\\u6863\",\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.api_doc || '无'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 240,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 239,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 238,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"API\\u7C7B\\u540D\",\n children: data.api_class_name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 245,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u6E90\\u5185\\u5BB9\\u94FE\\u63A5\",\n children: data.origin_content_link ? /*#__PURE__*/_jsxDEV(\"a\", {\n href: data.origin_content_link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: data.origin_content_link\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 250,\n columnNumber: 17\n }, this) : '无'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 248,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u64CD\\u4F5C\\u8DEF\\u5F84\\u6570\\u636E\",\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.operate_path_data || '无'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 257,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 256,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 255,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u5931\\u8D25\\u539F\\u56E0\",\n span: 2,\n children: data.fail_reason || '无'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 262,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u521B\\u5EFA\\u65F6\\u95F4\",\n children: moment(data.create_time).format('YYYY-MM-DD HH:mm:ss')\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 265,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Descriptions.Item, {\n label: \"\\u66F4\\u65B0\\u65F6\\u95F4\",\n children: moment(data.update_time).format('YYYY-MM-DD HH:mm:ss')\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 268,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 214,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 213,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 94,\n columnNumber: 5\n }, this);\n};\n_s(AutoAccessTaskDetail, \"zaoVSOc9hXK/wTbAg7QOfM3lMK4=\", false, function () {\n return [Form.useForm, useParams, useNavigate, useLocation];\n});\n_c = AutoAccessTaskDetail;\nexport default AutoAccessTaskDetail;\nvar _c;\n$RefreshReg$(_c, \"AutoAccessTaskDetail\");","map":{"version":3,"names":["React","useState","useEffect","Form","Input","Select","Button","Card","Descriptions","Tag","message","Spin","useParams","useNavigate","useLocation","ArrowLeftOutlined","autoAccessTasksApi","moment","jsxDEV","_jsxDEV","TextArea","Option","AutoAccessTaskDetail","_s","form","useForm","data","setData","loading","setLoading","saving","setSaving","id","navigate","location","isEditMode","search","includes","getStatusColor","status","statusMap","getStatusText","getAccessTypeText","type","typeMap","fetchData","response","getDetail","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","value","rows","htmlType","column","bordered","access_task_id","search_task_id","tools_name","tools_function_name","color","access_type","span","tools_function_desc","maxHeight","overflow","whiteSpace","wordBreak","api_doc","api_class_name","origin_content_link","href","target","rel","operate_path_data","fail_reason","create_time","format","update_time","_c","$RefreshReg$"],"sources":["/Users/max_liu/max_liu/company/tools_auto_pt/src/pages/AutoAccessTaskDetail.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 { autoAccessTasksApi } from '../services/api';\nimport moment from 'moment';\n\nconst { TextArea } = Input;\nconst { Option } = Select;\n\nconst AutoAccessTaskDetail = () => {\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 '4': '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 '4': '异常',\n };\n return statusMap[status] || '未知';\n };\n\n const getAccessTypeText = (type) => {\n const typeMap = {\n 'api_no_crack': 'API无破解',\n 'api_crack': 'API破解',\n 'browser_auto_operate': '浏览器自动操作',\n };\n return typeMap[type] || type;\n };\n\n const fetchData = async () => {\n try {\n const response = await autoAccessTasksApi.getDetail(id);\n setData(response.data);\n form.setFieldsValue(response.data);\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 autoAccessTasksApi.update(id, values);\n message.success('更新成功');\n navigate('/auto-access-tasks');\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 {data.api_doc || '无'}\n\n
\n {data.operate_path_data || '无'}\n\n