liusuyi
2024-10-10 38f29e38fcc668171dc05c53d40a36b895c86102
1
{"remainingRequest":"D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\src\\views\\login.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\src\\views\\login.vue","mtime":1675221397130},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\babel.config.js","mtime":1675221397043},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1678842086999},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1678842088721},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1678842086999},{"path":"D:\\Workspaces\\ard\\RuoYi-Vue-master-pg\\RuoYi-Vue-master\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1678842089772}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi9Xb3Jrc3BhY2VzL2FyZC9SdW9ZaS1WdWUtbWFzdGVyLXBnL1J1b1lpLVZ1ZS1tYXN0ZXIvcnVveWktdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIikuZGVmYXVsdDsKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIik7CnZhciBfbG9naW4gPSByZXF1aXJlKCJAL2FwaS9sb2dpbiIpOwp2YXIgX2pzQ29va2llID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCJqcy1jb29raWUiKSk7CnZhciBfanNlbmNyeXB0ID0gcmVxdWlyZSgiQC91dGlscy9qc2VuY3J5cHQiKTsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KdmFyIF9kZWZhdWx0ID0gewogIG5hbWU6ICJMb2dpbiIsCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGNvZGVVcmw6ICIiLAogICAgICBsb2dpbkZvcm06IHsKICAgICAgICB1c2VybmFtZTogImFkbWluIiwKICAgICAgICBwYXNzd29yZDogImFkbWluMTIzIiwKICAgICAgICByZW1lbWJlck1lOiBmYWxzZSwKICAgICAgICBjb2RlOiAiIiwKICAgICAgICB1dWlkOiAiIgogICAgICB9LAogICAgICBsb2dpblJ1bGVzOiB7CiAgICAgICAgdXNlcm5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXmgqjnmoTotKblj7ciCiAgICAgICAgfV0sCiAgICAgICAgcGFzc3dvcmQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXmgqjnmoTlr4bnoIEiCiAgICAgICAgfV0sCiAgICAgICAgY29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgdHJpZ2dlcjogImNoYW5nZSIsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl6aqM6K+B56CBIgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICAvLyDpqozor4HnoIHlvIDlhbMKICAgICAgY2FwdGNoYUVuYWJsZWQ6IHRydWUsCiAgICAgIC8vIOazqOWGjOW8gOWFswogICAgICByZWdpc3RlcjogZmFsc2UsCiAgICAgIHJlZGlyZWN0OiB1bmRlZmluZWQKICAgIH07CiAgfSwKICB3YXRjaDogewogICAgJHJvdXRlOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIocm91dGUpIHsKICAgICAgICB0aGlzLnJlZGlyZWN0ID0gcm91dGUucXVlcnkgJiYgcm91dGUucXVlcnkucmVkaXJlY3Q7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfQogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0Q29kZSgpOwogICAgdGhpcy5nZXRDb29raWUoKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGdldENvZGU6IGZ1bmN0aW9uIGdldENvZGUoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgICgwLCBfbG9naW4uZ2V0Q29kZUltZykoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpcy5jYXB0Y2hhRW5hYmxlZCA9IHJlcy5jYXB0Y2hhRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHJlcy5jYXB0Y2hhRW5hYmxlZDsKICAgICAgICBpZiAoX3RoaXMuY2FwdGNoYUVuYWJsZWQpIHsKICAgICAgICAgIF90aGlzLmNvZGVVcmwgPSAiZGF0YTppbWFnZS9naWY7YmFzZTY0LCIgKyByZXMuaW1nOwogICAgICAgICAgX3RoaXMubG9naW5Gb3JtLnV1aWQgPSByZXMudXVpZDsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGdldENvb2tpZTogZnVuY3Rpb24gZ2V0Q29va2llKCkgewogICAgICB2YXIgdXNlcm5hbWUgPSBfanNDb29raWUuZGVmYXVsdC5nZXQoInVzZXJuYW1lIik7CiAgICAgIHZhciBwYXNzd29yZCA9IF9qc0Nvb2tpZS5kZWZhdWx0LmdldCgicGFzc3dvcmQiKTsKICAgICAgdmFyIHJlbWVtYmVyTWUgPSBfanNDb29raWUuZGVmYXVsdC5nZXQoJ3JlbWVtYmVyTWUnKTsKICAgICAgdGhpcy5sb2dpbkZvcm0gPSB7CiAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lID09PSB1bmRlZmluZWQgPyB0aGlzLmxvZ2luRm9ybS51c2VybmFtZSA6IHVzZXJuYW1lLAogICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sb2dpbkZvcm0ucGFzc3dvcmQgOiAoMCwgX2pzZW5jcnlwdC5kZWNyeXB0KShwYXNzd29yZCksCiAgICAgICAgcmVtZW1iZXJNZTogcmVtZW1iZXJNZSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBCb29sZWFuKHJlbWVtYmVyTWUpCiAgICAgIH07CiAgICB9LAogICAgaGFuZGxlTG9naW46IGZ1bmN0aW9uIGhhbmRsZUxvZ2luKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5sb2dpbkZvcm0udmFsaWRhdGUoZnVuY3Rpb24gKHZhbGlkKSB7CiAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICBfdGhpczIubG9hZGluZyA9IHRydWU7CiAgICAgICAgICBpZiAoX3RoaXMyLmxvZ2luRm9ybS5yZW1lbWJlck1lKSB7CiAgICAgICAgICAgIF9qc0Nvb2tpZS5kZWZhdWx0LnNldCgidXNlcm5hbWUiLCBfdGhpczIubG9naW5Gb3JtLnVzZXJuYW1lLCB7CiAgICAgICAgICAgICAgZXhwaXJlczogMzAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIF9qc0Nvb2tpZS5kZWZhdWx0LnNldCgicGFzc3dvcmQiLCAoMCwgX2pzZW5jcnlwdC5lbmNyeXB0KShfdGhpczIubG9naW5Gb3JtLnBhc3N3b3JkKSwgewogICAgICAgICAgICAgIGV4cGlyZXM6IDMwCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBfanNDb29raWUuZGVmYXVsdC5zZXQoJ3JlbWVtYmVyTWUnLCBfdGhpczIubG9naW5Gb3JtLnJlbWVtYmVyTWUsIHsKICAgICAgICAgICAgICBleHBpcmVzOiAzMAogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9qc0Nvb2tpZS5kZWZhdWx0LnJlbW92ZSgidXNlcm5hbWUiKTsKICAgICAgICAgICAgX2pzQ29va2llLmRlZmF1bHQucmVtb3ZlKCJwYXNzd29yZCIpOwogICAgICAgICAgICBfanNDb29raWUuZGVmYXVsdC5yZW1vdmUoJ3JlbWVtYmVyTWUnKTsKICAgICAgICAgIH0KICAgICAgICAgIF90aGlzMi4kc3RvcmUuZGlzcGF0Y2goIkxvZ2luIiwgX3RoaXMyLmxvZ2luRm9ybSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIF90aGlzMi4kcm91dGVyLnB1c2goewogICAgICAgICAgICAgIHBhdGg6IF90aGlzMi5yZWRpcmVjdCB8fCAiLyIKICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfdGhpczIubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBpZiAoX3RoaXMyLmNhcHRjaGFFbmFibGVkKSB7CiAgICAgICAgICAgICAgX3RoaXMyLmdldENvZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICB9Cn07CmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0Ow=="},{"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"]}]}