Files
meeting-room/frontend/node_modules/.cache/babel-loader/3e249174c8de79cd61c4cd60ef6e50b8deee4cc363201a174c9bdd428fa5b12e.json

1 line
64 KiB
JSON
Raw Normal View History

{"ast":null,"code":"var _jsxFileName = \"/home/node/.openclaw/workspace/flying-hero/projects/meeting-room/frontend/src/App.js\",\n _s = $RefreshSig$(),\n _s2 = $RefreshSig$(),\n _s3 = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { BrowserRouter as Router, Routes, Route, Link, useNavigate, useParams } from 'react-router-dom';\nimport axios from 'axios';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst API_BASE = 'http://localhost:8000/api/v1';\naxios.interceptors.request.use(config => {\n const token = localStorage.getItem('token');\n if (token) config.headers.Authorization = `Bearer ${token}`;\n return config;\n});\n\n// ============ 登录页面 ============\nfunction LoginPage() {\n _s();\n const [username, setUsername] = useState('test');\n const [password, setPassword] = useState('test123');\n const navigate = useNavigate();\n const handleLogin = async e => {\n e.preventDefault();\n try {\n const res = await axios.post(`${API_BASE}/auth/login/`, {\n username,\n password\n });\n localStorage.setItem('token', res.data.token);\n localStorage.setItem('user', JSON.stringify(res.data.user));\n navigate('/meetings');\n } catch (error) {\n var _error$response, _error$response$data;\n alert('登录失败:' + (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.detail) || error.message));\n }\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.center,\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.card,\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n style: styles.title,\n children: \"\\uD83C\\uDFDB\\uFE0F \\u9F99\\u867E\\u8BAE\\u4E8B\\u5385\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 34,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: handleLogin,\n style: styles.form,\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n placeholder: \"\\u7528\\u6237\\u540D\",\n value: username,\n onChange: e => setUsername(e.target.value),\n style: styles.input,\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 36,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"password\",\n placeholder: \"\\u5BC6\\u7801\",\n value: password,\n onChange: e => setPassword(e.target.value),\n style: styles.input,\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 37,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: styles.btn,\n children: \"\\u767B\\u5F55\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 38,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 35,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 33,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 32,\n columnNumber: 5\n }, this);\n}\n\n// ============ 会议列表 ============\n_s(LoginPage, \"WanfkaV1NzEawnKhDcLGBl0+1vs=\", false, function () {\n return [useNavigate];\n});\n_c = LoginPage;\nfunction MeetingList() {\n _s2();\n const [meetings, setMeetings] = useState([]);\n const [topic, setTopic] = useState('');\n const navigate = useNavigate();\n const token = localStorage.getItem('token');\n useEffect(() => {\n if (!token) {\n navigate('/login');\n return;\n }\n fetchMeetings();\n }, []);\n const fetchMeetings = async () => {\n try {\n c