feat(platform): 合并车辆运维页并优化 3D 画布嵌入体验

将维护策略与车队生命周期并入车辆运维 Tab,补充旧路由重定向与 RBAC 页面 key 迁移;改进 Workspace3D 就绪探测与 wwwroot 静态资源。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zhaowei.huang
2026-05-31 14:39:50 +08:00
co-authored by Cursor
parent be0503c535
commit e2269e430d
70 changed files with 504 additions and 162 deletions
@@ -1657,3 +1657,134 @@ a:hover { color: rgba(var(--mg-accent-rgb), 0.85); }
border-color: #7c3aed !important;
color: #5b21b6 !important;
}
/* ─────────────────────────────────────────────────────────────────────────
* fame-lavender × 地图编辑器深紫沉浸 UIMapEditorView
* 侧栏 / 属性面板 / 工具轨保持深紫底 + 浅字。全局浅紫规则会把 .mg-content 内
* el-form 标签、el-tabs 等改成深紫字 (#4a3d6e),在深底上出现「深底深字」看不清。
* ───────────────────────────────────────────────────────────────────────── */
:root[data-theme="fame-lavender"] .mg-content .map-editor-page {
--el-text-color-primary: rgba(232, 215, 245, 0.95);
--el-text-color-regular: rgba(220, 200, 230, 0.88);
--el-text-color-secondary: rgba(200, 180, 220, 0.72);
color: rgba(232, 215, 245, 0.92);
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-form-item__label {
color: rgba(220, 200, 230, 0.9) !important;
font-weight: 500;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-tabs {
--el-text-color-primary: rgba(232, 215, 245, 0.95) !important;
--el-text-color-regular: rgba(220, 200, 240, 0.75) !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-tabs__item,
:root[data-theme="fame-lavender"] .map-editor-page .el-tabs__item {
color: rgba(220, 200, 240, 0.72) !important;
font-weight: 500;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-tabs__item:hover,
:root[data-theme="fame-lavender"] .map-editor-page .el-tabs__item:hover {
color: rgba(240, 225, 255, 0.95) !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-tabs__item.is-active,
:root[data-theme="fame-lavender"] .map-editor-page .el-tabs__item.is-active {
color: #ffffff !important;
font-weight: 600;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-tabs__nav-wrap::after {
background-color: rgba(255, 255, 255, 0.1) !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-tabs__active-bar {
background: linear-gradient(90deg, rgba(170, 110, 250, 1) 0%, rgba(255, 110, 220, 1) 100%) !important;
}
/* 图层 Tab:白底数据岛 + 深紫字(与属性面板输入框一致,避免白底叠浅字) */
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table.el-table {
--el-table-bg-color: #ffffff;
--el-table-tr-bg-color: #ffffff;
--el-table-header-bg-color: #f5f3ff;
--el-table-text-color: #1a0f3d;
--el-table-header-text-color: #2d1b69;
--el-table-row-hover-bg-color: #ede9fe;
--el-table-border-color: #e0d4f5;
--el-fill-color-blank: #ffffff;
--el-fill-color-light: #faf7fd;
color: #1a0f3d !important;
background: #ffffff !important;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 0 0 1px rgba(124, 58, 237, 0.14);
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table.el-table,
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table.el-table tr,
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table .el-table__inner-wrapper {
background: #ffffff !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table th.el-table__cell {
background: #f5f3ff !important;
color: #2d1b69 !important;
font-weight: 600 !important;
border-bottom-color: #e0d4f5 !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table td.el-table__cell {
background: #ffffff !important;
color: #1a0f3d !important;
font-weight: 500 !important;
border-bottom-color: #f0eaf6 !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table .cell {
color: #1a0f3d !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table.el-table--striped .el-table__body tr:nth-child(2n) td.el-table__cell {
background: #faf7fd !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .layer-table tr:hover > td.el-table__cell {
background: #ede9fe !important;
}
/* 新建图层行:白底深字 + 占位符可读 */
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .new-layer .el-input__inner {
color: #1a0f3d !important;
font-weight: 500;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .new-layer .el-input__inner::placeholder {
color: #7a6b9a !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .new-layer .el-input-group__append .el-button {
background: #f5f3ff !important;
border-color: #ddd6fe !important;
color: #5b21b6 !important;
font-weight: 600 !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .new-layer .el-input-group__append .el-button:hover {
background: #ede9fe !important;
border-color: #a78bfa !important;
color: #5b21b6 !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .el-checkbox__label {
color: rgba(220, 200, 230, 0.88) !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .prop-card-flag,
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .prop-card-flag-text {
color: rgba(200, 220, 255, 0.88) !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .prop-card-flag.is-synced,
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .prop-card-flag.is-synced .prop-card-flag-text {
color: rgba(220, 255, 230, 0.98) !important;
}
/* 属性面板内输入框仍用白底深字(与组件 scoped 设计一致),仅修正标签/Tab 等说明文字 */
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .el-input__wrapper,
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .el-textarea__inner,
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .el-select .el-input__wrapper {
background: #ffffff !important;
box-shadow: 0 0 0 1px rgba(170, 110, 250, 0.28) inset !important;
}
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .el-input__inner,
:root[data-theme="fame-lavender"] .mg-content .map-editor-page .edit-property-panel .el-textarea__inner {
color: #1a0f3d !important;
}