dd79c95ca1fe44fa300b17b850636ee6.json 21 KB

1
  1. {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js!D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!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\\babel.config.js","mtime":1696909835000},{"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:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIpLmRlZmF1bHQ7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyIpOwp2YXIgX3JlZ2VuZXJhdG9yUnVudGltZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIkQ6L3Rlc3Qvc3NpLXNhdG9rZW4vdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVnZW5lcmF0b3JSdW50aW1lLmpzIikpOwp2YXIgX2FzeW5jVG9HZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiKSk7CnZhciBfc3RvcmUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIkAvc3RvcmUiKSk7CnZhciBfc211dGlsID0gcmVxdWlyZSgiQC91dGlscy9zbXV0aWwiKTsKdmFyIF9sb2Rhc2ggPSByZXF1aXJlKCJsb2Rhc2giKTsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KdmFyIF9kZWZhdWx0ID0gewogIG5hbWU6ICdMb2dpbicsCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGxvZ2luRm9ybTogewogICAgICAgIC8vIOeUqOaIt+WQjQogICAgICAgIHVzZXJuYW1lOiAnJywKICAgICAgICAvLyDlr4bnoIEKICAgICAgICBwYXNzd29yZDogJycsCiAgICAgICAgLy8g6aqM6K+B56CBCiAgICAgICAgdmVyaWZ5Q29kZTogJycKICAgICAgfSwKICAgICAgbXVybXVyOiAnJywKICAgICAgdmVyaWZ5dXVpZDogJycsCiAgICAgIC8vIOiuoeaXtuWZqOWvueixoQogICAgICB0aW1lcjogbnVsbCwKICAgICAgLy8g5YCS5pWwNjDnp5IKICAgICAgY291bnRlcjogNjAsCiAgICAgIGNhcHRjaGFVcmw6IHRoaXMuZ2V0Q2FwdGNoYSwKICAgICAgY2FwdGNoYVRleHQ6ICcnLAogICAgICBsb2dpblJ1bGVzOiB7CiAgICAgICAgLyogIHVzZXJuYW1lOiBbeyByZXF1aXJlZDogdHJ1ZSwgdHJpZ2dlcjogJ2JsdXInLCB2YWxpZGF0b3I6IHZhbGlkYXRlVXNlcm5hbWUgfV0sDQogICAgICAgICAgcGFzc3dvcmQ6IFt7IHJlcXVpcmVkOiB0cnVlLCB0cmlnZ2VyOiAnYmx1cicsIHZhbGlkYXRvcjogdmFsaWRhdGVQYXNzd29yZCB9XSovCiAgICAgICAgdXNlcm5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXnlKjmiLflkI0nCiAgICAgICAgfV0sCiAgICAgICAgcGFzc3dvcmQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXlr4bnoIEnCiAgICAgICAgfV0sCiAgICAgICAgdmVyaWZ5Q29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpemqjOivgeeggScKICAgICAgICB9LCB7CiAgICAgICAgICBtaW46IDQsCiAgICAgICAgICBtYXg6IDQsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWlNOS9jemqjOivgeeggScsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XQogICAgICB9LAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgcmVkaXJlY3Q6IHVuZGVmaW5lZAogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICAkcm91dGU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihyb3V0ZSkgewogICAgICAgIHRoaXMucmVkaXJlY3QgPSByb3V0ZS5xdWVyeSAmJiByb3V0ZS5xdWVyeS5yZWRpcmVjdDsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgIHZhciBmOwogICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0RmluZ2VyKCk7CiAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIGYgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAvLyDmjIfnurkKICAgICAgICAgICAgX3RoaXMubXVybXVyID0gZjsKICAgICAgICAgICAgLy8g5Yqg6L296aqM6K+B56CBCiAgICAgICAgICAgIF90aGlzLmdldENhcHRjaGEoKTsKICAgICAgICAgIGNhc2UgNToKICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgfQogICAgICB9LCBfY2FsbGVlKTsKICAgIH0pKSgpOwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHt9LAogIG1ldGhvZHM6IHsKICAgIGdldEZpbmdlcjogZnVuY3Rpb24gZ2V0RmluZ2VyKCkgewogICAgICB2YXIgRmluZ2VycHJpbnQyID0gcmVxdWlyZSgnZmluZ2VycHJpbnRqczInKTsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgaWYgKHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKSB7CiAgICAgICAgICByZXF1ZXN0SWRsZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgRmluZ2VycHJpbnQyLmdldFYxOChmdW5jdGlvbiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgRmluZ2VycHJpbnQyLmdldFYxOChmdW5jdGlvbiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvLyDojrflj5bpqozor4HnoIEKICAgIGdldENhcHRjaGE6ICgwLCBfbG9kYXNoLmRlYm91bmNlKShmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICB2YXIgc2VhcmNoUGFyYW1zID0gewogICAgICAgIG11cm11cjogdGhpcy5tdXJtdXIKICAgICAgfTsKICAgICAgdGhpcy4kYXhpb3MuZ2V0KCcvZ2V0VmVyaWZ5Q29kZScsIHsKICAgICAgICBwYXJhbXM6IHNlYXJjaFBhcmFtcwogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBjb25zb2xlLmxvZyhyZXMpOwogICAgICAgIF90aGlzMi52ZXJpZnl1dWlkID0gcmVzLmRhdGEudXVpZDsKICAgICAgICBfdGhpczIuY2FwdGNoYVVybCA9ICdkYXRhOmltYWdlL2dpZjtiYXNlNjQsJyArIHJlcy5kYXRhLmltZ0Jhc2U2NDsKICAgICAgICBfdGhpczIuY2FwdGNoYVRleHQgPSByZXMuZGF0YS5jYXB0Y2hhVGV4dDsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5sb2coJ+eZu+mZhumhteW8guW4uCcgKyBlcnJvcik7CiAgICAgIH0pOwogICAgfSwgMTAwMCksCiAgICB1cGRhdGVDYXB0Y2hhOiBmdW5jdGlvbiB1cGRhdGVDYXB0Y2hhKCkgewogICAgICAvLyDmm7TmlrDpqozor4HnoIEKICAgICAgdGhpcy5nZXRDYXB0Y2hhKCk7CiAgICB9LAogICAgaGFuZGxlTG9naW46ICgwLCBfbG9kYXNoLmRlYm91bmNlKShmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmxvZ2luRm9ybS52YWxpZGF0ZShmdW5jdGlvbiAodmFsaWQpIHsKICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgIF90aGlzMy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgIHZhciB2ZXJpZnljb2RldGVtcCA9IF90aGlzMy5sb2dpbkZvcm0udmVyaWZ5Q29kZTsKICAgICAgICAgIGlmIChfdGhpczMuY2FwdGNoYVRleHQudG9Mb3dlckNhc2UoKSAhPSB2ZXJpZnljb2RldGVtcC50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5lcnJvcign6aqM6K+B56CB5b2V5YWl6ZSZ6K+vIScpOwogICAgICAgICAgICBfdGhpczMudXBkYXRlQ2FwdGNoYSgpOwogICAgICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICAvLyBjb25zdCBwYXJhbSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKQogICAgICAgICAgLy8gcGFyYW0uYXBwZW5kKCd1c2VybmFtZScsIHRoaXMubG9naW5Gb3JtLnVzZXJuYW1lKQogICAgICAgICAgLy8gcGFyYW0uYXBwZW5kKCdwYXNzd29yZCcsIHRoaXMubG9naW5Gb3JtLnBhc3N3b3JkKQogICAgICAgICAgLy8gcGFyYW0uYXBwZW5kKCdjb2RlJywgdGhpcy5sb2dpbkZvcm0udmVyaWZ5Q29kZSkKICAgICAgICAgIC8vIHBhcmFtLmFwcGVuZCgndmVyaWZ5dXVpZCcsIHRoaXMudmVyaWZ5dXVpZCkKICAgICAgICAgIC8vIHBhcmFtLmFwcGVuZCgnbXVybXVyJywgdGhpcy5tdXJtdXIpCiAgICAgICAgICB2YXIgcGFyYW0gPSB7CiAgICAgICAgICAgIHVzZXJuYW1lOiBfdGhpczMubG9naW5Gb3JtLnVzZXJuYW1lLAogICAgICAgICAgICBwYXNzd29yZDogX3RoaXMzLmxvZ2luRm9ybS5wYXNzd29yZCwKICAgICAgICAgICAgY29kZTogX3RoaXMzLmxvZ2luRm9ybS52ZXJpZnlDb2RlLAogICAgICAgICAgICB2ZXJpZnl1dWlkOiBfdGhpczMudmVyaWZ5dXVpZCwKICAgICAgICAgICAgbXVybXVyOiBfdGhpczMubXVybXVyCiAgICAgICAgICB9OwogICAgICAgICAgX3RoaXMzLiRheGlvcy5wb3N0KCcvdXNlci9sb2dpbicsIF90aGlzMy4kcXMuc3RyaW5naWZ5KHBhcmFtKSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdqeScsIHJlcy5kYXRhLnRva2VuKTsKICAgICAgICAgICAgLy8g5riF56m66Lev55Sx6I+c5Y2VCiAgICAgICAgICAgIF9zdG9yZS5kZWZhdWx0LmNvbW1pdCgnU0VUX1InLCBbXSk7CiAgICAgICAgICAgIF90aGlzMy4kcm91dGVyLnB1c2goJy9kYXNoYm9hcmQnKTsKICAgICAgICAgICAgX3RoaXMzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAvLyDnmbvlvZXlpLHotKXliLfmlrDpqozor4HnoIEKICAgICAgICAgICAgX3RoaXMzLnVwZGF0ZUNhcHRjaGEoKTsKICAgICAgICAgICAgX3RoaXMzLmxvZ2luRm9ybS52ZXJpZnlDb2RlID0gJyc7CiAgICAgICAgICAgIF90aGlzMy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIHN1Ym1pdCEhJyk7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sIDEwMDApCiAgfQp9OwpleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDs="},{"version":3,"names":["_store","_interopRequireDefault","require","_smutil","_lodash","name","data","loginForm","username","password","verifyCode","murmur","verifyuuid","timer","counter","captchaUrl","getCaptcha","captchaText","loginRules","required","trigger","message","min","max","loading","redirect","undefined","watch","$route","handler","route","query","immediate","created","_this","_asyncToGenerator2","default","_regeneratorRuntime2","mark","_callee","f","wrap","_callee$","_context","prev","next","getFinger","sent","stop","mounted","methods","Fingerprint2","Promise","resolve","window","requestIdleCallback","getV18","result","setTimeout","debounce","_this2","searchParams","$axios","get","params","then","res","console","log","uuid","imgBase64","catch","error","updateCaptcha","handleLogin","_this3","$refs","validate","valid","verifycodetemp","toLowerCase","$message","param","code","post","$qs","stringify","localStorage","setItem","token","store","commit","$router","push","exports","_default"],"sources":["src/views/login/index.vue"],"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"],"mappings":"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"}]}