| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 |
- const routerArray = [{
- path: '/', name: '首页',
- }]
- const handler = {
- routerArray, JumpRouter, getToken, setToken, GetUserInfo
- }
- var loginState = false;
- //=======================链接跳转
- function JumpRouter(url, query) {
- if (query) {
- window.location.href = url + "?routerlink=" + query;
- } else {
- window.location.href = url
- }
- }
- function getToken() {
- return localStorage.getItem("token");
- }
- function setToken(value) {
- localStorage.setItem("token", value);
- console.log("token set", getToken())
- }
- function GetUserInfo() {
- console.log("获取用户信息")
- fetch('/api/user/info', {
- method: 'GET', headers: {
- // 'Content-Type': 'application/json',
- "auth-sign": getToken()
- }, // body: JSON.stringify(data)
- })
- .then(response => response.json())
- .then(data => {
- if (data.code !== 200) {
- loginState = false;
- //头像修改
- document.getElementById("not-login").style.display = "black";
- document.getElementById("logged-in").style.display = "none";
- //用户名称
- document.getElementById("login-name").innerText = "登录";
- } else {
- //导航栏头像处理
- if (data.data.avatar) {
- document.getElementById("not-login").style.display = "none";
- let logged = document.getElementById("logged-in");
- logged.style.display = "block"
- logged.src = data.data.avatar;
- } else {
- document.getElementById("not-login").style.display = "black";
- document.getElementById("logged-in").style.display = "none";
- }
- // 导航栏名字问题
- document.getElementById("login-name").innerText = data.data.name;
- loginState = true;
- }
- })
- .catch((error) => {
- loginState = false;
- //头像修改
- document.getElementById("not-login").style.display = "black";
- document.getElementById("logged-in").style.display = "none";
- //用户名称
- document.getElementById("login-name").innerText = "登录";
- console.error('Error:', error);
- // alert("获取登录信息失败");
- });
- }
- function clickAvatar() {
- if (loginState) {
- //已经登录的,进入管理页面
- JumpRouter("/manage/info");
- } else {
- let loginBody = document.getElementById("login-body");
- let loginCenter = document.getElementById("login-center");
- let registerCenter = document.getElementById("register-center");
- loginBody.style.display = "";
- loginCenter.style.display = "";
- registerCenter.style.display = "none"
- }
- }
- function closeLoginBody() {
- console.log(6666666666)
- let loginBody = document.getElementById("login-body");
- let loginCenter = document.getElementById("login-center");
- let registerCenter = document.getElementById("register-center");
- loginBody.style.display = "none";
- loginCenter.style.display = "none";
- registerCenter.style.display = "none"
- }
- function openLoginBody(type) {
- if (type === "register") {
- let loginBody = document.getElementById("login-body");
- let loginCenter = document.getElementById("login-center");
- let registerCenter = document.getElementById("register-center");
- loginBody.style.display = "";
- loginCenter.style.display = "none";
- registerCenter.style.display = ""
- } else if (type === "login") {
- let loginBody = document.getElementById("login-body");
- let loginCenter = document.getElementById("login-center");
- let registerCenter = document.getElementById("register-center");
- loginBody.style.display = "";
- loginCenter.style.display = "";
- registerCenter.style.display = "none"
- }
- }
- //登录
- document.addEventListener('DOMContentLoaded', () => {
- const selectType = 'email';
- const phoneTab = document.getElementById('phone-tab');
- const emailTab = document.getElementById('email-tab');
- const wxTab = document.getElementById('wx-tab');
- const phoneSection = document.getElementById('phone-section');
- const emailSection = document.getElementById('email-section');
- const wxSection = document.getElementById('wx-section');
- const selectBar = document.getElementById('select-bar');
- const sendCodeBtn = document.getElementById('send-code-btn');
- const phoneLoginBtn = document.getElementById('phone-login-btn');
- const emailLoginBtn = document.getElementById('email-login-btn');
- const refreshWxCode = document.getElementById('refresh-wx-code');
- function setType(type) {
- phoneSection.style.display = 'none';
- emailSection.style.display = 'none';
- wxSection.style.display = 'none';
- if (type === 'phone') {
- phoneSection.style.display = 'block';
- selectBar.style.marginLeft = '-200px';
- } else if (type === 'email') {
- emailSection.style.display = 'block';
- selectBar.style.marginLeft = '0';
- } else if (type === 'wx') {
- wxSection.style.display = 'block';
- selectBar.style.marginLeft = '200px';
- }
- }
- phoneTab.addEventListener('click', () => setType('phone'));
- emailTab.addEventListener('click', () => setType('email'));
- wxTab.addEventListener('click', () => setType('wx'));
- function showTip(msg) {
- alert(msg);
- }
- function validateEmail(email) {
- const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
- return re.test(String(email).toLowerCase());
- }
- function validatePhone(phone) {
- const re = /^1[3-9]\d{9}$/;
- return re.test(String(phone));
- }
- function validateCode(code) {
- const re = /^\d{6}$/;
- return re.test(String(code));
- }
- sendCodeBtn.addEventListener('click', () => {
- const phone = document.getElementById('phone-input').value;
- if (!validatePhone(phone)) {
- showTip('手机号格式错误');
- return;
- }
- fetch("/api/user/loginCode", {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({
- phone: phone
- })
- })
- .then(response => {
- if (!response.ok) {
- throw new Error('Network response was not ok ' + response.statusText);
- }
- return response.json();
- })
- .then(data => {
- if (data.success) {
- console.log('Verification code sent successfully:', data);
- } else {
- console.error('Failed to send verification code:', data.message);
- }
- })
- .catch(error => {
- console.error('There has been a problem with your fetch operation:', error);
- });
- alert('验证码已发送');
- });
- phoneLoginBtn.addEventListener('click', () => {
- const phone = document.getElementById('phone-input').value;
- const code = document.getElementById('phone-code-input').value;
- if (!validatePhone(phone)) {
- showTip('手机号格式错误');
- return;
- }
- if (!validateCode(code)) {
- showTip('验证码错误');
- return;
- }
- fetch("/api/user/login", {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({
- username: phone,
- password: code,
- type: "phone"
- })
- }).then(response => {
- if (!response.ok) {
- throw new Error('Network response was not ok ' + response.statusText);
- }
- return response.json();
- }).then(data => {
- if (data.code === 200) {
- setToken(data.data.token)
- //刷新页面
- window.location.reload();
- } else {
- alert(data.msg)
- }
- }).catch(error => {
- console.error('There has been a problem with your fetch operation:', error);
- });
- alert('手机号登录成功');
- });
- emailLoginBtn.addEventListener('click', () => {
- const email = document.getElementById('email-input').value;
- const password = document.getElementById('email-password-input').value;
- if (!validateEmail(email)) {
- showTip('邮箱格式错误');
- return;
- }
- if (password.length < 6) {
- showTip('密码过短');
- return;
- }
- //TODO 邮箱登录
- alert('邮箱登录成功');
- });
- refreshWxCode.addEventListener('click', () => {
- console.log('二维码已刷新');
- });
- setType(selectType);
- });
- //注册
- document.addEventListener('DOMContentLoaded', () => {
- const username = document.getElementById('username');
- const password = document.getElementById('password');
- const requirePassword = document.getElementById('requirePassword');
- const phone = document.getElementById('phone');
- const code = document.getElementById('code');
- const sendCodeBtn = document.getElementById('send-register-code');
- const registerBtn = document.getElementById('register-btn');
- let awaitCode = 0;
- function showTip(msg) {
- alert(msg);
- }
- function validateEmail(email) {
- const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
- return re.test(String(email).toLowerCase());
- }
- function validatePhone(phone) {
- const re = /^1[3-9]\d{9}$/;
- return re.test(String(phone));
- }
- function validatePassword(password) {
- const re = /^[a-zA-Z0-9,./<>?;'\\:"|\[\]{}~!@#$%^&*()_+=-]{6,32}$/;
- return re.test(String(password));
- }
- function validateCode(code) {
- const re = /^[0-9]{6}$/;
- return re.test(String(code));
- }
- sendCodeBtn.addEventListener('click', () => {
- if (awaitCode === 0) {
- const phoneVal = phone.value;
- if (!validatePhone(phoneVal)) {
- showTip('手机号格式错误');
- return;
- }
- alert('验证码已发送');
- awaitCode = 5;
- const interval = setInterval(() => {
- awaitCode--;
- sendCodeBtn.textContent = awaitCode > 0 ? `${awaitCode}s` : '发送验证码';
- if (awaitCode === 0) {
- clearInterval(interval);
- }
- }, 1000);
- }
- });
- registerBtn.addEventListener('click', () => {
- const usernameVal = username.value;
- const passwordVal = password.value;
- const requirePasswordVal = requirePassword.value;
- const phoneVal = phone.value;
- const codeVal = code.value;
- if (!validateEmail(usernameVal)) {
- showTip('邮箱格式错误');
- return;
- }
- if (!validatePassword(passwordVal)) {
- showTip('密码格式错误');
- return;
- }
- if (passwordVal !== requirePasswordVal) {
- showTip('两次密码不一致');
- return;
- }
- if (!validatePhone(phoneVal)) {
- showTip('手机号格式错误');
- return;
- }
- if (!validateCode(codeVal)) {
- showTip('验证码错误');
- return;
- }
- alert('注册成功');
- // Here you can make an API request to register the user
- });
- });
|