Appearance
页面引擎
页面引擎维护菜单整页 Vue SFC(t_page)。当菜单 模版类型 为 页面视图(template_type=0)时,Web 的 PageView 按当前菜单的 menu_id 拉取并渲染 t_page 代码。
从模块引擎建页面视图
页面记录挂在菜单上:先有菜单,再写页面代码。
- 进入 系统引擎 → 模块引擎(路由
/system-engine/module-engine)。 - 新增或编辑菜单:填写中文标题、图标、路由等。
- 模版类型 选 页面视图(
0)。 - 打开方式 按场景选择(见下文驾驶舱 / 报表)。
- 保存菜单,记下该菜单的雪花 id(即
menu_id)。 - 在角色权限中授权该菜单,侧栏才能看到。
- 从侧栏点进该菜单,进入 PageView;有设计权限时右下角出现「设计」悬浮钮。
模块引擎字段与模版类型说明见 模块引擎。
编辑与保存页面代码
- 以具备设计权限的账号打开目标页面视图菜单。
- 悬停右下角「设计」,单击 Code,打开页面代码编辑器(语言为 Vue SFC)。
- 编写或修改完整 SFC:
<template>+<script setup lang="ts">+ 可选<style scoped>。 - 保存:写入当前页的
code(若当前源是temp_code则写回临时字段);成功后页面可经 SignalR 刷新。 - 刷新路由或重新进入菜单,确认运行态与保存内容一致。
运行时优先使用非空的 code,否则回落 temp_code。正式发布应保证 code 为完整可用 SFC。
页面属性(运行态模型)
| 属性 | 名字 | 说明 |
|---|---|---|
| 页面 id | id | t_page 雪花主键 |
| 绑定菜单 | menu_id / f_menu_id | 与 t_menu.f_id 对应;按菜单拉取 |
| 名称 | name / f_name | 页面名称 |
| 代码 | code / f_code | 正式 Vue SFC |
| 临时代码 | temp_code / f_temp_code | 草稿或备用 |
| 描述 | description / f_description | 用途说明 |
页面没有独立「组件引擎」式列表入口;入口就是模版类型为页面视图的菜单。
驾驶舱(深色)与报表(浅色)
无单独子文档时,按菜单 打开方式 与根节点 class 区分视觉:
| 场景 | 菜单 open_type | 建议 | 根节点 class |
|---|---|---|---|
| 驾驶舱 / 数字大屏 | 0 或 2(无外层 Layout,常全屏) | 深色一屏、少滚动 | remote-page screen-dark |
| 报表 / 仪表盘 | 1 或 3(经 LayoutHost) | 浅色可读、可纵向滚动 | remote-page dashboard-light |
取数统一走接口(HttpService 等),不要在页面脚本里直接用后端 DatabaseService。图表优先用 Element Plus、进度条、比例条等白名单能力表达。
与组件引擎、列表「页面设计」的区别
| 对比项 | 页面引擎 t_page | 组件引擎 t_component | 列表「页面设计」 |
|---|---|---|---|
| 载体 | 菜单整页 | 脚本打开的弹层/抽屉 | DataView 右下对 t_template 头属性 |
| 打开 | 点菜单 → PageView | App.Components.Component.Open | 仍是列表,不是整页 SFC |
| 键 | menu_id | 组件 id | template_id |
常见问题
点菜单空白或一直加载
确认模版类型为页面视图(0),且该 menu_id 下已有非空 code/temp_code。可重新进菜单或看网络请求是否返回页面。
看不到「设计 / Code」
设计悬浮钮依赖账号的设计权限;普通业务角色通常不可见。用有设计权限的账号,或走 MCP/PageService 写库。
保存了但侧栏进不去
检查菜单「是否显示」「是否激活」,以及当前角色是否已授权该菜单。
大屏被顶栏挤变形
驾驶舱类页面宜用 open_type 0/2(无 LayoutHost),根节点用 screen-dark,高度用 height: 100% + flex,避免页面级 vh/vw。
和组件 SFC 混用
页面按菜单进入;弹层复用逻辑应做成 t_component,在页面或按钮里 Open,不要把弹层外壳逻辑硬塞进菜单页。
