-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
暂无权限
+
开放网关控制台仅对超级管理员开放{{ userName ? `,当前账号:${userName}` : "" }}
+
@@ -82,4 +110,38 @@ body {
height: 100%;
overflow-y: auto;
}
+
+/* 通道撑满模型(§4):列表页根节点 page-wrapper yh-fill,flex 纵向铺满、表格区实测高 */
+.base-wrap-main .page-wrapper {
+ height: 100%;
+}
+
+/* 暂无权限页:整幅居中,配色全走主题令牌(禁写死品牌色,§1) */
+.gate-denied {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--page-bg, #f5f7fa);
+}
+.gate-denied-card {
+ text-align: center;
+ padding: 48px 64px;
+ background: var(--card-bg, #fff);
+ border-radius: 16px;
+}
+.gate-denied-icon {
+ font-size: 44px;
+ color: var(--brand);
+}
+.gate-denied-title {
+ margin: 16px 0 8px;
+ font-size: 18px;
+ color: var(--text-main, #17233d);
+}
+.gate-denied-desc {
+ margin: 0;
+ font-size: 13px;
+ color: var(--text-sub, #808695);
+}
diff --git a/src/assets/mock/gatewayApi.ts b/src/assets/mock/gatewayApi.ts
index 73d7fe3..c8cc242 100644
--- a/src/assets/mock/gatewayApi.ts
+++ b/src/assets/mock/gatewayApi.ts
@@ -480,6 +480,27 @@ function mockProxyTest(body: any): { code: number; msg: string; data: any } {
export async function handleGatewayMockRequest(req: IncomingMessage, res: ServerResponse): Promise
{
const url = new URL(req.url ?? "/", "http://mock.local");
const pathname = url.pathname;
+
+ // 超管门槛探测(src/utils/superGate.ts):dev:mock 离线可演示两态——
+ // 默认超管放行;起服务前设 YH_MOCK_SUPER=0 演示非超管拦截态。
+ if (pathname === "/userbase/base/User/CurrentUser") {
+ const superAdmin = process.env.YH_MOCK_SUPER !== "0";
+ send(res, ok({ isSuperAdmin: superAdmin, name: superAdmin ? "mock超级管理员" : "mock普通账号" }));
+ return true;
+ }
+
+ // 外观三键同源读(对接规范 §3;线上=网关 AppearanceProxyController 透传 userhome):
+ // 【裸 payload 无信封】——init 见 code 字段会当异常形态跳过收敛;
+ // theme/avatar 给生效值即离线走查三键收敛与 yh-appearance-updated 事件。
+ if (pathname === "/open-gateway/api/appearance") {
+ send(res, {
+ theme: { theme: "blue", sideDeep: false, gradOn: true, sideFollow: true },
+ avatar: "text",
+ logoUrl: null,
+ });
+ return true;
+ }
+
if (!pathname.startsWith("/open-gateway/api/")) return false;
const api = pathname.slice("/open-gateway".length);
diff --git a/src/assets/styles/main.scss b/src/assets/styles/main.scss
index bc3eb21..4a21840 100644
--- a/src/assets/styles/main.scss
+++ b/src/assets/styles/main.scss
@@ -115,3 +115,21 @@ h4.subtitle {
margin-right: 4px;
margin-bottom: 2px;
}
+
+/* ================= 表格操作列(utils/tableActions.ts)=================
+ .op-cell:flex 横排容器——把 iView Tooltip/Dropdown 的块级包装层降级为 flex item,
+ 强制横排(根因:.operating-btn 在通道基线 display:block,.ivu-tooltip 包装层默认 block,
+ 逐钮竖排;不要再在 cell 上动 display,会牵连其它列)。
+ 先落工程内,四端同构后此段上提 YschTheme 主题层。 */
+.op-cell {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 6px;
+
+ // 链间距统一由容器 gap 管理,退役通道基线的 padding-right:10px
+ .operating-link {
+ padding-right: 0;
+ white-space: nowrap;
+ }
+}
diff --git a/src/components/TablePageAlovaNew.vue b/src/components/TablePageAlovaNew.vue
index 8e1ede6..d9e1e44 100644
--- a/src/components/TablePageAlovaNew.vue
+++ b/src/components/TablePageAlovaNew.vue
@@ -1,16 +1,18 @@
-
+
-
+
@@ -21,8 +23,8 @@
-
-
-
-
-
-
-
主题色
-
-
-
-
-
侧栏样式
-
-
-
-
-
-
-
-
-
diff --git a/src/components/layout.vue b/src/components/layout.vue
index 7bfe07e..1811c6f 100644
--- a/src/components/layout.vue
+++ b/src/components/layout.vue
@@ -1,13 +1,13 @@