| | |
| | | var localeTick = this.localeTick; |
| | | void localeTick; |
| | | if (window.WCS_I18N && typeof window.WCS_I18N.t === "function") { |
| | | return window.WCS_I18N.t(key); |
| | | var translated = window.WCS_I18N.t(key); |
| | | if (translated && translated !== key) { |
| | | return translated; |
| | | } |
| | | } |
| | | return fallback || key; |
| | | }, |
| | | refreshRuleMessages: function () { |
| | | var vm = this; |
| | | vm.loginRules = { |
| | | mobile: [ |
| | | { required: true, message: vm.text("login.validation.usernameRequired", "请输入账号"), trigger: "blur" } |
| | | ], |
| | | password: [ |
| | | { required: true, message: vm.text("login.validation.passwordRequired", "请输入密码"), trigger: "blur" } |
| | | ] |
| | | }; |
| | | vm.mfaRules = { |
| | | code: [ |
| | | { required: true, message: vm.text("login.validation.mfaRequired", "请输入6位验证码"), trigger: "blur" }, |
| | | { |
| | | validator: function (rule, value, callback) { |
| | | if (!/^\d{6}$/.test(String(value || "").trim())) { |
| | | callback(new Error(vm.text("login.validation.mfaInvalid", "请输入6位数字验证码"))); |
| | | return; |
| | | } |
| | | callback(); |
| | | }, |
| | | trigger: "blur" |
| | | } |
| | | ] |
| | | }; |
| | | }, |
| | | initLanguageSwitch: function () { |
| | | var vm = this; |
| | | if (!window.WCS_I18N || typeof window.WCS_I18N.onReady !== "function") { |
| | | vm.refreshRuleMessages(); |
| | | return; |
| | | } |
| | | window.WCS_I18N.onReady(function (i18n) { |
| | | vm.localeOptions = i18n.getLocaleOptions(); |
| | | vm.currentLocale = i18n.getLocale(); |
| | | document.title = i18n.t("login.title"); |
| | | vm.refreshRuleMessages(); |
| | | vm.localeTick++; |
| | | }); |
| | | }, |
| | |
| | | vm.openMfaDialog(payload); |
| | | return; |
| | | } |
| | | vm.finishLogin(payload); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "登录失败"); |
| | | vm.finishLogin(payload); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || vm.text("login.error.loginFailed", "登录失败")); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("登录失败"); |
| | | vm.$message.error(vm.text("login.error.loginFailed", "登录失败")); |
| | | }, |
| | | complete: function () { |
| | | vm.loginLoading = false; |
| | |
| | | submitMfaLogin: function () { |
| | | var vm = this; |
| | | if (!vm.mfaPending.ticket) { |
| | | vm.$message.error("登录票据已失效,请重新登录"); |
| | | vm.$message.error(vm.text("login.error.mfaTicketExpired", "登录票据已失效,请重新登录")); |
| | | vm.closeMfaDialog(); |
| | | return; |
| | | } |
| | |
| | | vm.finishLogin(res.data || {}); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "验证失败"); |
| | | vm.$message.error(res.msg || vm.text("login.error.mfaFailed", "验证失败")); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("验证失败"); |
| | | vm.$message.error(vm.text("login.error.mfaFailed", "验证失败")); |
| | | }, |
| | | complete: function () { |
| | | vm.mfaLoading = false; |
| | |
| | | textarea.select(); |
| | | document.execCommand("copy"); |
| | | document.body.removeChild(textarea); |
| | | this.$message.success("已复制到剪贴板"); |
| | | this.$message.success(this.text("login.dialog.copied", "已复制到剪贴板")); |
| | | } catch (err) { |
| | | this.$message.error("复制失败"); |
| | | this.$message.error(this.text("login.dialog.copyFailed", "复制失败")); |
| | | } |
| | | }, |
| | | copyText: function () { |
| | |
| | | var text = vm.textDialog.text || ""; |
| | | if (navigator.clipboard && navigator.clipboard.writeText) { |
| | | navigator.clipboard.writeText(text).then(function () { |
| | | vm.$message.success("已复制到剪贴板"); |
| | | vm.$message.success(vm.text("login.dialog.copied", "已复制到剪贴板")); |
| | | }).catch(function () { |
| | | vm.fallbackCopy(text); |
| | | }); |
| | |
| | | method: "GET", |
| | | success: function (res) { |
| | | if (Number(res.code) === 200) { |
| | | vm.openTextDialog("获取请求码", "请求码", res.msg || "", "请求码中已包含项目名称,直接发给许可证服务端即可。"); |
| | | vm.openTextDialog( |
| | | vm.text("login.requestCode.title", "获取请求码"), |
| | | vm.text("login.requestCode.label", "请求码"), |
| | | res.msg || "", |
| | | vm.text("login.requestCode.tip", "请求码中已包含项目名称,直接发给许可证服务端即可。") |
| | | ); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "获取请求码失败"); |
| | | vm.$message.error(res.msg || vm.text("login.error.requestCodeFailed", "获取请求码失败")); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("获取请求码失败"); |
| | | vm.$message.error(vm.text("login.error.requestCodeFailed", "获取请求码失败")); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | url: baseUrl + "/license/getServerInfos", |
| | | method: "GET", |
| | | success: function (res) { |
| | | vm.openTextDialog("获取系统配置", "系统配置信息", res, "老项目仍可继续使用这份硬件信息 JSON 申请许可证。"); |
| | | vm.openTextDialog( |
| | | vm.text("login.serverInfo.title", "获取系统配置"), |
| | | vm.text("login.serverInfo.label", "系统配置信息"), |
| | | res, |
| | | vm.text("login.serverInfo.tip", "老项目仍可继续使用这份硬件信息 JSON 申请许可证。") |
| | | ); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("获取系统配置信息失败"); |
| | | vm.$message.error(vm.text("login.error.serverInfoFailed", "获取系统配置信息失败")); |
| | | } |
| | | }); |
| | | }, |
| | | submitLicense: function () { |
| | | var vm = this; |
| | | if (!vm.licenseBase64) { |
| | | vm.$message.warning("许可证内容不能为空"); |
| | | vm.$message.warning(vm.text("login.error.licenseEmpty", "许可证内容不能为空")); |
| | | return; |
| | | } |
| | | ajaxJson({ |
| | |
| | | if (Number(res.code) === 200) { |
| | | vm.uploadDialogVisible = false; |
| | | vm.licenseBase64 = ""; |
| | | vm.$message.success("许可证更新成功"); |
| | | vm.$message.success(vm.text("login.license.success", "许可证更新成功")); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "许可证更新失败"); |
| | | vm.$message.error(res.msg || vm.text("login.error.licenseUpdateFailed", "许可证更新失败")); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("许可证录入失败"); |
| | | vm.$message.error(vm.text("login.error.licenseImportFailed", "许可证录入失败")); |
| | | } |
| | | }); |
| | | }, |
| | | activateLicense: function () { |
| | | var vm = this; |
| | | vm.$confirm("确定执行一键激活吗?", "提示", { |
| | | vm.$confirm(vm.text("login.activate.confirm", "确定执行一键激活吗?"), vm.text("common.prompt", "提示"), { |
| | | type: "warning", |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消" |
| | | confirmButtonText: vm.text("common.ok", "确定"), |
| | | cancelButtonText: vm.text("login.mfa.cancel", "取消") |
| | | }).then(function () { |
| | | ajaxJson({ |
| | | url: baseUrl + "/license/activate", |
| | | method: "POST", |
| | | success: function (res) { |
| | | if (Number(res.code) === 200) { |
| | | vm.$message.success("激活成功"); |
| | | vm.$message.success(vm.text("login.activate.success", "激活成功")); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "激活失败"); |
| | | vm.$message.error(res.msg || vm.text("login.activate.failed", "激活失败")); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("激活失败"); |
| | | vm.$message.error(vm.text("login.activate.failed", "激活失败")); |
| | | } |
| | | }); |
| | | }).catch(function () { |
| | |
| | | method: "GET", |
| | | success: function (res) { |
| | | if (Number(res.code) === 200) { |
| | | vm.$alert(res.msg || "", "项目名称", { |
| | | confirmButtonText: "确定" |
| | | vm.$alert(res.msg || "", vm.text("login.projectName.title", "项目名称"), { |
| | | confirmButtonText: vm.text("common.ok", "确定") |
| | | }); |
| | | return; |
| | | } |
| | | vm.$message.error(res.msg || "获取项目名称失败"); |
| | | vm.$message.error(res.msg || vm.text("login.error.projectNameFailed", "获取项目名称失败")); |
| | | }, |
| | | error: function () { |
| | | vm.$message.error("获取项目名称失败"); |
| | | vm.$message.error(vm.text("login.error.projectNameFailed", "获取项目名称失败")); |
| | | } |
| | | }); |
| | | } |