You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1 lines
						
					
					
						
							12 KiB
						
					
					
				
			
		
		
	
	
							1 lines
						
					
					
						
							12 KiB
						
					
					
				{"remainingRequest":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\src\\views\\login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&","dependencies":[{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\src\\views\\login.vue","mtime":1633763899639},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\css-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\postcss-loader\\src\\index.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\sass-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKLmxvZ2luIHsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQtY29sb3I6ICMwRDFEMzA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoubWFpbnsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDk0MHB4OwogIGhlaWdodDogNDk1cHg7CiAgYmFja2dyb3VuZDpyZ2JhKDI1LDQxLDU5LDEpOwogIGJvcmRlci1yYWRpdXM6MTJweDsKICBib3gtc2hhZG93OjBweCAycHggMTJweCAwcHggcmdiYSg5LDIzLDM5LDEpOwogIGNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7CiAgLmltZzF7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsKICAgIHRvcDogNDZweDsKICAgIGxlZnQ6IDUzcHg7CiAgICB3aWR0aDogMzIwcHg7CiAgfQogIC5pbWcyewogICAgcG9zaXRpb246YWJzb2x1dGU7CiAgICBkaXNwbGF5OiBub25lOwogICAgdG9wOiA2M3B4OwogICAgbGVmdDogMTMycHg7CiAgICB3aWR0aDogMzQ4cHg7CiAgICBoZWlnaHQ6IDI5OXB4OwogIH0KICBoM3sKICAgIG1hcmdpbi1sZWZ0OiA1MnB4OwogICAgbWFyZ2luLXRvcDogMzM0cHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgZm9udC1zaXplOjMycHg7CgogIH0KICBoNHsKICAgIG1hcmdpbi1sZWZ0OiA1MnB4OwogICAgZm9udC1zaXplOjI0cHg7CiAgICBtYXJnaW4tdG9wOiAxNnB4OwogIH0KICAubG9naW4tZm9ybSB7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAwOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIHdpZHRoOiAyOTlweDsKICAgIGhlaWdodDogNDk1cHg7CiAgICBwYWRkaW5nOiA1OHB4IDMzcHggMzNweCAzM3B4OwogICAgLnRpdGxlIHsKICAgICAgd2lkdGg6ODVweDsKICAgICAgZm9udC1zaXplOjIwcHg7CiAgICAgIG1hcmdpbjogMHB4IGF1dG8gNjJweCBhdXRvOwogICAgICBib3JkZXItYm90dG9tOiAzcHggcmdiYSgyNyw3NCwxMjcsMSkgcmlkZ2U7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgY29sb3I6ICMzMzMzMzM7CiAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICB9CiAgICAuZWwtaW5wdXQgewogICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIGlucHV0OmZvY3VzICB7CiAgICAgICAgY29sb3I6cmdiYSg2LDEwNCwxODUsMSk7CiAgICAgIH0KCiAgICAgIGlucHV0IHsKICAgICAgICBvdXRsaW5lOm5vbmU7CiAgICAgICAgaGVpZ2h0OiAzOHB4OwogICAgICAgIGJvcmRlci10b3A6IDA7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDA7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6MDsKICAgICAgfQoKICAgIH0KICAgIC5jb2xvci1jbGFzc3sKICAgICAgY29sb3I6cmdiYSg2LDEwNCwxODUsMSk7CiAgICB9CiAgICAuaW5wdXQtaWNvbiB7CiAgICAgIGhlaWdodDogMzlweDsKICAgICAgd2lkdGg6IDE5cHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICB9CiAgfQp9CgoKCgoubG9naW4tY29kZSB7CiAgcG9zaXRpb246YWJzb2x1dGU7CiAgd2lkdGg6IDg4cHg7CiAgaGVpZ2h0OiAzMnB4OwogIHJpZ2h0OiAwOwogIGJvdHRvbTogOHB4OwogIGltZyB7CiAgICB3aWR0aDogODhweDsKICAgIGhlaWdodDogMzJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQp9Ci5lbC1sb2dpbi1mb290ZXIgewogIGhlaWdodDogNDBweDsKICBsaW5lLWhlaWdodDogNDBweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDI3M3B4KTsKICB3aWR0aDogMTAwJTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6ICNmZmY7CiAgZm9udC1mYW1pbHk6IEFyaWFsOwogIGZvbnQtc2l6ZTogMTJweDsKICBsZXR0ZXItc3BhY2luZzogMXB4Owp9Cgo="},{"version":3,"sources":["login.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"login.vue","sourceRoot":"src/views","sourcesContent":["<template>\n  <div class=\"login\">\n    <div class=\"main\" >\n      <img src=\"@/assets/logo/logo.png\" alt=\"\" class=\"img1\">\n      <img src=\"@/assets/image/img_bg.png\" alt=\"\" class=\"img2\">\n      <h3>文档管理系统</h3>\n      <h4>SYSTEM MANAGEMENT</h4>\n      <el-form ref=\"loginForm\" :model=\"loginForm\" :rules=\"loginRules\" class=\"login-form\">\n        <h2 class=\"title\">欢迎登录</h2>\n        <el-form-item prop=\"username\">\n          <el-input v-model=\"loginForm.username\" type=\"text\" auto-complete=\"off\"   @focus=\"isUsername=true\"\n                    @blur=\"isUsername=false\" placeholder=\"用户名\">\n            <svg-icon slot=\"prefix\" icon-class=\"user\" v-bind:class=\"{'color-class':isUsername}\" class=\" input-icon \" />\n          </el-input>\n        </el-form-item>\n        <el-form-item prop=\"password\">\n          <el-input\n            v-model=\"loginForm.password\"\n            type=\"password\"\n            auto-complete=\"off\"\n            placeholder=\"密码\"\n            @focus=\"isPassword=true\"\n            @blur=\"isPassword=false\"\n            @keyup.enter.native=\"handleLogin\"\n          >\n            <svg-icon slot=\"prefix\" icon-class=\"password\" v-bind:class=\"{'color-class':isPassword}\" class=\"el-input__icon input-icon \" />\n          </el-input>\n        </el-form-item>\n        <el-form-item prop=\"code\">\n          <el-input\n            v-model=\"loginForm.code\"\n            auto-complete=\"off\"\n            placeholder=\"验证码\"\n            @focus=\"isValidCode=true\"\n            @blur=\"isValidCode=false\"\n            @keyup.enter.native=\"handleLogin\"\n          >\n            <svg-icon slot=\"prefix\" icon-class=\"validCode\" v-bind:class=\"{'color-class':isValidCode}\" class=\"el-input__icon input-icon \"  />\n          </el-input>\n          <div class=\"login-code\">\n            <img :src=\"codeUrl\" @click=\"getCode\" />\n          </div>\n        </el-form-item>\n        <el-checkbox v-model=\"loginForm.rememberMe\" style=\"margin:0px 0px 25px 0px;\">记住密码</el-checkbox>\n        <el-form-item style=\"width:100%;\">\n          <el-button\n            :loading=\"loading\"\n            size=\"medium\"\n            type=\"primary\"\n            style=\"width:100%;\"\n            @click.native.prevent=\"handleLogin\"\n          >\n            <span v-if=\"!loading\">登 录</span>\n            <span v-else>登 录 中...</span>\n          </el-button>\n        </el-form-item>\n      </el-form>\n    </div>\n\n    <!--  底部  -->\n    <div class=\"el-login-footer\">\n      <span>© 2020 All Rights Reserved. danny</span>\n    </div>\n  </div>\n</template>\n\n<script>\n  import { getCodeImg } from \"@/api/login\";\n  import Cookies from \"js-cookie\";\n  import { encrypt, decrypt } from '@/utils/jsencrypt'\n\n  export default {\n    name: \"Login\",\n    data() {\n      return {\n        isUsername:false,\n        isPassword:false,\n        isValidCode:false,\n        codeUrl: \"\",\n        cookiePassword: \"\",\n        loginForm: {\n          username: \"\",\n          password: \"\",\n          rememberMe: false,\n          code: \"\",\n          uuid: \"\"\n        },\n        loginRules: {\n          username: [\n            { required: true, trigger: \"blur\", message: \"用户名不能为空\" }\n          ],\n          password: [\n            { required: true, trigger: \"blur\", message: \"密码不能为空\" }\n          ],\n          code: [{ required: true, trigger: \"change\", message: \"验证码不能为空\" }]\n        },\n        loading: false,\n        redirect: undefined\n      };\n    },\n    watch: {\n      $route: {\n        handler: function(route) {\n          this.redirect = route.query && route.query.redirect;\n        },\n        immediate: true\n      }\n    },\n    created() {\n      this.getCode();\n      this.getCookie();\n    },\n    methods: {\n      getCode() {\n        getCodeImg().then(res => {\n          this.codeUrl = \"data:image/gif;base64,\" + res.img;\n          this.loginForm.uuid = res.uuid;\n        });\n      },\n      getCookie() {\n        const username = Cookies.get(\"username\");\n        const password = Cookies.get(\"password\");\n        const rememberMe = Cookies.get('rememberMe')\n        this.loginForm = {\n          username: username === undefined ? this.loginForm.username : username,\n          password: password === undefined ? this.loginForm.password : decrypt(password),\n          rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)\n        };\n      },\n      handleLogin() {\n        this.$refs.loginForm.validate(valid => {\n          if (valid) {\n            this.loading = true;\n            if (this.loginForm.rememberMe) {\n              Cookies.set(\"username\", this.loginForm.username, { expires: 30 });\n              Cookies.set(\"password\", encrypt(this.loginForm.password), { expires: 30 });\n              Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });\n            } else {\n              Cookies.remove(\"username\");\n              Cookies.remove(\"password\");\n              Cookies.remove('rememberMe');\n            }\n            this.$store\n              .dispatch(\"Login\", this.loginForm)\n              .then(() => {\n                this.$router.push({ path: this.redirect || \"/\" });\n              })\n              .catch(() => {\n                this.loading = false;\n                this.getCode();\n              });\n          }\n        });\n      }\n    }\n  };\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\">\n  .login {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    height: 100%;\n    background-color: #0D1D30;\n    position: relative;\n  }\n\n  .main{\n    position: relative;\n    width: 940px;\n    height: 495px;\n    background:rgba(25,41,59,1);\n    border-radius:12px;\n    box-shadow:0px 2px 12px 0px rgba(9,23,39,1);\n    color:rgba(255,255,255,1);\n    .img1{\n      position:absolute;\n      top: 46px;\n      left: 53px;\n      width: 320px;\n    }\n    .img2{\n      position:absolute;\n      display: none;\n      top: 63px;\n      left: 132px;\n      width: 348px;\n      height: 299px;\n    }\n    h3{\n      margin-left: 52px;\n      margin-top: 334px;\n      margin-bottom: 0;\n      font-size:32px;\n\n    }\n    h4{\n      margin-left: 52px;\n      font-size:24px;\n      margin-top: 16px;\n    }\n    .login-form {\n      position:absolute;\n      right: 0;\n      top: 0;\n      border-radius: 6px;\n      background: #ffffff;\n      width: 299px;\n      height: 495px;\n      padding: 58px 33px 33px 33px;\n      .title {\n        width:85px;\n        font-size:20px;\n        margin: 0px auto 62px auto;\n        border-bottom: 3px rgba(27,74,127,1) ridge;\n        text-align: center;\n        color: #333333;\n        padding-bottom: 8px;\n      }\n      .el-input {\n        height: 32px;\n        input:focus  {\n          color:rgba(6,104,185,1);\n        }\n\n        input {\n          outline:none;\n          height: 38px;\n          border-top: 0;\n          border-left: 0;\n          border-right: 0;\n          border-radius:0;\n        }\n\n      }\n      .color-class{\n        color:rgba(6,104,185,1);\n      }\n      .input-icon {\n        height: 39px;\n        width: 19px;\n        margin-left: 2px;\n      }\n    }\n  }\n\n\n\n\n  .login-code {\n    position:absolute;\n    width: 88px;\n    height: 32px;\n    right: 0;\n    bottom: 8px;\n    img {\n      width: 88px;\n      height: 32px;\n      cursor: pointer;\n      vertical-align: middle;\n    }\n  }\n  .el-login-footer {\n    height: 40px;\n    line-height: 40px;\n    position: absolute;\n    transform: translateY(273px);\n    width: 100%;\n    text-align: center;\n    color: #fff;\n    font-family: Arial;\n    font-size: 12px;\n    letter-spacing: 1px;\n  }\n\n</style>\n"]}]} |