b1cbfa7dda231d1a180bdb8d654fe06f.json 16 KB

1
  1. {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\test\\ssi-satoken\\ui\\src\\views\\login\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\test\\ssi-satoken\\ui\\src\\views\\login\\index.vue","mtime":1697441561764},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1697005523218},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1697005524089}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQoNCmltcG9ydCBzdG9yZSBmcm9tICJAL3N0b3JlIjsNCmltcG9ydCB7ZG9FbmNyeXB0LCBkb1NpZ259IGZyb20gIkAvdXRpbHMvc211dGlsIjsNCmltcG9ydCB7ZGVib3VuY2V9IGZyb20gImxvZGFzaCI7DQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ0xvZ2luJywNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgbG9naW5Gb3JtOiB7DQogICAgICAgIC8vIOeUqOaIt+WQjQ0KICAgICAgICB1c2VybmFtZTogJycsDQogICAgICAgIC8vIOWvhueggQ0KICAgICAgICBwYXNzd29yZDogJycsDQogICAgICAgIC8vIOmqjOivgeeggQ0KICAgICAgICB2ZXJpZnlDb2RlOiAnJw0KICAgICAgfSwNCiAgICAgIG11cm11cjogJycsDQogICAgICB2ZXJpZnl1dWlkOiAnJywNCiAgICAgIC8vIOiuoeaXtuWZqOWvueixoQ0KICAgICAgdGltZXI6IG51bGwsDQogICAgICAvLyDlgJLmlbA2MOenkg0KICAgICAgY291bnRlcjogNjAsDQogICAgICBjYXB0Y2hhVXJsOiB0aGlzLmdldENhcHRjaGEsDQogICAgICBjYXB0Y2hhVGV4dDogJycsDQogICAgICBsb2dpblJ1bGVzOiB7DQogICAgICAgIC8qICB1c2VybmFtZTogW3sgcmVxdWlyZWQ6IHRydWUsIHRyaWdnZXI6ICdibHVyJywgdmFsaWRhdG9yOiB2YWxpZGF0ZVVzZXJuYW1lIH1dLA0KICAgICAgICAgIHBhc3N3b3JkOiBbeyByZXF1aXJlZDogdHJ1ZSwgdHJpZ2dlcjogJ2JsdXInLCB2YWxpZGF0b3I6IHZhbGlkYXRlUGFzc3dvcmQgfV0qLw0KICAgICAgICB1c2VybmFtZTogW3tyZXF1aXJlZDogdHJ1ZSwgdHJpZ2dlcjogJ2JsdXInLCBtZXNzYWdlOiAn6K+36L6T5YWl55So5oi35ZCNJ31dLA0KICAgICAgICBwYXNzd29yZDogW3tyZXF1aXJlZDogdHJ1ZSwgdHJpZ2dlcjogJ2JsdXInLCBtZXNzYWdlOiAn6K+36L6T5YWl5a+G56CBJ31dLA0KICAgICAgICB2ZXJpZnlDb2RlOiBbe3JlcXVpcmVkOiB0cnVlLCB0cmlnZ2VyOiAnYmx1cicsIG1lc3NhZ2U6ICfor7fovpPlhaXpqozor4HnoIEnfSwgew0KICAgICAgICAgIG1pbjogNCwNCiAgICAgICAgICBtYXg6IDQsDQogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpTTkvY3pqozor4HnoIEnLA0KICAgICAgICAgIHRyaWdnZXI6ICdibHVyJw0KICAgICAgICB9XQ0KICAgICAgfSwNCiAgICAgIGxvYWRpbmc6IGZhbHNlLA0KICAgICAgcmVkaXJlY3Q6IHVuZGVmaW5lZA0KICAgIH0NCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICAkcm91dGU6IHsNCiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIChyb3V0ZSkgew0KICAgICAgICB0aGlzLnJlZGlyZWN0ID0gcm91dGUucXVlcnkgJiYgcm91dGUucXVlcnkucmVkaXJlY3QNCiAgICAgIH0sDQogICAgICBpbW1lZGlhdGU6IHRydWUNCiAgICB9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgKGFzeW5jICgpID0+IHsNCiAgICAgIGNvbnN0IGYgPSBhd2FpdCB0aGlzLmdldEZpbmdlcigpDQogICAgICAvLyDmjIfnurkNCiAgICAgIHRoaXMubXVybXVyID0gZg0KICAgICAgLy8g5Yqg6L296aqM6K+B56CBDQogICAgICB0aGlzLmdldENhcHRjaGEoKQ0KICAgIH0pKCk7DQogIH0sDQogIG1vdW50ZWQoKSB7DQoNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGdldEZpbmdlcigpIHsNCiAgICAgIGNvbnN0IEZpbmdlcnByaW50MiA9IHJlcXVpcmUoJ2ZpbmdlcnByaW50anMyJykNCiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsNCiAgICAgICAgaWYgKHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKSB7DQogICAgICAgICAgcmVxdWVzdElkbGVDYWxsYmFjayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBGaW5nZXJwcmludDIuZ2V0VjE4KGZ1bmN0aW9uIChyZXN1bHQpIHsNCiAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0pDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBGaW5nZXJwcmludDIuZ2V0VjE4KGZ1bmN0aW9uIChyZXN1bHQpIHsNCiAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0sIDUwMCkNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KICAgIC8vIOiOt+WPlumqjOivgeeggQ0KICAgIGdldENhcHRjaGE6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciBzZWFyY2hQYXJhbXMgPSB7DQogICAgICAgIG11cm11cjogdGhpcy5tdXJtdXINCiAgICAgIH0NCiAgICAgIHRoaXMuJGF4aW9zLmdldCgnL2dldFZlcmlmeUNvZGUnLA0KICAgICAgICB7cGFyYW1zOiBzZWFyY2hQYXJhbXN9KS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpDQogICAgICAgIHRoaXMudmVyaWZ5dXVpZCA9IHJlcy5kYXRhLnV1aWQNCiAgICAgICAgdGhpcy5jYXB0Y2hhVXJsID0gJ2RhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCwnICsgcmVzLmRhdGEuaW1nQmFzZTY0Ow0KICAgICAgICB0aGlzLmNhcHRjaGFUZXh0ID0gcmVzLmRhdGEuY2FwdGNoYVRleHQNCiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICBjb25zb2xlLmxvZygn55m76ZmG6aG15byC5bi4JytlcnJvcikNCiAgICAgIH0pDQogICAgfSwgMTAwMCksDQogICAgdXBkYXRlQ2FwdGNoYSgpIHsNCiAgICAgIC8vIOabtOaWsOmqjOivgeeggQ0KICAgICAgdGhpcy5nZXRDYXB0Y2hhKCkNCiAgICB9LA0KICAgIGhhbmRsZUxvZ2luOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLiRyZWZzLmxvZ2luRm9ybS52YWxpZGF0ZSh2YWxpZCA9PiB7DQogICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWUNCiAgICAgICAgICBsZXQgdmVyaWZ5Y29kZXRlbXAgPSB0aGlzLmxvZ2luRm9ybS52ZXJpZnlDb2RlDQogICAgICAgICAgaWYgKHRoaXMuY2FwdGNoYVRleHQudG9Mb3dlckNhc2UoKSAhPSB2ZXJpZnljb2RldGVtcC50b0xvd2VyQ2FzZSgpKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfpqozor4HnoIHlvZXlhaXplJnor68hJykNCiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FwdGNoYSgpDQogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgfQ0KICAgICAgICAgIC8vIGNvbnN0IHBhcmFtID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpDQogICAgICAgICAgLy8gcGFyYW0uYXBwZW5kKCd1c2VybmFtZScsIHRoaXMubG9naW5Gb3JtLnVzZXJuYW1lKQ0KICAgICAgICAgIC8vIHBhcmFtLmFwcGVuZCgncGFzc3dvcmQnLCB0aGlzLmxvZ2luRm9ybS5wYXNzd29yZCkNCiAgICAgICAgICAvLyBwYXJhbS5hcHBlbmQoJ2NvZGUnLCB0aGlzLmxvZ2luRm9ybS52ZXJpZnlDb2RlKQ0KICAgICAgICAgIC8vIHBhcmFtLmFwcGVuZCgndmVyaWZ5dXVpZCcsIHRoaXMudmVyaWZ5dXVpZCkNCiAgICAgICAgICAvLyBwYXJhbS5hcHBlbmQoJ211cm11cicsIHRoaXMubXVybXVyKQ0KICAgICAgICAgIGNvbnN0IHBhcmFtID0gew0KICAgICAgICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5Gb3JtLnVzZXJuYW1lLA0KICAgICAgICAgICAgcGFzc3dvcmQ6IHRoaXMubG9naW5Gb3JtLnBhc3N3b3JkLA0KICAgICAgICAgICAgY29kZTogdGhpcy5sb2dpbkZvcm0udmVyaWZ5Q29kZSwNCiAgICAgICAgICAgIHZlcmlmeXV1aWQ6IHRoaXMudmVyaWZ5dXVpZCwNCiAgICAgICAgICAgIG11cm11cjogdGhpcy5tdXJtdXINCiAgICAgICAgICB9DQogICAgICAgICAgdGhpcy4kYXhpb3MucG9zdCgnL3VzZXIvbG9naW4nLCB0aGlzLiRxcy5zdHJpbmdpZnkocGFyYW0pKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdqeScsIHJlcy5kYXRhLnRva2VuKQ0KICAgICAgICAgICAgLy8g5riF56m66Lev55Sx6I+c5Y2VDQogICAgICAgICAgICBzdG9yZS5jb21taXQoJ1NFVF9SJywgW10pDQogICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCgnL2Rhc2hib2FyZCcpDQogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICAgICAgLy8g55m75b2V5aSx6LSl5Yi35paw6aqM6K+B56CBDQogICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcHRjaGEoKQ0KICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0udmVyaWZ5Q29kZSA9ICcnDQogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgIH0pDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIHN1Ym1pdCEhJykNCiAgICAgICAgICByZXR1cm4gZmFsc2UNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LCAxMDAwKQ0KICB9DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA;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;;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":"index.vue","sourceRoot":"src/views/login","sourcesContent":["<template>\r\n <div class=\"login\">\r\n <el-form ref=\"loginForm\" :model=\"loginForm\" :rules=\"loginRules\" class=\"login-form\">\r\n <el-form-item prop=\"username\" label-width=\"80px\" label=\"账号\">\r\n <el-input\r\n v-model=\"loginForm.username\"\r\n type=\"text\"\r\n name=\"username\"\r\n auto-complete=\"off\"\r\n tabindex=\"1\"\r\n maxlength=\"20\"\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\" label-width=\"80px\" label=\"密码\">\r\n <el-input\r\n v-model=\"loginForm.password\"\r\n type=\"password\"\r\n auto-complete=\"off\"\r\n tabindex=\"2\"\r\n maxlength=\"20\"\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\r\n <el-form-item prop=\"verifyCode\" label-width=\"80px\" label=\"验证码\">\r\n <el-input\r\n v-model=\"loginForm.verifyCode\"\r\n auto-complete=\"off\"\r\n style=\"width: 58%\"\r\n tabindex=\"3\"\r\n maxlength=\"4\"\r\n >\r\n <svg-icon slot=\"prefix\" icon-class=\"verifyCode\" class=\"el-input__icon input-icon\"/>\r\n </el-input>\r\n <div class=\"login-code\">\r\n <img :src=\"captchaUrl\" @click=\"updateCaptcha\" class=\"login-code-img\"/>\r\n </div>\r\n </el-form-item>\r\n\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 </el-form-item>\r\n </el-form>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport store from \"@/store\";\r\nimport {doEncrypt, doSign} from \"@/utils/smutil\";\r\nimport {debounce} from \"lodash\";\r\n\r\nexport default {\r\n name: 'Login',\r\n data() {\r\n return {\r\n loginForm: {\r\n // 用户名\r\n username: '',\r\n // 密码\r\n password: '',\r\n // 验证码\r\n verifyCode: ''\r\n },\r\n murmur: '',\r\n verifyuuid: '',\r\n // 计时器对象\r\n timer: null,\r\n // 倒数60秒\r\n counter: 60,\r\n captchaUrl: this.getCaptcha,\r\n captchaText: '',\r\n loginRules: {\r\n /* username: [{ required: true, trigger: 'blur', validator: validateUsername }],\r\n password: [{ required: true, trigger: 'blur', validator: validatePassword }]*/\r\n username: [{required: true, trigger: 'blur', message: '请输入用户名'}],\r\n password: [{required: true, trigger: 'blur', message: '请输入密码'}],\r\n verifyCode: [{required: true, trigger: 'blur', message: '请输入验证码'}, {\r\n min: 4,\r\n max: 4,\r\n message: '请输入4位验证码',\r\n trigger: 'blur'\r\n }]\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 (async () => {\r\n const f = await this.getFinger()\r\n // 指纹\r\n this.murmur = f\r\n // 加载验证码\r\n this.getCaptcha()\r\n })();\r\n },\r\n mounted() {\r\n\r\n },\r\n methods: {\r\n getFinger() {\r\n const Fingerprint2 = require('fingerprintjs2')\r\n return new Promise(resolve => {\r\n if (window.requestIdleCallback) {\r\n requestIdleCallback(function () {\r\n Fingerprint2.getV18(function (result) {\r\n resolve(result)\r\n })\r\n })\r\n } else {\r\n setTimeout(function () {\r\n Fingerprint2.getV18(function (result) {\r\n resolve(result)\r\n })\r\n }, 500)\r\n }\r\n })\r\n },\r\n // 获取验证码\r\n getCaptcha: debounce(function () {\r\n var searchParams = {\r\n murmur: this.murmur\r\n }\r\n this.$axios.get('/getVerifyCode',\r\n {params: searchParams}).then((res) => {\r\n console.log(res)\r\n this.verifyuuid = res.data.uuid\r\n this.captchaUrl = 'data:image/gif;base64,' + res.data.imgBase64;\r\n this.captchaText = res.data.captchaText\r\n }).catch((error) => {\r\n console.log('登陆页异常'+error)\r\n })\r\n }, 1000),\r\n updateCaptcha() {\r\n // 更新验证码\r\n this.getCaptcha()\r\n },\r\n handleLogin: debounce(function () {\r\n this.$refs.loginForm.validate(valid => {\r\n if (valid) {\r\n this.loading = true\r\n let verifycodetemp = this.loginForm.verifyCode\r\n if (this.captchaText.toLowerCase() != verifycodetemp.toLowerCase()) {\r\n this.$message.error('验证码录入错误!')\r\n this.updateCaptcha()\r\n this.loading = false\r\n return\r\n }\r\n // const param = new URLSearchParams()\r\n // param.append('username', this.loginForm.username)\r\n // param.append('password', this.loginForm.password)\r\n // param.append('code', this.loginForm.verifyCode)\r\n // param.append('verifyuuid', this.verifyuuid)\r\n // param.append('murmur', this.murmur)\r\n const param = {\r\n username: this.loginForm.username,\r\n password: this.loginForm.password,\r\n code: this.loginForm.verifyCode,\r\n verifyuuid: this.verifyuuid,\r\n murmur: this.murmur\r\n }\r\n this.$axios.post('/user/login', this.$qs.stringify(param)).then((res) => {\r\n localStorage.setItem('jy', res.data.token)\r\n // 清空路由菜单\r\n store.commit('SET_R', [])\r\n this.$router.push('/dashboard')\r\n this.loading = false\r\n }).catch((error) => {\r\n // 登录失败刷新验证码\r\n this.updateCaptcha()\r\n this.loginForm.verifyCode = ''\r\n this.loading = false\r\n })\r\n } else {\r\n console.log('error submit!!')\r\n return false\r\n }\r\n })\r\n }, 1000)\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/login.jpg\");\r\n background-size: cover;\r\n\r\n\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 10;\r\n zoom: 1;\r\n\r\n background-position: bottom;\r\n\r\n}\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\r\n .el-input {\r\n height: 38px;\r\n\r\n input {\r\n height: 38px;\r\n }\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\r\n.login-tip {\r\n font-size: 13px;\r\n text-align: center;\r\n color: #bfbfbf;\r\n}\r\n\r\n.login-code {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 33%;\r\n height: 38px;\r\n float: right;\r\n\r\n img {\r\n cursor: pointer;\r\n vertical-align: middle;\r\n }\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\r\n.login-code-img {\r\n height: 38px;\r\n width: 105px;\r\n}\r\n\r\n.mail-box {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 36%;\r\n height: 38px;\r\n float: right;\r\n\r\n img {\r\n cursor: pointer;\r\n vertical-align: middle;\r\n }\r\n}\r\n\r\n</style>\r\n\r\n<!--<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>-->\r\n<!--.no-autofill-pwd{-->\r\n<!-- text-security:disc!important;-->\r\n<!-- -webkit-text-security:disc!important;-->\r\n\r\n<!--}-->\r\n<!--</style>-->\r\n\r\n"]}]}