Vue.component("dns-route-selector", { props: ["v-all-routes", "v-routes"], data: function () { let routes = this.vRoutes if (routes == null) { routes = [] } return { routes: routes, routeCodes: routes.$map(function (k, v) { return v.code + "@" + v.domainId }), isAdding: false, routeCode: "", keyword: "", searchingRoutes: this.vAllRoutes.$copy() } }, methods: { add: function () { this.isAdding = true this.keyword = "" this.routeCode = "" let that = this setTimeout(function () { that.$refs.keywordRef.focus() }, 200) }, cancel: function () { this.isAdding = false }, confirm: function () { if (this.routeCode.length == 0) { return } if (this.routeCodes.$contains(this.routeCode)) { teaweb.warn("已经添加过此线路,不能重复添加") return } let that = this let route = this.vAllRoutes.$find(function (k, v) { return v.code + "@" + v.domainId == that.routeCode }) if (route == null) { return } this.routeCodes.push(this.routeCode) this.routes.push(route) this.routeCode = "" this.isAdding = false }, remove: function (route) { this.routeCodes.$removeValue(route.code + "@" + route.domainId) this.routes.$removeIf(function (k, v) { return v.code + "@" + v.domainId == route.code + "@" + route.domainId }) } }, watch: { keyword: function (keyword) { if (keyword.length == 0) { this.searchingRoutes = this.vAllRoutes.$copy() this.routeCode = "" return } this.searchingRoutes = this.vAllRoutes.filter(function (route) { return teaweb.match(route.name, keyword) }) if (this.searchingRoutes.length > 0) { this.routeCode = this.searchingRoutes[0].code + "@" + this.searchingRoutes[0].domainId } else { this.routeCode = "" } } }, template: `
` })