服务列表增加筛选

This commit is contained in:
刘祥超
2020-10-31 15:21:24 +08:00
parent ffdff12eab
commit 0b6460232f
4 changed files with 85 additions and 14 deletions

View File

@@ -16,8 +16,17 @@ func (this *IndexAction) Init() {
this.Nav("", "server", "index") this.Nav("", "server", "index")
} }
func (this *IndexAction) RunGet(params struct{}) { func (this *IndexAction) RunGet(params struct {
countResp, err := this.RPC().ServerRPC().CountAllEnabledServers(this.AdminContext(), &pb.CountAllEnabledServersRequest{}) GroupId int64
Keyword string
}) {
this.Data["groupId"] = params.GroupId
this.Data["keyword"] = params.Keyword
countResp, err := this.RPC().ServerRPC().CountAllEnabledServersMatch(this.AdminContext(), &pb.CountAllEnabledServersMatchRequest{
GroupId: params.GroupId,
Keyword: params.Keyword,
})
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
return return
@@ -27,9 +36,11 @@ func (this *IndexAction) RunGet(params struct{}) {
this.Data["page"] = page.AsHTML() this.Data["page"] = page.AsHTML()
// 服务列表 // 服务列表
serversResp, err := this.RPC().ServerRPC().ListEnabledServers(this.AdminContext(), &pb.ListEnabledServersRequest{ serversResp, err := this.RPC().ServerRPC().ListEnabledServersMatch(this.AdminContext(), &pb.ListEnabledServersMatchRequest{
Offset: page.Offset, Offset: page.Offset,
Size: page.Size, Size: page.Size,
GroupId: params.GroupId,
Keyword: params.Keyword,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -106,6 +117,16 @@ func (this *IndexAction) RunGet(params struct{}) {
} }
} }
// 域名列表
serverNames := []*serverconfigs.ServerNameConfig{}
if len(server.ServerNamesJON) > 0 {
err = json.Unmarshal(server.ServerNamesJON, &serverNames)
if err != nil {
this.ErrorPage(err)
return
}
}
serverMaps = append(serverMaps, maps.Map{ serverMaps = append(serverMaps, maps.Map{
"id": server.Id, "id": server.Id,
"isOn": server.IsOn, "isOn": server.IsOn,
@@ -117,9 +138,25 @@ func (this *IndexAction) RunGet(params struct{}) {
"ports": portMaps, "ports": portMaps,
"serverTypeName": serverconfigs.FindServerType(server.Type).GetString("name"), "serverTypeName": serverconfigs.FindServerType(server.Type).GetString("name"),
"groups": groupMaps, "groups": groupMaps,
"serverNames": serverNames,
}) })
} }
this.Data["servers"] = serverMaps this.Data["servers"] = serverMaps
// 分组
groupsResp, err := this.RPC().ServerGroupRPC().FindAllEnabledServerGroups(this.AdminContext(), &pb.FindAllEnabledServerGroupsRequest{})
if err != nil {
this.ErrorPage(err)
return
}
groupMaps := []maps.Map{}
for _, group := range groupsResp.Groups {
groupMaps = append(groupMaps, maps.Map{
"id": group.Id,
"name": group.Name,
})
}
this.Data["groups"] = groupMaps
this.Show() this.Show()
} }

View File

@@ -7,4 +7,9 @@ Vue.component("label-on", {
// 文字代码标签 // 文字代码标签
Vue.component("code-label", { Vue.component("code-label", {
template: `<span class="ui label basic tiny" style="padding: 3px;margin-left:2px;margin-right:2px"><slot></slot></span>` template: `<span class="ui label basic tiny" style="padding: 3px;margin-left:2px;margin-right:2px"><slot></slot></span>`
})
// tiny标签
Vue.component("tiny-label", {
template: `<span class="ui label tiny" style="margin-bottom: 0.5em"><slot></slot></span>`
}) })

View File

@@ -2,10 +2,10 @@
{$template "menu"} {$template "menu"}
<form class="ui form segment" action="/clusters/cluster"> <form class="ui form" action="/clusters/cluster">
<input type="hidden" name="clusterId" :value="clusterId"/> <input type="hidden" name="clusterId" :value="clusterId"/>
<div class="ui fields inline"> <div class="ui fields inline">
<div class="ui field" v-if="groups.length > 0"> <div class="ui field" v-if="groups.length > 0" style="padding-right: 0">
所属分组: 所属分组:
</div> </div>
<div class="ui field" v-if="groups.length > 0"> <div class="ui field" v-if="groups.length > 0">
@@ -14,7 +14,7 @@
<option v-for="group in groups" :value="group.id">{{group.name}}</option> <option v-for="group in groups" :value="group.id">{{group.name}}</option>
</select> </select>
</div> </div>
<div class="ui field"> <div class="ui field" style="padding-right: 0">
安装状态: 安装状态:
</div> </div>
<div class="ui field"> <div class="ui field">
@@ -24,7 +24,7 @@
<option value="2">未安装</option> <option value="2">未安装</option>
</select> </select>
</div> </div>
<div class="ui field"> <div class="ui field" style="padding-right: 0">
在线状态: 在线状态:
</div> </div>
<div class="ui field"> <div class="ui field">

View File

@@ -1,6 +1,27 @@
{$layout} {$layout}
{$template "menu"} {$template "menu"}
<form class="ui form" action="/servers">
<div class="ui margin"></div>
<div class="ui fields inline">
<div class="ui field" v-if="groups.length > 0" style="padding-right:0">
所属分组:
</div>
<div class="ui field" v-if="groups.length > 0">
<select class="ui dropdown" name="groupId" v-model="groupId">
<option value="0">[全部]</option>
<option v-for="group in groups" :value="group.id">{{group.name}}</option>
</select>
</div>
<div class="ui field">
<input type="text" name="keyword" style="width:10em" placeholder="关键词" v-model="keyword"/>
</div>
<div class="ui field">
<button type="submit" class="ui button">搜索</button>
</div>
</div>
</form>
<p class="ui message" v-if="servers.length == 0">暂时还没有服务。</p> <p class="ui message" v-if="servers.length == 0">暂时还没有服务。</p>
<table class="ui table selectable" v-if="servers.length > 0"> <table class="ui table selectable" v-if="servers.length > 0">
@@ -8,29 +29,37 @@
<tr> <tr>
<th>服务名称</th> <th>服务名称</th>
<th>所属分组</th> <th>所属分组</th>
<th>服务类型</th>
<th>部署集群</th> <th>部署集群</th>
<th>域名</th>
<th>端口</th> <th>端口</th>
<th class="two wide">状态</th> <th class="two wide">状态</th>
<th class="two op">操作</th> <th class="two op">操作</th>
</tr> </tr>
</thead> </thead>
<tr v-for="server in servers"> <tr v-for="server in servers">
<td>{{server.name}}</td> <td>{{server.name}}
<div style="margin-top:0.2em">
<tiny-label>{{server.serverTypeName}}</tiny-label>
</div>
</td>
<td> <td>
<div v-if="server.groups.length > 0"> <div v-if="server.groups.length > 0">
<div v-for="group in server.groups"> <div v-for="group in server.groups">
<span class="ui label tiny" style="margin-bottom:0.5em">{{group.name}}</span> <tiny-label>{{group.name}}</tiny-label>
</div> </div>
</div> </div>
<span class="disabled" v-else>-</span> <span class="disabled" v-else>-</span>
</td> </td>
<td>{{server.serverTypeName}}</td>
<td>{{server.cluster.name}}</td> <td>{{server.cluster.name}}</td>
<td>
<div v-for="serverName in server.serverNames">
<tiny-label>{{serverName.name}}</tiny-label>
</div>
</td>
<td> <td>
<span v-if="server.ports.length == 0">-</span> <span v-if="server.ports.length == 0">-</span>
<div v-for="port in server.ports"> <div v-for="port in server.ports">
<div class="ui label tiny" style="margin-bottom:0.5em">{{port.portRange}}<span class="small">{{port.protocol}}</span></div> <tiny-label>{{port.portRange}}<span class="small">{{port.protocol}}</span></tiny-label>
</div> </div>
</td> </td>
<td> <td>