4 Commits d6fbd38d5d ... f8c42f1b59

Autor SHA1 Mensaje Fecha
  zhaonan f8c42f1b59 Merge branch 'dev-jcq' into dev-zhn hace 4 días
  jcq c28b6cf442 22 hace 4 días
  jcq 2217549887 111 hace 6 días
  jcq d3c8718bb7 左侧menu样式变更 hace 6 días

+ 58 - 0
erversq

@@ -0,0 +1,58 @@
+commit a0ce62b47d318b403aaad125e4024dace65231b5 (HEAD -> dev-jcq, origin/dev-zhn, origin/dev-ly)
+Author: zhaonan <[email protected]>
+Date:   Tue Sep 9 15:08:34 2025 +0800
+
+    style: 暂时隐藏多余ui + 弹窗样式
+
+commit a890fae1fed5c9fb4056ce9e0e5f1b2266f3a65f
+Merge: 99668ff a5741fe
+Author: zhaonan <[email protected]>
+Date:   Tue Sep 9 14:16:21 2025 +0800
+
+    Merge branch 'dev-ly' into dev-zhn
+
+commit 99668ff3eb7a06bdee7f845fa5d8590116522a86
+Author: zhaonan <[email protected]>
+Date:   Tue Sep 9 11:54:20 2025 +0800
+
+    style: 添加网站页面部分组件样式修改
+
+commit a5741fea59c506fc5e933245ac0e55da47a8651a (origin/dev-jcq, origin/dev-cmy, dev-ly)
+Merge: 821d0cd 6a6974e
+Author: cmy <[email protected]>
+Date:   Tue Sep 9 10:17:43 2025 +0800
+
+    Merge branch 'dev-ly' into dev-cmy
+    
+    # Conflicts:
+    #       src/components/server/ServerNameBox.vue
+
+commit 821d0cdd7e14a985183d1468d7b4922e15dca1f7
+Author: cmy <[email protected]>
+Date:   Tue Sep 9 10:15:30 2025 +0800
+
+    暂存
+
+commit 6a6974e0984d550714fe862dc836f6a108815f88
+Author: zhaonan <[email protected]>
+Date:   Mon Sep 8 17:10:17 2025 +0800
+
+    chore: 使用mock模拟demo数据以进入系统进行开发
+
+commit dd53e28351e32298422d6d0c97d73155d778cfe5
+Author: zhaonan <[email protected]>
+Date:   Mon Sep 8 16:27:58 2025 +0800
+
+    style: 添加网站页面部分样式修改
+
+commit b9a86bcd4c7c55e615ee03f1a7947805fe6805f5
+Author: zhaonan <[email protected]>
+Date:   Thu Sep 4 17:35:27 2025 +0800
+
+    style: 添加网站,DNS设置,套餐设置页面部分样式修改
+
+commit a6a8c5ba84fa97e6281d05e469b24f93071444d0 (origin/master, origin/HEAD, master)
+Author: luoy <[email protected]>
+Date:   Thu Sep 4 09:16:33 2025 +0800
+
+    first commit

+ 8 - 0
src/components/ui/TMenuAccordion.vue

@@ -116,4 +116,12 @@ const onPanelClose = e => {
 .t-active-item, :deep(.p-panelmenu-header-active a) {
 	color: var(--p-primary-color);
 }
+:deep(.p-panelmenu-panel){
+	background: transparent;
+	border: none;
+}
+:deep(.p-panelmenu-header:not(.p-disabled) .p-panelmenu-header-content):hover {
+	background: transparent;
+
+}
 </style>

+ 3 - 2
src/layouts/ChildLayout.vue

@@ -64,8 +64,9 @@ onUnmounted(() => {
 <style scoped lang="postcss">
 .left-box {
 	position: fixed;
-	top: 5em;
-	bottom: 1em;
+	top: 30px;
+	max-height: 627px;
+	/* bottom: 1em; */
 	overflow-y: auto;
 }
 

+ 128 - 87
src/views/dashboard/index.vue

@@ -1,9 +1,9 @@
 <script setup>
 // Copyright 2024 FlexCDN [email protected]. All rights reserved. Official site: https://flexcdn.cn .
 
-import ctxRef from "@/utils/ctx_ref.js"
-import Context from "./index.js"
-import "./index.css"
+import ctxRef from "@/utils/ctx_ref.js";
+import Context from "./index.js";
+import "./index.css";
 import WarningMessage from "@/components/common/WarningMessage.vue";
 import ColumnsGrid from "@/components/common/ColumnsGrid.vue";
 import LoadingMessage from "@/components/common/LoadingMessage.vue";
@@ -11,93 +11,134 @@ import CardView from "@/components/common/CardView.vue";
 import Cards from "@/components/common/Cards.vue";
 import CardRow from "@/components/common/CardRow.vue";
 
-const ctx = ctxRef(new Context())
-
+const ctx = ctxRef(new Context());
 </script>
 
 <template>
-	<WarningMessage v-if="ctx.emailVerificationMessage.length > 0">
-		<a href="/settings/email-verify">{{ ctx.emailVerificationMessage }}</a></WarningMessage>
-	<WarningMessage v-if="ctx.mobileVerificationMessage.length > 0">
-		<a href="/settings/mobile-verify">{{ ctx.mobileVerificationMessage }}</a></WarningMessage>
-	<WarningMessage v-if="!ctx.isVerified">您的账号正在审核中,请耐心等待完成,暂时不能使用相关功能。</WarningMessage>
-	<WarningMessage v-if="!ctx.isIdentified"><a href="/settings/identity">实名认证</a>后才能使用相关功能。
-	</WarningMessage>
-
-	<LoadingMessage v-if="ctx.isLoading">数据加载中...</LoadingMessage>
-
-	<ColumnsGrid class="ui columns grid counter-chart" :class="{'three columns': !ctx.uiConfig.showTrafficCharts || !ctx.uiConfig.showBandwidthCharts, 'four columns': ctx.uiConfig.showTrafficCharts && ctx.uiConfig.showBandwidthCharts }" v-if="!ctx.isLoading">
-		<div class="ui column">
-			<h5>加速网站数量</h5>
-			<div class="value"><span>{{ ctx.dashboard.countServers }}</span>个</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
-			<h5>本月总流量</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.monthlyTrafficBytes }}</span>{{ ctx.dashboard.monthlyTrafficBytesUnit }}
-			</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
-			<h5>本月带宽峰值</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.monthlyPeekBandwidthBytes }}</span>{{ ctx.dashboard.monthlyPeekBandwidthBytesUnit }}
-			</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
-			<h5>今日流量</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.dailyTrafficBytes }}</span>{{ ctx.dashboard.dailyTrafficBytesUnit }}
-			</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
-			<h5>今日带宽峰值</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.dailyPeekBandwidthBytes }}</span>{{ ctx.dashboard.dailyPeekBandwidthBytesUnit }}
-			</div>
-		</div>
-	</ColumnsGrid>
-
-	<Cards>
-		<CardView v-if="ctx.posts && ctx.posts.length > 0">
-			<template #header>最新活动</template>
-
-			<CardRow class="!pb-1 !pt-0" v-for="post in ctx.posts">
-				<template #value>
-					<a :href="'/posts/post?postId=' + post.id" :target="(post.type == 'url') ? '_blank' : '_self'">
-						<span class="gray" v-if="post.category && post.category.name && post.category.name.length > 0">[{{post.category.name}}]</span>
-						{{post.subject}} <i class="pi pi-external-link tiny" v-if="post.type == 'url'"></i> <span class="gray small ml-1">{{post.createdTime}}</span>
-					</a>
-				</template>
-			</CardRow>
-		</CardView>
-
-
-		<div v-if="ctx.uiConfig.showTrafficCharts && !ctx.isLoading">
-			<CardView cols="1">
-				<template #header>近 30 日流量趋势 <span class="text-base gray">(单位:字节)</span></template>
-				<CardRow>
-					<template #value>
-						<div class="chart-box" id="daily-traffic-chart"></div>
-					</template>
-				</CardRow>
-			</CardView>
-		</div>
-
-		<div v-if="ctx.uiConfig.showBandwidthCharts && !ctx.isLoading">
-			<CardView cols="1">
-				<template #header>近 30 日带宽趋势</template>
-				<CardRow>
-					<template #value>
-						<div class="chart-box" id="daily-peek-bandwidth-chart"></div>
-					</template>
-				</CardRow>
-			</CardView>
-		</div>
-	</Cards>
+  <WarningMessage v-if="ctx.emailVerificationMessage.length > 0">
+    <a href="/settings/email-verify">{{
+      ctx.emailVerificationMessage
+    }}</a></WarningMessage
+  >
+  <WarningMessage v-if="ctx.mobileVerificationMessage.length > 0">
+    <a href="/settings/mobile-verify">{{
+      ctx.mobileVerificationMessage
+    }}</a></WarningMessage
+  >
+  <WarningMessage v-if="!ctx.isVerified"
+    >您的账号正在审核中,请耐心等待完成,暂时不能使用相关功能。</WarningMessage
+  >
+  <WarningMessage v-if="!ctx.isIdentified"
+    ><a href="/settings/identity">实名认证</a>后才能使用相关功能。
+  </WarningMessage>
+
+  <LoadingMessage v-if="ctx.isLoading">数据加载中...</LoadingMessage>
+
+  <ColumnsGrid
+    class="ui columns grid counter-chart"
+    v-if="!ctx.isLoading"
+    :class="[
+      'ui columns grid counter-chart',
+      `${
+        ctx.uiConfig.showTrafficCharts && ctx.uiConfig.showBandwidthCharts
+          ? 'four'
+          : 'three'
+      } columns`,
+    ]"
+  >
+    <div class="ui column">
+      <h5>加速网站数量</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.countServers }}</span
+        >个
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
+      <h5>本月总流量</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.monthlyTrafficBytes }}</span
+        >{{ ctx.dashboard.monthlyTrafficBytesUnit }}
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
+      <h5>本月带宽峰值</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.monthlyPeekBandwidthBytes }}</span
+        >{{ ctx.dashboard.monthlyPeekBandwidthBytesUnit }}
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
+      <h5>今日流量</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.dailyTrafficBytes }}</span
+        >{{ ctx.dashboard.dailyTrafficBytesUnit }}
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
+      <h5>今日带宽峰值</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.dailyPeekBandwidthBytes }}</span
+        >{{ ctx.dashboard.dailyPeekBandwidthBytesUnit }}
+      </div>
+    </div>
+  </ColumnsGrid>
+
+  <Cards>
+    <CardView v-if="ctx.posts && ctx.posts.length > 0">
+      <template #header>最新活动</template>
+
+      <CardRow class="!pb-1 !pt-0" v-for="post in ctx.posts">
+        <template #value>
+          <a
+            :href="'/posts/post?postId=' + post.id"
+            :target="post.type == 'url' ? '_blank' : '_self'"
+          >
+            <span
+              class="gray"
+              v-if="
+                post.category &&
+                post.category.name &&
+                post.category.name.length > 0
+              "
+              >[{{ post.category.name }}]</span
+            >
+            {{ post.subject }}
+            <i class="pi pi-external-link tiny" v-if="post.type == 'url'"></i>
+            <span class="gray small ml-1">{{ post.createdTime }}</span>
+          </a>
+        </template>
+      </CardRow>
+    </CardView>
+
+    <div v-if="ctx.uiConfig.showTrafficCharts && !ctx.isLoading">
+      <CardView cols="1">
+        <template #header
+          >近 30 日流量趋势
+          <span class="text-base gray">(单位:字节)</span></template
+        >
+        <CardRow>
+          <template #value>
+            <div class="chart-box" id="daily-traffic-chart"></div>
+          </template>
+        </CardRow>
+      </CardView>
+    </div>
+
+    <div v-if="ctx.uiConfig.showBandwidthCharts && !ctx.isLoading">
+      <CardView cols="1">
+        <template #header>近 30 日带宽趋势</template>
+        <CardRow>
+          <template #value>
+            <div class="chart-box" id="daily-peek-bandwidth-chart"></div>
+          </template>
+        </CardRow>
+      </CardView>
+    </div>
+  </Cards>
 </template>
 
 <style lang="postcss" scoped>

+ 1048 - 0
src/views/index/initData.js

@@ -1,4 +1,1052 @@
 const dataMaps = {
+    "/servers/server/settings/serverNames":{
+        "auditingResult": {
+            "createdTime": "1970-01-01 08:00:00",
+            "isOk": true,
+            "reason": ""
+        },
+        "firstMenuItem": "index",
+        "isAuditing": false,
+        "leftMenuActiveItem": {
+            "isActive": true,
+            "isOn": true,
+            "name": "域名",
+            "url": "/servers/server/settings/serverNames?serverId=1"
+        },
+        "leftMenuItemIsDisabled": false,
+        "leftMenuItems": [
+            {
+                "isActive": true,
+                "isOn": true,
+                "name": "域名",
+                "url": "/servers/server/settings/serverNames?serverId=1",
+                "label": "域名"
+            },
+            {
+                "isActive": false,
+                "name": "DNS",
+                "url": "/servers/server/settings/dns?serverId=1",
+                "label": "DNS"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "套餐",
+                "subName": "",
+                "url": "/servers/server/settings/plan?serverId=1",
+                "label": "套餐"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTP",
+                "url": "/servers/server/settings/http?serverId=1",
+                "label": "HTTP"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTPS",
+                "url": "/servers/server/settings/https?serverId=1",
+                "label": "HTTPS"
+            },
+            {
+                "configCode": "reverseProxy",
+                "isActive": false,
+                "isOn": true,
+                "name": "源站",
+                "url": "/servers/server/settings/reverseProxy?serverId=1",
+                "label": "源站"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "uam",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "5秒盾",
+                "url": "/servers/server/settings/uam?serverId=1",
+                "label": "5秒盾"
+            },
+            {
+                "configCode": "cc",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "CC防护",
+                "url": "/servers/server/settings/cc?serverId=1",
+                "label": "CC防护"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "hostRedirects",
+                "isActive": false,
+                "isOn": false,
+                "name": "URL跳转",
+                "url": "/servers/server/settings/redirects?serverId=1",
+                "label": "URL跳转"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "重写规则",
+                "url": "/servers/server/settings/rewrite?serverId=1",
+                "label": "重写规则"
+            },
+            {
+                "configCode": "waf",
+                "isActive": false,
+                "isOn": false,
+                "name": "WAF",
+                "url": "/servers/server/settings/waf?serverId=1",
+                "label": "WAF"
+            },
+            {
+                "configCode": "cache",
+                "isActive": false,
+                "isOn": false,
+                "name": "缓存",
+                "url": "/servers/server/settings/cache?serverId=1",
+                "label": "缓存"
+            },
+            {
+                "configCode": "auth",
+                "isActive": false,
+                "isOn": false,
+                "name": "访问鉴权",
+                "url": "/servers/server/settings/access?serverId=1",
+                "label": "访问鉴权"
+            },
+            {
+                "configCode": "referers",
+                "isActive": false,
+                "isOn": false,
+                "name": "防盗链",
+                "url": "/servers/server/settings/referers?serverId=1",
+                "label": "防盗链"
+            },
+            {
+                "configCode": "userAgent",
+                "isActive": false,
+                "isOn": false,
+                "name": "UA名单",
+                "url": "/servers/server/settings/userAgent?serverId=1",
+                "label": "UA名单"
+            },
+            {
+                "configCode": "accessLog",
+                "isActive": false,
+                "isOn": true,
+                "name": "访问日志",
+                "url": "/servers/server/settings/accessLog?serverId=1",
+                "label": "访问日志"
+            },
+            {
+                "configCode": "compression",
+                "isActive": false,
+                "isOn": false,
+                "name": "内容压缩",
+                "url": "/servers/server/settings/compression?serverId=1",
+                "label": "内容压缩"
+            },
+            {
+                "configCode": "pages",
+                "isActive": false,
+                "isOn": false,
+                "name": "自定义页面",
+                "url": "/servers/server/settings/pages?serverId=1",
+                "label": "自定义页面"
+            },
+            {
+                "isActive": false,
+                "isOn": true,
+                "name": "HTTP报头",
+                "url": "/servers/server/settings/headers?serverId=1",
+                "label": "HTTP报头"
+            },
+            {
+                "configCode": "websocket",
+                "isActive": false,
+                "isOn": true,
+                "name": "Websocket",
+                "url": "/servers/server/settings/websocket?serverId=1",
+                "label": "Websocket"
+            },
+            {
+                "configCode": "grpc",
+                "isActive": false,
+                "isOn": false,
+                "name": "gRPC",
+                "url": "/servers/server/settings/grpc?serverId=1",
+                "label": "gRPC"
+            },
+            {
+                "configCode": "webp",
+                "isActive": false,
+                "isOn": false,
+                "name": "WebP",
+                "url": "/servers/server/settings/webp?serverId=1",
+                "label": "WebP"
+            },
+            {
+                "configCode": "optimization",
+                "isActive": false,
+                "isOn": false,
+                "name": "页面优化",
+                "url": "/servers/server/settings/optimization?serverId=1",
+                "label": "页面优化"
+            },
+            {
+                "configCode": "multimedia",
+                "isActive": false,
+                "isOn": false,
+                "name": "音视频设置",
+                "url": "/servers/server/settings/multimedia?serverId=1",
+                "label": "音视频设置"
+            },
+            {
+                "configCode": "stat",
+                "isActive": false,
+                "isOn": true,
+                "name": "统计",
+                "url": "/servers/server/settings/stat?serverId=1",
+                "label": "统计"
+            },
+            {
+                "configCode": "charset",
+                "isActive": false,
+                "isOn": false,
+                "name": "字符编码",
+                "url": "/servers/server/settings/charset?serverId=1",
+                "label": "字符编码"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "分组",
+                "url": "/servers/server/settings/groups?serverId=1",
+                "label": "分组"
+            },
+            {
+                "configCode": "remoteAddr",
+                "isActive": false,
+                "isOn": true,
+                "name": "访客IP地址",
+                "url": "/servers/server/settings/remoteAddr?serverId=1",
+                "label": "访客IP地址"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "请求限制",
+                "url": "/servers/server/settings/requestLimit?serverId=1",
+                "label": "请求限制"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "边缘脚本",
+                "url": "/servers/server/settings/requestScripts?serverId=1",
+                "label": "边缘脚本"
+            }
+        ],
+        "mainTab": "setting",
+        "secondMenuItem": "serverName",
+        "server": {
+            "clusterId": 1,
+            "id": 1,
+            "name": "example.com"
+        },
+        "serverFamily": "http",
+        "serverId": 1,
+        "serverNames": [
+            {
+                "name": "example.com",
+                "type": "full",
+                "subNames": null
+            },
+            {
+                "name": "www.example.com",
+                "type": "full",
+                "subNames": null
+            }
+        ],
+        "teaBadge": 0,
+        "teaCommon": {
+            "teaIsPlus": true,
+            "teaLogoFileId": 0,
+            "teaShowVersion": true,
+            "teaUsername": "默认用户"
+        },
+        "teaDemoEnabled": false,
+        "teaDocURL": "",
+        "teaFaviconFileId": 0,
+        "teaFrontMode": "",
+        "teaIsSuper": false,
+        "teaLang": "zh-cn",
+        "teaMenu": "servers",
+        "teaModules": [
+            {
+                "code": "dashboard",
+                "icon": "dashboard",
+                "isOn": true,
+                "name": "概览",
+                "subItems": []
+            },
+            {
+                "code": "servers",
+                "icon": "pi-sitemap",
+                "isOn": true,
+                "name": "CDN加速",
+                "subItems": [
+                    {
+                        "code": "servers",
+                        "name": "我的网站",
+                        "url": "/servers"
+                    },
+                    {
+                        "code": "cache",
+                        "name": "刷新预热",
+                        "url": "/servers/cache"
+                    },
+                    {
+                        "code": "certs",
+                        "name": "证书管理",
+                        "url": "/servers/certs"
+                    },
+                    {
+                        "code": "acme",
+                        "isOn": true,
+                        "name": "证书申请",
+                        "url": "/servers/certs/acme"
+                    },
+                    {
+                        "code": "trafficStat",
+                        "isOn": true,
+                        "name": "用量统计",
+                        "url": "/servers/traffic-stats"
+                    },
+                    {
+                        "code": "fee",
+                        "isOn": false,
+                        "name": "计费方式",
+                        "url": "/servers/fee"
+                    },
+                    {
+                        "code": "trafficPackage",
+                        "isOn": false,
+                        "name": "流量包",
+                        "url": "/servers/packages"
+                    }
+                ]
+            },
+            {
+                "code": "lb",
+                "icon": "paper plane",
+                "isOn": true,
+                "name": "负载均衡"
+            },
+            {
+                "code": "waf",
+                "icon": "magnet",
+                "isOn": true,
+                "name": "WAF安全",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/waf"
+                    },
+                    {
+                        "code": "wafLogs",
+                        "name": "拦截日志",
+                        "url": "/waf/logs"
+                    },
+                    {
+                        "code": "iplist",
+                        "name": "拦截IP",
+                        "url": "/waf/iplists"
+                    }
+                ]
+            },
+            {
+                "code": "plans",
+                "icon": "puzzle piece",
+                "isOn": true,
+                "name": "套餐管理"
+            },
+            {
+                "code": "anti-ddos",
+                "icon": "shield",
+                "isOn": true,
+                "name": "DDoS高防",
+                "subItems": [
+                    {
+                        "code": "instance",
+                        "name": "实例列表",
+                        "url": "/anti-ddos/instances"
+                    },
+                    {
+                        "code": "package",
+                        "name": "购买实例",
+                        "url": "/anti-ddos/packages"
+                    }
+                ]
+            },
+            {
+                "code": "ns",
+                "icon": "globe",
+                "isOn": true,
+                "name": "域名解析",
+                "subItems": [
+                    {
+                        "code": "domain",
+                        "name": "我的域名",
+                        "url": "/ns/domains"
+                    },
+                    {
+                        "code": "domainGroup",
+                        "name": "域名分组",
+                        "url": "/ns/domains/groups"
+                    },
+                    {
+                        "code": "domainBatch",
+                        "name": "批量操作",
+                        "url": "/ns/domains/batch"
+                    },
+                    {
+                        "code": "route",
+                        "name": "线路管理",
+                        "url": "/ns/routes"
+                    },
+                    {
+                        "code": "plan",
+                        "name": "套餐",
+                        "url": "/ns/plans"
+                    }
+                ]
+            },
+            {
+                "code": "finance",
+                "icon": "dollar sign",
+                "isOn": true,
+                "name": "财务管理",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/finance"
+                    },
+                    {
+                        "code": "bills",
+                        "name": "费用账单",
+                        "url": "/finance/bills"
+                    },
+                    {
+                        "code": "logs",
+                        "name": "收支明细",
+                        "url": "/finance/logs"
+                    },
+                    {
+                        "code": "charge",
+                        "name": "充值",
+                        "url": "/finance/charge"
+                    }
+                ]
+            },
+            {
+                "code": "tickets",
+                "icon": "ticket",
+                "isOn": true,
+                "name": "工单系统"
+            },
+            {
+                "code": "acl",
+                "icon": "address book",
+                "isOn": true,
+                "name": "访问控制"
+            }
+        ],
+        "teaName": "FlexCDN演示",
+        "teaPageFooterHTML": "",
+        "teaRole": "user",
+        "teaShowIndexPage": false,
+        "teaShowPageFooter": false,
+        "teaSubMenu": "",
+        "teaSubMenus": [],
+        "teaTabbar": [
+            {
+                "icon": "",
+                "isActive": false,
+                "name": "网站列表",
+                "right": false,
+                "subName": "",
+                "url": "/servers"
+            },
+            {
+                "icon": "setting",
+                "isActive": true,
+                "name": "设置",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server?serverId=1"
+            },
+            {
+                "icon": "chart area",
+                "isActive": false,
+                "name": "统计",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/stat?serverId=1"
+            },
+            {
+                "icon": "history",
+                "isActive": false,
+                "name": "访问日志",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/log?serverId=1"
+            }
+        ],
+        "teaTheme": "violet",
+        "teaTitle": "FlexCDN用户系统演示",
+        "teaUserAvatar": "",
+        "teaVersion": "1.1.1"
+    },
+    "/servers/server/settings/dns":{
+        "dnsDomain": "",
+        "dnsName": "58d058e7",
+        "firstMenuItem": "index",
+        "leftMenuActiveItem": {
+            "isActive": true,
+            "name": "DNS",
+            "url": "/servers/server/settings/dns?serverId=1"
+        },
+        "leftMenuItemIsDisabled": false,
+        "leftMenuItems": [
+            {
+                "isActive": false,
+                "isOn": true,
+                "name": "域名",
+                "url": "/servers/server/settings/serverNames?serverId=1",
+                "label": "域名"
+            },
+            {
+                "isActive": true,
+                "name": "DNS",
+                "url": "/servers/server/settings/dns?serverId=1",
+                "label": "DNS"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "套餐",
+                "subName": "",
+                "url": "/servers/server/settings/plan?serverId=1",
+                "label": "套餐"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTP",
+                "url": "/servers/server/settings/http?serverId=1",
+                "label": "HTTP"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTPS",
+                "url": "/servers/server/settings/https?serverId=1",
+                "label": "HTTPS"
+            },
+            {
+                "configCode": "reverseProxy",
+                "isActive": false,
+                "isOn": true,
+                "name": "源站",
+                "url": "/servers/server/settings/reverseProxy?serverId=1",
+                "label": "源站"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "uam",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "5秒盾",
+                "url": "/servers/server/settings/uam?serverId=1",
+                "label": "5秒盾"
+            },
+            {
+                "configCode": "cc",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "CC防护",
+                "url": "/servers/server/settings/cc?serverId=1",
+                "label": "CC防护"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "hostRedirects",
+                "isActive": false,
+                "isOn": false,
+                "name": "URL跳转",
+                "url": "/servers/server/settings/redirects?serverId=1",
+                "label": "URL跳转"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "重写规则",
+                "url": "/servers/server/settings/rewrite?serverId=1",
+                "label": "重写规则"
+            },
+            {
+                "configCode": "waf",
+                "isActive": false,
+                "isOn": false,
+                "name": "WAF",
+                "url": "/servers/server/settings/waf?serverId=1",
+                "label": "WAF"
+            },
+            {
+                "configCode": "cache",
+                "isActive": false,
+                "isOn": false,
+                "name": "缓存",
+                "url": "/servers/server/settings/cache?serverId=1",
+                "label": "缓存"
+            },
+            {
+                "configCode": "auth",
+                "isActive": false,
+                "isOn": false,
+                "name": "访问鉴权",
+                "url": "/servers/server/settings/access?serverId=1",
+                "label": "访问鉴权"
+            },
+            {
+                "configCode": "referers",
+                "isActive": false,
+                "isOn": false,
+                "name": "防盗链",
+                "url": "/servers/server/settings/referers?serverId=1",
+                "label": "防盗链"
+            },
+            {
+                "configCode": "userAgent",
+                "isActive": false,
+                "isOn": false,
+                "name": "UA名单",
+                "url": "/servers/server/settings/userAgent?serverId=1",
+                "label": "UA名单"
+            },
+            {
+                "configCode": "accessLog",
+                "isActive": false,
+                "isOn": true,
+                "name": "访问日志",
+                "url": "/servers/server/settings/accessLog?serverId=1",
+                "label": "访问日志"
+            },
+            {
+                "configCode": "compression",
+                "isActive": false,
+                "isOn": false,
+                "name": "内容压缩",
+                "url": "/servers/server/settings/compression?serverId=1",
+                "label": "内容压缩"
+            },
+            {
+                "configCode": "pages",
+                "isActive": false,
+                "isOn": false,
+                "name": "自定义页面",
+                "url": "/servers/server/settings/pages?serverId=1",
+                "label": "自定义页面"
+            },
+            {
+                "isActive": false,
+                "isOn": true,
+                "name": "HTTP报头",
+                "url": "/servers/server/settings/headers?serverId=1",
+                "label": "HTTP报头"
+            },
+            {
+                "configCode": "websocket",
+                "isActive": false,
+                "isOn": true,
+                "name": "Websocket",
+                "url": "/servers/server/settings/websocket?serverId=1",
+                "label": "Websocket"
+            },
+            {
+                "configCode": "grpc",
+                "isActive": false,
+                "isOn": false,
+                "name": "gRPC",
+                "url": "/servers/server/settings/grpc?serverId=1",
+                "label": "gRPC"
+            },
+            {
+                "configCode": "webp",
+                "isActive": false,
+                "isOn": false,
+                "name": "WebP",
+                "url": "/servers/server/settings/webp?serverId=1",
+                "label": "WebP"
+            },
+            {
+                "configCode": "optimization",
+                "isActive": false,
+                "isOn": false,
+                "name": "页面优化",
+                "url": "/servers/server/settings/optimization?serverId=1",
+                "label": "页面优化"
+            },
+            {
+                "configCode": "multimedia",
+                "isActive": false,
+                "isOn": false,
+                "name": "音视频设置",
+                "url": "/servers/server/settings/multimedia?serverId=1",
+                "label": "音视频设置"
+            },
+            {
+                "configCode": "stat",
+                "isActive": false,
+                "isOn": true,
+                "name": "统计",
+                "url": "/servers/server/settings/stat?serverId=1",
+                "label": "统计"
+            },
+            {
+                "configCode": "charset",
+                "isActive": false,
+                "isOn": false,
+                "name": "字符编码",
+                "url": "/servers/server/settings/charset?serverId=1",
+                "label": "字符编码"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "分组",
+                "url": "/servers/server/settings/groups?serverId=1",
+                "label": "分组"
+            },
+            {
+                "configCode": "remoteAddr",
+                "isActive": false,
+                "isOn": true,
+                "name": "访客IP地址",
+                "url": "/servers/server/settings/remoteAddr?serverId=1",
+                "label": "访客IP地址"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "请求限制",
+                "url": "/servers/server/settings/requestLimit?serverId=1",
+                "label": "请求限制"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "边缘脚本",
+                "url": "/servers/server/settings/requestScripts?serverId=1",
+                "label": "边缘脚本"
+            }
+        ],
+        "mainMenu": "",
+        "mainTab": "setting",
+        "secondMenuItem": "dns",
+        "server": {
+            "clusterId": 1,
+            "id": 1,
+            "name": "example.com"
+        },
+        "serverFamily": "http",
+        "serverId": 1,
+        "teaBadge": 0,
+        "teaCommon": {
+            "teaIsPlus": true,
+            "teaLogoFileId": 0,
+            "teaShowVersion": true,
+            "teaUsername": "默认用户"
+        },
+        "teaDemoEnabled": false,
+        "teaDocURL": "",
+        "teaFaviconFileId": 0,
+        "teaFrontMode": "",
+        "teaIsSuper": false,
+        "teaLang": "zh-cn",
+        "teaMenu": "servers",
+        "teaModules": [
+            {
+                "code": "dashboard",
+                "icon": "dashboard",
+                "isOn": true,
+                "name": "概览",
+                "subItems": []
+            },
+            {
+                "code": "servers",
+                "icon": "pi-sitemap",
+                "isOn": true,
+                "name": "CDN加速",
+                "subItems": [
+                    {
+                        "code": "servers",
+                        "name": "我的网站",
+                        "url": "/servers"
+                    },
+                    {
+                        "code": "cache",
+                        "name": "刷新预热",
+                        "url": "/servers/cache"
+                    },
+                    {
+                        "code": "certs",
+                        "name": "证书管理",
+                        "url": "/servers/certs"
+                    },
+                    {
+                        "code": "acme",
+                        "isOn": true,
+                        "name": "证书申请",
+                        "url": "/servers/certs/acme"
+                    },
+                    {
+                        "code": "trafficStat",
+                        "isOn": true,
+                        "name": "用量统计",
+                        "url": "/servers/traffic-stats"
+                    },
+                    {
+                        "code": "fee",
+                        "isOn": false,
+                        "name": "计费方式",
+                        "url": "/servers/fee"
+                    },
+                    {
+                        "code": "trafficPackage",
+                        "isOn": false,
+                        "name": "流量包",
+                        "url": "/servers/packages"
+                    }
+                ]
+            },
+            {
+                "code": "lb",
+                "icon": "paper plane",
+                "isOn": true,
+                "name": "负载均衡"
+            },
+            {
+                "code": "waf",
+                "icon": "magnet",
+                "isOn": true,
+                "name": "WAF安全",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/waf"
+                    },
+                    {
+                        "code": "wafLogs",
+                        "name": "拦截日志",
+                        "url": "/waf/logs"
+                    },
+                    {
+                        "code": "iplist",
+                        "name": "拦截IP",
+                        "url": "/waf/iplists"
+                    }
+                ]
+            },
+            {
+                "code": "plans",
+                "icon": "puzzle piece",
+                "isOn": true,
+                "name": "套餐管理"
+            },
+            {
+                "code": "anti-ddos",
+                "icon": "shield",
+                "isOn": true,
+                "name": "DDoS高防",
+                "subItems": [
+                    {
+                        "code": "instance",
+                        "name": "实例列表",
+                        "url": "/anti-ddos/instances"
+                    },
+                    {
+                        "code": "package",
+                        "name": "购买实例",
+                        "url": "/anti-ddos/packages"
+                    }
+                ]
+            },
+            {
+                "code": "ns",
+                "icon": "globe",
+                "isOn": true,
+                "name": "域名解析",
+                "subItems": [
+                    {
+                        "code": "domain",
+                        "name": "我的域名",
+                        "url": "/ns/domains"
+                    },
+                    {
+                        "code": "domainGroup",
+                        "name": "域名分组",
+                        "url": "/ns/domains/groups"
+                    },
+                    {
+                        "code": "domainBatch",
+                        "name": "批量操作",
+                        "url": "/ns/domains/batch"
+                    },
+                    {
+                        "code": "route",
+                        "name": "线路管理",
+                        "url": "/ns/routes"
+                    },
+                    {
+                        "code": "plan",
+                        "name": "套餐",
+                        "url": "/ns/plans"
+                    }
+                ]
+            },
+            {
+                "code": "finance",
+                "icon": "dollar sign",
+                "isOn": true,
+                "name": "财务管理",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/finance"
+                    },
+                    {
+                        "code": "bills",
+                        "name": "费用账单",
+                        "url": "/finance/bills"
+                    },
+                    {
+                        "code": "logs",
+                        "name": "收支明细",
+                        "url": "/finance/logs"
+                    },
+                    {
+                        "code": "charge",
+                        "name": "充值",
+                        "url": "/finance/charge"
+                    }
+                ]
+            },
+            {
+                "code": "tickets",
+                "icon": "ticket",
+                "isOn": true,
+                "name": "工单系统"
+            },
+            {
+                "code": "acl",
+                "icon": "address book",
+                "isOn": true,
+                "name": "访问控制"
+            }
+        ],
+        "teaName": "FlexCDN演示",
+        "teaPageFooterHTML": "",
+        "teaRole": "user",
+        "teaShowIndexPage": false,
+        "teaShowPageFooter": false,
+        "teaSubMenu": "",
+        "teaSubMenus": [],
+        "teaTabbar": [
+            {
+                "icon": "",
+                "isActive": false,
+                "name": "网站列表",
+                "right": false,
+                "subName": "",
+                "url": "/servers"
+            },
+            {
+                "icon": "setting",
+                "isActive": true,
+                "name": "设置",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server?serverId=1"
+            },
+            {
+                "icon": "chart area",
+                "isActive": false,
+                "name": "统计",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/stat?serverId=1"
+            },
+            {
+                "icon": "history",
+                "isActive": false,
+                "name": "访问日志",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/log?serverId=1"
+            }
+        ],
+        "teaTheme": "violet",
+        "teaTitle": "FlexCDN用户系统演示",
+        "teaUserAvatar": "",
+        "teaVersion": "1.1.1"
+    },
     "/": {
         "canRegister": true,
         "canResetPassword": true,

+ 3 - 1
src/views/layout.vue

@@ -168,6 +168,7 @@ const showMainMenu = () => {
 	z-index: 1000;
 	overflow-x: auto;
 	border: 0 !important;
+	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
 
 	.red {
 		color: var(--p-red-500) !important;
@@ -221,7 +222,7 @@ const showMainMenu = () => {
 .main-menu {
 	position: fixed;
 	left: 0.8em;
-	top: 4.6em;
+	top: 5.6em;
 	bottom: 0;
 	overflow-y: auto;
 	overflow-x: hidden;
@@ -288,6 +289,7 @@ div.comment em {
 .main {
 	padding-bottom: 1em;
 	font-family: Source Han Sans SC;
+	margin-top: .6em;
 }
 
 .main-box {

+ 1 - 1
src/views/servers/server/settings/serverNames/index.vue

@@ -36,7 +36,7 @@ const ctx = ctxRef(new Context())
 				<DefinitionTable>
 					<tbody>
 						<tr>
-							<td class="title">已绑定的域名</td>
+							<td class="title items-center">已绑定的域名</td>
 							<td>
 								<ServerNameBox :v-server-names="ctx.serverNames"></ServerNameBox>
 							</td>