Tea.context(function () { var config = this.config || {} this.form = { host: config.host || "", scheme: config.scheme || "https", port: config.port > 0 ? config.port : 8443, user: config.user || "", password: "", database: config.database || "default", } this.isTesting = false this.testResult = "" this.testOk = false // 页面加载时的连接状态(后端自动检测) this.connStatus = this.connStatus || "unconfigured" this.connError = this.connError || "" this.success = function () { teaweb.success("保存成功") } this.onSubmit = function (e) { e.preventDefault() e.stopPropagation() Tea.action("$").post().form(e.target).success(function () { Tea.Vue.success() }) } this.testConnection = function () { var that = Tea.Vue that.isTesting = true that.testResult = "" var form = document.querySelector("form") var fd = new FormData(form) fd.set("host", that.form.host || "") fd.set("scheme", that.form.scheme || "https") fd.set("port", String(that.form.port > 0 ? that.form.port : 8443)) fd.set("user", that.form.user || "") fd.set("password", that.form.password || "") fd.set("database", that.form.database || "default") var xhr = new XMLHttpRequest() xhr.open("POST", Tea.url("/db/testClickhouse"), true) xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") xhr.timeout = 10000 xhr.onload = function () { that.isTesting = false try { var resp = JSON.parse(xhr.responseText) if (resp.code === 200) { that.testOk = true that.testResult = "✅ 连接成功" } else { that.testOk = false that.testResult = "❌ " + (resp.message || "连接失败") } } catch (e) { that.testOk = false that.testResult = "❌ 响应解析失败" } } xhr.onerror = function () { that.isTesting = false that.testOk = false that.testResult = "❌ 网络请求失败" } xhr.ontimeout = function () { that.isTesting = false that.testOk = false that.testResult = "❌ 请求超时" } xhr.send(fd) } })