import React, { useState } from 'react' import { View, Text, Input, Image, Button, Label } from '@tarojs/components' import Taro from '@tarojs/taro'; //import { Progress } from '@nutui/nutui-react-taro'; //import { Form, Input, TextArea, Cell, Button, Row, Col, Image } from '@nutui/nutui-react-taro'; import ws from '@/api/websocket' import './login.scss' import { doLogin, fetchOpMap, fetchRouteWs } from '@/api/api' import { redirectTo, showToast } from '@/utils/application' import iconUser from '@/assets/icon/user-3-fill.svg' import iconLock from '@/assets/icon/lock-2-fill.svg' import abIcon from '@/assets/icon/a-b.svg' import { removeStorage, setStorage } from '@/utils/storage'; /* 登录 -> 大厅 -> 新桌面 -> 进桌面 -> profile(弹窗) */ function Login() { const [state, setState] = useState({ username: '', password: '', captcha: '', }); const [captcha, setCaptcha] = useState({ origin: "/api/auth/captcha", src: "/api/auth/captcha", }); const [submitLoding, setSubmitLoding] = useState(false) const handleSubmit = async () => { if (submitLoding) { return; } setSubmitLoding(true); //const token = "AgOjcdf3goeYDX3lwWWwkXtVpcrL-l2rX8csrRKgs3_-BC3JOx0l6nZU0MV25eIn" try { const [tokenRes, opMapRes] = await Promise.all([doLogin(state), fetchOpMap()]); removeStorage('_t'); setStorage('_t', tokenRes.data.token); const wsRes = await fetchRouteWs(); // 初始化 websocket 连接 ws.init(tokenRes.data.token, opMapRes.data, wsRes.data); showToast({title: tokenRes.msg || '登录成功', duration: 800}); // 重定向到大厅 setTimeout(() => redirectTo({url: '/pages/lobby/lobby'}), 800); }catch(err) { showToast({icon: 'error', title: err}) } finally { setSubmitLoding(false); } } return ( Player Infomation Easily add new account or login the current one. {/* */} setState({...state, username: e.target.value})}/> setState({...state, password: e.target.value})}/> setState({...state, captcha: e.target.value})}/> setCaptcha({...captcha, src: captcha.origin + '?t=' + Math.random()})} /> ) } export default Login