| 1 | {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\src\\views\\login.vue?vue&type=script&lang=js&","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\src\\views\\login.vue","mtime":1647228900850},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBnZXRDb2RlSW1nIH0gZnJvbSAiQC9hcGkvbG9naW4iOw0KaW1wb3J0IENvb2tpZXMgZnJvbSAianMtY29va2llIjsNCmltcG9ydCB7IGVuY3J5cHQsIGRlY3J5cHQgfSBmcm9tICJAL3V0aWxzL2pzZW5jcnlwdCI7DQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogIkxvZ2luIiwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgY29kZVVybDogIiIsDQogICAgICBjb29raWVQYXNzd29yZDogIiIsDQogICAgICBsb2dpbkZvcm06IHsNCiAgICAgICAgdXNlcm5hbWU6ICJhZG1pbiIsDQogICAgICAgIHBhc3N3b3JkOiAiYWRtaW4xMjMiLA0KICAgICAgICByZW1lbWJlck1lOiBmYWxzZSwNCiAgICAgICAgY29kZTogIiIsDQogICAgICAgIHV1aWQ6ICIiLA0KICAgICAgfSwNCiAgICAgIGxvZ2luUnVsZXM6IHsNCiAgICAgICAgdXNlcm5hbWU6IFsNCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCB0cmlnZ2VyOiAiYmx1ciIsIG1lc3NhZ2U6ICLor7fovpPlhaXmgqjnmoTotKblj7ciIH0sDQogICAgICAgIF0sDQogICAgICAgIHBhc3N3b3JkOiBbDQogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgdHJpZ2dlcjogImJsdXIiLCBtZXNzYWdlOiAi6K+36L6T5YWl5oKo55qE5a+G56CBIiB9LA0KICAgICAgICBdLA0KICAgICAgICAvLyBjb2RlOiBbeyByZXF1aXJlZDogdHJ1ZSwgdHJpZ2dlcjogImNoYW5nZSIsIG1lc3NhZ2U6ICLor7fovpPlhaXpqozor4HnoIEiIH1dLA0KICAgICAgfSwNCiAgICAgIGxvYWRpbmc6IGZhbHNlLA0KICAgICAgLy8g6aqM6K+B56CB5byA5YWzDQogICAgICBjYXB0Y2hhT25PZmY6IHRydWUsDQogICAgICAvLyDms6jlhozlvIDlhbMNCiAgICAgIHJlZ2lzdGVyOiBmYWxzZSwNCiAgICAgIHJlZGlyZWN0OiB1bmRlZmluZWQsDQogICAgfTsNCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICAkcm91dGU6IHsNCiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIChyb3V0ZSkgew0KICAgICAgICB0aGlzLnJlZGlyZWN0ID0gcm91dGUucXVlcnkgJiYgcm91dGUucXVlcnkucmVkaXJlY3Q7DQogICAgICB9LA0KICAgICAgaW1tZWRpYXRlOiB0cnVlLA0KICAgIH0sDQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgdGhpcy5nZXRDb2RlKCk7DQogICAgdGhpcy5nZXRDb29raWUoKTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGdldENvZGUoKSB7DQogICAgICBnZXRDb2RlSW1nKCkudGhlbigocmVzKSA9PiB7DQogICAgICAgIHRoaXMuY2FwdGNoYU9uT2ZmID0NCiAgICAgICAgICByZXMuY2FwdGNoYU9uT2ZmID09PSB1bmRlZmluZWQgPyB0cnVlIDogcmVzLmNhcHRjaGFPbk9mZjsNCiAgICAgICAgaWYgKHRoaXMuY2FwdGNoYU9uT2ZmKSB7DQogICAgICAgICAgdGhpcy5jb2RlVXJsID0gImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCwiICsgcmVzLmltZzsNCiAgICAgICAgICAvLyB0aGlzLmxvZ2luRm9ybS51dWlkID0gcmVzLnV1aWQ7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0sDQogICAgZ2V0Q29va2llKCkgew0KICAgICAgY29uc3QgdXNlcm5hbWUgPSBDb29raWVzLmdldCgidXNlcm5hbWUiKTsNCiAgICAgIGNvbnN0IHBhc3N3b3JkID0gQ29va2llcy5nZXQoInBhc3N3b3JkIik7DQogICAgICBjb25zdCByZW1lbWJlck1lID0gQ29va2llcy5nZXQoInJlbWVtYmVyTWUiKTsNCiAgICAgIHRoaXMubG9naW5Gb3JtID0gew0KICAgICAgICB1c2VybmFtZTogdXNlcm5hbWUgPT09IHVuZGVmaW5lZCA/IHRoaXMubG9naW5Gb3JtLnVzZXJuYW1lIDogdXNlcm5hbWUsDQogICAgICAgIHBhc3N3b3JkOg0KICAgICAgICAgIHBhc3N3b3JkID09PSB1bmRlZmluZWQgPyB0aGlzLmxvZ2luRm9ybS5wYXNzd29yZCA6IGRlY3J5cHQocGFzc3dvcmQpLA0KICAgICAgICByZW1lbWJlck1lOiByZW1lbWJlck1lID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IEJvb2xlYW4ocmVtZW1iZXJNZSksDQogICAgICB9Ow0KICAgIH0sDQogICAgLy8g6K+35rGCDQogICAgaGFuZGxlTG9naW4oKSB7DQogICAgICB0aGlzLiRyZWZzLmxvZ2luRm9ybS52YWxpZGF0ZSgodmFsaWQpID0+IHsNCiAgICAgICAgaWYgKHZhbGlkKSB7DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgICAgICBpZiAodGhpcy5sb2dpbkZvcm0ucmVtZW1iZXJNZSkgew0KICAgICAgICAgICAgQ29va2llcy5zZXQoInVzZXJuYW1lIiwgdGhpcy5sb2dpbkZvcm0udXNlcm5hbWUsIHsgZXhwaXJlczogMzAgfSk7DQogICAgICAgICAgICBDb29raWVzLnNldCgicGFzc3dvcmQiLCBlbmNyeXB0KHRoaXMubG9naW5Gb3JtLnBhc3N3b3JkKSwgew0KICAgICAgICAgICAgICBleHBpcmVzOiAzMCwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgQ29va2llcy5zZXQoInJlbWVtYmVyTWUiLCB0aGlzLmxvZ2luRm9ybS5yZW1lbWJlck1lLCB7DQogICAgICAgICAgICAgIGV4cGlyZXM6IDMwLA0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIENvb2tpZXMucmVtb3ZlKCJ1c2VybmFtZSIpOw0KICAgICAgICAgICAgQ29va2llcy5yZW1vdmUoInBhc3N3b3JkIik7DQogICAgICAgICAgICAvLyBDb29raWVzLnJlbW92ZSgicmVtZW1iZXJNZSIpOw0KICAgICAgICAgIH0NCiAgICAgICAgICB0aGlzLiRzdG9yZQ0KICAgICAgICAgICAgLmRpc3BhdGNoKCJMb2dpbiIsIHRoaXMubG9naW5Gb3JtKQ0KICAgICAgICAgICAgLnRoZW4oKCkgPT4gew0KICAgICAgICAgICAgICAvLyB0aGlzLiRyb3V0ZXIucHVzaCh7IHBhdGg6IHRoaXMucmVkaXJlY3QgfHwgIi8iIH0pLmNhdGNoKCgpID0+IHt9KTsNCiAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goeyBwYXRoOiAiL3B0IiB9KS5jYXRjaCgoKSA9PiB7fSk7DQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLmNhdGNoKCgpID0+IHsNCiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgICAgICAgIGlmICh0aGlzLmNhcHRjaGFPbk9mZikgew0KICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29kZSgpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["login.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFA;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;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\r\n      ref=\"loginForm\"\r\n      :model=\"loginForm\"\r\n      :rules=\"loginRules\"\r\n      class=\"login-form\"\r\n    >\r\n      <img src=\"../images/dibu1.png\" alt=\"\" class=\"img\" />\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\r\n            slot=\"prefix\"\r\n            icon-class=\"user\"\r\n            class=\"el-input__icon input-icon\"\r\n          />\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          class=\"password\"\r\n        >\r\n          <svg-icon\r\n            slot=\"prefix\"\r\n            icon-class=\"password\"\r\n            class=\"el-input__icon input-icon\"\r\n          />\r\n        </el-input>\r\n      </el-form-item>\r\n      <el-form-item v-if=\"captchaOnOff\" v-show=\"false\">\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\r\n            slot=\"prefix\"\r\n            icon-class=\"validCode\"\r\n            class=\"el-input__icon input-icon\"\r\n          />\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-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'\"\r\n            >立即注册</router-link\r\n          >\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-2021 supervision.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      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      // 验证码开关\r\n      captchaOnOff: 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.captchaOnOff =\r\n          res.captchaOnOff === undefined ? true : res.captchaOnOff;\r\n        if (this.captchaOnOff) {\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:\r\n          password === undefined ? this.loginForm.password : decrypt(password),\r\n        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),\r\n      };\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), {\r\n              expires: 30,\r\n            });\r\n            Cookies.set(\"rememberMe\", this.loginForm.rememberMe, {\r\n              expires: 30,\r\n            });\r\n          } else {\r\n            Cookies.remove(\"username\");\r\n            Cookies.remove(\"password\");\r\n            // Cookies.remove(\"rememberMe\");\r\n          }\r\n          this.$store\r\n            .dispatch(\"Login\", this.loginForm)\r\n            .then(() => {\r\n              // this.$router.push({ path: this.redirect || \"/\" }).catch(() => {});\r\n              this.$router.push({ path: \"/pt\" }).catch(() => {});\r\n            })\r\n            .catch(() => {\r\n              this.loading = false;\r\n              if (this.captchaOnOff) {\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: url(\"../images/bg.jpg\") center no-repeat;\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: #01cfff;\r\n}\r\n\r\n.login-form {\r\n  position: relative;\r\n  border-radius: 6px;\r\n  width: 660px;\r\n  height: 551px;\r\n  padding: 203px 56px 50px 79px;\r\n  background: url(\"../images/login.png\") no-repeat 0px 11px;\r\n  background-size: cover;\r\n  .el-input {\r\n    height: 38px;\r\n    margin-left: 58px;\r\n    margin-right: 63px;\r\n    input {\r\n      height: 47px;\r\n      width: 390px;\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: 0px;\r\n  letter-spacing: 1px;\r\n}\r\n.login-code-img {\r\n  height: 38px;\r\n}\r\n.login-form .el-button--primary {\r\n  background-color: #0384ea;\r\n  font-size: 20px;\r\n  font-weight: 700;\r\n  margin-top: 34px;\r\n  margin-left: 58px;\r\n  margin-right: 63px;\r\n  width: 390px !important;\r\n}\r\n.el-input__inner {\r\n  background-color: transparent;\r\n  color: #fff;\r\n  border: 1px solid #01cfff;\r\n}\r\n.el-form-item__error {\r\n  left: 65px;\r\n}\r\n.img {\r\n  position: absolute;\r\n  bottom: -25px;\r\n  left: -1px;\r\n  width: 661px;\r\n}\r\n.login-form .el-form-item {\r\n  margin-bottom: 40px;\r\n  margin-top: 30px;\r\n}\r\n</style>\r\n"]}]}
 |