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: `
- {{serverName.type}} {{serverName.name}} + {{serverName.type}} + {{serverName.name}} + {{serverName.subNames[0]}}等{{serverName.subNames.length}}个域名 +
diff --git a/web/views/@default/servers/addServerNamePopup.html b/web/views/@default/servers/addServerNamePopup.html index eaf5fddc..064569f0 100644 --- a/web/views/@default/servers/addServerNamePopup.html +++ b/web/views/@default/servers/addServerNamePopup.html @@ -1,14 +1,24 @@ {$layout "layout_popup"} -

添加域名绑定

+

添加域名绑定

+

修改域名绑定

+ - - + + + + + +
域名
单个域名 - + +

请输入单个域名。

+
多个域名 + +

每行一个域名。

- +   批量添加单个添加
\ No newline at end of file diff --git a/web/views/@default/servers/addServerNamePopup.js b/web/views/@default/servers/addServerNamePopup.js index b0f74795..e98afd91 100644 --- a/web/views/@default/servers/addServerNamePopup.js +++ b/web/views/@default/servers/addServerNamePopup.js @@ -1,3 +1,29 @@ Tea.context(function () { this.success = NotifyPopup; + this.isUpdating = false + this.mode = "single" // single|multiple + this.serverName = { + name: "", + subNames: [] + } + this.multipleServerNames = "" + if (window.parent.UPDATING_SERVER_NAME != null) { + this.isUpdating = true + this.serverName = window.parent.UPDATING_SERVER_NAME + if (this.serverName.subNames != null && this.serverName.subNames.length > 0) { + this.mode = "multiple" + this.multipleServerNames = this.serverName.subNames.join("\n") + } + } + + this.switchMode = function (mode) { + this.mode = mode + this.$delay(function () { + if (mode == "single") { + this.$refs.focus.focus() + } else { + this.$refs.serverNames.focus() + } + }) + } }); \ No newline at end of file diff --git a/web/views/@default/servers/index.html b/web/views/@default/servers/index.html index da536e7b..80669311 100644 --- a/web/views/@default/servers/index.html +++ b/web/views/@default/servers/index.html @@ -53,7 +53,8 @@ {{server.cluster.name}}
- {{serverName.name}} + {{serverName.name}} + {{serverName.subNames[0]}}等{{serverName.subNames.length}}个域名