czh-20260603-前端界面美化,添加背景图片

This commit is contained in:
zhihao
2026-06-03 16:56:38 +08:00
parent c22da8a67a
commit 3cfbd1d465
15 changed files with 130 additions and 77 deletions
+66 -4
View File
@@ -10,7 +10,8 @@
/>
<title><%= title %></title>
<link rel="icon" href="<%= basePublicPath %>/logo.png" />
<link rel="icon" href="<%= basePublicPath %>/favicon.png" />
<link rel="preload" as="image" href="<%= basePublicPath %>/resource/img/loading_bg.jpg" />
<!-- 全局配置 -->
<script>
window._CONFIG = {};
@@ -38,13 +39,26 @@
}
.app-loading {
position: relative;
overflow: hidden;
display: flex;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
flex-direction: column;
background-color: #f4f7f9;
background: url('<%= basePublicPath %>/resource/img/loading_bg.jpg') center/cover no-repeat;
background-color: #1a3a5c;
}
.app-loading::after {
content: '';
position: absolute;
inset: 0;
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
pointer-events: none;
}
.app-loading .app-loading-wrap {
@@ -57,6 +71,7 @@
justify-content: center;
align-items: center;
flex-direction: column;
z-index: 1;
}
.app-loading .dots {
@@ -70,14 +85,15 @@
display: flex;
margin-top: 30px;
font-size: 30px;
color: rgba(0, 0, 0, 0.85);
color: rgba(255, 255, 255, 0.92);
text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
justify-content: center;
align-items: center;
}
.app-loading .app-loading-logo {
display: block;
width: 90px;
width: 220px;
margin: 0 auto;
margin-bottom: 20px;
}
@@ -165,6 +181,52 @@
</div>
</div>
</div>
<style>
/* 侧边栏背景图 */
.jeecg-layout-sideBar {
background: url('/resource/img/sidebar_bg.png') center/cover no-repeat !important;
}
.jeecg-layout-sideBar::before {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.58);
z-index: 0;
pointer-events: none;
}
.jeecg-layout-sideBar .jeecg-menu-dark.jeecg-menu-vertical .jeecg-menu-item,
.jeecg-layout-sideBar .jeecg-menu-dark.jeecg-menu-vertical .jeecg-menu-submenu-title {
color: rgba(255, 255, 255, 0.9);
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}
.jeecg-layout-sideBar .ant-layout-sider-children {
position: relative;
z-index: 1;
}
.jeecg-layout-sideBar .jeecg-layout-menu-logo {
background: transparent !important;
}
.jeecg-layout-sideBar .jeecg-layout-menu-logo img {
background: #fff;
border-radius: 6px;
padding: 4px;
}
.jeecg-menu-dark.jeecg-menu-vertical .jeecg-simple-menu__parent,
.jeecg-menu-dark.jeecg-menu-vertical .jeecg-simple-menu__parent>.jeecg-menu-submenu-title {
background-color: transparent !important;
}
.jeecg-menu-dark.jeecg-menu-vertical .jeecg-simple-menu__children,
.jeecg-menu-dark.jeecg-menu-vertical .jeecg-simple-menu__children>.jeecg-menu-submenu-title {
background-color: transparent !important;
}
/* 顶部背景图 */
.jeecg-layout-header.jeecg-layout-header--dark {
background: url('/resource/img/top_bg.png') center top/100% auto no-repeat !important;
}
.jeecg-layout-header .headerIntroductionClass {
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
</style>
<script type="module" src="/src/main.ts"></script>
<!-- 百度统计 -->
<script>
Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

Before

Width:  |  Height:  |  Size: 430 B

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 424 KiB

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

@@ -1,7 +1,7 @@
<template>
<Dropdown placement="bottomLeft" :overlayClassName="`${prefixCls}-dropdown-overlay`">
<span :class="[prefixCls, `${prefixCls}--${theme}`]" class="flex">
<img :class="`${prefixCls}__header`" :src="getAvatarUrl" />
<!-- <img :class="`${prefixCls}__header`" :src="getAvatarUrl" /> -->
<span :class="`${prefixCls}__info hidden md:block`">
<span :class="`${prefixCls}__name `" class="truncate">
{{ getUserInfo.realname }}
@@ -13,8 +13,8 @@
<Menu @click="handleMenuClick">
<MenuItem itemKey="doc" :text="t('layout.header.dropdownItemDoc')" icon="ion:document-text-outline" v-if="getShowDoc" />
<MenuDivider v-if="getShowDoc" />
<MenuItem itemKey="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" />
<MenuItem itemKey="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" />
<!-- <MenuItem itemKey="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" /> -->
<!-- <MenuItem itemKey="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" /> -->
<MenuItem itemKey="depart" :text="t('layout.header.dropdownItemSwitchDepart')" icon="ant-design:cluster-outlined" />
<MenuItem itemKey="cache" :text="t('layout.header.dropdownItemRefreshCache')" icon="ion:sync-outline" />
<!-- <MenuItem
@@ -29,7 +29,7 @@
</Dropdown>
<LockAction v-if="lockActionVisible" ref="lockActionRef" @register="register" />
<DepartSelect ref="loginSelectRef" />
<UpdatePassword v-if="passwordVisible" ref="updatePasswordRef" />
<!-- <UpdatePassword v-if="passwordVisible" ref="updatePasswordRef" /> -->
</template>
<script lang="ts">
// components
@@ -69,7 +69,7 @@
MenuDivider: Menu.Divider,
LockAction: createAsyncComponent(() => import('../lock/LockModal.vue')),
DepartSelect: createAsyncComponent(() => import('./DepartSelect.vue')),
UpdatePassword: createAsyncComponent(() => import('./UpdatePassword.vue')),
// UpdatePassword: createAsyncComponent(() => import('./UpdatePassword.vue')),
},
props: {
theme: propTypes.oneOf(['dark', 'light']),
@@ -80,7 +80,7 @@
const { getShowDoc, getUseLockPage } = useHeaderSetting();
const userStore = useUserStore();
const go = useGo();
const passwordVisible = ref(false);
// const passwordVisible = ref(false);
const lockActionVisible = ref(false);
const lockActionRef = ref(null);
@@ -142,15 +142,13 @@
function updateCurrentDepart() {
loginSelectRef.value.show();
}
// 修改密码
const updatePasswordRef = ref();
// update-begin--author:liaozhiyang---date:20230901---for:【QQYUN-6333】空路由问题—首次访问资源太大
async function updatePassword() {
passwordVisible.value = true;
await getRefPromise(updatePasswordRef);
updatePasswordRef.value.show(userStore.getUserInfo.username);
}
// update-end--author:liaozhiyang---date:20230901---for:【QQYUN-6333】空路由问题—首次访问资源太大
// // 修改密码
// const updatePasswordRef = ref();
// async function updatePassword() {
// passwordVisible.value = true;
// await getRefPromise(updatePasswordRef);
// updatePasswordRef.value.show(userStore.getUserInfo.username);
// }
function handleMenuClick(e: { key: MenuEvent }) {
switch (e.key) {
case 'logout':
@@ -168,14 +166,12 @@
case 'depart':
updateCurrentDepart();
break;
case 'password':
updatePassword();
break;
case 'account':
//update-begin---author:wangshuai ---date:20221125 for:进入用户设置页面------------
go(`/system/usersetting`);
//update-end---author:wangshuai ---date:20221125 for:进入用户设置页面--------------
break;
// case 'password':
// updatePassword();
// break;
// case 'account':
// go(`/system/usersetting`);
// break;
}
}
@@ -189,8 +185,8 @@
register,
getUseLockPage,
loginSelectRef,
updatePasswordRef,
passwordVisible,
// updatePasswordRef,
// passwordVisible,
lockActionVisible,
};
},
-1
View File
@@ -105,7 +105,6 @@
&-action {
display: flex;
min-width: 180px;
// padding-right: 12px;
align-items: center;
+39 -40
View File
@@ -23,23 +23,23 @@
<!-- action -->
<div :class="`${prefixCls}-action`">
<AppSearch :class="`${prefixCls}-action__item `" v-if="getShowSearch" />
<AppSearch :class="`${prefixCls}-action__item `" v-if="false" />
<ErrorAction v-if="getUseErrorHandle" :class="`${prefixCls}-action__item error-action`" />
<Notify v-if="getShowNotice" :class="`${prefixCls}-action__item notify-item`" />
<Notify v-if="false" :class="`${prefixCls}-action__item notify-item`" />
<FullScreen v-if="getShowFullScreen" :class="`${prefixCls}-action__item fullscreen-item`" />
<LockScreen v-if="getUseLockPage" />
<AppLocalePicker v-if="getShowLocalePicker" :reload="true" :showText="false" :class="`${prefixCls}-action__item`" />
<AppLocalePicker v-if="false" :reload="true" :showText="false" :class="`${prefixCls}-action__item`" />
<SettingDrawer v-if="false" :class="`${prefixCls}-action__item`" />
<!-- ai助手 -->
<Aide v-if="false"></Aide>
<UserDropDown :theme="getHeaderTheme" />
<SettingDrawer v-if="getShowSetting" :class="`${prefixCls}-action__item`" />
<!-- ai助手 -->
<Aide v-if="getAiIconShow"></Aide>
</div>
</Header>
<LoginSelect ref="loginSelectRef" @success="loginSelectOk"></LoginSelect>
@@ -54,7 +54,7 @@
import LayoutMenu from '../menu/index.vue';
import LayoutTrigger from '../trigger/index.vue';
import { AppSearch } from '/@/components/Application';
// import { AppSearch } from '/@/components/Application';
import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting';
import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
@@ -62,19 +62,19 @@
import { MenuModeEnum, MenuSplitTyeEnum } from '/@/enums/menuEnum';
import { SettingButtonPositionEnum } from '/@/enums/appEnum';
import { AppLocalePicker } from '/@/components/Application';
// import { AppLocalePicker } from '/@/components/Application';
import { UserDropDown, LayoutBreadcrumb, FullScreen, Notify, ErrorAction, LockScreen } from './components';
import { UserDropDown, LayoutBreadcrumb, FullScreen, ErrorAction, LockScreen } from './components';
import { useAppInject } from '/@/hooks/web/useAppInject';
import { useDesign } from '/@/hooks/web/useDesign';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
import { useLocale } from '/@/locales/useLocale';
// import { useLocale } from '/@/locales/useLocale';
import LoginSelect from '/@/views/sys/login/LoginSelect.vue';
import { useUserStore } from '/@/store/modules/user';
import { useI18n } from '/@/hooks/web/useI18n';
import Aide from "@/views/dashboard/ai/components/aide/index.vue"
// import Aide from "@/views/dashboard/ai/components/aide/index.vue"
const { t } = useI18n();
export default defineComponent({
@@ -86,17 +86,17 @@
LayoutBreadcrumb,
LayoutMenu,
UserDropDown,
AppLocalePicker,
// AppLocalePicker,
FullScreen,
Notify,
AppSearch,
// Notify,
// AppSearch,
ErrorAction,
LockScreen,
LoginSelect,
SettingDrawer: createAsyncComponent(() => import('/@/layouts/default/setting/index.vue'), {
loading: true,
}),
Aide
// SettingDrawer: createAsyncComponent(() => import('/@/layouts/default/setting/index.vue'), {
// loading: true,
// }),
// Aide
},
props: {
fixed: propTypes.bool,
@@ -105,23 +105,23 @@
const { prefixCls } = useDesign('layout-header');
const userStore = useUserStore();
const { getShowTopMenu, getShowHeaderTrigger, getSplit, getIsMixMode, getMenuWidth, getIsMixSidebar } = useMenuSetting();
const { getUseErrorHandle, getShowSettingButton, getSettingButtonPosition, getAiIconShow } = useRootSetting();
const { getUseErrorHandle, /* getShowSettingButton, getSettingButtonPosition, getAiIconShow */ } = useRootSetting();
const { title } = useGlobSetting();
const {
getHeaderTheme,
getShowFullScreen,
getShowNotice,
// getShowNotice,
getShowContent,
getShowBread,
getShowHeaderLogo,
getShowHeader,
getShowSearch,
// getShowSearch,
getUseLockPage,
getShowBreadTitle,
} = useHeaderSetting();
const { getShowLocalePicker } = useLocale();
// const { getShowLocalePicker } = useLocale();
const { getIsMobile } = useAppInject();
@@ -137,17 +137,16 @@
];
});
const getShowSetting = computed(() => {
if (!unref(getShowSettingButton)) {
return false;
}
const settingButtonPosition = unref(getSettingButtonPosition);
if (settingButtonPosition === SettingButtonPositionEnum.AUTO) {
return unref(getShowHeader);
}
return settingButtonPosition === SettingButtonPositionEnum.HEADER;
});
// const getShowSetting = computed(() => {
// if (!unref(getShowSettingButton)) {
// return false;
// }
// const settingButtonPosition = unref(getSettingButtonPosition);
// if (settingButtonPosition === SettingButtonPositionEnum.AUTO) {
// return unref(getShowHeader);
// }
// return settingButtonPosition === SettingButtonPositionEnum.HEADER;
// });
const getLogoWidth = computed(() => {
if (!unref(getIsMixMode) || unref(getIsMobile)) {
@@ -202,21 +201,21 @@
getSplit,
getMenuMode,
getShowTopMenu,
getShowLocalePicker,
// getShowLocalePicker,
getShowFullScreen,
getShowNotice,
// getShowNotice,
getUseErrorHandle,
getLogoWidth,
getIsMixSidebar,
getShowSettingButton,
getShowSetting,
getShowSearch,
// getShowSettingButton,
// getShowSetting,
// getShowSearch,
getUseLockPage,
loginSelectOk,
loginSelectRef,
title,
t,
getAiIconShow
// getAiIconShow
};
},
});
+2 -5
View File
@@ -25,14 +25,11 @@
<!-- 列表页全屏
<FoldButton v-if="getShowFold" />-->
<!-- <FullscreenOutlined /> -->
<router-link to="/ai" class="ai-icon">
<!-- <router-link to="/ai" class="ai-icon">
<a-tooltip title="AI助手" placement="left">
<!-- <svg t="1706259688149" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2056" width="17" height="17">-->
<!-- <path d="M826.368 325.632c0-7.168 2.048-10.24 10.24-10.24h123.904c7.168 0 10.24 2.048 10.24 10.24v621.568c0 7.168-2.048 10.24-10.24 10.24h-122.88c-8.192 0-10.24-4.096-10.24-10.24l-1.024-621.568z m-8.192-178.176c0-50.176 35.84-79.872 79.872-79.872 48.128 0 79.872 32.768 79.872 79.872 0 52.224-33.792 79.872-81.92 79.872-46.08 1.024-77.824-27.648-77.824-79.872zM462.848 584.704C441.344 497.664 389.12 307.2 368.64 215.04h-2.048c-16.384 92.16-58.368 247.808-92.16 369.664h188.416zM243.712 712.704l-62.464 236.544c-2.048 7.168-4.096 8.192-12.288 8.192H54.272c-8.192 0-10.24-2.048-8.192-12.288l224.256-783.36c4.096-13.312 7.168-26.624 8.192-65.536 0-6.144 2.048-8.192 7.168-8.192H450.56c6.144 0 8.192 2.048 10.24 8.192l250.88 849.92c2.048 7.168 0 10.24-7.168 10.24H573.44c-7.168 0-10.24-2.048-12.288-7.168l-65.536-236.544c1.024 1.024-251.904 0-251.904 0z" fill="#333333" p-id="19816"></path>-->
<!-- </svg>-->
<svg t="1737024931936" class="icon" viewBox="0 0 3011 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4248" width="256" height="256"><path d="M2028.242824 558.561882h415.021176V445.620706h-346.352941V321.415529h346.352941V210.823529l-328.463059 10.842353a2367.969882 2367.969882 0 0 0-31.021176-127.09647c341.955765-4.397176 602.352941-13.492706 781.131294-27.286588l41.441882 124.265411-320.933647 14.095059v115.772235h307.802353v124.205177h-307.802353v112.941176h375.506824v127.096471h-375.506824v113.844706c0 30.117647-5.782588 56.982588-17.468235 80.474353a114.447059 114.447059 0 0 1-50.778353 53.187764c-22.287059 11.926588-41.261176 19.154824-56.922353 21.684706-15.36 2.770824-82.522353 5.300706-201.426824 7.529412a5065.065412 5065.065412 0 0 0-31.984941-142.155294c64.632471 4.999529 114.447059 7.529412 149.624471 7.529412 44.574118 0 66.861176-23.190588 66.861176-69.632v-72.463059h-415.081411v-127.096471zM1685.624471 956.717176a1296.865882 1296.865882 0 0 0-27.286589-133.662117 2187.745882 2187.745882 0 0 0 96.978824 3.794823c18.191059 0 32.587294-4.758588 43.248941-14.155294 10.661647-9.697882 17.468235-23.491765 20.239059-41.381647 3.132235-17.889882 6.023529-66.379294 8.432941-145.408 2.590118-79.390118 3.614118-179.621647 3.373177-300.754823h-109.206589c-3.734588 212.389647-24.455529 364.604235-62.102588 456.523294-37.345882 91.919059-77.161412 156.491294-119.567059 193.837176-28.551529-27.888941-59.632941-54.392471-93.123764-79.510588-142.757647 12.830118-265.456941 25.298824-368.037648 37.165176l-15.962352-126.132705c14.095059-0.602353 28.190118-1.385412 42.345411-2.349177V88.003765h377.374118v687.043764c12.227765-1.204706 24.154353-2.349176 35.779765-3.312941 50.838588-95.653647 77.040941-244.555294 78.607058-446.58447h-85.172705V200.944941h87.04c0.301176-47.706353 0.481882-100.412235 0.481882-158.117647h125.168941c0 58.368-0.301176 111.073882-0.963765 158.117647H1957.647059l-9.878588 525.613177c-1.566118 62.464-5.481412 104.688941-11.745883 126.614588-6.324706 22.287059-16.805647 41.441882-31.563294 57.404235-14.757647 16.022588-32.768 27.105882-54.091294 33.430588-21.082353 6.264471-75.896471 10.480941-164.743529 12.649412z m-321.837177-759.567058h-140.227765V327.077647h140.227765V197.150118z m-140.227765 359.604706h140.227765V426.767059h-140.227765v129.867294z m140.227765 229.616941v-129.92753h-140.227765v140.288l140.227765-10.36047zM963.764706 114.326588V843.294118h-155.286588V114.326588H963.764706zM716.679529 843.294118H547.297882l-54.573176-167.032471H227.689412L174.140235 843.294118H5.662118l266.842353-728.96753h182.512941L716.739765 843.294118zM455.981176 556.212706L373.157647 303.585882c-5.300706-16.022588-9.035294-37.165176-11.264-63.548235h-4.216471a269.010824 269.010824 0 0 1-12.709647 61.680941L261.662118 556.212706H455.981176z" fill="#1F1F1F" p-id="4249"></path></svg>
</a-tooltip>
</router-link>
</router-link> -->
</div>
</template>
</Tabs>
+2 -2
View File
@@ -87,9 +87,9 @@ const setting: ProjectConfig = {
// 显示官网按钮
showDoc: false,
// 显示消息中心按钮
showNotice: true,
showNotice: false,
// 显示菜单搜索按钮
showSearch: true,
showSearch: false,
},
// 菜单配置