*
lsh
2025-04-24 388353ed9bad250663e8ad8129463d1ea80d46e6
src/main/webapp/views/login.html
@@ -1,227 +1,354 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>系统登录</title>
    <link rel="stylesheet" href="../static/layui/css/layui.css" media="all">
    <script type="text/javascript" src="../static/layui/layui.js"></script>
    <script type="text/javascript" src="../static/js/common.js"></script>
    <style>
        html{
            height: 100%;
        }
        body.login-bg {
            color: #777;
            height: 100%;
            /*background-image: url("../static/image/bg-imgage.jpg");*/
            background-image: url("../static/image/login_bg.jpg");
            background-repeat: no-repeat;
            background-size: cover;
            background-position: top center;
        }
<html>
   <head>
      <meta charset="utf-8">
      <title>wcs │ login of wcs</title>
      <style>
         * {
            padding: 0;
            margin: 0;
         }
        #login-wrapper {
            /*color: #fff;*/
            box-sizing:border-box;
            /*background: #576669;*/
            background: #fff;
            position: absolute;
            top: 45%;
            left: 50%;
            margin-top: -210px;
            margin-left: -220px;
            width: 440px;
            min-height: 420px;
            padding: 50px;
            text-align: center;
            border-radius: 5px;
         .container {
            display: flex;
            height: 100vh;
            width: 100%;
         }
            transform-origin: 50% 50%;
            animation: loading 1s 0s forwards;
            transform: rotateX(0deg);
        }
         .left-box {
            height: 100%;
            width: 70%;
         }
        #login-wrapper h2 {
            font-size: 26px;
            margin-bottom: 30px;
        }
         .login-video {
            height: 100%;
            overflow: hidden;
         }
        .layadmin-user-login-body .layui-form-item {
            margin-bottom: 20px;
            position: relative;
        }
        .layadmin-user-login-body .layui-form-item .layui-input {
            height: 42px;
            padding-left: 40px;
            font-size: 16px;
            border: 1px solid #c8cccf;
            color: inherit;
        }
        .login-submit {
            margin-top: 30px;
        }
        .layadmin-user-login-icon {
            position: absolute;
            left: 1px;
            top: 1px;
            width: 38px;
            line-height: 40px;
            text-align: center;
            color: #B2B2B2;
            font-size: 18px;
        }
        .layui-btn-normal {
            background-color: #0767aa;
            font-size: 20px;
            border-radius: 4px;
            height: 52px;
        }
        #code-box {
            position: relative;
            height: 42px;
        }
        #code-label {
            z-index: 999;
        }
        #code {
            position: absolute;
            left: 0;
            top: 0;
            display: inline-block;
            width: 60%;
        }
        #codeImg {
            border: 1px solid rgba(0,0,0,0.1);
            position: absolute;
            right: 5%;
            top: 0;
            width: 30%;
            height: 90%;
        }
    </style>
</head>
<body class="login-bg">
         .form-main {
            width: 300px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            background-color: rgba(255, 255, 255, 0.6);
            padding: 50px 30px 50px 30px;
            border-radius: 20px;
            box-shadow: 0px 0px 40px rgba(0, 0, 0, 0.062);
         }
<div id="login-wrapper">
    <header>
        <h2>系统登录</h2>
    </header>
    <div class="layui-form layadmin-user-login-body">
        <div class="layui-form-item">
            <label class="layui-icon layui-icon-cellphone layadmin-user-login-icon"></label>
            <input id="mobile" class="layui-input" type="text" name="mobile" lay-verify="mobile" placeholder="用户名">
        </div>
        <div class="layui-form-item">
            <label class="layui-icon layui-icon-password layadmin-user-login-icon"></label>
            <input id="password" class="layui-input" type="password" name="password" lay-verify="password" placeholder="密码">
        </div>
        <div id="code-box" class="layui-form-item" style="">
            <label id="code-label" class="layui-icon layui-icon-vercode layadmin-user-login-icon"></label>
            <input id="code" class="layui-input" type="text" name="password" lay-verify="code" placeholder="验证码">
            <img id="codeImg" title="看不清?点击换一张。">
        </div>
        <!--<div class="layui-form-item">-->
            <!--<input id="rememberPwd" style="vertical-align: middle" type="checkbox" lay-filter="remPwd" lay-skin="switch" lay-text="开启|关闭" title="记住密码" checked="checked">-->
            <!--<span style="vertical-align: middle;font-size: 15px">记住密码</span>-->
        <!--</div>-->
    </div>
    <div class="layui-form-item login-submit">
        <button id="login-button" class="layui-btn layui-btn-fluid layui-btn-normal" lay-submit="" lay-filter="login">登 录</button>
    </div>
</div>
         .heading {
            font-size: 2.5em;
            color: #2e2e2e;
            font-weight: 700;
            margin: 15px 0 0px 0;
         }
</body>
<script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../static/js/tools/md5.js"></script>
<script type="text/javascript">
         .inputContainer {
            width: 100%;
            position: relative;
            display: flex;
            align-items: center;
            justify-content: center;
         }
    // 验证码开关
    var codeSwitch = 'Y';
    $.ajax({
        url: baseUrl+"/code/switch.action",
        async: false,
        success: function (res) {
            if (res.data === 'N'){
                codeSwitch = res.data;
                $('#code-box').css("display", "none");
            }
        }
    });
         .inputIcon {
            position: absolute;
            left: 10px;
         }
    // 初始化验证码
    initCode();
    $('#codeImg').click(function () {
        initCode();
    });
    function initCode() {
        var random = Math.random();
        $('#codeImg').attr("src", baseUrl+"/code.action?sd="+random);
        setTimeout(function () {
            $.ajax({
                url: baseUrl+"/code.do",
                data: {sd: random},
                method: 'POST',
                async: false,
                success: function (code) {
                    sessionStorage.setItem("code", code);
                }
            });
        }, 100);
    }
         .inputField {
            width: 100%;
            height: 40px;
            background-color: transparent;
            border: none;
            border-bottom: 2px solid rgb(173, 173, 173);
            border-radius: 30px;
            margin: 10px 0;
            color: black;
            font-size: .8em;
            font-weight: 500;
            box-sizing: border-box;
            padding-left: 30px;
         }
    layui.use(['form','layer'],function () {
        var form = layui.form,
            layer = layui.layer,
            $ = layui.jquery;
         .inputField:focus {
            outline: none;
            border-bottom: 2px solid rgb(199, 114, 255);
         }
        form.on('submit(login)', function (data) {
            var mobile = $("#mobile").val();
            if (mobile === "") {
                layer.msg("请输入手机号", {offset: '150px'});
                return;
            }
            var password = $("#password").val();
            if (password === "") {
                layer.msg("请输入密码", {offset: '150px'});
                return;
            }
            var code = $("#code").val();
            if (code === "" && codeSwitch === 'Y') {
                layer.msg("请输入验证码", {offset: '150px'});
                return;
            }
            if (sessionStorage.getItem("code").toUpperCase() !== code.toUpperCase()&&codeSwitch==='Y'){
                layer.msg("验证码错误", {offset: '150px'});
                return;
            }
         .inputField::placeholder {
            color: rgb(80, 80, 80);
            font-size: 1em;
            font-weight: 500;
         }
         .login-box {
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
         }
            var user = {
                mobile: mobile,
                password: hex_md5(password)
            };
            $.ajax({
                url: baseUrl+"/login.action",
                data: user,
                method: 'POST',
                success: function (res) {
                    if (res.code === 200){
                        localStorage.setItem("token", res.data.token);
                        localStorage.setItem("username", res.data.username);
                        window.location.href = "index.html";
                    } else {
                        layer.msg(res.msg, {offset: '150px'});
                    }
                }
            });
            return false;
        });
         .login-button {
            position: relative;
            width: 100%;
            border: 2px solid #8000ff;
            background-color: #8000ff;
            height: 40px;
            color: white;
            font-size: .8em;
            font-weight: 500;
            letter-spacing: 1px;
            border-radius: 30px;
            margin: 10px;
            cursor: pointer;
            overflow: hidden;
         }
        $('body').keydown(function () {
            if (event.keyCode === 13) {
                $("#login-button").click();
            }
        });
         .login-button::after {
            content: "";
            position: absolute;
            background-color: rgba(255, 255, 255, 0.253);
            height: 100%;
            width: 150px;
            top: 0;
            left: -200px;
            border-bottom-right-radius: 100px;
            border-top-left-radius: 100px;
            filter: blur(10px);
            transition-duration: .5s;
         }
    });
</script>
</html>
         .login-button:hover::after {
            transform: translateX(600px);
            transition-duration: .5s;
         }
         .right-box {
            height: 100%;
            width: 30%;
            background: #f6f6f6;
            position: relative;
         }
         .login-copyright {
            position: absolute;
            bottom: 20px;
            right: 20px;
            font-size: 14px;
            width: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
         }
         .copyright-text {
            margin-right: 20px;
         }
         .copyright-img {
            width: 40px;
            height: 40px;
            position: relative;
         }
         .copyright-img > img {
            width: 100%;
            height: 100%;
         }
         .copyright-img-large {
            width: 140px;
            height: 140px;
            position: absolute;
            top: -140px;
            left: -50px;
            display: none;
         }
         .copyright-img-large > img {
            width: 100%;
            height: 100%;
         }
      </style>
   </head>
   <body>
      <div class="container">
         <div class="left-box">
            <div class="login-video">
               <video src="../static/wcs/images/banner.mp4" height="100%" loop autoplay muted="false"
                  controlslist="nodownload" disablepictureinpicture></video>
            </div>
         </div>
         <div class="right-box">
            <div class="login-box">
               <div class="form-main">
                  <p style="text-align: center;"><img class="loginLogoUrl" src="../static/wcs/images/logo.png" alt="" style="width: 80%">
                  </p>
                  <p style="margin-top: -10px;"><span class="login100-form-title p-t-20 p-b-45"
                        style="color: #868686;font-size: 24px">WCS</span></p>
                  <div class="inputContainer">
                     <svg viewBox="0 0 16 16" fill="#2e2e2e" height="16" width="16"
                        xmlns="http://www.w3.org/2000/svg" class="inputIcon">
                        <path
                           d="M13.106 7.222c0-2.967-2.249-5.032-5.482-5.032-3.35 0-5.646 2.318-5.646 5.702 0 3.493 2.235 5.708 5.762 5.708.862 0 1.689-.123 2.304-.335v-.862c-.43.199-1.354.328-2.29.328-2.926 0-4.813-1.88-4.813-4.798 0-2.844 1.921-4.881 4.594-4.881 2.735 0 4.608 1.688 4.608 4.156 0 1.682-.554 2.769-1.416 2.769-.492 0-.772-.28-.772-.76V5.206H8.923v.834h-.11c-.266-.595-.881-.964-1.6-.964-1.4 0-2.378 1.162-2.378 2.823 0 1.737.957 2.906 2.379 2.906.8 0 1.415-.39 1.709-1.087h.11c.081.67.703 1.148 1.503 1.148 1.572 0 2.57-1.415 2.57-3.643zm-7.177.704c0-1.197.54-1.907 1.456-1.907.93 0 1.524.738 1.524 1.907S8.308 9.84 7.371 9.84c-.895 0-1.442-.725-1.442-1.914z">
                        </path>
                     </svg>
                     <input placeholder="请输入用户名" id="username" name="username" class="inputField" type="text">
                  </div>
                  <div class="inputContainer">
                     <svg viewBox="0 0 16 16" fill="#2e2e2e" height="16" width="16"
                        xmlns="http://www.w3.org/2000/svg" class="inputIcon">
                        <path
                           d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2z">
                        </path>
                     </svg>
                     <input placeholder="请输入密码" id="password" name="pass" class="inputField" type="password">
                  </div>
                  <input type="button" id="login-button" class="login-button" value="登录">
                  <div style="display: none;margin-top: 5px;width: 100%;" id="updateLicense">
                     <form enctype="multipart/form-data" style="display: none;">
                        <input id="license" type="file" name="file" >
                     </form>
                     <input type="button" id="submitLicense" class="login-button" style="margin: 0;" value="更新许可证">
                  </div>
               </div>
            </div>
            <div class="login-copyright">
<!--               <div class="copyright-text">Copyright ©2023 wcs</div>-->
               <div id="copyright-img1" class="copyright-img">
                  <img class="copyright-img-url" src="../static/wcs/images/weixin_qrcode.jpg" />
                  <div id="copyright-img-large1" class="copyright-img-large"><img class="copyright-img-url" src="../static/wcs/images/weixin_qrcode.jpg" /></div>
               </div>
            </div>
         </div>
      </div>
      <script type="text/javascript" src="../static/wms/js/jquery/jquery-3.3.1.min.js"></script>
      <script type="text/javascript" src="../static/wms/js/tools/md5.js"></script>
      <script type="text/javascript" src="../static/wms/layer/layer.js"></script>
      <script type="text/javascript" src="../static/wms/js/common.js"></script>
      <script>
          // remember pwd
          $(function () {
            $.ajax({
               url: baseUrl+"/loginInformation",
               data: {},
               method: 'GET',
               success: function (res) {
                  var data = res.data
                  $(".copyright-text").text(data.loginCopyrightText);
                  $(".copyright-img-url").attr("src", data.loginCopyrightImg1);
                  $(".loginLogoUrl").attr("src", data.loginLogo);
                  if (data.loginCopyrightImg1 == "") {
                     $(".copyright-img-url").hide()
                  }
               }
            });
              var oldUserName = localStorage.getItem('oldUserName');
              var oldPass = localStorage.getItem('oldPass');
              if(oldUserName){
                  $('#username').val(oldUserName);
              }
              if(oldPass){
                  $('#password').val(oldPass);
              }
          })
          window.onload = function(){document.getElementById("username").focus();}
          $(document).on('click','#login-button', function () {
              let username = $("#username").val();
              if (username === "") {
                  layer.tips('请输入登录账号', '#username', {tips: [4, '#ff0000']});
                  return;
              }
              let password = $("#password").val();
              if (password === "") {
                  layer.tips('请输入密码', '#password', {tips: [4, '#ff0000']});
                  return;
              }
              $.ajax({
                  url: baseUrl+"/login.action",
                  data: {
                      mobile: username,
                      password: hex_md5(password)
                  },
                  method: 'POST',
                  success: function (res) {
                      if (res.code === 200){
                          localStorage.setItem("token", res.data.token);
                          localStorage.setItem("username", res.data.username);
                          window.location.href = "index.html";
                      } else if (res.code === 10001) {
                          layer.tips(res.msg, '#username', {tips: [4, '#ff0000']});
                      } else if (res.code === 10002) {
                          layer.tips(res.msg, '#username', {tips: [4, '#ff0000']});
                      } else if (res.code === 10003) {
                          layer.tips(res.msg, '#password', {tips: [4, '#ff0000']});
                      } else if (res.code === 20001) {
                     layer.tips(res.msg, '#login-button', {tips: [3, '#ff0000']});
                     $("#updateLicense").show()
                  } else {
                     layer.tips(res.msg, '#login-button', {tips: [3, '#ff0000']});
                  }
                  }
              });
          });
          $(document).keydown(function () {
              if (event.keyCode === 13) {
                  $("#login-button").click();
              }
          });
         $("#copyright-img1").on("mouseover", () => {
            $("#copyright-img-large1").show()
         })
         $("#copyright-img1").on("mouseout", () => {
            $("#copyright-img-large1").hide()
         })
         //更新许可证
         $("#submitLicense").on("click",() => {
            $("#license").click()
         })
         //上传并更新许可证
         $("#license").on("change",(evt) => {
            var files = evt.target.files;
            console.log(files)
            let formData = new FormData();
            formData.append("file", files[0])
            $.ajax({
               url: baseUrl+"/license/updateLicense",
               data: formData,
               method: 'POST',
               cache: false,
               processData: false,
               contentType: false,
               success: function (res) {
                  if (res.code == 200) {
                     layer.msg('更新成功', {time: 1000}, () => {
                        parent.location.reload()
                     });
                  }else{
                     layer.msg(res.msg,{time:2000},() => {
                        parent.location.reload()
                     })
                  }
               }
            })
         })
      </script>
   </body>
</html>