Files
waf-platform/EdgeAdmin/web/public/js/components/common/httpdns-clusters-selector.js
2026-03-13 14:25:13 +08:00

50 lines
1.4 KiB
JavaScript

Vue.component("httpdns-clusters-selector", {
props: ["vClusters", "vName"],
data: function () {
let inputClusters = this.vClusters
let clusters = []
if (inputClusters != null && inputClusters.length > 0) {
if (inputClusters[0].isChecked !== undefined) {
// 带 isChecked 标志的完整集群列表
clusters = inputClusters.map(function (c) {
return {id: c.id, name: c.name, isChecked: c.isChecked}
})
} else {
// 仅包含已选集群,全部标记为选中
clusters = inputClusters.map(function (c) {
return {id: c.id, name: c.name, isChecked: true}
})
}
}
// 无 prop 时从根实例读取所有集群(如创建应用页面)
if (clusters.length === 0) {
let rootClusters = this.$root.clusters
if (rootClusters != null && rootClusters.length > 0) {
clusters = rootClusters.map(function (c) {
return {id: c.id, name: c.name, isChecked: false}
})
}
}
return {
clusters: clusters,
fieldName: this.vName || "clusterIds"
}
},
methods: {
changeCluster: function (cluster) {
cluster.isChecked = !cluster.isChecked
}
},
template: `<div>
<div v-if="clusters.length > 0">
<checkbox v-for="cluster in clusters" :key="cluster.id" :v-value="cluster.id" :value="cluster.isChecked ? cluster.id : 0" style="margin-right: 1em" @input="changeCluster(cluster)" :name="fieldName">
{{cluster.name}}
</checkbox>
</div>
<span class="grey" v-else>暂无可用集群</span>
</div>`
})