feat: 实现多站点数据隔离和管理功能
- 新增站点管理功能,替换原有的域名管理 - 添加数据库迁移工具,为现有表增加 site_id 字段 - 创建 useSite 组合式 API 统一管理站点状态 - 修改前后端 API 以支持站点筛选参数 - 更新管理界面,将域名筛选改为站点筛选 - 优化数据导出功能,支持按站点筛选导出 - 更新文档,调整站点 ID 默认值为空字符串 - 升级 wrangler 依赖至最新版本
This commit is contained in:
@@ -224,6 +224,7 @@ import {
|
||||
fetchLikeStats,
|
||||
type LikeStatsItem,
|
||||
} from "../../api/admin";
|
||||
import { useSite } from "../../composables/useSite";
|
||||
|
||||
const loading = ref(false);
|
||||
const listLoading = ref(false);
|
||||
@@ -240,6 +241,8 @@ const overview = ref<VisitOverviewResponse>({
|
||||
last30Days: [],
|
||||
});
|
||||
|
||||
const { currentSiteId } = useSite();
|
||||
|
||||
function calculateChange(current: number, previous: number) {
|
||||
if (previous === 0) {
|
||||
return current > 0 ? 100 : 0;
|
||||
@@ -271,8 +274,6 @@ const visitTab = ref<"pv" | "latest">("pv");
|
||||
const visitTabStorageKey = "cwd-analytics-visit-tab";
|
||||
const chartRangeStorageKey = "cwd-analytics-visit-chart-range";
|
||||
|
||||
const injectedDomainFilter = inject<Ref<string> | null>("domainFilter", null);
|
||||
const domainFilter = injectedDomainFilter ?? ref("");
|
||||
const last30Days = ref<{ date: string; total: number }[]>([]);
|
||||
const likeStatsItems = ref<LikeStatsItem[]>([]);
|
||||
const chartRange = ref<"7" | "30">("7");
|
||||
@@ -424,7 +425,7 @@ async function loadData() {
|
||||
listLoading.value = true;
|
||||
error.value = "";
|
||||
try {
|
||||
const domain = domainFilter.value || undefined;
|
||||
const domain = currentSiteId.value;
|
||||
const order = getVisitOrderParam();
|
||||
const [overviewRes, pagesRes, likeStatsRes] = await Promise.all([
|
||||
fetchVisitOverview(domain),
|
||||
@@ -589,7 +590,7 @@ onBeforeUnmount(() => {
|
||||
}
|
||||
});
|
||||
|
||||
watch(domainFilter, () => {
|
||||
watch(currentSiteId, () => {
|
||||
loadData();
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user