develop #30
@ -357,30 +357,34 @@ export function MyPageContainer({
|
|||||||
<PageContainer
|
<PageContainer
|
||||||
fixedHeader
|
fixedHeader
|
||||||
header={{
|
header={{
|
||||||
title: (
|
title: false,
|
||||||
<Tabs
|
style: { backgroundColor: '#F00' },
|
||||||
type="editable-card"
|
|
||||||
activeKey={activeKey}
|
|
||||||
onChange={handleTabChange}
|
|
||||||
onEdit={handleTabEdit}
|
|
||||||
hideAdd
|
|
||||||
size="middle"
|
|
||||||
// 标签size
|
|
||||||
renderTabBar={renderTabBar}
|
|
||||||
items={tabs.map((tab) => ({
|
|
||||||
key: tab.key,
|
|
||||||
label: tab.label,
|
|
||||||
closable: tab.closable,
|
|
||||||
}))}
|
|
||||||
style={{
|
|
||||||
marginTop: 6,
|
|
||||||
marginBottom: 0,
|
|
||||||
}}
|
|
||||||
className="tabs-header-only"
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
style: { backgroundColor: '#FFF' },
|
|
||||||
}}
|
}}
|
||||||
|
// header={{
|
||||||
|
// title: (
|
||||||
|
// <Tabs
|
||||||
|
// type="editable-card"
|
||||||
|
// activeKey={activeKey}
|
||||||
|
// onChange={handleTabChange}
|
||||||
|
// onEdit={handleTabEdit}
|
||||||
|
// hideAdd
|
||||||
|
// size="middle"
|
||||||
|
// // 标签size
|
||||||
|
// renderTabBar={renderTabBar}
|
||||||
|
// items={tabs.map((tab) => ({
|
||||||
|
// key: tab.key,
|
||||||
|
// label: tab.label,
|
||||||
|
// closable: tab.closable,
|
||||||
|
// }))}
|
||||||
|
// style={{
|
||||||
|
// marginTop: 6,
|
||||||
|
// marginBottom: 0,
|
||||||
|
// }}
|
||||||
|
// className="tabs-header-only"
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
// style: { backgroundColor: '#F00', padding: '64px 15px 0 15px' },
|
||||||
|
// }}
|
||||||
token={{
|
token={{
|
||||||
paddingBlockPageContainerContent: 0,
|
paddingBlockPageContainerContent: 0,
|
||||||
paddingInlinePageContainerContent: 0,
|
paddingInlinePageContainerContent: 0,
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import { ConfigProvider } from 'antd';
|
import { ConfigProvider } from 'antd';
|
||||||
import { ReactNode } from 'react';
|
import { ReactNode } from 'react';
|
||||||
import { MyLoading } from './MyLoading';
|
import { MyLoading } from './MyLoading';
|
||||||
import { CustomHeader } from './CustomHeader';
|
|
||||||
|
|
||||||
export function MyRootContainer({ children }: { children: ReactNode }) {
|
export function MyRootContainer({ children }: { children: ReactNode }) {
|
||||||
return (
|
return (
|
||||||
@ -17,7 +16,6 @@ export function MyRootContainer({ children }: { children: ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<MyLoading />
|
<MyLoading />
|
||||||
<CustomHeader />
|
|
||||||
{children}
|
{children}
|
||||||
</ConfigProvider>
|
</ConfigProvider>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -44,8 +44,21 @@ export const LayoutConfig: RuntimeConfig['layout'] = () => {
|
|||||||
// 确保header显示
|
// 确保header显示
|
||||||
header: true,
|
header: true,
|
||||||
|
|
||||||
// 自定义Header渲染
|
// 自定义Header渲染 - 使用UmiJS自带header并添加用户信息
|
||||||
headerRender: false, // 禁用默认header,我们完全自定义
|
headerRender: (props, defaultDom) => {
|
||||||
|
return (
|
||||||
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', paddingRight: 24 }}>
|
||||||
|
{/* 左侧保留默认内容 */}
|
||||||
|
<div style={{ flex: 1 }}>
|
||||||
|
{defaultDom}
|
||||||
|
</div>
|
||||||
|
{/* 右侧添加用户信息 */}
|
||||||
|
<div>
|
||||||
|
<AvatarProps user={snap.session.user} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
// 新增:自定义Logo渲染
|
// 新增:自定义Logo渲染
|
||||||
logoRenderer: (collapsed: boolean) => {
|
logoRenderer: (collapsed: boolean) => {
|
||||||
|
|||||||
@ -51,47 +51,23 @@ body {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 自定义Header样式
|
// PageContainer Header样式 - 固定悬浮在UmiJS Header下方
|
||||||
.custom-header {
|
|
||||||
position: fixed !important;
|
|
||||||
top: 0 !important;
|
|
||||||
right: 0 !important;
|
|
||||||
left: 220px !important; /* 侧边栏宽度 */
|
|
||||||
z-index: 1001 !important; /* 提高z-index确保在最上层 */
|
|
||||||
display: flex !important;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
height: 64px !important;
|
|
||||||
padding: 0 24px !important;
|
|
||||||
background: #ffffff !important;
|
|
||||||
border-bottom: 1px solid #f0f0f0;
|
|
||||||
line-height: 64px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0,0,0,0.06);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当侧边栏折叠时,调整header的left值
|
|
||||||
.ant-layout-sider-collapsed ~ .ant-layout .custom-header,
|
|
||||||
.ant-layout-sider-collapsed + .ant-layout .custom-header {
|
|
||||||
left: 64px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PageContainer Header样式 - 固定悬浮在CustomHeader下方
|
|
||||||
div[class*="page-container-header"],
|
div[class*="page-container-header"],
|
||||||
.ant-pro-page-container > div[class*="page-container-header"],
|
.ant-pro-page-container > div[class*="page-container-header"],
|
||||||
.ant-pro-page-container-header {
|
.ant-pro-page-container-header {
|
||||||
position: fixed !important;
|
position: fixed !important;
|
||||||
top: 64px !important; /* CustomHeader的高度 */
|
top: 64px !important; /* UmiJS Header的高度 */
|
||||||
right: 0 !important;
|
right: 0 !important;
|
||||||
left: 220px !important; /* 侧边栏宽度 */
|
left: 220px !important; /* 侧边栏宽度 */
|
||||||
z-index: 1000 !important; /* 低于CustomHeader */
|
z-index: 999 !important;
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
padding: 6px 24px !important; /* 减小padding */
|
padding: 6px 24px !important;
|
||||||
background: #ffffff !important;
|
background: #ffffff !important;
|
||||||
border-bottom: 1px solid #f0f0f0 !important;
|
border-bottom: 1px solid #f0f0f0 !important;
|
||||||
box-shadow: 0 1px 4px rgba(0,0,0,0.05) !important;
|
box-shadow: 0 1px 4px rgba(0,0,0,0.05) !important;
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
min-height: 36px !important; /* 减小最小高度 */
|
min-height: 36px !important;
|
||||||
max-height: 48px !important; /* 减小最大高度 */
|
max-height: 48px !important;
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
align-items: center !important;
|
align-items: center !important;
|
||||||
}
|
}
|
||||||
@ -107,7 +83,7 @@ div[class*="page-container-header"],
|
|||||||
top: 64px !important;
|
top: 64px !important;
|
||||||
right: 0 !important;
|
right: 0 !important;
|
||||||
left: 220px !important;
|
left: 220px !important;
|
||||||
z-index: 1000 !important;
|
z-index: 999 !important;
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
padding: 6px 24px !important;
|
padding: 6px 24px !important;
|
||||||
min-height: 36px !important;
|
min-height: 36px !important;
|
||||||
@ -148,12 +124,12 @@ div[class*="page-container-header"] .ant-tabs-nav-list {
|
|||||||
|
|
||||||
.ant-pro-page-container-header .ant-tabs-tab,
|
.ant-pro-page-container-header .ant-tabs-tab,
|
||||||
div[class*="page-container-header"] .ant-tabs-tab {
|
div[class*="page-container-header"] .ant-tabs-tab {
|
||||||
padding: 4px 10px !important; /* 减小padding */
|
padding: 4px 10px !important;
|
||||||
background: #f5f5f5;
|
background: #f5f5f5;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
transition: all 0.2s;
|
transition: all 0.2s;
|
||||||
height: 26px !important; /* 进一步减小标签高度 */
|
height: 26px !important;
|
||||||
line-height: 26px !important;
|
line-height: 26px !important;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
display: inline-flex !important;
|
display: inline-flex !important;
|
||||||
@ -174,7 +150,7 @@ div[class*="page-container-header"] .ant-tabs-ink-bar {
|
|||||||
// 内容区域 - 调整padding以适应固定的header
|
// 内容区域 - 调整padding以适应固定的header
|
||||||
.ant-pro-grid-content {
|
.ant-pro-grid-content {
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
padding-top: 120px; /* 64px CustomHeader + 48px tabs header + 8px */
|
padding-top: 120px; /* 64px UmiJS Header + 48px tabs header + 8px */
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-pro-page-container {
|
.ant-pro-page-container {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user