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
						
					
					
						
							13 KiB
						
					
					
				
			
		
		
	
	
							1 lines
						
					
					
						
							13 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=script&lang=js&","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\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IGdldENvZGVJbWcgfSBmcm9tICJAL2FwaS9sb2dpbiI7CmltcG9ydCBDb29raWVzIGZyb20gImpzLWNvb2tpZSI7CmltcG9ydCB7IGVuY3J5cHQsIGRlY3J5cHQgfSBmcm9tICdAL3V0aWxzL2pzZW5jcnlwdCcKCmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiTG9naW4iLAogIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBpc1VzZXJuYW1lOmZhbHNlLAogICAgICBpc1Bhc3N3b3JkOmZhbHNlLAogICAgICBpc1ZhbGlkQ29kZTpmYWxzZSwKICAgICAgY29kZVVybDogIiIsCiAgICAgIGNvb2tpZVBhc3N3b3JkOiAiIiwKICAgICAgbG9naW5Gb3JtOiB7CiAgICAgICAgdXNlcm5hbWU6ICIiLAogICAgICAgIHBhc3N3b3JkOiAiIiwKICAgICAgICByZW1lbWJlck1lOiBmYWxzZSwKICAgICAgICBjb2RlOiAiIiwKICAgICAgICB1dWlkOiAiIgogICAgICB9LAogICAgICBsb2dpblJ1bGVzOiB7CiAgICAgICAgdXNlcm5hbWU6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIHRyaWdnZXI6ICJibHVyIiwgbWVzc2FnZTogIueUqOaIt+WQjeS4jeiDveS4uuepuiIgfQogICAgICAgIF0sCiAgICAgICAgcGFzc3dvcmQ6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIHRyaWdnZXI6ICJibHVyIiwgbWVzc2FnZTogIuWvhueggeS4jeiDveS4uuepuiIgfQogICAgICAgIF0sCiAgICAgICAgY29kZTogW3sgcmVxdWlyZWQ6IHRydWUsIHRyaWdnZXI6ICJjaGFuZ2UiLCBtZXNzYWdlOiAi6aqM6K+B56CB5LiN6IO95Li656m6IiB9XQogICAgICB9LAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgcmVkaXJlY3Q6IHVuZGVmaW5lZAogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICAkcm91dGU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocm91dGUpIHsKICAgICAgICB0aGlzLnJlZGlyZWN0ID0gcm91dGUucXVlcnkgJiYgcm91dGUucXVlcnkucmVkaXJlY3Q7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfQogIH0sCiAgY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0Q29kZSgpOwogICAgdGhpcy5nZXRDb29raWUoKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGdldENvZGUoKSB7CiAgICAgIGdldENvZGVJbWcoKS50aGVuKHJlcyA9PiB7CiAgICAgICAgdGhpcy5jb2RlVXJsID0gImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCwiICsgcmVzLmltZzsKICAgICAgICB0aGlzLmxvZ2luRm9ybS51dWlkID0gcmVzLnV1aWQ7CiAgICAgIH0pOwogICAgfSwKICAgIGdldENvb2tpZSgpIHsKICAgICAgY29uc3QgdXNlcm5hbWUgPSBDb29raWVzLmdldCgidXNlcm5hbWUiKTsKICAgICAgY29uc3QgcGFzc3dvcmQgPSBDb29raWVzLmdldCgicGFzc3dvcmQiKTsKICAgICAgY29uc3QgcmVtZW1iZXJNZSA9IENvb2tpZXMuZ2V0KCdyZW1lbWJlck1lJykKICAgICAgdGhpcy5sb2dpbkZvcm0gPSB7CiAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lID09PSB1bmRlZmluZWQgPyB0aGlzLmxvZ2luRm9ybS51c2VybmFtZSA6IHVzZXJuYW1lLAogICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sb2dpbkZvcm0ucGFzc3dvcmQgOiBkZWNyeXB0KHBhc3N3b3JkKSwKICAgICAgICByZW1lbWJlck1lOiByZW1lbWJlck1lID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IEJvb2xlYW4ocmVtZW1iZXJNZSkKICAgICAgfTsKICAgIH0sCiAgICBoYW5kbGVMb2dpbigpIHsKICAgICAgdGhpcy4kcmVmcy5sb2dpbkZvcm0udmFsaWRhdGUodmFsaWQgPT4gewogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgIGlmICh0aGlzLmxvZ2luRm9ybS5yZW1lbWJlck1lKSB7CiAgICAgICAgICAgIENvb2tpZXMuc2V0KCJ1c2VybmFtZSIsIHRoaXMubG9naW5Gb3JtLnVzZXJuYW1lLCB7IGV4cGlyZXM6IDMwIH0pOwogICAgICAgICAgICBDb29raWVzLnNldCgicGFzc3dvcmQiLCBlbmNyeXB0KHRoaXMubG9naW5Gb3JtLnBhc3N3b3JkKSwgeyBleHBpcmVzOiAzMCB9KTsKICAgICAgICAgICAgQ29va2llcy5zZXQoJ3JlbWVtYmVyTWUnLCB0aGlzLmxvZ2luRm9ybS5yZW1lbWJlck1lLCB7IGV4cGlyZXM6IDMwIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgQ29va2llcy5yZW1vdmUoInVzZXJuYW1lIik7CiAgICAgICAgICAgIENvb2tpZXMucmVtb3ZlKCJwYXNzd29yZCIpOwogICAgICAgICAgICBDb29raWVzLnJlbW92ZSgncmVtZW1iZXJNZScpOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy4kc3RvcmUKICAgICAgICAgICAgLmRpc3BhdGNoKCJMb2dpbiIsIHRoaXMubG9naW5Gb3JtKQogICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goeyBwYXRoOiB0aGlzLnJlZGlyZWN0IHx8ICIvIiB9KTsKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLmNhdGNoKCgpID0+IHsKICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICB0aGlzLmdldENvZGUoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICB9Cn07Cg=="},{"version":3,"sources":["login.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA;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;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;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","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"]}]} |