diff --git a/internal/web/actions/default/servers/addServerNamePopup.go b/internal/web/actions/default/servers/addServerNamePopup.go index ce626c59..73f4ec35 100644 --- a/internal/web/actions/default/servers/addServerNamePopup.go +++ b/internal/web/actions/default/servers/addServerNamePopup.go @@ -4,6 +4,8 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" + "regexp" + "strings" ) type AddServerNamePopupAction struct { @@ -19,17 +21,43 @@ func (this *AddServerNamePopupAction) RunGet(params struct{}) { } func (this *AddServerNamePopupAction) RunPost(params struct { - ServerName string + Mode string + + ServerName string + ServerNames string Must *actions.Must }) { - params.Must. - Field("serverName", params.ServerName). - Require("请输入域名") + if params.Mode == "single" { + params.Must. + Field("serverName", params.ServerName). + Require("请输入域名") + this.Data["serverName"] = maps.Map{ + "name": params.ServerName, + "type": "full", + } + } else if params.Mode == "multiple" { + if len(params.ServerNames) == 0 { + this.FailField("serverNames", "请输入至少域名") + } - this.Data["serverName"] = maps.Map{ - "name": params.ServerName, - "type": "full", + serverNames := []string{} + for _, line := range strings.Split(params.ServerNames, "\n") { + line := strings.TrimSpace(line) + line = regexp.MustCompile(`\s+`).ReplaceAllString(line, "") + if len(line) == 0 { + continue + } + serverNames = append(serverNames, line) + } + this.Data["serverName"] = maps.Map{ + "name": "", + "type": "full", + "subNames": serverNames, + } + } else { + this.Fail("错误的mode参数") } + this.Success() } diff --git a/web/public/js/components/server/server-name-box.js b/web/public/js/components/server/server-name-box.js index b82b2475..549a091c 100644 --- a/web/public/js/components/server/server-name-box.js +++ b/web/public/js/components/server/server-name-box.js @@ -11,6 +11,7 @@ Vue.component("server-name-box", { }, methods: { addServerName: function () { + window.UPDATING_SERVER_NAME = null let that = this teaweb.popup("/servers/addServerNamePopup", { callback: function (resp) { @@ -22,13 +23,27 @@ Vue.component("server-name-box", { removeServerName: function (index) { this.serverNames.$remove(index) + }, + + updateServerName: function (index, serverName) { + window.UPDATING_SERVER_NAME = serverName + let that = this + teaweb.popup("/servers/addServerNamePopup", { + callback: function (resp) { + var serverName = resp.data.serverName + Vue.set(that.serverNames, index, serverName) + } + }); } }, template: `