diff --git a/web/delivery-platform-ui/src/layout/MainLayout.vue b/web/delivery-platform-ui/src/layout/MainLayout.vue
index 8f167b9..a6e6b7f 100644
--- a/web/delivery-platform-ui/src/layout/MainLayout.vue
+++ b/web/delivery-platform-ui/src/layout/MainLayout.vue
@@ -136,6 +136,7 @@ const menuItems = [
{ path: "/devices", icon: "🖥️", label: "设备管理", roles: ["SYS_ADMIN","SALES","DELIVERY"] },
{ path: "/todos", icon: "🔔", label: "待办中心", roles: ["SYS_ADMIN","SALES","LICENSE_OPS"] },
{ path: "/reports/contract-sn", icon: "📊", label: "报表中心", roles: ["SYS_ADMIN"] },
+ { path: "/reports/subscriptions", icon: "📧", label: "报表订阅", roles: ["SYS_ADMIN"] },
];
const visibleMenu = computed(() => menuItems.filter(m => auth.hasAnyRole(m.roles)));
diff --git a/web/delivery-platform-ui/src/router/index.js b/web/delivery-platform-ui/src/router/index.js
index 1ce10ee..ed5deff 100644
--- a/web/delivery-platform-ui/src/router/index.js
+++ b/web/delivery-platform-ui/src/router/index.js
@@ -188,6 +188,12 @@ const routes = [
component: () => import("../views/ProfileView.vue"),
meta: { roles: ["SYS_ADMIN", "SALES", "LICENSE_OPS"], title: "个人设置" },
},
+ {
+ path: "reports/subscriptions",
+ name: "report-subscriptions",
+ component: () => import("../views/SubscriptionReportView.vue"),
+ meta: { roles: ["SYS_ADMIN"], title: "报表订阅" },
+ },
{
path: "reports/project-health",
name: "project-health",
diff --git a/web/delivery-platform-ui/src/views/HomeView.vue b/web/delivery-platform-ui/src/views/HomeView.vue
index 8210b50..340afcf 100644
--- a/web/delivery-platform-ui/src/views/HomeView.vue
+++ b/web/delivery-platform-ui/src/views/HomeView.vue
@@ -44,6 +44,7 @@ const allModuleLinks = [
{ to: "/devices", label: "设备管理", roles: ["SYS_ADMIN", "SALES", "DELIVERY"] },
{ to: "/todos", label: "待办中心", roles: ["SYS_ADMIN", "SALES", "LICENSE_OPS"] },
{ to: "/reports/contract-sn", label: "报表中心", roles: ["SYS_ADMIN"] },
+ { to: "/reports/subscriptions", label: "报表订阅", roles: ["SYS_ADMIN"] },
];
const visibleModuleLinks = computed(() => allModuleLinks.filter((l) => auth.hasAnyRole(l.roles)));
diff --git a/web/delivery-platform-ui/src/views/SubscriptionReportView.vue b/web/delivery-platform-ui/src/views/SubscriptionReportView.vue
new file mode 100644
index 0000000..0051181
--- /dev/null
+++ b/web/delivery-platform-ui/src/views/SubscriptionReportView.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+ 报表订阅
+ 新建订阅
+
+
+
+
+
+
+ {{ row.reportType === 'contract-sn' ? '履约对账' : row.reportType === 'callback-stats' ? 'Callback 统计' : row.reportType }}
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+