{"remainingRequest":"D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\src\\views\\login.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\src\\views\\login.vue","mtime":1675221397130},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\babel.config.js","mtime":1675221397043},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1678842086999},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1678842088721},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1678842086999},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1678842089772}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi9Xb3Jrc3BhY2VzL2FyZC9SdW9ZaS1WdWUtbWFzdGVyL3J1b3lpLXVpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIpLmRlZmF1bHQ7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyIpOwp2YXIgX2xvZ2luID0gcmVxdWlyZSgiQC9hcGkvbG9naW4iKTsKdmFyIF9qc0Nvb2tpZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgianMtY29va2llIikpOwp2YXIgX2pzZW5jcnlwdCA9IHJlcXVpcmUoIkAvdXRpbHMvanNlbmNyeXB0Iik7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCnZhciBfZGVmYXVsdCA9IHsKICBuYW1lOiAiTG9naW4iLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBjb2RlVXJsOiAiIiwKICAgICAgbG9naW5Gb3JtOiB7CiAgICAgICAgdXNlcm5hbWU6ICJhZG1pbiIsCiAgICAgICAgcGFzc3dvcmQ6ICJhZG1pbjEyMyIsCiAgICAgICAgcmVtZW1iZXJNZTogZmFsc2UsCiAgICAgICAgY29kZTogIiIsCiAgICAgICAgdXVpZDogIiIKICAgICAgfSwKICAgICAgbG9naW5SdWxlczogewogICAgICAgIHVzZXJuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5oKo55qE6LSm5Y+3IgogICAgICAgIH1dLAogICAgICAgIHBhc3N3b3JkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5oKo55qE5a+G56CBIgogICAgICAgIH1dLAogICAgICAgIGNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiLAogICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpemqjOivgeeggSIKICAgICAgICB9XQogICAgICB9LAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgLy8g6aqM6K+B56CB5byA5YWzCiAgICAgIGNhcHRjaGFFbmFibGVkOiB0cnVlLAogICAgICAvLyDms6jlhozlvIDlhbMKICAgICAgcmVnaXN0ZXI6IGZhbHNlLAogICAgICByZWRpcmVjdDogdW5kZWZpbmVkCiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgICRyb3V0ZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHJvdXRlKSB7CiAgICAgICAgdGhpcy5yZWRpcmVjdCA9IHJvdXRlLnF1ZXJ5ICYmIHJvdXRlLnF1ZXJ5LnJlZGlyZWN0OwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0KICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB0aGlzLmdldENvZGUoKTsKICAgIHRoaXMuZ2V0Q29va2llKCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBnZXRDb2RlOiBmdW5jdGlvbiBnZXRDb2RlKCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICAoMCwgX2xvZ2luLmdldENvZGVJbWcpKCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMuY2FwdGNoYUVuYWJsZWQgPSByZXMuY2FwdGNoYUVuYWJsZWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiByZXMuY2FwdGNoYUVuYWJsZWQ7CiAgICAgICAgaWYgKF90aGlzLmNhcHRjaGFFbmFibGVkKSB7CiAgICAgICAgICBfdGhpcy5jb2RlVXJsID0gImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCwiICsgcmVzLmltZzsKICAgICAgICAgIF90aGlzLmxvZ2luRm9ybS51dWlkID0gcmVzLnV1aWQ7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICBnZXRDb29raWU6IGZ1bmN0aW9uIGdldENvb2tpZSgpIHsKICAgICAgdmFyIHVzZXJuYW1lID0gX2pzQ29va2llLmRlZmF1bHQuZ2V0KCJ1c2VybmFtZSIpOwogICAgICB2YXIgcGFzc3dvcmQgPSBfanNDb29raWUuZGVmYXVsdC5nZXQoInBhc3N3b3JkIik7CiAgICAgIHZhciByZW1lbWJlck1lID0gX2pzQ29va2llLmRlZmF1bHQuZ2V0KCdyZW1lbWJlck1lJyk7CiAgICAgIHRoaXMubG9naW5Gb3JtID0gewogICAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSA9PT0gdW5kZWZpbmVkID8gdGhpcy5sb2dpbkZvcm0udXNlcm5hbWUgOiB1c2VybmFtZSwKICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubG9naW5Gb3JtLnBhc3N3b3JkIDogKDAsIF9qc2VuY3J5cHQuZGVjcnlwdCkocGFzc3dvcmQpLAogICAgICAgIHJlbWVtYmVyTWU6IHJlbWVtYmVyTWUgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogQm9vbGVhbihyZW1lbWJlck1lKQogICAgICB9OwogICAgfSwKICAgIGhhbmRsZUxvZ2luOiBmdW5jdGlvbiBoYW5kbGVMb2dpbigpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnMubG9naW5Gb3JtLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgX3RoaXMyLmxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgaWYgKF90aGlzMi5sb2dpbkZvcm0ucmVtZW1iZXJNZSkgewogICAgICAgICAgICBfanNDb29raWUuZGVmYXVsdC5zZXQoInVzZXJuYW1lIiwgX3RoaXMyLmxvZ2luRm9ybS51c2VybmFtZSwgewogICAgICAgICAgICAgIGV4cGlyZXM6IDMwCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBfanNDb29raWUuZGVmYXVsdC5zZXQoInBhc3N3b3JkIiwgKDAsIF9qc2VuY3J5cHQuZW5jcnlwdCkoX3RoaXMyLmxvZ2luRm9ybS5wYXNzd29yZCksIHsKICAgICAgICAgICAgICBleHBpcmVzOiAzMAogICAgICAgICAgICB9KTsKICAgICAgICAgICAgX2pzQ29va2llLmRlZmF1bHQuc2V0KCdyZW1lbWJlck1lJywgX3RoaXMyLmxvZ2luRm9ybS5yZW1lbWJlck1lLCB7CiAgICAgICAgICAgICAgZXhwaXJlczogMzAKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfanNDb29raWUuZGVmYXVsdC5yZW1vdmUoInVzZXJuYW1lIik7CiAgICAgICAgICAgIF9qc0Nvb2tpZS5kZWZhdWx0LnJlbW92ZSgicGFzc3dvcmQiKTsKICAgICAgICAgICAgX2pzQ29va2llLmRlZmF1bHQucmVtb3ZlKCdyZW1lbWJlck1lJyk7CiAgICAgICAgICB9CiAgICAgICAgICBfdGhpczIuJHN0b3JlLmRpc3BhdGNoKCJMb2dpbiIsIF90aGlzMi5sb2dpbkZvcm0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfdGhpczIuJHJvdXRlci5wdXNoKHsKICAgICAgICAgICAgICBwYXRoOiBfdGhpczIucmVkaXJlY3QgfHwgIi8iCiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3RoaXMyLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKF90aGlzMi5jYXB0Y2hhRW5hYmxlZCkgewogICAgICAgICAgICAgIF90aGlzMi5nZXRDb2RlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfQp9OwpleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDs="},{"version":3,"mappings":";;;;;;;;AAgEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAEA;EACAA;EACAC;IACA;MACAC;MACAC;QACAC;QACAC;QACAC;QACAC;QACAC;MACA;MACAC;QACAL,WACA;UAAAM;UAAAC;UAAAC;QAAA,EACA;QACAP,WACA;UAAAK;UAAAC;UAAAC;QAAA,EACA;QACAL;UAAAG;UAAAC;UAAAC;QAAA;MACA;MACAC;MACA;MACAC;MACA;MACAC;MACAC;IACA;EACA;EACAC;IACAC;MACAC;QACA;MACA;MACAC;IACA;EACA;EACAC;IACA;IACA;EACA;EACAC;IACAC;MAAA;MACA;QACA;QACA;UACA;UACA;QACA;MACA;IACA;IACAC;MACA;MACA;MACA;MACA;QACApB;QACAC;QACAC;MACA;IACA;IACAmB;MAAA;MACA;QACA;UACA;UACA;YACAC;cAAAC;YAAA;YACAD;cAAAC;YAAA;YACAD;cAAAC;YAAA;UACA;YACAD;YACAA;YACAA;UACA;UACA;YACA;cAAAE;YAAA;UACA;YACA;YACA;cACA;YACA;UACA;QACA;MACA;IACA;EACA;AACA;AAAA","names":["name","data","codeUrl","loginForm","username","password","rememberMe","code","uuid","loginRules","required","trigger","message","loading","captchaEnabled","register","redirect","watch","$route","handler","immediate","created","methods","getCode","getCookie","handleLogin","Cookies","expires","path"],"sourceRoot":"src/views","sources":["login.vue"],"sourcesContent":["<template>\r\n <div class=\"login\">\r\n <el-form ref=\"loginForm\" :model=\"loginForm\" :rules=\"loginRules\" class=\"login-form\">\r\n <h3 class=\"title\">若依后台管理系统</h3>\r\n <el-form-item prop=\"username\">\r\n <el-input\r\n v-model=\"loginForm.username\"\r\n type=\"text\"\r\n auto-complete=\"off\"\r\n placeholder=\"账号\"\r\n >\r\n <svg-icon slot=\"prefix\" icon-class=\"user\" class=\"el-input__icon input-icon\" />\r\n </el-input>\r\n </el-form-item>\r\n <el-form-item prop=\"password\">\r\n <el-input\r\n v-model=\"loginForm.password\"\r\n type=\"password\"\r\n auto-complete=\"off\"\r\n placeholder=\"密码\"\r\n @keyup.enter.native=\"handleLogin\"\r\n >\r\n <svg-icon slot=\"prefix\" icon-class=\"password\" class=\"el-input__icon input-icon\" />\r\n </el-input>\r\n </el-form-item>\r\n <el-form-item prop=\"code\" v-if=\"captchaEnabled\">\r\n <el-input\r\n v-model=\"loginForm.code\"\r\n auto-complete=\"off\"\r\n placeholder=\"验证码\"\r\n style=\"width: 63%\"\r\n @keyup.enter.native=\"handleLogin\"\r\n >\r\n <svg-icon slot=\"prefix\" icon-class=\"validCode\" class=\"el-input__icon input-icon\" />\r\n </el-input>\r\n <div class=\"login-code\">\r\n <img :src=\"codeUrl\" @click=\"getCode\" class=\"login-code-img\"/>\r\n </div>\r\n </el-form-item>\r\n <el-checkbox v-model=\"loginForm.rememberMe\" style=\"margin:0px 0px 25px 0px;\">记住密码</el-checkbox>\r\n <el-form-item style=\"width:100%;\">\r\n <el-button\r\n :loading=\"loading\"\r\n size=\"medium\"\r\n type=\"primary\"\r\n style=\"width:100%;\"\r\n @click.native.prevent=\"handleLogin\"\r\n >\r\n <span v-if=\"!loading\">登 录</span>\r\n <span v-else>登 录 中...</span>\r\n </el-button>\r\n <div style=\"float: right;\" v-if=\"register\">\r\n <router-link class=\"link-type\" :to=\"'/register'\">立即注册</router-link>\r\n </div>\r\n </el-form-item>\r\n </el-form>\r\n <!-- 底部 -->\r\n <div class=\"el-login-footer\">\r\n <span>Copyright © 2018-2022 ruoyi.vip All Rights Reserved.</span>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { getCodeImg } from \"@/api/login\";\r\nimport Cookies from \"js-cookie\";\r\nimport { encrypt, decrypt } from '@/utils/jsencrypt'\r\n\r\nexport default {\r\n name: \"Login\",\r\n data() {\r\n return {\r\n codeUrl: \"\",\r\n loginForm: {\r\n username: \"admin\",\r\n password: \"admin123\",\r\n rememberMe: false,\r\n code: \"\",\r\n uuid: \"\"\r\n },\r\n loginRules: {\r\n username: [\r\n { required: true, trigger: \"blur\", message: \"请输入您的账号\" }\r\n ],\r\n password: [\r\n { required: true, trigger: \"blur\", message: \"请输入您的密码\" }\r\n ],\r\n code: [{ required: true, trigger: \"change\", message: \"请输入验证码\" }]\r\n },\r\n loading: false,\r\n // 验证码开关\r\n captchaEnabled: true,\r\n // 注册开关\r\n register: false,\r\n redirect: undefined\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler: function(route) {\r\n this.redirect = route.query && route.query.redirect;\r\n },\r\n immediate: true\r\n }\r\n },\r\n created() {\r\n this.getCode();\r\n this.getCookie();\r\n },\r\n methods: {\r\n getCode() {\r\n getCodeImg().then(res => {\r\n this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;\r\n if (this.captchaEnabled) {\r\n this.codeUrl = \"data:image/gif;base64,\" + res.img;\r\n this.loginForm.uuid = res.uuid;\r\n }\r\n });\r\n },\r\n getCookie() {\r\n const username = Cookies.get(\"username\");\r\n const password = Cookies.get(\"password\");\r\n const rememberMe = Cookies.get('rememberMe')\r\n this.loginForm = {\r\n username: username === undefined ? this.loginForm.username : username,\r\n password: password === undefined ? this.loginForm.password : decrypt(password),\r\n rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)\r\n };\r\n },\r\n handleLogin() {\r\n this.$refs.loginForm.validate(valid => {\r\n if (valid) {\r\n this.loading = true;\r\n if (this.loginForm.rememberMe) {\r\n Cookies.set(\"username\", this.loginForm.username, { expires: 30 });\r\n Cookies.set(\"password\", encrypt(this.loginForm.password), { expires: 30 });\r\n Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });\r\n } else {\r\n Cookies.remove(\"username\");\r\n Cookies.remove(\"password\");\r\n Cookies.remove('rememberMe');\r\n }\r\n this.$store.dispatch(\"Login\", this.loginForm).then(() => {\r\n this.$router.push({ path: this.redirect || \"/\" }).catch(()=>{});\r\n }).catch(() => {\r\n this.loading = false;\r\n if (this.captchaEnabled) {\r\n this.getCode();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style rel=\"stylesheet/scss\" lang=\"scss\">\r\n.login {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n background-image: url(\"../assets/images/login-background.jpg\");\r\n background-size: cover;\r\n}\r\n.title {\r\n margin: 0px auto 30px auto;\r\n text-align: center;\r\n color: #707070;\r\n}\r\n\r\n.login-form {\r\n border-radius: 6px;\r\n background: #ffffff;\r\n width: 400px;\r\n padding: 25px 25px 5px 25px;\r\n .el-input {\r\n height: 38px;\r\n input {\r\n height: 38px;\r\n }\r\n }\r\n .input-icon {\r\n height: 39px;\r\n width: 14px;\r\n margin-left: 2px;\r\n }\r\n}\r\n.login-tip {\r\n font-size: 13px;\r\n text-align: center;\r\n color: #bfbfbf;\r\n}\r\n.login-code {\r\n width: 33%;\r\n height: 38px;\r\n float: right;\r\n img {\r\n cursor: pointer;\r\n vertical-align: middle;\r\n }\r\n}\r\n.el-login-footer {\r\n height: 40px;\r\n line-height: 40px;\r\n position: fixed;\r\n bottom: 0;\r\n width: 100%;\r\n text-align: center;\r\n color: #fff;\r\n font-family: Arial;\r\n font-size: 12px;\r\n letter-spacing: 1px;\r\n}\r\n.login-code-img {\r\n height: 38px;\r\n}\r\n</style>\r\n"]}]}
|