| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486 |
- // const routerArray = [{
- // path: '/', name: '首页',
- // }]
- // const handler = {
- // JumpRouter, getToken, setToken, GetUserInfo
- // }
- var loginState = false;
- var RouterLinkName = "routerLink";
- document.addEventListener('DOMContentLoaded', function () {
- if (window.location.pathname === "/" || window.location.pathname === "") {
- console.log("6666668")
- sessionStorage.setItem(RouterLinkName, JSON.stringify([]))
- }
- RouterBarCreate()
- })
- //=======================链接跳转
- function JumpRouter(url, name) {
- //获取当前路径和请求参数
- let path = window.location.href;
- if (path.indexOf(window.location.host) !== -1) {
- path = path.substring(path.indexOf(window.location.host) + window.location.host.length)
- }
- let text = document.getElementsByClassName("goods-show-title")[0].textContent
- let title = name ? name : text;
- if (path === '' || path === "/") {
- sessionStorage.setItem(RouterLinkName, JSON.stringify([]))
- }
- //不存在 存储创建一个
- if (!sessionStorage.getItem(RouterLinkName)) {
- sessionStorage.setItem(RouterLinkName, JSON.stringify([path]))
- } else {
- //存在则添加
- let arr = JSON.parse(sessionStorage.getItem(RouterLinkName));
- arr[arr.length] = {title, url: path}
- sessionStorage.setItem(RouterLinkName, JSON.stringify(arr))
- }
- window.location.href = url;
- }
- function RouterBarJump(name, url) {
- let routerLink = JSON.parse(sessionStorage.getItem(RouterLinkName))
- let newArray = []
- if (!routerLink) {
- return
- }
- for (let i = 0; i < routerLink.length; i++) {
- if (routerLink[i].title === name) {
- break
- } else {
- newArray[i] = (routerLink[i])
- }
- }
- sessionStorage.setItem(RouterLinkName, JSON.stringify(newArray))
- window.location.href = url;
- }
- function RouterBarCreate() {
- let routerLink = JSON.parse(sessionStorage.getItem(RouterLinkName))
- let ulEle = document.getElementById("router-bar-list");
- if (!ulEle) {
- return
- }
- ulEle.children = []
- let rightArrowEle = document.createElement("li");
- rightArrowEle.innerText = ">"
- rightArrowEle.className = "router-bar-arrow"
- let ele = document.createElement("li");
- ele.innerText = '首页'
- ele.className = "router-bar-item"
- ele.addEventListener("click", function () {
- RouterBarJump('首页', "/")
- })
- ulEle.appendChild(ele)
- ulEle.appendChild(rightArrowEle)
- if (routerLink) {
- for (let i = 0; i < routerLink.length; i++) {
- if (routerLink[i].url==="/"){
- continue
- }
- let liEle = document.createElement("li");
- liEle.innerText = routerLink[i].title
- liEle.className = "router-bar-item"
- liEle.addEventListener("click", function () {
- RouterBarJump(routerLink[i].title, routerLink[i].url)
- })
- ulEle.appendChild(liEle)
- let rae = document.createElement("li");
- rae.innerText = ">"
- rae.className = "router-bar-arrow"
- ulEle.appendChild(rae)
- }
- }
- let nowEle = document.createElement("li")
- let text = document.getElementsByClassName("goods-show-title")[0].textContent
- nowEle.innerText = text.trim()
- nowEle.className = "router-bar-text"
- ulEle.appendChild(nowEle)
- }
- function jumpClass(className) {
- // document.querySelector('.to-class' + className).scrollIntoView()
- // 获取元素的网页高度
- var height = document.querySelector('.to-class' + className).offsetTop;
- //这个80是导航栏的高度
- window.scrollTo(0, height - 80);
- }
- 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;
- }
- fetch("/api/user/login", {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({
- username: email,
- password: password,
- type: "email"
- })
- }).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);
- });
- });
- 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
- });
- });
|