20260822173019
This commit is contained in:
1 parent
27a32b313d
commit
5ff4583aeb
2 files changed
+39
-5
No files matched your search
@@ -1386,7 +1386,7 @@ loadMenuTree()
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mm-body__inner">
|
<div class="mm-body__inner">
|
||||||
<div class="mm-config">
|
<div v-if="drafts" class="mm-config">
|
||||||
<nav class="mm-config-nav">
|
<nav class="mm-config-nav">
|
||||||
<template v-for="group in configGroups" :key="group.key">
|
<template v-for="group in configGroups" :key="group.key">
|
||||||
<div class="mm-config-nav__group">
|
<div class="mm-config-nav__group">
|
||||||
@@ -1530,6 +1530,12 @@ loadMenuTree()
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 加载中/无数据占位:避免配置区一片空白 -->
|
||||||
|
<div v-else-if="configLoading" class="mm-config-state">
|
||||||
|
<span class="mm-config-state__spinner"></span>
|
||||||
|
<span>加载中...</span>
|
||||||
|
</div>
|
||||||
|
<div v-else class="mm-config-state">暂无配置数据</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div v-else class="mm-main__empty">
|
<div v-else class="mm-main__empty">
|
||||||
@@ -1664,7 +1670,6 @@ loadMenuTree()
|
|||||||
<Modal
|
<Modal
|
||||||
:open="!!switchConfirm"
|
:open="!!switchConfirm"
|
||||||
title="有未保存的修改"
|
title="有未保存的修改"
|
||||||
:footer="false"
|
|
||||||
:mask-closable="false"
|
:mask-closable="false"
|
||||||
:confirm-loading="switchSaving"
|
:confirm-loading="switchSaving"
|
||||||
@cancel="onSwitchCancel"
|
@cancel="onSwitchCancel"
|
||||||
@@ -2026,6 +2031,34 @@ loadMenuTree()
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 配置区加载中 / 空态占位 */
|
||||||
|
.mm-config-state {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 8px;
|
||||||
|
flex: 1;
|
||||||
|
min-height: 120px;
|
||||||
|
color: var(--fms-text-secondary);
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mm-config-state__spinner {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
border: 2px solid var(--fms-border);
|
||||||
|
border-top-color: var(--fms-primary);
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: mm-config-spin 0.8s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes mm-config-spin {
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.mm-section-toolbar {
|
.mm-section-toolbar {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -55,11 +55,12 @@ const panelStubs = {
|
|||||||
ModulePowersPanel: { name: 'ModulePowersPanel', template: '<div class="stub-powers" />' },
|
ModulePowersPanel: { name: 'ModulePowersPanel', template: '<div class="stub-powers" />' },
|
||||||
ModuleI18nPanel: { name: 'ModuleI18nPanel', template: '<div class="stub-i18n" />' },
|
ModuleI18nPanel: { name: 'ModuleI18nPanel', template: '<div class="stub-i18n" />' },
|
||||||
MenuDetailPanel: { name: 'MenuDetailPanel', template: '<div class="stub-menu" />' },
|
MenuDetailPanel: { name: 'MenuDetailPanel', template: '<div class="stub-menu" />' },
|
||||||
// Modal 尊重 open 条件,且渲染默认插槽 + footer 插槽(只渲染真正打开的弹窗)
|
// Modal 尊重 open / footer 条件:footer=false 时不渲染按钮区(与真实组件一致)
|
||||||
Modal: {
|
Modal: {
|
||||||
name: 'Modal',
|
name: 'Modal',
|
||||||
props: ['open', 'title', 'okText', 'okType', 'confirmLoading'],
|
props: ['open', 'title', 'okText', 'okType', 'confirmLoading', 'footer'],
|
||||||
template: '<div v-if="open" class="stub-modal"><slot /><slot name="footer" /></div>',
|
template:
|
||||||
|
'<div v-if="open" class="stub-modal"><slot /><div v-if="footer !== false" class="stub-modal-footer"><slot name="footer" /></div></div>',
|
||||||
},
|
},
|
||||||
Transition: { template: '<slot />' },
|
Transition: { template: '<slot />' },
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user