Tea.context(function () { this.newRequest = function () { return { appId: "", clusterId: "", domain: "", clientIp: "", qtype: "A" } } this.request = this.newRequest() this.response = { hasResult: false, code: -1, message: "", data: null, requestId: "", resultRows: [] } this.isRequesting = false this.currentDomains = [] if (typeof this.apps === "undefined") { this.apps = [] } if (typeof this.clusters === "undefined") { this.clusters = [] } this.onAppChanged = function () { let selectedApp = null for (let i = 0; i < this.apps.length; i++) { if (this.apps[i].appId === this.request.appId) { selectedApp = this.apps[i] break } } if (selectedApp == null) { this.currentDomains = [] this.request.domain = "" this.request.clusterId = "" return } this.currentDomains = Array.isArray(selectedApp.domains) ? selectedApp.domains : [] if (this.currentDomains.length > 0) { if (this.currentDomains.indexOf(this.request.domain) < 0) { this.request.domain = this.currentDomains[0] } } else { this.request.domain = "" } if (typeof selectedApp.clusterId !== "undefined" && selectedApp.clusterId !== null) { this.request.clusterId = String(selectedApp.clusterId) } } this.normalizeResultRows = function (data) { if (typeof data === "undefined" || data == null) { return [] } if (Array.isArray(data.records) && data.records.length > 0) { return data.records } let rows = [] let ips = Array.isArray(data.ips) ? data.ips : [] let domain = this.request.domain let qtype = this.request.qtype let ttl = data.ttl || 0 let region = data.client_region || "-" let line = data.line_name || "-" ips.forEach(function (ip) { rows.push({ domain: domain, type: qtype, ip: ip, ttl: ttl, region: region, line: line }) }) return rows } this.sendTestRequest = function () { if (this.request.appId.length === 0) { teaweb.warn("Please select target app") return } if (this.request.clusterId.length === 0) { teaweb.warn("Please select cluster") return } if (this.request.domain.length === 0) { teaweb.warn("Please select domain") return } this.isRequesting = true this.response.hasResult = false let payload = Object.assign({}, this.request) this.$post("/httpdns/sandbox/test") .params(payload) .success(function (resp) { this.response = resp.data.result this.response.hasResult = true this.response.resultRows = this.normalizeResultRows(this.response.data) }) .done(function () { this.isRequesting = false }) } this.resetForm = function () { this.request = this.newRequest() this.currentDomains = [] this.response = { hasResult: false, code: -1, message: "", data: null, requestId: "", resultRows: [] } } })