Browse Source

登录页面调整

sunkuosheng 2 days ago
parent
commit
96274e31a3
3 changed files with 854 additions and 228 deletions
  1. 221 228
      ruoyi-ui-gljt/src/views/login.vue
  2. 320 0
      ruoyi-ui-gljt/src/views/loginNew.vue
  3. 313 0
      ruoyi-ui-gljt/src/views/loginOld.vue

+ 221 - 228
ruoyi-ui-gljt/src/views/login.vue

@@ -2,10 +2,7 @@
   <div style="display: flex;flex-direction: column;height: 100%;width: 100%;">
 
     <div class="login">
-      <div class="login-form">
-
-
-      <el-form ref="loginForm" :model="loginForm" :rules="loginRules" >
+      <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
         <div class="logo-box" style="justify-content: flex-start">
           <!--<img class="logo" style="width: 60px" src="@/assets/images/login-logo1.png">-->
           <img class="logo" style="width: 60px" :src="logo">
@@ -22,14 +19,14 @@
         <el-form-item prop="password" class="item">
           <p class="label"><span>密码</span>:</p>
           <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
-            @keyup.enter.native="handleLogin">
+                    @keyup.enter.native="handleLogin">
             <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
           </el-input>
         </el-form-item>
         <el-form-item prop="code" v-if="captchaEnabled" class="item">
           <p class="label"><span>验证码</span>:</p>
-          <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 67%"
-            @keyup.enter.native="handleLogin">
+          <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 70%"
+                    @keyup.enter.native="handleLogin">
             <!-- <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> -->
           </el-input>
           <div class="login-code">
@@ -39,7 +36,7 @@
         <!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> -->
         <el-form-item class="btns">
           <el-button class="btn1" :loading="loading" type="primary"
-            @click.native.prevent="handleLogin" round>
+                     @click.native.prevent="handleLogin" round>
             <span>登录</span>
           </el-button>
           <!-- <el-button class="btn2" type="primary" round>
@@ -51,7 +48,7 @@
         </el-form-item>
       </el-form>
       <!--  底部  -->
-      </div>
+
     </div>
     <!-- <div class="el-login-footer">
       <span>Copyight@ 2012-2022 XXXXX科技有限公司 All Rights Reserved </span>
@@ -61,260 +58,256 @@
 </template>
 
 <script>
-import { getCodeImg } from "@/api/login";
-import Cookies from "js-cookie";
-import request from '@/utils/request'
-import { decrypt, encrypt } from '@/utils/jsencrypt'
-import { decryptData_ECB, decryptRowData_ECB } from "@/api/tool/sm4";
+  import { getCodeImg } from "@/api/login";
+  import Cookies from "js-cookie";
+  import request from '@/utils/request'
+  import { decrypt, encrypt } from '@/utils/jsencrypt'
+  import { decryptData_ECB, decryptRowData_ECB } from "@/api/tool/sm4";
 
-export default {
-  name: "Login",
-  data() {
-    return {
-      title: process.env.VUE_APP_TITLE,
-      logo: require(process.env.VUE_APP_LOGIN_LOGO),
-      codeUrl: "",
-      loginForm: {
-        username: "",
-        password: "",
-        rememberMe: false,
-        code: "",
-        uuid: ""
-      },
-      loginRules: {
-        username: [
-          { required: true, trigger: "blur", message: "请输入您的账号" }
-        ],
-        password: [
-          { required: true, trigger: "blur", message: "请输入您的密码" }
-        ],
-        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
-      },
-      loading: false,
-      // 验证码开关
-      captchaEnabled: true,
-      // 注册开关
-      register: false,
-      redirect: undefined,
-      data: [
+  export default {
+    name: "Login",
+    data() {
+      return {
+        title: process.env.VUE_APP_TITLE,
+        logo: require(process.env.VUE_APP_LOGIN_LOGO),
+        codeUrl: "",
+        loginForm: {
+          username: "",
+          password: "",
+          rememberMe: false,
+          code: "",
+          uuid: ""
+        },
+        loginRules: {
+          username: [
+            { required: true, trigger: "blur", message: "请输入您的账号" }
+          ],
+          password: [
+            { required: true, trigger: "blur", message: "请输入您的密码" }
+          ],
+          code: [{ required: true, trigger: "change", message: "请输入验证码" }]
+        },
+        loading: false,
+        // 验证码开关
+        captchaEnabled: true,
+        // 注册开关
+        register: false,
+        redirect: undefined,
+        data: [
 
-      ]
-    };
-  },
-  watch: {
-    $route: {
-      handler: function (route) {
-        this.redirect = route.query && route.query.redirect;
-        if (route.query.redirect.indexOf('?') != -1) {
+        ]
+      };
+    },
+    watch: {
+      $route: {
+        handler: function (route) {
+          this.redirect = route.query && route.query.redirect;
+          if (route.query.redirect.indexOf('?') != -1) {
 
-        }
-      },
-      immediate: true
-    }
-  },
-  created() {
-    this.getCode();
-    this.getCookie();
-  },
-  mounted() {
-    window.testquery = function (o) {
-      return request(o);
-    }
-  },
-  methods: {
-    getCode() {
-      getCodeImg().then(res => {
-        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
-        if (this.captchaEnabled) {
-          this.codeUrl = "data:image/gif;base64," + res.img;
-          this.loginForm.uuid = res.uuid;
-        }
-      });
+          }
+        },
+        immediate: true
+      }
     },
-    getCookie() {
-      const username = Cookies.get("username");
-      const password = Cookies.get("password");
-      const rememberMe = Cookies.get('rememberMe')
-      this.loginForm = {
-        username: username === undefined ? this.loginForm.username : username,
-        password: password === undefined ? this.loginForm.password : decrypt(password),
-        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
-      };
+    created() {
+      this.getCode();
+      this.getCookie();
     },
-    handleLogin() {
-      this.$refs.loginForm.validate(valid => {
-        if (valid) {
-          this.loading = true;
-          if (this.loginForm.rememberMe) {
-            Cookies.set("username", this.loginForm.username, { expires: 30 });
-            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
-            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
-          } else {
-            Cookies.remove("username");
-            Cookies.remove("password");
-            Cookies.remove('rememberMe');
+    mounted() {
+      window.testquery = function (o) {
+        return request(o);
+      }
+    },
+    methods: {
+      getCode() {
+        getCodeImg().then(res => {
+          this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+          if (this.captchaEnabled) {
+            this.codeUrl = "data:image/gif;base64," + res.img;
+            this.loginForm.uuid = res.uuid;
           }
-          this.$store.dispatch("Login", this.loginForm).then(() => {
-            this.$router.push({ path: this.redirect || "/" }).catch(() => { });
-          }).catch(() => {
-            this.loading = false;
-            if (this.captchaEnabled) {
-              this.getCode();
+        });
+      },
+      getCookie() {
+        const username = Cookies.get("username");
+        const password = Cookies.get("password");
+        const rememberMe = Cookies.get('rememberMe')
+        this.loginForm = {
+          username: username === undefined ? this.loginForm.username : username,
+          password: password === undefined ? this.loginForm.password : decrypt(password),
+          rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+        };
+      },
+      handleLogin() {
+        this.$refs.loginForm.validate(valid => {
+          if (valid) {
+            this.loading = true;
+            if (this.loginForm.rememberMe) {
+              Cookies.set("username", this.loginForm.username, { expires: 30 });
+              Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
+              Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
+            } else {
+              Cookies.remove("username");
+              Cookies.remove("password");
+              Cookies.remove('rememberMe');
             }
-          });
-        }
-      });
+            this.$store.dispatch("Login", this.loginForm).then(() => {
+              this.$router.push({ path: this.redirect || "/" }).catch(() => { });
+            }).catch(() => {
+              this.loading = false;
+              if (this.captchaEnabled) {
+                this.getCode();
+              }
+            });
+          }
+        });
+      }
     }
-  }
-};
+  };
 </script>
 
 <style rel="stylesheet/scss" lang="scss" scoped>
-.login {
-  display: flex;
-  /*justify-content: center;*/
-  align-items: center;
-  height: 100%;
-  background-image: url("../assets/images/loginNew.png");
-  /*background-size: cover;*/
-  background-size: 100% 100%;
-}
-
-.login-form {
-  /*border-radius: 6px;*/
-  position: absolute;
-  right: 10%;
-  padding: 80px 60px;
-  // width: 500px;
-  background: rgba(255,255,255,0.4);
-  border-radius: 12px;
-  border: 1px solid #FFFFFF;
-
-  .logo-box {
+  .login {
     display: flex;
-    justify-content: space-between;
+    /*justify-content: center;*/
     align-items: center;
-    margin-bottom: 30px;
+    height: 100%;
+    background-image: url("../assets/images/login-background1.png");
+    background-size: cover;
+    /*background-size: 100% 100%;*/
+  }
 
-    // img {
-    //   width: 80%;
-    // }
+  .login-form {
+    border-radius: 6px;
+    position: absolute;
+    left: 25%;
+    // width: 500px;
 
-    .logo {
-      margin-right: 20px;
-    }
-  }
+    .logo-box {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 30px;
 
-  .btns{
-    // margin-left: 112px;
-    margin-top: 30px;
-    ::v-deep .el-form-item__content{
-      justify-content: center;
-    }
-    .el-button{
-      font-size: 18px;
-      padding: 12px 50px;
-      box-shadow: 0 3px 5px 0 #9cb3c9;
-      background-color: transparent;
-      border: none;
-      &.btn1{
-        background-image: linear-gradient(to bottom,#49c0ef,#306cd8);
-      }
-      &.btn2{
-        margin-left: 30px;
-        background-image: linear-gradient(to bottom,#fcd761,#f4812b);
-      }
-      span{
-        display: inline-block;
-        width: 60px;
-        text-align: justify;
-        text-align-last: justify;
-      }
-    }
-  }
-  ::v-deep .el-form-item__content {
-    display: flex;
-    justify-content: flex-start;
+      // img {
+      //   width: 80%;
+      // }
 
-    .el-form-item__error{
-      left: 110px;
+      .logo {
+        margin-right: 20px;
+      }
     }
 
-    .el-input__inner{
-      padding-left: 10px;
+    .btns{
+      // margin-left: 112px;
+      margin-top: 30px;
+      ::v-deep .el-form-item__content{
+        justify-content: center;
+      }
+      .el-button{
+        font-size: 18px;
+        padding: 12px 50px;
+        box-shadow: 0 3px 5px 0 #9cb3c9;
+        background-color: transparent;
+        border: none;
+        &.btn1{
+          background-image: linear-gradient(to bottom,#49c0ef,#306cd8);
+        }
+        &.btn2{
+          margin-left: 30px;
+          background-image: linear-gradient(to bottom,#fcd761,#f4812b);
+        }
+        span{
+          display: inline-block;
+          width: 60px;
+          text-align: justify;
+          text-align-last: justify;
+        }
+      }
     }
-    .label {
+    ::v-deep .el-form-item__content {
       display: flex;
       justify-content: flex-start;
-      font-size: 20px;
-      // font-weight: 600;
-      color: #004b92;
-      width: 140px;
-      margin: 0;
 
-      span {
-        width: 80px;
-        display: inline-block;
-        text-align: justify;
-        text-align-last: justify;
+      .el-form-item__error{
+        left: 110px;
       }
-    }
 
-    .el-input__inner:focus {
-      border-color: #ffb955;
-    }
+      .el-input__inner{
+        padding-left: 10px;
+      }
+      .label {
+        display: flex;
+        justify-content: flex-start;
+        font-size: 20px;
+        // font-weight: 600;
+        color: #004b92;
+        width: 140px;
+        margin: 0;
+
+        span {
+          width: 80px;
+          display: inline-block;
+          text-align: justify;
+          text-align-last: justify;
+        }
+      }
+
+      .el-input__inner:focus {
+        border-color: #ffb955;
+      }
 
-    .el-input__inner {
-      font-size: 16px;
-      color: #acacac;
+      .el-input__inner {
+        font-size: 16px;
+        color: #acacac;
+      }
     }
-  }
 
-  .el-input {
-    height: 40px;
+    .el-input {
+      height: 40px;
 
-  }
+    }
 
-  ::v-deep .el-input__prefix{
-    left: 93%;
-  }
-  .input-icon {
-    height: 40px;
-    width: 16px;
+    ::v-deep .el-input__prefix{
+      left: 93%;
+    }
+    .input-icon {
+      height: 40px;
+      width: 16px;
+    }
   }
-}
 
-.login-tip {
-  font-size: 13px;
-  text-align: center;
-  color: #bfbfbf;
-}
+  .login-tip {
+    font-size: 13px;
+    text-align: center;
+    color: #bfbfbf;
+  }
 
-.login-code {
-  height: 38px;
-  width: 120px;
-  margin-left: 5%;
+  .login-code {
+    height: 38px;
+    width: 120px;
+    margin-left: 5%;
 
-  img {
-    cursor: pointer;
-    vertical-align: middle;
+    img {
+      cursor: pointer;
+      vertical-align: middle;
+    }
   }
-}
 
-.el-login-footer {
-  height: 100px;
-  line-height: 100px;
-  /*position: fixed;*/
-  /*bottom: 2%;*/
-  width: 100%;
-  text-align: center;
-  color: #1B1B1B;
-  font-family: Arial;
-  font-size: 12px;
-  letter-spacing: 1px;
-}
+  .el-login-footer {
+    height: 100px;
+    line-height: 100px;
+    /*position: fixed;*/
+    /*bottom: 2%;*/
+    width: 100%;
+    text-align: center;
+    color: #1B1B1B;
+    font-family: Arial;
+    font-size: 12px;
+    letter-spacing: 1px;
+  }
 
-.login-code-img {
-  height: 38px;
-}
+  .login-code-img {
+    height: 38px;
+  }
 </style>

+ 320 - 0
ruoyi-ui-gljt/src/views/loginNew.vue

@@ -0,0 +1,320 @@
+<template>
+  <div style="display: flex;flex-direction: column;height: 100%;width: 100%;">
+
+    <div class="login">
+      <div class="login-form">
+
+
+      <el-form ref="loginForm" :model="loginForm" :rules="loginRules" >
+        <div class="logo-box" style="justify-content: flex-start">
+          <!--<img class="logo" style="width: 60px" src="@/assets/images/login-logo1.png">-->
+          <img class="logo" style="width: 60px" :src="logo">
+          <span style="display: inline-block;font-size: 42px;color: #0656a1;">{{ title }}</span>
+          <!--<img style="width: 440px" class="title-font" src="../assets/images/ylz1.png">-->
+        </div>
+        <!-- <h3 class="title">{{ title }}</h3> -->
+        <el-form-item prop="username" class="item">
+          <p class="label"><span>用户名</span>:</p>
+          <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
+            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="password" class="item">
+          <p class="label"><span>密码</span>:</p>
+          <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
+            @keyup.enter.native="handleLogin">
+            <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="code" v-if="captchaEnabled" class="item">
+          <p class="label"><span>验证码</span>:</p>
+          <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 67%"
+            @keyup.enter.native="handleLogin">
+            <!-- <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> -->
+          </el-input>
+          <div class="login-code">
+            <img :src="codeUrl" @click="getCode" class="login-code-img" />
+          </div>
+        </el-form-item>
+        <!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> -->
+        <el-form-item class="btns">
+          <el-button class="btn1" :loading="loading" type="primary"
+            @click.native.prevent="handleLogin" round>
+            <span>登录</span>
+          </el-button>
+          <!-- <el-button class="btn2" type="primary" round>
+            <span>取消</span>
+          </el-button> -->
+          <div style="float: right;" v-if="register">
+            <router-link class="link-type" :to="'/register'">立即注册</router-link>
+          </div>
+        </el-form-item>
+      </el-form>
+      <!--  底部  -->
+      </div>
+    </div>
+    <!-- <div class="el-login-footer">
+      <span>Copyight@ 2012-2022 XXXXX科技有限公司 All Rights Reserved </span>
+    </div> -->
+  </div>
+
+</template>
+
+<script>
+import { getCodeImg } from "@/api/login";
+import Cookies from "js-cookie";
+import request from '@/utils/request'
+import { decrypt, encrypt } from '@/utils/jsencrypt'
+import { decryptData_ECB, decryptRowData_ECB } from "@/api/tool/sm4";
+
+export default {
+  name: "Login",
+  data() {
+    return {
+      title: process.env.VUE_APP_TITLE,
+      logo: require(process.env.VUE_APP_LOGIN_LOGO),
+      codeUrl: "",
+      loginForm: {
+        username: "",
+        password: "",
+        rememberMe: false,
+        code: "",
+        uuid: ""
+      },
+      loginRules: {
+        username: [
+          { required: true, trigger: "blur", message: "请输入您的账号" }
+        ],
+        password: [
+          { required: true, trigger: "blur", message: "请输入您的密码" }
+        ],
+        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
+      },
+      loading: false,
+      // 验证码开关
+      captchaEnabled: true,
+      // 注册开关
+      register: false,
+      redirect: undefined,
+      data: [
+
+      ]
+    };
+  },
+  watch: {
+    $route: {
+      handler: function (route) {
+        this.redirect = route.query && route.query.redirect;
+        if (route.query.redirect.indexOf('?') != -1) {
+
+        }
+      },
+      immediate: true
+    }
+  },
+  created() {
+    this.getCode();
+    this.getCookie();
+  },
+  mounted() {
+    window.testquery = function (o) {
+      return request(o);
+    }
+  },
+  methods: {
+    getCode() {
+      getCodeImg().then(res => {
+        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+        if (this.captchaEnabled) {
+          this.codeUrl = "data:image/gif;base64," + res.img;
+          this.loginForm.uuid = res.uuid;
+        }
+      });
+    },
+    getCookie() {
+      const username = Cookies.get("username");
+      const password = Cookies.get("password");
+      const rememberMe = Cookies.get('rememberMe')
+      this.loginForm = {
+        username: username === undefined ? this.loginForm.username : username,
+        password: password === undefined ? this.loginForm.password : decrypt(password),
+        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+      };
+    },
+    handleLogin() {
+      this.$refs.loginForm.validate(valid => {
+        if (valid) {
+          this.loading = true;
+          if (this.loginForm.rememberMe) {
+            Cookies.set("username", this.loginForm.username, { expires: 30 });
+            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
+            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
+          } else {
+            Cookies.remove("username");
+            Cookies.remove("password");
+            Cookies.remove('rememberMe');
+          }
+          this.$store.dispatch("Login", this.loginForm).then(() => {
+            this.$router.push({ path: this.redirect || "/" }).catch(() => { });
+          }).catch(() => {
+            this.loading = false;
+            if (this.captchaEnabled) {
+              this.getCode();
+            }
+          });
+        }
+      });
+    }
+  }
+};
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.login {
+  display: flex;
+  /*justify-content: center;*/
+  align-items: center;
+  height: 100%;
+  background-image: url("../assets/images/loginNew.png");
+  /*background-size: cover;*/
+  background-size: 100% 100%;
+}
+
+.login-form {
+  /*border-radius: 6px;*/
+  position: absolute;
+  right: 10%;
+  padding: 80px 60px;
+  // width: 500px;
+  background: rgba(255,255,255,0.4);
+  border-radius: 12px;
+  border: 1px solid #FFFFFF;
+
+  .logo-box {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 30px;
+
+    // img {
+    //   width: 80%;
+    // }
+
+    .logo {
+      margin-right: 20px;
+    }
+  }
+
+  .btns{
+    // margin-left: 112px;
+    margin-top: 30px;
+    ::v-deep .el-form-item__content{
+      justify-content: center;
+    }
+    .el-button{
+      font-size: 18px;
+      padding: 12px 50px;
+      box-shadow: 0 3px 5px 0 #9cb3c9;
+      background-color: transparent;
+      border: none;
+      &.btn1{
+        background-image: linear-gradient(to bottom,#49c0ef,#306cd8);
+      }
+      &.btn2{
+        margin-left: 30px;
+        background-image: linear-gradient(to bottom,#fcd761,#f4812b);
+      }
+      span{
+        display: inline-block;
+        width: 60px;
+        text-align: justify;
+        text-align-last: justify;
+      }
+    }
+  }
+  ::v-deep .el-form-item__content {
+    display: flex;
+    justify-content: flex-start;
+
+    .el-form-item__error{
+      left: 110px;
+    }
+
+    .el-input__inner{
+      padding-left: 10px;
+    }
+    .label {
+      display: flex;
+      justify-content: flex-start;
+      font-size: 20px;
+      // font-weight: 600;
+      color: #004b92;
+      width: 140px;
+      margin: 0;
+
+      span {
+        width: 80px;
+        display: inline-block;
+        text-align: justify;
+        text-align-last: justify;
+      }
+    }
+
+    .el-input__inner:focus {
+      border-color: #ffb955;
+    }
+
+    .el-input__inner {
+      font-size: 16px;
+      color: #acacac;
+    }
+  }
+
+  .el-input {
+    height: 40px;
+
+  }
+
+  ::v-deep .el-input__prefix{
+    left: 93%;
+  }
+  .input-icon {
+    height: 40px;
+    width: 16px;
+  }
+}
+
+.login-tip {
+  font-size: 13px;
+  text-align: center;
+  color: #bfbfbf;
+}
+
+.login-code {
+  height: 38px;
+  width: 120px;
+  margin-left: 5%;
+
+  img {
+    cursor: pointer;
+    vertical-align: middle;
+  }
+}
+
+.el-login-footer {
+  height: 100px;
+  line-height: 100px;
+  /*position: fixed;*/
+  /*bottom: 2%;*/
+  width: 100%;
+  text-align: center;
+  color: #1B1B1B;
+  font-family: Arial;
+  font-size: 12px;
+  letter-spacing: 1px;
+}
+
+.login-code-img {
+  height: 38px;
+}
+</style>

+ 313 - 0
ruoyi-ui-gljt/src/views/loginOld.vue

@@ -0,0 +1,313 @@
+<template>
+  <div style="display: flex;flex-direction: column;height: 100%;width: 100%;">
+
+    <div class="login">
+      <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
+        <div class="logo-box" style="justify-content: flex-start">
+          <!--<img class="logo" style="width: 60px" src="@/assets/images/login-logo1.png">-->
+          <img class="logo" style="width: 60px" :src="logo">
+          <span style="display: inline-block;font-size: 42px;color: #0656a1;">{{ title }}</span>
+          <!--<img style="width: 440px" class="title-font" src="../assets/images/ylz1.png">-->
+        </div>
+        <!-- <h3 class="title">{{ title }}</h3> -->
+        <el-form-item prop="username" class="item">
+          <p class="label"><span>用户名</span>:</p>
+          <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
+            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="password" class="item">
+          <p class="label"><span>密码</span>:</p>
+          <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
+            @keyup.enter.native="handleLogin">
+            <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="code" v-if="captchaEnabled" class="item">
+          <p class="label"><span>验证码</span>:</p>
+          <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 70%"
+            @keyup.enter.native="handleLogin">
+            <!-- <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> -->
+          </el-input>
+          <div class="login-code">
+            <img :src="codeUrl" @click="getCode" class="login-code-img" />
+          </div>
+        </el-form-item>
+        <!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> -->
+        <el-form-item class="btns">
+          <el-button class="btn1" :loading="loading" type="primary"
+            @click.native.prevent="handleLogin" round>
+            <span>登录</span>
+          </el-button>
+          <!-- <el-button class="btn2" type="primary" round>
+            <span>取消</span>
+          </el-button> -->
+          <div style="float: right;" v-if="register">
+            <router-link class="link-type" :to="'/register'">立即注册</router-link>
+          </div>
+        </el-form-item>
+      </el-form>
+      <!--  底部  -->
+
+    </div>
+    <!-- <div class="el-login-footer">
+      <span>Copyight@ 2012-2022 XXXXX科技有限公司 All Rights Reserved </span>
+    </div> -->
+  </div>
+
+</template>
+
+<script>
+import { getCodeImg } from "@/api/login";
+import Cookies from "js-cookie";
+import request from '@/utils/request'
+import { decrypt, encrypt } from '@/utils/jsencrypt'
+import { decryptData_ECB, decryptRowData_ECB } from "@/api/tool/sm4";
+
+export default {
+  name: "Login",
+  data() {
+    return {
+      title: process.env.VUE_APP_TITLE,
+      logo: require(process.env.VUE_APP_LOGIN_LOGO),
+      codeUrl: "",
+      loginForm: {
+        username: "",
+        password: "",
+        rememberMe: false,
+        code: "",
+        uuid: ""
+      },
+      loginRules: {
+        username: [
+          { required: true, trigger: "blur", message: "请输入您的账号" }
+        ],
+        password: [
+          { required: true, trigger: "blur", message: "请输入您的密码" }
+        ],
+        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
+      },
+      loading: false,
+      // 验证码开关
+      captchaEnabled: true,
+      // 注册开关
+      register: false,
+      redirect: undefined,
+      data: [
+
+      ]
+    };
+  },
+  watch: {
+    $route: {
+      handler: function (route) {
+        this.redirect = route.query && route.query.redirect;
+        if (route.query.redirect.indexOf('?') != -1) {
+
+        }
+      },
+      immediate: true
+    }
+  },
+  created() {
+    this.getCode();
+    this.getCookie();
+  },
+  mounted() {
+    window.testquery = function (o) {
+      return request(o);
+    }
+  },
+  methods: {
+    getCode() {
+      getCodeImg().then(res => {
+        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+        if (this.captchaEnabled) {
+          this.codeUrl = "data:image/gif;base64," + res.img;
+          this.loginForm.uuid = res.uuid;
+        }
+      });
+    },
+    getCookie() {
+      const username = Cookies.get("username");
+      const password = Cookies.get("password");
+      const rememberMe = Cookies.get('rememberMe')
+      this.loginForm = {
+        username: username === undefined ? this.loginForm.username : username,
+        password: password === undefined ? this.loginForm.password : decrypt(password),
+        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+      };
+    },
+    handleLogin() {
+      this.$refs.loginForm.validate(valid => {
+        if (valid) {
+          this.loading = true;
+          if (this.loginForm.rememberMe) {
+            Cookies.set("username", this.loginForm.username, { expires: 30 });
+            Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
+            Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
+          } else {
+            Cookies.remove("username");
+            Cookies.remove("password");
+            Cookies.remove('rememberMe');
+          }
+          this.$store.dispatch("Login", this.loginForm).then(() => {
+            this.$router.push({ path: this.redirect || "/" }).catch(() => { });
+          }).catch(() => {
+            this.loading = false;
+            if (this.captchaEnabled) {
+              this.getCode();
+            }
+          });
+        }
+      });
+    }
+  }
+};
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.login {
+  display: flex;
+  /*justify-content: center;*/
+  align-items: center;
+  height: 100%;
+  background-image: url("../assets/images/login-background1.png");
+  background-size: cover;
+  /*background-size: 100% 100%;*/
+}
+
+.login-form {
+  border-radius: 6px;
+  position: absolute;
+  left: 25%;
+  // width: 500px;
+
+  .logo-box {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 30px;
+
+    // img {
+    //   width: 80%;
+    // }
+
+    .logo {
+      margin-right: 20px;
+    }
+  }
+
+  .btns{
+    // margin-left: 112px;
+    margin-top: 30px;
+    ::v-deep .el-form-item__content{
+      justify-content: center;
+    }
+    .el-button{
+      font-size: 18px;
+      padding: 12px 50px;
+      box-shadow: 0 3px 5px 0 #9cb3c9;
+      background-color: transparent;
+      border: none;
+      &.btn1{
+        background-image: linear-gradient(to bottom,#49c0ef,#306cd8);
+      }
+      &.btn2{
+        margin-left: 30px;
+        background-image: linear-gradient(to bottom,#fcd761,#f4812b);
+      }
+      span{
+        display: inline-block;
+        width: 60px;
+        text-align: justify;
+        text-align-last: justify;
+      }
+    }
+  }
+  ::v-deep .el-form-item__content {
+    display: flex;
+    justify-content: flex-start;
+
+    .el-form-item__error{
+      left: 110px;
+    }
+
+    .el-input__inner{
+      padding-left: 10px;
+    }
+    .label {
+      display: flex;
+      justify-content: flex-start;
+      font-size: 20px;
+      // font-weight: 600;
+      color: #004b92;
+      width: 140px;
+      margin: 0;
+
+      span {
+        width: 80px;
+        display: inline-block;
+        text-align: justify;
+        text-align-last: justify;
+      }
+    }
+
+    .el-input__inner:focus {
+      border-color: #ffb955;
+    }
+
+    .el-input__inner {
+      font-size: 16px;
+      color: #acacac;
+    }
+  }
+
+  .el-input {
+    height: 40px;
+
+  }
+
+  ::v-deep .el-input__prefix{
+    left: 93%;
+  }
+  .input-icon {
+    height: 40px;
+    width: 16px;
+  }
+}
+
+.login-tip {
+  font-size: 13px;
+  text-align: center;
+  color: #bfbfbf;
+}
+
+.login-code {
+  height: 38px;
+  width: 120px;
+  margin-left: 5%;
+
+  img {
+    cursor: pointer;
+    vertical-align: middle;
+  }
+}
+
+.el-login-footer {
+  height: 100px;
+  line-height: 100px;
+  /*position: fixed;*/
+  /*bottom: 2%;*/
+  width: 100%;
+  text-align: center;
+  color: #1B1B1B;
+  font-family: Arial;
+  font-size: 12px;
+  letter-spacing: 1px;
+}
+
+.login-code-img {
+  height: 38px;
+}
+</style>