fix:更新优化
All checks were successful
Build and Push Docker Image / build (push) Successful in 4m14s

This commit is contained in:
Your Name 2026-03-31 16:45:08 +08:00
parent 17e2fca04b
commit 4c844e1a12
6 changed files with 287 additions and 244 deletions

View File

@ -14,9 +14,9 @@ export default defineConfig({
}, },
proxy: { proxy: {
'/api/': { '/api/': {
target: 'http://10.39.13.78:8002/', // target: 'http://10.39.13.78:8002/',
// target: 'https://test-admin.linyikj.com.cn/', // target: 'https://test-admin.linyikj.com.cn/',
// target: 'https://admin.linyikj.com.cn/', target: 'https://admin.linyikj.com.cn/',
changeOrigin: true, changeOrigin: true,
pathRewrite: { '^': '' }, pathRewrite: { '^': '' },
}, },

View File

@ -5,7 +5,6 @@ import { history, useLocation } from '@umijs/max';
import type { MenuProps } from 'antd'; import type { MenuProps } from 'antd';
import { Dropdown, message, Space, Tabs } from 'antd'; import { Dropdown, message, Space, Tabs } from 'antd';
import React, { useCallback, useEffect, useRef, useState } from 'react'; import React, { useCallback, useEffect, useRef, useState } from 'react';
import AvatarProps from './AvatarProps';
import './MyPageContainer.scss'; import './MyPageContainer.scss';
export interface TabItem { export interface TabItem {
@ -388,7 +387,14 @@ export function MyPageContainer({
fixedHeader fixedHeader
header={{ header={{
title: ( title: (
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', width: '100%' }}> <div
style={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
width: '100%',
}}
>
{/* 左侧Tabs标签页 */} {/* 左侧Tabs标签页 */}
<div style={{ flex: 1 }}> <div style={{ flex: 1 }}>
<Tabs <Tabs
@ -410,17 +416,9 @@ export function MyPageContainer({
}} }}
/> />
</div> </div>
{/* 右侧:用户信息 */}
<div style={{ display: 'flex', alignItems: 'center', gap: '12px', marginLeft: '24px' }}>
<Dropdown menu={{ items: userMenuItems }} placement="bottomRight">
<div style={{ cursor: 'pointer', display: 'flex', alignItems: 'center' }}>
<AvatarProps user={snap.session.user} />
</div>
</Dropdown>
</div>
</div> </div>
), ),
style: { backgroundColor: '#FFF', padding: '0 24px !important' }, style: { backgroundColor: '#FFF' },
}} }}
token={{ token={{
paddingBlockPageContainerContent: 0, paddingBlockPageContainerContent: 0,

View File

@ -1,8 +1,8 @@
// import Logo from '@/assets/bitcoin.webp'; // import Logo from '@/assets/bitcoin.webp';
import { MyIcons, MyIconsType, PermissionsType, useMyState } from '@/common'; import { MyIcons, MyIconsType, PermissionsType, useMyState } from '@/common';
import { AvatarProps, CustomLogo } from '@/common/components/layout';
import { Link, RuntimeConfig, history } from '@umijs/max'; import { Link, RuntimeConfig, history } from '@umijs/max';
import AvatarProps from '../../components/layout/AvatarProps'; import MyLoGo from './logo.jpeg';
import { CustomHeader, CustomLogo } from '@/common/components/layout';
const loopMenu = (permissions: PermissionsType[] | undefined) => { const loopMenu = (permissions: PermissionsType[] | undefined) => {
let tree: PermissionsType[] = []; let tree: PermissionsType[] = [];
@ -33,40 +33,72 @@ export const LayoutConfig: RuntimeConfig['layout'] = () => {
const { snap } = useMyState(); const { snap } = useMyState();
return { return {
title: snap.session.campus?.name ?? '总后台', title: '物业管理平台',
logo: false, // 禁用默认logo使用自定义 logo: MyLoGo, // 禁用默认logo使用自定义
layout: 'side', // 从 'mix' 改为 'side' layout: 'mix', // 从 'mix' 改为 'side'
colorPrimary: '#1890ff', colorPrimary: '#1890ff',
siderWidth: 220, siderWidth: 220,
prefixCls: 'my-prefix',
pure: history.location.pathname === '/login', pure: history.location.pathname === '/login',
// 禁用顶部导航栏的菜单 // 禁用顶部导航栏的菜单
navTheme: 'light', // 确保header显示 - 强制始终显示header禁用响应式隐藏
// 确保header显示
header: true, header: true,
// 禁用响应式侧边栏确保header始终显示
responsive: false,
// siderMenuType: 'inline',
// 隐藏面包屑导航 // 隐藏面包屑导航
breadcrumb: { props: { style: { display: 'none' } } }, breadcrumb: { props: { style: { display: 'none' } } },
avatarProps: {
// 自定义Header渲染 - 右侧显示用户信息 // src: 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg',
headerRender: (props, defaultDom) => { // size: 'small',
return ( // title: snap?.session?.user?.username ?? '-',
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', width: '100%', paddingRight: 24, paddingLeft: 24 }}> render: (props, dom) => {
{/* 左侧可以为空或显示其他内容 */} return <AvatarProps user={snap.session.user} />;
<div style={{ flex: 1 }}></div> // return (
{/* 右侧添加用户信息 */} // <Dropdown
<div style={{ display: 'flex', alignItems: 'center' }}> // menu={{
<AvatarProps user={snap.session.user} /> // items: [
</div> // {
</div> // key: 'logout',
); // icon: <LogoutOutlined />,
// label: '退出登录',
// },
// ],
// }}
// >
// {dom}
// </Dropdown>
// );
},
}, },
// 自定义Header渲染 - 右侧显示用户信息
// headerRender: (props, defaultDom) => {
// return (
// <div
// style={{
// display: 'flex',
// justifyContent: 'space-between',
// alignItems: 'center',
// width: '100%',
// paddingRight: 24,
// paddingLeft: 24,
// height: '100%',
// }}
// >
// {/* 左侧可以为空 */}
// <div style={{ flex: 1 }}></div>
// {/* 右侧添加用户信息 */}
// <div style={{ display: 'flex', alignItems: 'center' }}>
// <AvatarProps user={snap.session.user} />
// </div>
// </div>
// );
// },
// 新增自定义Logo渲染 // 新增自定义Logo渲染
logoRenderer: (collapsed: boolean) => { logoRenderer: (collapsed: boolean) => {
return <CustomLogo collapsed={collapsed} />; return <CustomLogo collapsed={collapsed} />;
}, },
// 完全禁用用户信息在侧边栏底部显示
// avatarProps: false, // 这样可以完全禁用
//水印设置 //水印设置
// waterMarkProps: { // waterMarkProps: {
// content: snap.session.user?.username, // content: snap.session.user?.username,

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -40,7 +40,7 @@ export function MyLoginPage1() {
title="欢迎使用后台管理系统" title="欢迎使用后台管理系统"
// backgroundVideoUrl="https://gw.alipayobjects.com/v/huamei_gcee1x/afts/video/jXRBRK_VAwoAAAAAAAAAAAAAK4eUAQBr" // backgroundVideoUrl="https://gw.alipayobjects.com/v/huamei_gcee1x/afts/video/jXRBRK_VAwoAAAAAAAAAAAAAK4eUAQBr"
backgroundImageUrl={loginBgImg} backgroundImageUrl={loginBgImg}
subTitle="物业管理平台管理后台" subTitle="物业管理平台"
onFinish={async (values: any) => { onFinish={async (values: any) => {
Apis.Common.Auth.Login({ Apis.Common.Auth.Login({
...values, ...values,

View File

@ -4,239 +4,237 @@
body { body {
margin: 0; margin: 0;
padding: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
sans-serif; 'Helvetica Neue', Arial, sans-serif;
font-size: 14px; font-size: 14px;
line-height: 1.5715; line-height: 1.5715;
color: #262626; color: #262626;
background-color: #f5f5f5; background-color: #f5f5f5;
} }
// 自定义Logo样式 // // 自定义Logo样式
.custom-logo { // .custom-logo {
display: flex; // display: flex;
align-items: center; // align-items: center;
height: 64px; // height: 64px;
padding: 0 16px; // padding: 0 16px;
border-bottom: 1px solid #f0f0f0; // border-bottom: 1px solid #f0f0f0;
transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1.000); // transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
background: #ffffff; // background: #ffffff;
} // }
.custom-logo .logo-icon { // .custom-logo .logo-icon {
font-size: 32px; // font-size: 32px;
min-width: 32px; // min-width: 32px;
display: flex; // display: flex;
align-items: center; // align-items: center;
justify-content: center; // justify-content: center;
} // }
.custom-logo .logo-text { // .custom-logo .logo-text {
margin-left: 12px; // margin-left: 12px;
font-size: 16px; // font-size: 16px;
font-weight: 600; // font-weight: 600;
color: #262626; // color: #262626;
white-space: nowrap; // white-space: nowrap;
opacity: 1; // opacity: 1;
transition: opacity 0.2s; // transition: opacity 0.2s;
} // }
// 折叠状态 // // 折叠状态
.ant-layout-sider-collapsed .custom-logo { // .ant-layout-sider-collapsed .custom-logo {
padding: 0; // padding: 0;
justify-content: center; // justify-content: center;
} // }
.ant-layout-sider-collapsed .custom-logo .logo-text { // .ant-layout-sider-collapsed .custom-logo .logo-text {
display: none; // display: none;
} // }
// PageContainer Header样式 - 固定悬浮在UmiJS Header下方 // // PageContainer Header样式 - 固定悬浮在UmiJS Header下方
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; /* UmiJS Header的高度 */ // top: 64px !important; /* UmiJS Header的高度 */
right: 0 !important; // right: 0 !important;
left: 220px !important; /* 侧边栏宽度 */ // left: 220px !important; /* 侧边栏宽度 */
z-index: 999 !important; // z-index: 999 !important;
margin: 0 !important; // margin: 0 !important;
padding: 8px 24px !important; /* 增加padding */ // padding: 8px 24px !important; /* 增加padding */
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: 40px !important; // min-height: 40px !important;
max-height: 52px !important; // max-height: 52px !important;
display: flex !important; // display: flex !important;
align-items: center !important; // align-items: center !important;
} // }
// 当侧边栏折叠时调整tabs header的left值 // // 当侧边栏折叠时调整tabs header的left值
.ant-layout-sider-collapsed ~ .ant-layout .ant-pro-page-container-header { // .ant-layout-sider-collapsed ~ .ant-layout .ant-pro-page-container-header {
left: 64px !important; // left: 64px !important;
} // }
// 强制PageContainer header样式 // // 强制PageContainer header样式
.ant-pro-page-container .ant-pro-page-container-header { // .ant-pro-page-container .ant-pro-page-container-header {
position: fixed !important; // position: fixed !important;
top: 64px !important; // top: 64px !important;
right: 0 !important; // right: 0 !important;
left: 220px !important; // left: 220px !important;
z-index: 999 !important; // z-index: 999 !important;
margin: 0 !important; // margin: 0 !important;
padding: 8px 24px !important; // padding: 8px 24px !important;
min-height: 40px !important; // min-height: 40px !important;
max-height: 52px !important; // max-height: 52px !important;
display: flex !important; // display: flex !important;
align-items: center !important; // align-items: center !important;
} // }
// 确保UmiJS Header固定在顶部 // // 确保UmiJS Header固定在顶部
.ant-pro-header, // .ant-pro-header,
.ant-layout-header { // .ant-layout-header {
position: fixed !important; // position: fixed !important;
top: 0 !important; // top: 0 !important;
right: 0 !important; // right: 0 !important;
left: 220px !important; // left: 220px !important;
z-index: 1000 !important; // z-index: 1000 !important;
width: auto !important; // width: auto !important;
background: #ffffff !important; // background: #ffffff !important;
border-bottom: 1px solid #f0f0f0 !important; // border-bottom: 1px solid #f0f0f0 !important;
} // }
.ant-layout-sider-collapsed ~ .ant-layout .ant-pro-header, // .ant-layout-sider-collapsed ~ .ant-layout .ant-pro-header,
.ant-layout-sider-collapsed + .ant-layout .ant-pro-header { // .ant-layout-sider-collapsed + .ant-layout .ant-pro-header {
left: 64px !important; // left: 64px !important;
} // }
// Tabs样式优化 - 减小高度 // // Tabs样式优化 - 减小高度
.ant-pro-page-container-header .tabs-header-only, // .ant-pro-page-container-header .tabs-header-only,
div[class*="page-container-header"] .tabs-header-only { // div[class*='page-container-header'] .tabs-header-only {
margin: 0 !important; // margin: 0 !important;
line-height: 1 !important; // line-height: 1 !important;
height: auto !important; // height: auto !important;
display: flex !important; // display: flex !important;
align-items: center !important; // align-items: center !important;
} // }
.ant-pro-page-container-header .ant-tabs, // .ant-pro-page-container-header .ant-tabs,
div[class*="page-container-header"] .ant-tabs { // div[class*='page-container-header'] .ant-tabs {
margin: 0 !important; // margin: 0 !important;
height: auto !important; // height: auto !important;
} // }
.ant-pro-page-container-header .ant-tabs-nav, // .ant-pro-page-container-header .ant-tabs-nav,
div[class*="page-container-header"] .ant-tabs-nav { // div[class*='page-container-header'] .ant-tabs-nav {
margin-bottom: 0 !important; // margin-bottom: 0 !important;
height: auto !important; // height: auto !important;
} // }
.ant-pro-page-container-header .ant-tabs-nav-list, // .ant-pro-page-container-header .ant-tabs-nav-list,
div[class*="page-container-header"] .ant-tabs-nav-list { // div[class*='page-container-header'] .ant-tabs-nav-list {
margin-bottom: 0 !important; // margin-bottom: 0 !important;
height: auto !important; // height: auto !important;
display: flex !important; // display: flex !important;
align-items: center !important; // align-items: center !important;
} // }
.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: 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;
align-items: center !important; // align-items: center !important;
} // }
.ant-pro-page-container-header .ant-tabs-tab-active, // .ant-pro-page-container-header .ant-tabs-tab-active,
div[class*="page-container-header"] .ant-tabs-tab-active { // div[class*='page-container-header'] .ant-tabs-tab-active {
background: #ffffff; // background: #ffffff;
font-weight: 500; // font-weight: 500;
} // }
.ant-pro-page-container-header .ant-tabs-ink-bar, // .ant-pro-page-container-header .ant-tabs-ink-bar,
div[class*="page-container-header"] .ant-tabs-ink-bar { // div[class*='page-container-header'] .ant-tabs-ink-bar {
display: none !important; // display: none !important;
} // }
// 内容区域 - 调整padding以适应固定的header // // 内容区域 - 调整padding以适应固定的header
.ant-pro-grid-content { .ant-pro-grid-content {
padding: 24px; padding: 15px;
padding-top: 120px; /* 64px UmiJS Header + 48px tabs header + 8px */ // padding-top: 20px; /* 64px UmiJS Header + 48px tabs header + 8px */
} }
.ant-page-header {
.ant-pro-page-container { padding: 0 15px !important;
padding-top: 0 !important;
} }
// .ant-pro-page-container {
// padding-top: 0 !important;
// }
.ant-pro-page-container-warp { // .ant-pro-page-container-warp {
padding-top: 0 !important; // padding: 0 !important;
} // }
.ant-pro-page-container-children-content { // .ant-pro-page-container-children-content {
padding: 24px !important; // padding: 24px !important;
padding-top: 0 !important; // padding-top: 0 !important;
} // }
// 确保主内容区域正确的padding // // 确保主内容区域正确的padding
.ant-layout-content { // .custom-header .header-left {
padding-top: 120px !important; // flex: 1;
} // }
.custom-header .header-left { // .custom-header .header-right {
flex: 1; // display: flex;
} // align-items: center;
// gap: 16px;
// }
.custom-header .header-right { // .custom-header .header-right > div {
display: flex; // display: flex;
align-items: center; // align-items: center;
gap: 16px; // transition: opacity 0.2s;
} // }
.custom-header .header-right > div { // .custom-header .header-right > div:hover {
display: flex; // opacity: 0.8;
align-items: center; // }
transition: opacity 0.2s;
}
.custom-header .header-right > div:hover { // // 内容区域 - 添加顶部padding避免被固定header遮挡
opacity: 0.8; // .ant-pro-grid-content {
} // padding: 24px;
// padding-top: 24px; /* 恢复正常padding */
// }
// 内容区域 - 添加顶部padding避免被固定header遮挡 // .ant-pro-page-container {
.ant-pro-grid-content { // padding-top: 0 !important;
padding: 24px; // }
padding-top: 24px; /* 恢复正常padding */
}
.ant-pro-page-container { // .ant-pro-page-container-children-content {
padding-top: 0 !important; // padding-top: 0 !important;
} // padding: 24px !important;
// }
.ant-pro-page-container-children-content { // // 页面容器卡片
padding-top: 0 !important; // .ant-pro-page-container {
padding: 24px !important; // background: transparent;
} // }
// 页面容器卡片 // .ant-pro-page-container .ant-pro-page-container-warp {
.ant-pro-page-container { // background: #ffffff;
background: transparent; // border-radius: 8px;
} // box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.03);
// padding: 24px;
// }
.ant-pro-page-container .ant-pro-page-container-warp { // // 隐藏侧边栏底部的用户信息区域
background: #ffffff;
border-radius: 8px;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.03);
padding: 24px;
}
// 隐藏侧边栏底部的用户信息区域
.ant-pro-sider .ant-pro-sider-actions { .ant-pro-sider .ant-pro-sider-actions {
display: none !important; display: none !important;
} }
@ -244,18 +242,33 @@ div[class*="page-container-header"] .ant-tabs-ink-bar {
.ant-pro-sider-collapsed .ant-pro-sider-actions { .ant-pro-sider-collapsed .ant-pro-sider-actions {
display: none !important; display: none !important;
} }
.my-prefix-sider-actions {
// 确保顶部Header显示 // display: none !important;
.ant-pro-header {
display: flex !important;
} }
// 确保PageContainer的affix header显示 // 确保顶部Header始终显示不受响应式影响
.ant-pro-page-container-affix { // .ant-pro-header {
display: block !important; // display: flex !important;
} // width: 100% !important;
// }
// 只隐藏通用的ant-affix非PageContainer相关 // 确保在所有屏幕尺寸下header都显示
.ant-affix:not(.ant-pro-page-container-affix) { // @media (min-width: 0px) {
display: none !important; // .ant-pro-header {
} // display: flex !important;
// }
// }
// .ant-layout-header {
// display: flex !important;
// }
// // 确保顶部Header显示
// .ant-pro-header {
// display: flex !important;
// }
// // 确保PageContainer的affix header显示
// .ant-pro-page-container-affix {
// display: block !important;
// }