改进界面

This commit is contained in:
GoEdgeLab
2020-11-21 15:53:04 +08:00
parent 6bbc156a11
commit 41428af471
31 changed files with 66 additions and 64 deletions

View File

@@ -1,9 +1,11 @@
Vue.component("copy-to-clipboard", { Vue.component("copy-to-clipboard", {
props: ["v-target"], props: ["v-target"],
created: function () { created: function () {
let jsFile = document.createElement("script") if (typeof ClipboardJS == "undefined") {
jsFile.setAttribute("src", "/js/clipboard.min.js") let jsFile = document.createElement("script")
document.head.appendChild(jsFile) jsFile.setAttribute("src", "/js/clipboard.min.js")
document.head.appendChild(jsFile)
}
}, },
methods: { methods: {
copy: function () { copy: function () {

View File

@@ -41,11 +41,11 @@ Vue.component("countries-selector", {
template: `<div> template: `<div>
<input type="hidden" name="countryIdsJSON" :value="JSON.stringify(countryIds)"/> <input type="hidden" name="countryIdsJSON" :value="JSON.stringify(countryIds)"/>
<div v-if="countries.length > 0" style="margin-bottom: 0.5em"> <div v-if="countries.length > 0" style="margin-bottom: 0.5em">
<div v-for="(country, index) in countries" class="ui label tiny">{{country.name}} <a href="" title="删除" @click.prevent="remove(index)"><i class="icon remove"></i></a></div> <div v-for="(country, index) in countries" class="ui label tiny basic">{{country.name}} <a href="" title="删除" @click.prevent="remove(index)"><i class="icon remove"></i></a></div>
<div class="ui divider"></div> <div class="ui divider"></div>
</div> </div>
<div> <div>
<button class="ui button small" type="button" @click.prevent="add">+</button> <button class="ui button tiny" type="button" @click.prevent="add">+</button>
</div> </div>
</div>` </div>`
}) })

View File

@@ -1,7 +1,7 @@
Vue.component("network-addresses-view", { Vue.component("network-addresses-view", {
props: ["v-addresses"], props: ["v-addresses"],
template: `<div> template: `<div>
<div class="ui label tiny" v-if="vAddresses != null" v-for="addr in vAddresses"> <div class="ui label tiny basic" v-if="vAddresses != null" v-for="addr in vAddresses">
{{addr.protocol}}://{{addr.host}}:{{addr.portRange}} {{addr.protocol}}://{{addr.host}}:{{addr.portRange}}
</div> </div>
</div>` </div>`

View File

@@ -41,11 +41,11 @@ Vue.component("provinces-selector", {
template: `<div> template: `<div>
<input type="hidden" name="provinceIdsJSON" :value="JSON.stringify(provinceIds)"/> <input type="hidden" name="provinceIdsJSON" :value="JSON.stringify(provinceIds)"/>
<div v-if="provinces.length > 0" style="margin-bottom: 0.5em"> <div v-if="provinces.length > 0" style="margin-bottom: 0.5em">
<div v-for="(province, index) in provinces" class="ui label tiny">{{province.name}} <a href="" title="删除" @click.prevent="remove(index)"><i class="icon remove"></i></a></div> <div v-for="(province, index) in provinces" class="ui label tiny basic">{{province.name}} <a href="" title="删除" @click.prevent="remove(index)"><i class="icon remove"></i></a></div>
<div class="ui divider"></div> <div class="ui divider"></div>
</div> </div>
<div> <div>
<button class="ui button small" type="button" @click.prevent="add">+</button> <button class="ui button tiny" type="button" @click.prevent="add">+</button>
</div> </div>
</div>` </div>`
}) })

View File

@@ -56,7 +56,7 @@ Vue.component("values-box", {
}, },
template: `<div> template: `<div>
<div style="margin-bottom: 1em" v-if="vValues.length > 0"> <div style="margin-bottom: 1em" v-if="vValues.length > 0">
<div class="ui label tiny" v-for="(value, index) in vValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}} <div class="ui label tiny basic" v-for="(value, index) in vValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}
<input type="hidden" :name="name" :value="value"/> <input type="hidden" :name="name" :value="value"/>
&nbsp; <a href="" @click.prevent="update(index)" title="修改"><i class="icon pencil small" ></i></a> &nbsp; <a href="" @click.prevent="update(index)" title="修改"><i class="icon pencil small" ></i></a>
<a href="" @click.prevent="remove(index)" title="删除"><i class="icon remove"></i></a> <a href="" @click.prevent="remove(index)" title="删除"><i class="icon remove"></i></a>

View File

@@ -41,7 +41,7 @@ Vue.component("dns-domain-selector", {
template: `<div> template: `<div>
<input type="hidden" name="dnsDomainId" :value="domainId"/> <input type="hidden" name="dnsDomainId" :value="domainId"/>
<div v-if="domainName.length > 0"> <div v-if="domainName.length > 0">
<span class="ui label small"> <span class="ui label small basic">
{{domainName}} {{domainName}}
<a href="" @click.prevent="update"><i class="icon pencil small"></i></a> <a href="" @click.prevent="update"><i class="icon pencil small"></i></a>
<a href="" @click.prevent="remove()"><i class="icon remove"></i></a> <a href="" @click.prevent="remove()"><i class="icon remove"></i></a>

View File

@@ -53,9 +53,9 @@ Vue.component("dns-route-selector", {
template: `<div> template: `<div>
<input type="hidden" name="dnsRoutesJSON" :value="JSON.stringify(routeCodes)"/> <input type="hidden" name="dnsRoutesJSON" :value="JSON.stringify(routeCodes)"/>
<div v-if="routes.length > 0"> <div v-if="routes.length > 0">
<tiny-label v-for="route in routes" :key="route.code"> <tiny-basic-label v-for="route in routes" :key="route.code">
{{route.name}} <a href="" @click.prevent="remove(route)"><i class="icon remove"></i></a> {{route.name}} <a href="" @click.prevent="remove(route)"><i class="icon remove"></i></a>
</tiny-label> </tiny-basic-label>
<div class="ui divider"></div> <div class="ui divider"></div>
</div> </div>
<button type="button" class="ui button small" @click.prevent="add" v-if="!isAdding">+</button> <button type="button" class="ui button small" @click.prevent="add" v-if="!isAdding">+</button>

View File

@@ -55,7 +55,7 @@ Vue.component("grant-selector", {
}, },
template: `<div> template: `<div>
<input type="hidden" name="grantId" :value="grantId"/> <input type="hidden" name="grantId" :value="grantId"/>
<div class="ui label small" v-if="grant != null">{{grant.name}}<span class="small">{{grant.methodName}}</span> <a href="" title="修改" @click.prevent="update()"><i class="icon pencil small"></i></a> <a href="" title="删除" @click.prevent="remove()"><i class="icon remove"></i></a> </div> <div class="ui label small basic" v-if="grant != null">{{grant.name}}<span class="small">{{grant.methodName}}</span> <a href="" title="修改" @click.prevent="update()"><i class="icon pencil small"></i></a> <a href="" title="删除" @click.prevent="remove()"><i class="icon remove"></i></a> </div>
<div v-if="grant == null"> <div v-if="grant == null">
<a href="" @click.prevent="select()">[选择已有认证]</a> &nbsp; &nbsp; <a href="" @click.prevent="create()">[添加新认证]</a> <a href="" @click.prevent="select()">[选择已有认证]</a> &nbsp; &nbsp; <a href="" @click.prevent="create()">[添加新认证]</a>
</div> </div>

View File

@@ -39,7 +39,7 @@ Vue.component("node-ip-addresses-box", {
<input type="hidden" name="ipAddressesJSON" :value="JSON.stringify(ipAddresses)"/> <input type="hidden" name="ipAddressesJSON" :value="JSON.stringify(ipAddresses)"/>
<div v-if="ipAddresses.length > 0"> <div v-if="ipAddresses.length > 0">
<div> <div>
<div v-for="(address, index) in ipAddresses" class="ui label small"> <div v-for="(address, index) in ipAddresses" class="ui label tiny basic">
{{address.ip}} {{address.ip}}
<span class="small" v-if="address.name.length > 0">{{address.name}}<span v-if="!address.canAccess">,不可访问</span></span> <span class="small" v-if="address.name.length > 0">{{address.name}}<span v-if="!address.canAccess">,不可访问</span></span>
<span class="small" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span> <span class="small" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span>

View File

@@ -160,7 +160,7 @@ Vue.component("http-header-policy-box", {
<td class="title">需要删除的Header</td> <td class="title">需要删除的Header</td>
<td> <td>
<div v-if="requestDeletingHeaders.length > 0"> <div v-if="requestDeletingHeaders.length > 0">
<div class="ui label small" v-for="headerName in requestDeletingHeaders">{{headerName}} <a href=""><i class="icon remove" title="删除" @click.prevent="deleteDeletingHeader(vRequestHeaderPolicy.id, headerName)"></i></a> </div> <div class="ui label small basic" v-for="headerName in requestDeletingHeaders">{{headerName}} <a href=""><i class="icon remove" title="删除" @click.prevent="deleteDeletingHeader(vRequestHeaderPolicy.id, headerName)"></i></a> </div>
<div class="ui divider" ></div> <div class="ui divider" ></div>
</div> </div>
<button class="ui button small" type="button" @click.prevent="addDeletingHeader(vRequestHeaderPolicy.id, 'request')">+</button> <button class="ui button small" type="button" @click.prevent="addDeletingHeader(vRequestHeaderPolicy.id, 'request')">+</button>
@@ -202,7 +202,7 @@ Vue.component("http-header-policy-box", {
<td class="title">需要删除的Header</td> <td class="title">需要删除的Header</td>
<td> <td>
<div v-if="responseDeletingHeaders.length > 0"> <div v-if="responseDeletingHeaders.length > 0">
<div class="ui label small" v-for="headerName in responseDeletingHeaders">{{headerName}} <a href=""><i class="icon remove" title="删除" @click.prevent="deleteDeletingHeader(vResponseHeaderPolicy.id, headerName)"></i></a> </div> <div class="ui label small basic" v-for="headerName in responseDeletingHeaders">{{headerName}} <a href=""><i class="icon remove" title="删除" @click.prevent="deleteDeletingHeader(vResponseHeaderPolicy.id, headerName)"></i></a> </div>
<div class="ui divider" ></div> <div class="ui divider" ></div>
</div> </div>
<button class="ui button small" type="button" @click.prevent="addDeletingHeader(vResponseHeaderPolicy.id, 'response')">+</button> <button class="ui button small" type="button" @click.prevent="addDeletingHeader(vResponseHeaderPolicy.id, 'response')">+</button>

View File

@@ -70,7 +70,7 @@ Vue.component("http-pages-and-shutdown-box", {
<td class="title">特殊页面</td> <td class="title">特殊页面</td>
<td> <td>
<div v-if="pages.length > 0"> <div v-if="pages.length > 0">
<div class="ui label small" v-for="(page,index) in pages"> <div class="ui label small basic" v-for="(page,index) in pages">
{{page.status}} -&gt; {{page.url}} <a href="" title="修改" @click.prevent="updatePage(index, page.id)"><i class="icon pencil small"></i></a> <a href="" title="删除" @click.prevent="removePage(index)"><i class="icon remove"></i></a> {{page.status}} -&gt; {{page.url}} <a href="" title="修改" @click.prevent="updatePage(index, page.id)"><i class="icon pencil small"></i></a> <a href="" title="删除" @click.prevent="removePage(index)"><i class="icon remove"></i></a>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>

View File

@@ -39,7 +39,7 @@ Vue.component("server-name-box", {
template: `<div> template: `<div>
<input type="hidden" name="serverNames" :value="JSON.stringify(serverNames)"/> <input type="hidden" name="serverNames" :value="JSON.stringify(serverNames)"/>
<div v-if="serverNames.length > 0"> <div v-if="serverNames.length > 0">
<div v-for="(serverName, index) in serverNames" class="ui label small"> <div v-for="(serverName, index) in serverNames" class="ui label small basic">
<em v-if="serverName.type != 'full'">{{serverName.type}}</em> <em v-if="serverName.type != 'full'">{{serverName.type}}</em>
<span v-if="serverName.subNames == null || serverName.subNames.length == 0">{{serverName.name}}</span> <span v-if="serverName.subNames == null || serverName.subNames.length == 0">{{serverName.name}}</span>
<span v-else>{{serverName.subNames[0]}}等{{serverName.subNames.length}}个域名</span> <span v-else>{{serverName.subNames[0]}}等{{serverName.subNames.length}}个域名</span>

View File

@@ -364,7 +364,7 @@ Vue.component("ssl-config-box", {
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="cipher-suites-box"> <div class="cipher-suites-box">
已添加套件({{policy.cipherSuites.length}}) 已添加套件({{policy.cipherSuites.length}})
<div v-for="cipherSuite in policy.cipherSuites" class="ui label tiny" style="margin-bottom: 0.5em"> <div v-for="cipherSuite in policy.cipherSuites" class="ui label tiny basic" style="margin-bottom: 0.5em">
<input type="hidden" name="cipherSuites" :value="cipherSuite"/> <input type="hidden" name="cipherSuites" :value="cipherSuite"/>
<span v-html="formatCipherSuite(cipherSuite)"></span> &nbsp; <a href="" title="删除套件" @click.prevent="removeCipherSuite(cipherSuite)"><i class="icon remove"></i></a> <span v-html="formatCipherSuite(cipherSuite)"></span> &nbsp; <a href="" title="删除套件" @click.prevent="removeCipherSuite(cipherSuite)"><i class="icon remove"></i></a>
<a href="" title="拖动改变顺序"><i class="icon bars handle"></i></a> <a href="" title="拖动改变顺序"><i class="icon bars handle"></i></a>
@@ -431,7 +431,7 @@ Vue.component("ssl-config-box", {
<td class="color-border">HSTS生效的域名</td> <td class="color-border">HSTS生效的域名</td>
<td colspan="2"> <td colspan="2">
<div class="names-box"> <div class="names-box">
<span class="ui label tiny" v-for="(domain, arrayIndex) in hsts.domains" :class="{blue:hstsDomainEditingIndex == arrayIndex}">{{domain}} <span class="ui label tiny basic" v-for="(domain, arrayIndex) in hsts.domains" :class="{blue:hstsDomainEditingIndex == arrayIndex}">{{domain}}
<input type="hidden" name="hstsDomains" :value="domain"/> &nbsp; <input type="hidden" name="hstsDomains" :value="domain"/> &nbsp;
<a href="" @click.prevent="editHstsDomain(arrayIndex)" title="修改"><i class="icon pencil"></i></a> <a href="" @click.prevent="editHstsDomain(arrayIndex)" title="修改"><i class="icon pencil"></i></a>
<a href="" @click.prevent="removeHstsDomain(arrayIndex)" title="删除"><i class="icon remove"></i></a> <a href="" @click.prevent="removeHstsDomain(arrayIndex)" title="删除"><i class="icon remove"></i></a>

View File

@@ -11,7 +11,7 @@
<tr> <tr>
<th>节点名称</th> <th>节点名称</th>
<th>访问地址</th> <th>访问地址</th>
<th class="two wide">状态</th> <th class="center width10">状态</th>
<th class="two op">操作</th> <th class="two op">操作</th>
</tr> </tr>
</thead> </thead>
@@ -19,10 +19,10 @@
<td>{{node.name}}</td> <td>{{node.name}}</td>
<td> <td>
<div v-if="node.accessAddrs != null && node.accessAddrs.length > 0"> <div v-if="node.accessAddrs != null && node.accessAddrs.length > 0">
<span class="ui label tiny" v-for="addr in node.accessAddrs">{{addr}}</span> <span class="ui label tiny basic" v-for="addr in node.accessAddrs">{{addr}}</span>
</div> </div>
</td> </td>
<td> <td class="center">
<label-on :v-is-on="node.isOn"></label-on> <label-on :v-is-on="node.isOn"></label-on>
</td> </td>
<td> <td>

View File

@@ -17,7 +17,7 @@
<td> <td>
<div v-if="node.ipAddresses.length > 0"> <div v-if="node.ipAddresses.length > 0">
<div> <div>
<div v-for="(address, index) in node.ipAddresses" class="ui label tiny"> <div v-for="(address, index) in node.ipAddresses" class="ui label tiny basic">
{{address.ip}} {{address.ip}}
<span class="small" v-if="address.name.length > 0">{{address.name}}<span v-if="!address.canAccess">,不可访问</span></span> <span class="small" v-if="address.name.length > 0">{{address.name}}<span v-if="!address.canAccess">,不可访问</span></span>
<span class="small" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span> <span class="small" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span>
@@ -32,7 +32,7 @@
<tr v-if="dnsRoutes.length > 0"> <tr v-if="dnsRoutes.length > 0">
<td>DNS线路</td> <td>DNS线路</td>
<td> <td>
<span class="ui label tiny" v-for="route in dnsRoutes">{{route.name}}</span> <span class="ui label tiny basic" v-for="route in dnsRoutes">{{route.name}}</span>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@@ -9,8 +9,8 @@
<th class="center">ID</th> <th class="center">ID</th>
<th>名称</th> <th>名称</th>
<th>类型</th> <th>类型</th>
<th class="center">集群数</th> <th class="center width5">集群数</th>
<th class="center">节点数</th> <th class="center width5">节点数</th>
<th class="two op">操作</th> <th class="two op">操作</th>
</tr> </tr>
</thead> </thead>
@@ -18,7 +18,7 @@
<td class="center">{{grant.id}}</td> <td class="center">{{grant.id}}</td>
<td>{{grant.name}}</td> <td>{{grant.name}}</td>
<td> <td>
<span class="ui label tiny">{{grant.method.name}}</span> <span class="ui label tiny basic">{{grant.method.name}}</span>
</td> </td>
<td class="center"> <td class="center">
<span v-if="grant.countClusters > 0">{{grant.countClusters}}</span> <span v-if="grant.countClusters > 0">{{grant.countClusters}}</span>

View File

@@ -9,7 +9,7 @@
<td class="title">选择认证</td> <td class="title">选择认证</td>
<td> <td>
<span v-if="grants.length == 0">暂时还没有可用的认证。</span> <span v-if="grants.length == 0">暂时还没有可用的认证。</span>
<a class="ui label small" v-for="grant in grants" :class="{blue:grantId == grant.id}" @click.prevent="selectGrant(grant)" style="margin-bottom:0.5em">{{grant.name}} <span class="small">{{grant.methodName}}</span></a> <a class="ui label small basic" v-for="grant in grants" :class="{blue:grantId == grant.id}" @click.prevent="selectGrant(grant)" style="margin-bottom:0.5em">{{grant.name}} <span class="small">{{grant.methodName}}</span></a>
<p class="comment">请点击选中某个认证。</p> <p class="comment">请点击选中某个认证。</p>
</td> </td>
</tr> </tr>

View File

@@ -12,7 +12,7 @@
<th>节点名称</th> <th>节点名称</th>
<th>连接地址</th> <th>连接地址</th>
<th>数据库名</th> <th>数据库名</th>
<th class="two wide">状态</th> <th class="center width10">状态</th>
<th class="two op">操作</th> <th class="two op">操作</th>
</tr> </tr>
</thead> </thead>
@@ -20,7 +20,7 @@
<td>{{node.name}}</td> <td>{{node.name}}</td>
<td>{{node.host}}:{{node.port}}</td> <td>{{node.host}}:{{node.port}}</td>
<td>{{node.database}}</td> <td>{{node.database}}</td>
<td><label-on :v-is-on="node.isOn"></label-on></td> <td class="center"><label-on :v-is-on="node.isOn"></label-on></td>
<td> <td>
<a href="" @click.prevent="updateNode(node.id)">修改</a> &nbsp; <a href="" @click.prevent="updateNode(node.id)">修改</a> &nbsp;
<a href="" @click.prevent="deleteNode(node.id)">删除</a> <a href="" @click.prevent="deleteNode(node.id)">删除</a>

View File

@@ -8,7 +8,7 @@
<td> <td>
<p class="comment" v-if="routes.length == 0">暂时还没有支持的线路。</p> <p class="comment" v-if="routes.length == 0">暂时还没有支持的线路。</p>
<div v-if="routes.length > 0"> <div v-if="routes.length > 0">
<div class="ui label tiny" v-for="route in routes" style="margin-bottom: 0.5em">{{route.name}}<span v-if="route.code.length > 0 && route.code != route.name"> ({{route.code}})</span></div> <div class="ui label tiny basic" v-for="route in routes" style="margin-bottom: 0.5em">{{route.name}}<span v-if="route.code.length > 0 && route.code != route.name"> ({{route.code}})</span></div>
</div> </div>
<p class="comment">注意有些DNS服务商会根据账号的会员级别等限制线路的使用。</p> <p class="comment">注意有些DNS服务商会根据账号的会员级别等限制线路的使用。</p>
</td> </td>

View File

@@ -56,7 +56,7 @@
<th class="width10 center">节点域名</th> <th class="width10 center">节点域名</th>
<th class="width10 center">服务域名</th> <th class="width10 center">服务域名</th>
<th>数据更新时间</th> <th>数据更新时间</th>
<th>状态</th> <th class="center width10">状态</th>
<th class="three op">操作</th> <th class="three op">操作</th>
</tr> </tr>
</thead> </thead>
@@ -78,7 +78,7 @@
<span v-if="domain.dataUpdatedTime.length > 0">{{domain.dataUpdatedTime}}</span> <span v-if="domain.dataUpdatedTime.length > 0">{{domain.dataUpdatedTime}}</span>
<span v-else class="disabled">尚未更新</span> <span v-else class="disabled">尚未更新</span>
</td> </td>
<td> <td class="center">
<div v-if="domain.countRoutes == 0 || domain.nodesChanged || domain.serversChanged"> <div v-if="domain.countRoutes == 0 || domain.nodesChanged || domain.serversChanged">
<a href="" style="border-bottom: 1px #db2828 dashed" title="点击和DNS服务商系统同步" @click.prevent="syncDomain(index,domain)" v-if="!domain.isSyncing"><span class="red">需要同步</span></a> <a href="" style="border-bottom: 1px #db2828 dashed" title="点击和DNS服务商系统同步" @click.prevent="syncDomain(index,domain)" v-if="!domain.isSyncing"><span class="red">需要同步</span></a>
<span v-else>正在同步...</span> <span v-else>正在同步...</span>

View File

@@ -15,8 +15,8 @@
<th>策略名称</th> <th>策略名称</th>
<th>策略类型</th> <th>策略类型</th>
<th>容量</th> <th>容量</th>
<th>引用服务</th> <th class="center">引用服务</th>
<th>状态</th> <th class="center">状态</th>
<th class="two op">操作</th> <th class="two op">操作</th>
</tr> </tr>
</thead> </thead>
@@ -27,8 +27,8 @@
<span v-if="policy.capacity != null && policy.capacity.count > 0">{{policy.capacity.count}}{{policy.capacity.unit.toUpperCase()}}</span> <span v-if="policy.capacity != null && policy.capacity.count > 0">{{policy.capacity.count}}{{policy.capacity.unit.toUpperCase()}}</span>
<span v-else class="disabled">不限</span> <span v-else class="disabled">不限</span>
</td> </td>
<td>{{infos[index].countServers}}</td> <td class="center">{{infos[index].countServers}}</td>
<td><label-on :v-is-on="policy.isOn"></label-on></td> <td class="center"><label-on :v-is-on="policy.isOn"></label-on></td>
<td> <td>
<a :href="'/servers/components/cache/policy?cachePolicyId=' + policy.id">详情</a> &nbsp; <a href="" @click.prevent="deletePolicy(policy.id)">删除</a> <a :href="'/servers/components/cache/policy?cachePolicyId=' + policy.id">详情</a> &nbsp; <a href="" @click.prevent="deletePolicy(policy.id)">删除</a>
</td> </td>

View File

@@ -16,7 +16,7 @@
<tr> <tr>
<th style="width:3em"></th> <th style="width:3em"></th>
<th>分组名称</th> <th>分组名称</th>
<th>服务数量</th> <th class="center width10">服务数量</th>
<th class="two op">操作</th> <th class="two op">操作</th>
</tr> </tr>
</thead> </thead>
@@ -24,7 +24,7 @@
<tr> <tr>
<td style="text-align: center;"><i class="icon bars handle grey"></i> </td> <td style="text-align: center;"><i class="icon bars handle grey"></i> </td>
<td>{{group.name}}</td> <td>{{group.name}}</td>
<td> <td class="center">
<span v-if="group.countServers > 0">{{group.countServers}}</span> <span v-if="group.countServers > 0">{{group.countServers}}</span>
<span v-else class="disabled">0</span> <span v-else class="disabled">0</span>
</td> </td>

View File

@@ -22,8 +22,8 @@
<th>域名</th> <th>域名</th>
<th>生效日期</th> <th>生效日期</th>
<th>过期日期</th> <th>过期日期</th>
<th>引用服务</th> <th class="center">引用服务</th>
<th>状态</th> <th class="center">状态</th>
<th class="three op">操作</th> <th class="three op">操作</th>
</tr> </tr>
</thead> </thead>
@@ -38,13 +38,13 @@
</td> </td>
<td> <td>
<div v-for="dnsName in cert.dnsNames" style="margin-bottom:0.4em"> <div v-for="dnsName in cert.dnsNames" style="margin-bottom:0.4em">
<span class="ui label tiny">{{dnsName}}</span> <span class="ui label tiny basic">{{dnsName}}</span>
</div> </div>
</td> </td>
<td>{{certInfos[index].beginDay}}</td> <td>{{certInfos[index].beginDay}}</td>
<td>{{certInfos[index].endDay}}</td> <td>{{certInfos[index].endDay}}</td>
<td>{{certInfos[index].countServers}}</td> <td class="center">{{certInfos[index].countServers}}</td>
<td nowrap=""> <td nowrap="" class="center">
<span class="ui label red tiny basic" v-if="!certInfos[index].isOn">未启用</span> <span class="ui label red tiny basic" v-if="!certInfos[index].isOn">未启用</span>
<span class="ui label red tiny basic" v-else-if="certInfos[index].isExpired">已过期</span> <span class="ui label red tiny basic" v-else-if="certInfos[index].isExpired">已过期</span>
<span class="ui label green tiny basic" v-else>有效中</span> <span class="ui label green tiny basic" v-else>有效中</span>

View File

@@ -48,7 +48,7 @@
</td> </td>
<td class="rules-box"> <td class="rules-box">
<div v-for="rule in set.rules" style="margin-top: 0.4em;margin-bottom:0.4em"> <div v-for="rule in set.rules" style="margin-top: 0.4em;margin-bottom:0.4em">
<span class="ui label tiny">{{rule.name}}[{{rule.param}}] <var :class="{dash:rule.isCaseInsensitive}" :title="rule.isCaseInsensitive ? '大小写不敏感':''" v-if="!rule.isComposed">{{rule.operator}}</var> {{rule.value}}</span> <span class="ui label tiny basic">{{rule.name}}[{{rule.param}}] <var :class="{dash:rule.isCaseInsensitive}" :title="rule.isCaseInsensitive ? '大小写不敏感':''" v-if="!rule.isComposed">{{rule.operator}}</var> {{rule.value}}</span>
</div> </div>
<span class="ui disabled" v-if="set.rules.length == 0">暂时还没有规则</span> <span class="ui disabled" v-if="set.rules.length == 0">暂时还没有规则</span>
</td> </td>

View File

@@ -25,10 +25,10 @@
<td><span :class="{disabled:!group.isOn}">{{group.name}}</span> <td><span :class="{disabled:!group.isOn}">{{group.name}}</span>
<p class="comment" v-if="group.description.length > 0" style="padding-bottom:0">{{group.description}}</p> <p class="comment" v-if="group.description.length > 0" style="padding-bottom:0">{{group.description}}</p>
<p> <p>
<span v-if="group.isOn" class="ui label tiny green">启用</span> <span v-if="group.isOn" class="ui label tiny basic green">启用</span>
<span v-if="!group.isOn" class="ui label tiny red">停用</span> <span v-if="!group.isOn" class="ui label tiny basic red">停用</span>
<span v-if="group.code.length > 0" class="ui label tiny">预置</span> <span v-if="group.code.length > 0" class="ui label basic tiny">预置</span>
<span v-if="group.code.length == 0" class="ui label tiny">自定义</span> <span v-if="group.code.length == 0" class="ui label basic tiny">自定义</span>
</p> </p>
</td> </td>
<td class="center"> <td class="center">

View File

@@ -14,19 +14,19 @@
<thead> <thead>
<tr> <tr>
<th>策略名称</th> <th>策略名称</th>
<th>入站规则分组</th> <th class="center">入站规则分组</th>
<th>出站规则分组</th> <th class="center">出站规则分组</th>
<th>引用服务</th> <th class="center">引用服务</th>
<th class="two wide">状态</th> <th class="two wide center">状态</th>
<th class="two op">操作</th> <th class="two op">操作</th>
</tr> </tr>
</thead> </thead>
<tr v-for="policy in policies"> <tr v-for="policy in policies">
<td>{{policy.name}}</td> <td>{{policy.name}}</td>
<td>{{policy.countInbound}}</td> <td class="center">{{policy.countInbound}}</td>
<td>{{policy.countOutbound}}</td> <td class="center">{{policy.countOutbound}}</td>
<td>{{policy.countServers}}</td> <td class="center">{{policy.countServers}}</td>
<td><label-on :v-is-on="policy.isOn"></label-on></td> <td class="center"><label-on :v-is-on="policy.isOn"></label-on></td>
<td> <td>
<a :href="'/servers/components/waf/policy?firewallPolicyId=' + policy.id">详情</a> &nbsp; <a :href="'/servers/components/waf/policy?firewallPolicyId=' + policy.id">详情</a> &nbsp;
<a href="" @click.prevent="deletePolicy(policy.id)">删除</a> <a href="" @click.prevent="deletePolicy(policy.id)">删除</a>

View File

@@ -11,7 +11,7 @@
<tr> <tr>
<td class="title">已封禁</td> <td class="title">已封禁</td>
<td> <td>
<div class="ui label tiny" v-for="country in countries" v-if="country.isChecked" style="margin-bottom: 0.5em"> <div class="ui label tiny basic" v-for="country in countries" v-if="country.isChecked" style="margin-bottom: 0.5em">
<input type="hidden" name="countryIds" :value="country.id"/> <input type="hidden" name="countryIds" :value="country.id"/>
({{country.letter}}){{country.name}} <a href="" @click.prevent="deselectCountry(country)" title="取消封禁"><i class="icon remove"></i></a> ({{country.letter}}){{country.name}} <a href="" @click.prevent="deselectCountry(country)" title="取消封禁"><i class="icon remove"></i></a>
</div> </div>

View File

@@ -11,7 +11,7 @@
<tr> <tr>
<td class="title">已封禁</td> <td class="title">已封禁</td>
<td> <td>
<div class="ui label tiny" v-for="province in provinces" v-if="province.isChecked" style="margin-bottom: 0.5em"> <div class="ui label tiny basic" v-for="province in provinces" v-if="province.isChecked" style="margin-bottom: 0.5em">
<input type="hidden" name="provinceIds" :value="province.id"/> <input type="hidden" name="provinceIds" :value="province.id"/>
{{province.name}} <a href="" @click.prevent="deselectProvince(province)" title="取消封禁"><i class="icon remove"></i></a> {{province.name}} <a href="" @click.prevent="deselectProvince(province)" title="取消封禁"><i class="icon remove"></i></a>
</div> </div>

View File

@@ -18,7 +18,7 @@
<tr> <tr>
<td>预置的规则分组</td> <td>预置的规则分组</td>
<td> <td>
<span class="ui label tiny" v-for="group in firewallPolicy.groups" style="margin-bottom:0.5em" :class="{disabled:!group.isOn}">{{group.name}}</span> <span class="ui label tiny basic" v-for="group in firewallPolicy.groups" style="margin-bottom:0.5em" :class="{disabled:!group.isOn}">{{group.name}}</span>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@@ -10,7 +10,7 @@
<select class="ui dropdown auto-width" name="frame" v-model="config.frame"> <select class="ui dropdown auto-width" name="frame" v-model="config.frame">
<option value="">不限制</option> <option value="">不限制</option>
<option value="SAMEORIGIN">仅限同域名</option> <option value="SAMEORIGIN">仅限同域名</option>
<option value="DENY">完全禁止</option> <!--<option value="DENY">完全禁止</option>-->
</select> </select>
<p class="comment">当前服务被别的网页框架嵌套的条件限制。</p> <p class="comment">当前服务被别的网页框架嵌套的条件限制。</p>
</td> </td>

View File

@@ -14,7 +14,7 @@
<tr> <tr>
<td class="title">绑定地址</td> <td class="title">绑定地址</td>
<td> <td>
<span v-for="listen in serverConfig.http.listen" class="ui label tiny">{{listen}}</span> <span v-for="listen in serverConfig.http.listen" class="ui label tiny basic">{{listen}}</span>
<p class="ui comment">如果地址中的IP是0.0.0.0表示服务器的所有IP都可以用来使用访问此服务。</p> <p class="ui comment">如果地址中的IP是0.0.0.0表示服务器的所有IP都可以用来使用访问此服务。</p>
</td> </td>
</tr> </tr>
@@ -33,7 +33,7 @@
<tr> <tr>
<td class="title">绑定地址</td> <td class="title">绑定地址</td>
<td> <td>
<span v-for="listen in serverConfig.https.listen" class="ui label tiny">{{listen}}</span> <span v-for="listen in serverConfig.https.listen" class="ui label tiny basic">{{listen}}</span>
<p class="ui comment">如果地址中的IP是0.0.0.0表示服务器的所有IP都可以用来使用访问此服务。</p> <p class="ui comment">如果地址中的IP是0.0.0.0表示服务器的所有IP都可以用来使用访问此服务。</p>
</td> </td>
</tr> </tr>