(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[12],{ /***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=script&lang=js&": /*!*********************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=script&lang=js& ***! \*********************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _login = __webpack_require__(/*! @/api/login */ \"./src/api/login.js\");\n\nvar _tenant = __webpack_require__(/*! @/api/system/tenant */ \"./src/api/system/tenant.js\");\n\nvar _jsCookie = _interopRequireDefault(__webpack_require__(/*! js-cookie */ \"./node_modules/js-cookie/dist/js.cookie.js\"));\n\nvar _jsencrypt = __webpack_require__(/*! @/utils/jsencrypt */ \"./src/utils/jsencrypt.js\");\n\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\n\nvar _ruoyi = __webpack_require__(/*! @/utils/ruoyi */ \"./src/utils/ruoyi.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: \"Login\",\n data: function data() {\n return {\n codeUrl: \"\",\n captchaEnable: true,\n tenantEnable: true,\n loginForm: {\n username: \"admin\",\n password: \"admin123\",\n rememberMe: false,\n code: \"\",\n uuid: \"\",\n tenantName: \"芋道源码\"\n },\n loginRules: {\n username: [{\n required: true,\n trigger: \"blur\",\n message: \"用户名不能为空\"\n }],\n password: [{\n required: true,\n trigger: \"blur\",\n message: \"密码不能为空\"\n }],\n code: [{\n required: true,\n trigger: \"change\",\n message: \"验证码不能为空\"\n }],\n tenantName: [{\n required: true,\n trigger: \"blur\",\n message: \"租户不能为空\"\n }, {\n validator: function validator(rule, value, callback) {\n // debugger\n (0, _tenant.getTenantIdByName)(value).then(function (res) {\n var tenantId = res.data;\n\n if (tenantId >= 0) {\n // 设置租户\n _jsCookie.default.set(\"tenantId\", tenantId);\n\n callback();\n } else {\n callback('租户不存在');\n }\n });\n },\n trigger: 'blur'\n }]\n },\n loading: false,\n redirect: undefined,\n // 枚举\n SysUserSocialTypeEnum: _constants.SystemUserSocialTypeEnum\n };\n },\n // watch: {\n // $route: {\n // handler: function(route) {\n // this.redirect = route.query && route.query.redirect;\n // },\n // immediate: true\n // }\n // },\n created: function created() {\n // 租户开关\n this.tenantEnable = (0, _ruoyi.getTenantEnable)(); // 重定向地址\n\n this.redirect = this.$route.query.redirect;\n this.getCode();\n this.getCookie();\n },\n methods: {\n getCode: function getCode() {\n var _this = this;\n\n // 只有开启的状态,才加载验证码。默认开启\n if (!this.captchaEnable) {\n return;\n } // 请求远程,获得验证码\n\n\n (0, _login.getCodeImg)().then(function (res) {\n res = res.data;\n _this.captchaEnable = res.enable;\n\n if (_this.captchaEnable) {\n _this.codeUrl = \"data:image/gif;base64,\" + res.img;\n _this.loginForm.uuid = res.uuid;\n }\n });\n },\n getCookie: function getCookie() {\n var username = _jsCookie.default.get(\"username\");\n\n var password = _jsCookie.default.get(\"password\");\n\n var rememberMe = _jsCookie.default.get('rememberMe');\n\n var tenantName = _jsCookie.default.get('tenantName');\n\n this.loginForm = {\n username: username === undefined ? this.loginForm.username : username,\n password: password === undefined ? this.loginForm.password : (0, _jsencrypt.decrypt)(password),\n rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),\n tenantName: tenantName === undefined ? this.loginForm.tenantName : tenantName\n };\n },\n handleLogin: function handleLogin() {\n var _this2 = this;\n\n this.$refs.loginForm.validate(function (valid) {\n if (valid) {\n _this2.loading = true; // 设置 Cookie\n\n if (_this2.loginForm.rememberMe) {\n _jsCookie.default.set(\"username\", _this2.loginForm.username, {\n expires: 30\n });\n\n _jsCookie.default.set(\"password\", (0, _jsencrypt.encrypt)(_this2.loginForm.password), {\n expires: 30\n });\n\n _jsCookie.default.set('rememberMe', _this2.loginForm.rememberMe, {\n expires: 30\n });\n\n _jsCookie.default.set('tenantName', _this2.loginForm.tenantName, {\n expires: 30\n });\n } else {\n _jsCookie.default.remove(\"username\");\n\n _jsCookie.default.remove(\"password\");\n\n _jsCookie.default.remove('rememberMe');\n\n _jsCookie.default.remove('tenantName');\n } // 发起登陆\n\n\n _this2.$store.dispatch(\"Login\", _this2.loginForm).then(function () {\n _this2.$router.push({\n path: _this2.redirect || \"/\"\n }).catch(function () {});\n }).catch(function () {\n _this2.loading = false;\n\n _this2.getCode();\n });\n }\n });\n },\n doSocialLogin: function doSocialLogin(socialTypeEnum) {\n // console.log(\"开始Oauth登录...%o\", socialTypeEnum.code);\n // 设置登录中\n this.loading = true; // 计算 redirectUri\n\n var redirectUri = location.origin + '/social-login?type=' + socialTypeEnum.type + '&redirect=' + (this.redirect || \"/\"); // 重定向不能丢\n // const redirectUri = 'http://127.0.0.1:48080/api/gitee/callback';\n // const redirectUri = 'http://127.0.0.1:48080/api/dingtalk/callback';\n // 进行跳转\n\n (0, _login.socialAuthRedirect)(socialTypeEnum.type, encodeURIComponent(redirectUri)).then(function (res) {\n // console.log(res.url);\n window.location.href = res.data;\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"8e17e5e2-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=template&id=7589b93f&": /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8e17e5e2-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=template&id=7589b93f& ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"login\" },\n [\n _c(\n \"el-form\",\n {\n ref: \"loginForm\",\n staticClass: \"login-form\",\n attrs: { model: _vm.loginForm, rules: _vm.loginRules },\n },\n [\n _c(\"h3\", { staticClass: \"title\" }, [_vm._v(\"芋道后台管理系统\")]),\n _vm.tenantEnable\n ? _c(\n \"el-form-item\",\n { attrs: { prop: \"tenantName\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"租户\",\n },\n model: {\n value: _vm.loginForm.tenantName,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"tenantName\", $$v)\n },\n expression: \"loginForm.tenantName\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"tree\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-form-item\",\n { attrs: { prop: \"username\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"账号\",\n },\n model: {\n value: _vm.loginForm.username,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"username\", $$v)\n },\n expression: \"loginForm.username\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"user\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { prop: \"password\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"password\",\n \"auto-complete\": \"off\",\n placeholder: \"密码\",\n },\n nativeOn: {\n keyup: function ($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.handleLogin($event)\n },\n },\n model: {\n value: _vm.loginForm.password,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"password\", $$v)\n },\n expression: \"loginForm.password\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"password\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm.captchaEnable\n ? _c(\n \"el-form-item\",\n { attrs: { prop: \"code\" } },\n [\n _c(\n \"el-input\",\n {\n staticStyle: { width: \"63%\" },\n attrs: { \"auto-complete\": \"off\", placeholder: \"验证码\" },\n nativeOn: {\n keyup: function ($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.handleLogin($event)\n },\n },\n model: {\n value: _vm.loginForm.code,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"code\", $$v)\n },\n expression: \"loginForm.code\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"validCode\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"login-code\" }, [\n _c(\"img\", {\n staticClass: \"login-code-img\",\n attrs: { src: _vm.codeUrl },\n on: { click: _vm.getCode },\n }),\n ]),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-checkbox\",\n {\n staticStyle: { margin: \"0px 0px 25px 0px\" },\n model: {\n value: _vm.loginForm.rememberMe,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"rememberMe\", $$v)\n },\n expression: \"loginForm.rememberMe\",\n },\n },\n [_vm._v(\"记住密码\")]\n ),\n _c(\n \"el-form-item\",\n { staticStyle: { width: \"100%\" } },\n [\n _c(\n \"el-button\",\n {\n staticStyle: { width: \"100%\" },\n attrs: {\n loading: _vm.loading,\n size: \"medium\",\n type: \"primary\",\n },\n nativeOn: {\n click: function ($event) {\n $event.preventDefault()\n return _vm.handleLogin($event)\n },\n },\n },\n [\n !_vm.loading\n ? _c(\"span\", [_vm._v(\"登 录\")])\n : _c(\"span\", [_vm._v(\"登 录 中...\")]),\n ]\n ),\n ],\n 1\n ),\n _c(\"el-form-item\", { staticStyle: { width: \"100%\" } }, [\n _c(\n \"div\",\n { staticClass: \"oauth-login\", staticStyle: { display: \"flex\" } },\n _vm._l(_vm.SysUserSocialTypeEnum, function (item) {\n return _c(\n \"div\",\n {\n key: item.type,\n staticClass: \"oauth-login-item\",\n on: {\n click: function ($event) {\n return _vm.doSocialLogin(item)\n },\n },\n },\n [\n _c(\"img\", {\n attrs: {\n src: item.img,\n height: \"25px\",\n width: \"25px\",\n alt: \"登录\",\n },\n }),\n _c(\"span\", [_vm._v(_vm._s(item.title))]),\n ]\n )\n }),\n 0\n ),\n ]),\n ],\n 1\n ),\n _vm._m(0),\n ],\n 1\n )\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-login-footer\" }, [\n _c(\"span\", [\n _vm._v(\"Copyright © 2020-2021 iocoder.cn All Rights Reserved.\"),\n ]),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%228e17e5e2-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&": /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss& ***! \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".login {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n height: 100%;\\n background-image: url(\\\"http://static.yudao.iocoder.cn/login-background.jpg\\\");\\n background-size: cover;\\n}\\n.title {\\n margin: 0px auto 30px auto;\\n text-align: center;\\n color: #707070;\\n}\\n.login-form {\\n border-radius: 6px;\\n background: #ffffff;\\n width: 500px;\\n padding: 25px 25px 5px 25px;\\n}\\n.login-form .el-input {\\n height: 38px;\\n}\\n.login-form .el-input input {\\n height: 38px;\\n}\\n.login-form .input-icon {\\n height: 39px;\\n width: 14px;\\n margin-left: 2px;\\n}\\n.login-tip {\\n font-size: 13px;\\n text-align: center;\\n color: #bfbfbf;\\n}\\n.login-code {\\n width: 33%;\\n height: 38px;\\n float: right;\\n}\\n.login-code img {\\n cursor: pointer;\\n vertical-align: middle;\\n}\\n.el-login-footer {\\n height: 40px;\\n line-height: 40px;\\n position: fixed;\\n bottom: 0;\\n width: 100%;\\n text-align: center;\\n color: #fff;\\n font-family: Arial;\\n font-size: 12px;\\n letter-spacing: 1px;\\n}\\n.login-code-img {\\n height: 38px;\\n}\\n.oauth-login {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n cursor: pointer;\\n}\\n.oauth-login-item {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n margin-right: 10px;\\n}\\n.oauth-login-item img {\\n height: 25px;\\n width: 25px;\\n}\\n.oauth-login-item span:hover {\\n -webkit-text-decoration: underline red;\\n text-decoration: underline red;\\n color: red;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&": /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss& ***! \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// style-loader: Adds some css to the DOM by adding a