Tea.context(function () {
// 显示的统计项
this.windowWidth = window.innerWidth
this.miniWidth = 760
this.columnWidth1 = 750
this.columnWidth2 = 850
this.columnWidth3 = 950
this.columnWidth4 = 1050
this.columnWidth5 = 1100
let that = this
window.addEventListener("resize", function () {
that.windowWidth = window.innerWidth
})
this.$delay(function () {
this.checkPorts()
})
this.deleteNode = function (nodeId) {
teaweb.confirm("确定要删除这个节点吗?", function () {
this.$post("/ns/clusters/cluster/deleteNode")
.params({
nodeId: nodeId
})
.refresh();
})
}
this.upNode = function (nodeId) {
teaweb.confirm("确定要手动上线此节点吗?", function () {
this.$post("/ns/clusters/cluster/node/up")
.params({
nodeId: nodeId
})
.refresh()
})
}
let checkingPort = ""
this.checkPorts = function () {
let ipList = []
this.nodes.forEach(function (node) {
if (node.isOn) {
if (node.ipAddresses != null && node.ipAddresses.length > 0) {
node.ipAddresses.forEach(function (addr) {
if (addr.isOn && addr.canAccess && addr.isUp && addr.ip.length > 0 && !ipList.$contains(addr.ip)) {
ipList.push(addr.ip)
}
})
}
}
})
if (ipList.length > 0) {
this.$post(".checkPorts")
.params({
clusterId: this.clusterId,
ip: ipList
})
.success(function (resp) {
let results = resp.data.results
if (results.length > 0) {
checkingPort = resp.data.port
let errorMap = {}
let hasErrors = false
results.forEach(function (result) {
if (!result.isOk) {
errorMap[result.ip] = result
hasErrors = true
}
})
if (hasErrors) {
this.nodes.forEach(function (node) {
if (node.isOn) {
if (node.ipAddresses != null && node.ipAddresses.length > 0) {
node.ipAddresses.forEach(function (addr, index) {
if (addr.isOn && addr.canAccess && addr.isUp && addr.ip.length > 0) {
if (typeof errorMap[addr.ip] == "object") {
addr.hasError = true
addr.err = errorMap[addr.ip].err
Vue.set(node.ipAddresses, index, addr)
}
}
})
}
}
})
}
}
})
}
}
this.showPortError = function (addr) {
teaweb.popupTip("udp://" + addr.ip + ":" + checkingPort + " 端口连接错误(提示:" + addr.err + "),请检查:
1)节点IP地址是否填写正确;
2)节点程序(edge-dns)是否已正确安装;
3)是否已在防火墙和安全策略中正确设置 " + checkingPort + "/udp 端口;
4)如在客户端手动测试正常,可以忽略此提示。")
}
})