1 |
- {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\views\\login.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\views\\login.vue","mtime":1619333322843},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBnZXRDb2RlSW1nIH0gZnJvbSAiQC9hcGkvbG9naW4iOw0KaW1wb3J0IENvb2tpZXMgZnJvbSAianMtY29va2llIjsNCmltcG9ydCB7IGVuY3J5cHQsIGRlY3J5cHQgfSBmcm9tICdAL3V0aWxzL2pzZW5jcnlwdCcNCg0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAiTG9naW4iLA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBzdGF0dXNGbGFnOiAxLA0KICAgICAgY29kZVVybDogIiIsDQogICAgICBjb29raWVQYXNzd29yZDogIiIsDQogICAgICBsb2dpbkZvcm06IHsNCiAgICAgICAgdXNlcm5hbWU6ICJhZG1pbiIsDQogICAgICAgIHBhc3N3b3JkOiAiYWRtaW4xMjMiLA0KICAgICAgICByZW1lbWJlck1lOiBmYWxzZSwNCiAgICAgICAgY29kZTogIiIsDQogICAgICAgIHV1aWQ6ICIiDQogICAgICB9LA0KICAgICAgbG9naW5SdWxlczogew0KICAgICAgICB1c2VybmFtZTogWw0KICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIHRyaWdnZXI6ICJibHVyIiwgbWVzc2FnZTogIueUqOaIt+WQjeS4jeiDveS4uuepuiIgfQ0KICAgICAgICBdLA0KICAgICAgICBwYXNzd29yZDogWw0KICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIHRyaWdnZXI6ICJibHVyIiwgbWVzc2FnZTogIuWvhueggeS4jeiDveS4uuepuiIgfQ0KICAgICAgICBdLA0KICAgICAgICBjb2RlOiBbeyByZXF1aXJlZDogdHJ1ZSwgdHJpZ2dlcjogImNoYW5nZSIsIG1lc3NhZ2U6ICLpqozor4HnoIHkuI3og73kuLrnqboiIH1dDQogICAgICB9LA0KICAgICAgbG9hZGluZzogZmFsc2UsDQogICAgICByZWRpcmVjdDogdW5kZWZpbmVkDQogICAgfTsNCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICAkcm91dGU6IHsNCiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJvdXRlKSB7DQogICAgICAgIHRoaXMucmVkaXJlY3QgPSByb3V0ZS5xdWVyeSAmJiByb3V0ZS5xdWVyeS5yZWRpcmVjdDsNCiAgICAgIH0sDQogICAgICBpbW1lZGlhdGU6IHRydWUNCiAgICB9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgdGhpcy5nZXRDb2RlKCk7DQogICAgdGhpcy5nZXRDb29raWUoKTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGJ0bnMoKSB7DQogICAgICB0aGlzLm1zZ0luZm8oJ+aaguacquW8gOaUvicpDQogICAgfSwNCiAgICBnZXRDb2RlKCkgew0KICAgICAgZ2V0Q29kZUltZygpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgdGhpcy5jb2RlVXJsID0gImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCwiICsgcmVzLmltZzsNCiAgICAgICAgdGhpcy5sb2dpbkZvcm0udXVpZCA9IHJlcy51dWlkOw0KICAgICAgfSk7DQogICAgfSwNCiAgICBnZXRDb29raWUoKSB7DQogICAgICBjb25zdCB1c2VybmFtZSA9IENvb2tpZXMuZ2V0KCJ1c2VybmFtZSIpOw0KICAgICAgY29uc3QgcGFzc3dvcmQgPSBDb29raWVzLmdldCgicGFzc3dvcmQiKTsNCiAgICAgIGNvbnN0IHJlbWVtYmVyTWUgPSBDb29raWVzLmdldCgncmVtZW1iZXJNZScpDQogICAgICB0aGlzLmxvZ2luRm9ybSA9IHsNCiAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lID09PSB1bmRlZmluZWQgPyB0aGlzLmxvZ2luRm9ybS51c2VybmFtZSA6IHVzZXJuYW1lLA0KICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubG9naW5Gb3JtLnBhc3N3b3JkIDogZGVjcnlwdChwYXNzd29yZCksDQogICAgICAgIHJlbWVtYmVyTWU6IHJlbWVtYmVyTWUgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogQm9vbGVhbihyZW1lbWJlck1lKQ0KICAgICAgfTsNCiAgICB9LA0KICAgIGhhbmRsZUxvZ2luKCkgew0KICAgICAgdGhpcy4kcmVmcy5sb2dpbkZvcm0udmFsaWRhdGUodmFsaWQgPT4gew0KICAgICAgICBpZiAodmFsaWQpIHsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOw0KICAgICAgICAgIGlmICh0aGlzLmxvZ2luRm9ybS5yZW1lbWJlck1lKSB7DQogICAgICAgICAgICBDb29raWVzLnNldCgidXNlcm5hbWUiLCB0aGlzLmxvZ2luRm9ybS51c2VybmFtZSwgeyBleHBpcmVzOiAzMCB9KTsNCiAgICAgICAgICAgIENvb2tpZXMuc2V0KCJwYXNzd29yZCIsIGVuY3J5cHQodGhpcy5sb2dpbkZvcm0ucGFzc3dvcmQpLCB7IGV4cGlyZXM6IDMwIH0pOw0KICAgICAgICAgICAgQ29va2llcy5zZXQoJ3JlbWVtYmVyTWUnLCB0aGlzLmxvZ2luRm9ybS5yZW1lbWJlck1lLCB7IGV4cGlyZXM6IDMwIH0pOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBDb29raWVzLnJlbW92ZSgidXNlcm5hbWUiKTsNCiAgICAgICAgICAgIENvb2tpZXMucmVtb3ZlKCJwYXNzd29yZCIpOw0KICAgICAgICAgICAgQ29va2llcy5yZW1vdmUoJ3JlbWVtYmVyTWUnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goIkxvZ2luIiwgdGhpcy5sb2dpbkZvcm0pLnRoZW4oKCkgPT4gew0KICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goeyBwYXRoOiB0aGlzLnJlZGlyZWN0IHx8ICIvIiB9KS5jYXRjaCgoKT0+e30pOw0KICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHsNCiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5nZXRDb2RlKCk7DQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0NCiAgfQ0KfTsNCg=="},{"version":3,"sources":["login.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGA;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","file":"login.vue","sourceRoot":"src/views","sourcesContent":["<template>\r\n <div class=\"login\">\r\n <el-form ref=\"loginForm\" :model=\"loginForm\" :rules=\"loginRules\" class=\"login-form\">\r\n <img src=\"../assets/images/icon_dl_ewm@2x.png\" v-if=\"statusFlag==1\" @click=\"statusFlag=2\" alt=\"\" class=\"icon_rw\">\r\n <img src=\"../assets/images/icon_dl_madl@2x.png\" v-if=\"statusFlag==2\" alt=\"\" @click=\"statusFlag=1\" class=\"icon_mim\">\r\n <h3 class=\"title\"> 潜山市云数据中心</h3>\r\n <div v-if=\"statusFlag==2\">\r\n <div class=\"erw_img\">\r\n <img src=\"\" alt=\"\" class=\"imgs\">\r\n <p>请使用手机扫描上方二维码登录</p>\r\n </div>\r\n <div class=\"mim_p\">\r\n 密码登录\r\n </div>\r\n </div>\r\n <div v-if=\"statusFlag==1\">\r\n <el-form-item prop=\"username\">\r\n <el-input v-model=\"loginForm.username\" type=\"text\" auto-complete=\"off\" placeholder=\"账号\">\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\">\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%; margin-bottom: 42px;\">\r\n <div class=\"medTitle\">\r\n 快捷登录\r\n </div>\r\n <div class=\"med_icons\">\r\n <div class=\"med_icons_item\" @click=\"btns\">\r\n <img src=\"@/assets/images/icon_kjdl_wz@2x.png\" alt=\"\" class=\"icon\">\r\n <p>皖事通</p>\r\n </div>\r\n <div class=\"med_icons_item\" @click=\"btns\">\r\n <img src=\"@/assets/images/icon_kjdl_dd@2x.png\" alt=\"\" class=\"icon\">\r\n <p>钉钉</p>\r\n </div>\r\n <div class=\"med_icons_item\" @click=\"btns\">\r\n <img src=\"@/assets/images/icon_kjdl_wx@2x.png\" alt=\"\" class=\"icon\">\r\n <p>微信</p>\r\n </div>\r\n <div class=\"med_icons_item\" @click=\"btns\">\r\n <img src=\"@/assets/images/icon_kjdl_qywx@2x.png\" alt=\"\" class=\"icon\">\r\n <p>企业微信</p>\r\n </div>\r\n <div class=\"med_icons_item\" @click=\"btns\">\r\n <img src=\"@/assets/images/icon_kjdl_qq@2x.png\" alt=\"\" class=\"icon\">\r\n <p>QQ</p>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n <el-form-item style=\"width:100%;margin-bottom: 0;\">\r\n <el-button\r\n :loading=\"loading\"\r\n size=\"medium\"\r\n type=\"primary\"\r\n style=\"width: 100%;background-color: #2865E1;height: 45px;\"\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 <p class=\"div_p\">\r\n * 使用快捷登录,请先绑定第三方账号\r\n </p>\r\n </el-form-item>\r\n </div>\r\n </el-form>\r\n <!-- 底部 -->\r\n <div class=\"el-login-footer\">\r\n <!-- <span>Copyright © 2018-2021 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 statusFlag: 1,\r\n codeUrl: \"\",\r\n cookiePassword: \"\",\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 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 btns() {\r\n this.msgInfo('暂未开放')\r\n },\r\n getCode() {\r\n getCodeImg().then(res => {\r\n this.codeUrl = \"data:image/gif;base64,\" + res.img;\r\n this.loginForm.uuid = res.uuid;\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 this.getCode();\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: flex-end;\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.div_p{\r\n text-align: center;\r\n font-size: 11px;\r\n color: #AAAAAA;\r\n line-height: 1;\r\n}\r\n.medTitle{\r\n margin-top: 10px;\r\n text-align: center;\r\n line-height: 50px;\r\n position: relative;\r\n color: #343434;\r\n font-size: 14px;\r\n font-weight: bold;\r\n margin-bottom: 5px;\r\n &::before{\r\n content: \"\";\r\n position: absolute;\r\n width: 30px;\r\n height: 2px;\r\n border-radius: 1px;\r\n background-color: #F4AD6B;\r\n top: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n}\r\n.med_icons{\r\n display: flex;\r\n justify-content: space-between;\r\n width: 365px;\r\n position: relative;\r\n left: -23px;\r\n\r\n .med_icons_item{\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n cursor: pointer;\r\n .icon{\r\n width: 34px;\r\n height: 34px;\r\n margin-bottom: 6px;\r\n }\r\n p{\r\n text-align: center;\r\n font-size: 11px;\r\n color: #666666;\r\n line-height: 24px;\r\n margin: 0;\r\n }\r\n }\r\n}\r\n.title {\r\n margin: 0px auto 40px auto;\r\n text-align: center;\r\n color: #343434;\r\n padding: 0 15px;\r\n position: relative;\r\n font-weight: normal;\r\n font-size: 22px;\r\n &::before{\r\n position: absolute;\r\n content: '';\r\n width: 145px;\r\n height: 15px;\r\n background-image: url('../assets/images/pic_dlbt_hx@2x.png');\r\n background-size: 100% 100%;\r\n bottom: -15px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n}\r\n\r\n.login-form {\r\n border-radius: 6px;\r\n background: #ffffff;\r\n width: 441px;\r\n box-shadow: 0 0 25px #E3E3EA;\r\n margin-right: 101px;\r\n background-image: urk;\r\n padding: 58px 62px 49px;\r\n position: relative;\r\n .icon_rw{\r\n position: absolute;\r\n width: 72px;\r\n height: 72px;\r\n top: 11px;\r\n right: 11px;\r\n cursor: pointer;\r\n }\r\n .icon_mim{\r\n position: absolute;\r\n width: 57px;\r\n height: 57px;\r\n top: 11px;\r\n right: 11px;\r\n cursor: pointer;\r\n }\r\n .erw_img{\r\n margin: 69px 0 83px;\r\n text-align: center;\r\n .img{\r\n width: 240px;\r\n height: 240px;\r\n margin-bottom: 17px;\r\n }\r\n p{\r\n color: #666666;\r\n font-size: 14px;\r\n }\r\n }\r\n .mim_p{\r\n text-align: center;\r\n color: #2865E1;\r\n font-size: 15px;\r\n font-weight: bold;\r\n text-decoration: underline;\r\n }\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"]}]}
|