| | |
| | | localeOptions: [], |
| | | currentLocale: "zh-CN", |
| | | loginLoading: false, |
| | | mfaLoading: false, |
| | | toolsDialogVisible: false, |
| | | textDialogVisible: false, |
| | | uploadDialogVisible: false, |
| | | mfaDialogVisible: false, |
| | | licenseBase64: "", |
| | | titleClickCount: 0, |
| | | titleClickTimer: null, |
| | | loginForm: { |
| | | mobile: "", |
| | | password: "" |
| | | }, |
| | | mfaForm: { |
| | | code: "" |
| | | }, |
| | | mfaPending: { |
| | | ticket: "", |
| | | username: "" |
| | | }, |
| | | textDialog: { |
| | | title: "", |
| | |
| | | ], |
| | | password: [ |
| | | { required: true, message: "请输入密码", trigger: "blur" } |
| | | ] |
| | | }, |
| | | mfaRules: { |
| | | code: [ |
| | | { required: true, message: "请输入6位验证码", trigger: "blur" }, |
| | | { |
| | | validator: function (rule, value, callback) { |
| | | if (!/^\d{6}$/.test(String(value || "").trim())) { |
| | | callback(new Error("请输入6位数字验证码")); |
| | | return; |
| | | } |
| | | callback(); |
| | | }, |
| | | trigger: "blur" |
| | | } |
| | | ] |
| | | } |
| | | }; |
| | |
| | | }, |
| | | method: "POST", |
| | | success: function (res) { |
| | | var payload = res && res.data ? res.data : {}; |
| | | if (Number(res.code) === 200) { |
| | | localStorage.setItem("token", res.data.token); |
| | | localStorage.setItem("username", res.data.username); |
| | | window.location.href = "index.html"; |
| | | if (payload.mfaRequired) { |
| | | vm.openMfaDialog(payload); |
| | | return; |
| | | } |
| | | vm.finishLogin(payload); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "登录失败"); |
| | |
| | | } |
| | | }); |
| | | }, |
| | | openMfaDialog: function (payload) { |
| | | this.mfaPending = { |
| | | ticket: payload.mfaTicket || "", |
| | | username: payload.username || this.loginForm.mobile || "" |
| | | }; |
| | | this.mfaForm.code = ""; |
| | | this.mfaDialogVisible = true; |
| | | if (this.$refs.mfaForm) { |
| | | this.$nextTick(function () { |
| | | this.$refs.mfaForm.clearValidate(); |
| | | }); |
| | | } |
| | | }, |
| | | closeMfaDialog: function () { |
| | | this.mfaDialogVisible = false; |
| | | this.mfaLoading = false; |
| | | this.mfaPending = { |
| | | ticket: "", |
| | | username: "" |
| | | }; |
| | | this.mfaForm.code = ""; |
| | | if (this.$refs.mfaForm) { |
| | | this.$refs.mfaForm.clearValidate(); |
| | | } |
| | | }, |
| | | handleMfaLogin: function () { |
| | | var vm = this; |
| | | if (!vm.$refs.mfaForm) { |
| | | return; |
| | | } |
| | | vm.$refs.mfaForm.validate(function (valid) { |
| | | if (!valid) { |
| | | return false; |
| | | } |
| | | vm.submitMfaLogin(); |
| | | return true; |
| | | }); |
| | | }, |
| | | submitMfaLogin: function () { |
| | | var vm = this; |
| | | if (!vm.mfaPending.ticket) { |
| | | vm.$message.error("登录票据已失效,请重新登录"); |
| | | vm.closeMfaDialog(); |
| | | return; |
| | | } |
| | | vm.mfaLoading = true; |
| | | ajaxJson({ |
| | | url: baseUrl + "/login/mfa.action", |
| | | data: { |
| | | ticket: vm.mfaPending.ticket, |
| | | code: vm.mfaForm.code |
| | | }, |
| | | method: "POST", |
| | | success: function (res) { |
| | | if (Number(res.code) === 200) { |
| | | vm.finishLogin(res.data || {}); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "验证失败"); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("验证失败"); |
| | | }, |
| | | complete: function () { |
| | | vm.mfaLoading = false; |
| | | } |
| | | }); |
| | | }, |
| | | finishLogin: function (payload) { |
| | | localStorage.setItem("token", payload.token || ""); |
| | | localStorage.setItem("username", payload.username || this.loginForm.mobile || ""); |
| | | this.closeMfaDialog(); |
| | | window.location.href = "index.html"; |
| | | }, |
| | | openTextDialog: function (title, label, text, tip) { |
| | | var pretty = ""; |
| | | try { |