feat(admin): 添加后台域名可见性管理功能

在后台设置页面新增域名管理选项卡,允许管理员配置后台下拉框中显示的域名列表。通过拖拽或点击按钮可以移动域名,实现灵活的可视域名控制。当配置了可见域名时,LayoutView 将只显示指定的域名,否则显示全部域名。
This commit is contained in:
anghunk
2026-02-05 17:25:09 +08:00
parent f2e9160638
commit c580aec52d
6 changed files with 409 additions and 9 deletions

View File

@@ -173,7 +173,7 @@
<script setup lang="ts">
import { ref, onMounted, watch, provide, computed } from "vue";
import { useRouter, useRoute } from "vue-router";
import { logoutAdmin, fetchDomainList, fetchAdminDisplaySettings } from "../../api/admin";
import { logoutAdmin, fetchDomainList, fetchAdminDisplaySettings, fetchFeatureSettings } from "../../api/admin";
import { useTheme } from "../../composables/useTheme";
import packageJson from "../../../package.json";
@@ -215,8 +215,18 @@ const domainOptions = ref<string[]>([]);
async function loadDomains() {
try {
const res = await fetchDomainList();
const domains = Array.isArray(res.domains) ? res.domains : [];
const [domainRes, settingsRes] = await Promise.all([
fetchDomainList(),
fetchFeatureSettings().catch(() => ({ visibleDomains: undefined }))
]);
let domains = Array.isArray(domainRes.domains) ? domainRes.domains : [];
// 如果配置了显示域名,则仅显示配置的域名
if (settingsRes.visibleDomains && Array.isArray(settingsRes.visibleDomains) && settingsRes.visibleDomains.length > 0) {
domains = settingsRes.visibleDomains;
}
const set = new Set(domains);
if (domainFilter.value && !set.has(domainFilter.value)) {
set.add(domainFilter.value);