|
@@ -9,98 +9,79 @@ const router = useRouter();
|
|
|
const route = useRoute();
|
|
|
const tokenStore = useTokenStore();
|
|
|
|
|
|
-// 新增:判断当前路由是否全屏模式(无头部和侧边栏)
|
|
|
+// 是否为全屏页面
|
|
|
const isFullScreen = computed(() => route.meta.fullScreen === true);
|
|
|
|
|
|
-// 根据用户类型动态定义 Tab 数据
|
|
|
+// Tab 配置
|
|
|
const tabs = computed(() => {
|
|
|
if (tokenStore.token.loginType === "admin") {
|
|
|
return [
|
|
|
- { name: "parameterConfig", label: "参数配置", routes: ["/ModelSelection", "/thres", "/ModelTrain"] },
|
|
|
- { name: "dataManagement", label: "数据管理", routes: ["/Visualization", "/Visualizatio", "/AdminRegionData", "/SoilAssessmentUnitData", "/SoilHeavyMetalData", "/CropHeavyMetalData", "/LandUseTypeData", "/SoilAcidificationData", "/ClimateInfoData", "/GeographicEnvInfoData"] },
|
|
|
- { name: "infoManagement", label: "信息管理", routes: ["/IntroductionUpdate"] },
|
|
|
- { name: "modelManagement", label: "模型管理及配置", routes: ["/Admin/CadmiumPredictionModel", "/Admin/EffectiveCadmiumModel", "/Admin/RiceRiskModel", "/Admin/AcidReductionModel", "/Admin/WheatRiskModel", "/Admin/VegetableRiskModel"] },
|
|
|
- { name: "userManagement", label: "用户管理", routes: ["/Admin/UserRegistration", "/Admin/UserManagement"] },
|
|
|
+ { name: "dataManagement", label: "数据管理", icon: "el-icon-folder", routes: ["/Visualizatio","/Visualization", "/AdminRegionData", "/SoilAssessmentUnitData", "/SoilHeavyMetalData", "/CropHeavyMetalData", "/LandUseTypeData", "/SoilAcidificationData", "/ClimateInfoData", "/GeographicEnvInfoData"] },
|
|
|
+ { name: "infoManagement", label: "信息管理", icon: "el-icon-document", routes: ["/IntroductionUpdate"] },
|
|
|
+ { name: "modelManagement", label: "模型管理及配置", icon: "el-icon-cpu", routes: ["/CadmiumPredictionModel", "/EffectiveCadmiumModel", "/Admin/RiceRiskModel", "/AdminModelSelection", "/Admin/thres", "/Admin/ModelTrain", "/Admin/WheatRiskModel", "/Admin/VegetableRiskModel"] },
|
|
|
+ { name: "userManagement", label: "用户管理", icon: "el-icon-user", routes: ["/UserManagement", "/UserRegistration"] },
|
|
|
];
|
|
|
} else {
|
|
|
return [
|
|
|
- { name: "shuJuKanBan", label: "数据看板", routes: ["/shuJuKanBan"] },
|
|
|
- { name: "introduction", label: "软件简介", routes: ["/SoilPro", "/Overview", "/ResearchFindings", "/Unit"] },
|
|
|
- { name: "heavyMetalFluxCalculation", label: "重金属输入输出通量计算", routes: ["/irrigationWater", "/agriculturalProductInput", "/atmosphericDryWetDeposition", "/surfaceRunoff", "/cropRemoval", "/subsurfaceFlow"] },
|
|
|
- { name: "mapView", label: "地图展示", routes: ["/mapView"] },
|
|
|
- { name: "cadmiumPrediction", label: "土壤镉含量预测", routes: ["/TotalCadmiumPrediction", "/EffectiveCadmiumPrediction"] },
|
|
|
- { name: "cropRiskAssessment", label: "作物安全生产风险阈值评估", routes: ["/cropRiskAssessment"] },
|
|
|
- { name: "farmlandQualityAssessment", label: "耕地质量评估", routes: ["/farmlandQualityAssessment"] },
|
|
|
- { name: "soilAcidificationPrediction", label: "土壤酸化预测", routes: ["/Calculation", "/AcidNeutralizationModel"] },
|
|
|
- { name: "scenarioSimulation", label: "情景模拟", routes: ["/TraditionalFarmingRisk", "/HeavyMetalCadmiumControl", "/SoilAcidificationControl"] },
|
|
|
- { name: "dataStatistics", label: "数据统计报表", routes: ["/DetectionStatistics", "/FarmlandPollutionStatistics", "/PlantingRiskStatistics"] },
|
|
|
+ { name: "shuJuKanBan", label: "数据看板", icon: "el-icon-data-analysis", routes: ["/shuJuKanBan"] },
|
|
|
+ { name: "introduction", label: "软件简介", icon: "el-icon-info-filled", routes: ["/SoilPro", "/Overview", "/ResearchFindings", "/Unit"] },
|
|
|
+ { name: "heavyMetalFluxCalculation", label: "重金属输入输出通量", icon: "el-icon-refresh", routes: ["/irrigationWater", "/agriculturalProductInput", "/atmosphericDryWetDeposition", "/surfaceRunoff", "/cropRemoval", "/subsurfaceFlow"] },
|
|
|
+ { name: "mapView", label: "地图展示", icon: "el-icon-map-location", routes: ["/mapView"] },
|
|
|
+ { name: "cadmiumPrediction", label: "土壤镉预测", icon: "el-icon-c-scale-to-original", routes: ["/TotalCadmiumPrediction", "/EffectiveCadmiumPrediction"] },
|
|
|
+ { name: "cropRiskAssessment", label: "作物风险评估", icon: "el-icon-warning", routes: ["/cropRiskAssessment"] },
|
|
|
+ { name: "farmlandQualityAssessment", label: "耕地质量评估", icon: "el-icon-rank", routes: ["/farmlandQualityAssessment"] },
|
|
|
+ { name: "soilAcidificationPrediction", label: "土壤酸化预测", icon: "el-icon-magic-stick", routes: ["/Calculation", "/AcidNeutralizationModel"] },
|
|
|
+ { name: "scenarioSimulation", label: "情景模拟", icon: "el-icon-s-operation", routes: ["/TraditionalFarmingRisk", "/HeavyMetalCadmiumControl", "/SoilAcidificationControl"] },
|
|
|
+ { name: "dataStatistics", label: "数据统计", icon: "el-icon-pie-chart", routes: ["/DetectionStatistics", "/FarmlandPollutionStatistics", "/PlantingRiskStatistics"] },
|
|
|
];
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-// 当前激活的 Tab
|
|
|
-const activeName = ref(tabs.value[0]?.name || ""); // 确保默认激活的是第一个 Tab
|
|
|
-
|
|
|
-// 控制是否显示 Tabs
|
|
|
+// 当前激活 tab
|
|
|
+const activeName = ref(tabs.value[0]?.name || "");
|
|
|
const showTabs = computed(() => tabs.value.length > 1);
|
|
|
-
|
|
|
-// 控制 Tabs 样式
|
|
|
-const tabStyle = computed(() => {
|
|
|
- return tabs.value.length === 1 ? { width: "100%", justifyContent: "center" } : {};
|
|
|
-});
|
|
|
-
|
|
|
-// 用于控制首次是否跳转
|
|
|
+const tabStyle = computed(() => tabs.value.length === 1 ? { width: "100%", justifyContent: "center" } : {});
|
|
|
let hasNavigated = false;
|
|
|
|
|
|
-// 监听 activeName 的变化,加载对应数据,且首次不自动跳转
|
|
|
-watch(
|
|
|
- () => activeName.value,
|
|
|
- (newTab) => {
|
|
|
- const tab = tabs.value.find(t => t.name === newTab);
|
|
|
- const targetPath = tab?.routes?.[0];
|
|
|
-
|
|
|
- if (!hasNavigated) {
|
|
|
- hasNavigated = true;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (tab && targetPath && router.currentRoute.value.path !== targetPath) {
|
|
|
- console.log("跳转目标:", targetPath);
|
|
|
- router.push({ path: targetPath });
|
|
|
- }
|
|
|
- },
|
|
|
- { immediate: true }
|
|
|
-);
|
|
|
+watch(() => activeName.value, (newTab) => {
|
|
|
+ const tab = tabs.value.find(t => t.name === newTab);
|
|
|
+ const targetPath = tab?.routes?.[0];
|
|
|
+ if (!hasNavigated) {
|
|
|
+ hasNavigated = true;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (tab && targetPath && router.currentRoute.value.path !== targetPath) {
|
|
|
+ router.push({ path: targetPath });
|
|
|
+ }
|
|
|
+}, { immediate: true });
|
|
|
|
|
|
-// Tab 点击事件
|
|
|
const handleClick = (tab: any, event: Event) => {
|
|
|
activeAsideTab.value = tab.props.name;
|
|
|
};
|
|
|
|
|
|
-// 动态选择侧边栏组件
|
|
|
+// 侧边栏组件根据 tab 变化
|
|
|
const AsideComponent = computed(() => {
|
|
|
if (["parameterConfig", "dataManagement", "infoManagement", "modelManagement", "userManagement"].includes(activeName.value)) {
|
|
|
return defineAsyncComponent(() => import("./AppAsideForTab2.vue"));
|
|
|
- } else if (["introduction", "acidModel", "neutralizationModel", "mapView", "cadmiumPrediction", "cropRiskAssessment", "farmlandQualityAssessment", "soilAcidificationPrediction", "scenarioSimulation", "dataStatistics", "heavyMetalFluxCalculation"].includes(activeName.value)) {
|
|
|
+ } else {
|
|
|
return defineAsyncComponent(() => import("./AppAside.vue"));
|
|
|
}
|
|
|
- return null;
|
|
|
});
|
|
|
|
|
|
-// 控制侧边栏显示(全屏时隐藏)
|
|
|
+// 是否显示侧边栏
|
|
|
const showAside = computed(() => {
|
|
|
- return !isFullScreen.value && activeName.value !== "mapView" && activeName.value !== "shuJuKanBan" && activeName.value !== "cropRiskAssessment" && activeName.value !== "farmlandQualityAssessment"; // 数据看板不显示侧边栏
|
|
|
+ return (
|
|
|
+ !isFullScreen.value &&
|
|
|
+ activeName.value !== "mapView" &&
|
|
|
+ activeName.value !== "shuJuKanBan" &&
|
|
|
+ activeName.value !== "cropRiskAssessment" &&
|
|
|
+ activeName.value !== "farmlandQualityAssessment"
|
|
|
+ );
|
|
|
});
|
|
|
|
|
|
-// 固定选中侧边栏选项
|
|
|
-const activeAsideTab = ref(activeName.value || "shuJuKanBan");
|
|
|
-
|
|
|
-// 用户信息
|
|
|
-const userInfo = reactive({
|
|
|
- name: tokenStore.token.name || "未登录",
|
|
|
-});
|
|
|
+const activeAsideTab = ref(activeName.value || "");
|
|
|
+const userInfo = reactive({ name: tokenStore.token.name || "未登录" });
|
|
|
|
|
|
-// 处理退出逻辑
|
|
|
const handleLogout = async () => {
|
|
|
try {
|
|
|
await ElMessageBox.confirm("确定要退出登录吗?", "提示", {
|
|
@@ -112,54 +93,36 @@ const handleLogout = async () => {
|
|
|
tokenStore.clearToken();
|
|
|
ElMessage.success("退出成功");
|
|
|
router.push("/login");
|
|
|
- } catch (error) {
|
|
|
+ } catch {
|
|
|
ElMessage.info("已取消退出");
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-// 添加全局错误处理逻辑(如果需要)
|
|
|
-watch(
|
|
|
- () => route,
|
|
|
- (newRoute) => {
|
|
|
- console.log(`[AppLayout] Route changed to: ${newRoute.path}`);
|
|
|
- },
|
|
|
- { immediate: true }
|
|
|
-);
|
|
|
+const mainPaddingStyle = computed(() => {
|
|
|
+ return {
|
|
|
+ padding: ["mapView", "infoManagement"].includes(activeName.value) ? "0" : "20px",
|
|
|
+ };
|
|
|
+});
|
|
|
+
|
|
|
+const scrollbarStyle = computed(() => {
|
|
|
+ return isFullScreen.value ? { height: "100vh" } : { height: "calc(100vh - 128px)" };
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
<div class="common-layout" :class="{ 'full-screen': isFullScreen }">
|
|
|
- <el-container style="height: 100vh">
|
|
|
- <!-- 只在非全屏模式显示顶部导航栏 -->
|
|
|
- <el-header v-if="!isFullScreen" class="header">
|
|
|
- <div class="header-content">
|
|
|
- <!-- 添加 logo 图片 -->
|
|
|
- <div class="logo-container">
|
|
|
- <img src="@/assets/logo.png" alt="Logo 1" class="logo" />
|
|
|
- </div>
|
|
|
- <span class="project-name">酸性土壤精准治酸智能专家系统</span>
|
|
|
- <el-tabs
|
|
|
- v-if="showTabs"
|
|
|
- v-model="activeName"
|
|
|
- class="demo-tabs"
|
|
|
- :style="tabStyle"
|
|
|
- @tab-click="handleClick"
|
|
|
- >
|
|
|
- <el-tab-pane
|
|
|
- v-for="tab in tabs"
|
|
|
- :key="tab.name"
|
|
|
- :label="tab.label"
|
|
|
- :name="tab.name"
|
|
|
- />
|
|
|
- </el-tabs>
|
|
|
- <div v-else class="single-tab" @click="handleClick(tabs[0], $event)">
|
|
|
- {{ tabs[0]?.label }}
|
|
|
- </div>
|
|
|
- <el-dropdown>
|
|
|
+ <el-container class="layout-container">
|
|
|
+ <!-- 顶部 Header -->
|
|
|
+ <el-header class="layout-header" v-if="!isFullScreen">
|
|
|
+ <div class="logo-title-row">
|
|
|
+ <img src="@/assets/logo.png" alt="Logo" class="logo" />
|
|
|
+ <span class="project-name">区域土壤重金属污染风险评估</span>
|
|
|
+ </div>
|
|
|
+ <el-dropdown>
|
|
|
<span class="el-dropdown-link">
|
|
|
<el-avatar
|
|
|
:size="40"
|
|
|
- :src="'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'"
|
|
|
+ src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png"
|
|
|
/>
|
|
|
</span>
|
|
|
<template #dropdown>
|
|
@@ -169,173 +132,148 @@ watch(
|
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
|
</el-dropdown>
|
|
|
- </div>
|
|
|
</el-header>
|
|
|
|
|
|
- <el-container>
|
|
|
- <!-- 非全屏且满足条件时显示侧边栏 -->
|
|
|
- <el-aside
|
|
|
- v-if="!isFullScreen && showAside && showTabs"
|
|
|
- :width="'200px'"
|
|
|
- class="aside"
|
|
|
- >
|
|
|
- <component
|
|
|
- :is="AsideComponent"
|
|
|
- :activeTab="activeName"
|
|
|
- :showTabs="showTabs"
|
|
|
- />
|
|
|
+ <!-- Tab 区域 -->
|
|
|
+ <div class="tabs-row" v-if="!isFullScreen">
|
|
|
+ <el-tabs v-if="showTabs" v-model="activeName" class="demo-tabs" :style="tabStyle" @tab-click="handleClick">
|
|
|
+ <el-tab-pane v-for="tab in tabs" :key="tab.name" :name="tab.name">
|
|
|
+ <template #label>
|
|
|
+ <i :class="['tab-icon', tab.icon]"></i>
|
|
|
+ <span class="tab-label-text">{{ tab.label }}</span>
|
|
|
+ </template>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <div v-else class="single-tab" @click="handleClick(tabs[0], $event)">
|
|
|
+ <i :class="['tab-icon', tabs[0].icon]"></i>
|
|
|
+ <span class="tab-label-text">{{ tabs[0].label }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 主体区域 -->
|
|
|
+ <el-container class="layout-main-container">
|
|
|
+ <el-aside v-if="showAside && showTabs" class="layout-aside">
|
|
|
+ <component :is="AsideComponent" :activeTab="activeName" :showTabs="showTabs" />
|
|
|
</el-aside>
|
|
|
|
|
|
- <el-container class="header-and-main" :style="isFullScreen ? { height: '100vh' } : {}">
|
|
|
- <el-main
|
|
|
- :style="isFullScreen ? { padding: 0 } : { padding: activeName === 'mapView' || activeName === 'infoManagement' ? '0' : '20px', backgroundColor: '#ecf0f1' }"
|
|
|
- >
|
|
|
- <el-scrollbar :style="isFullScreen ? { height: '100vh' } : { height: 'auto' }">
|
|
|
- <RouterView />
|
|
|
- </el-scrollbar>
|
|
|
- </el-main>
|
|
|
- </el-container>
|
|
|
+ <el-main class="layout-content-wrapper" :style="mainPaddingStyle">
|
|
|
+ <el-scrollbar :style="scrollbarStyle">
|
|
|
+ <RouterView />
|
|
|
+ </el-scrollbar>
|
|
|
+ </el-main>
|
|
|
</el-container>
|
|
|
</el-container>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
-<style scoped>
|
|
|
-.common-layout {
|
|
|
- display: flex;
|
|
|
- height: 100%;
|
|
|
- font-family: 'Roboto', sans-serif;
|
|
|
- background: linear-gradient(135deg, #f3f4f6, #e5e7eb);
|
|
|
-}
|
|
|
-
|
|
|
-/* 新增:全屏布局,移除间距,充满视图 */
|
|
|
-.full-screen {
|
|
|
+<style>
|
|
|
+.layout-container {
|
|
|
height: 100vh;
|
|
|
- overflow: hidden;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ background-color: #f5f7fa;
|
|
|
}
|
|
|
|
|
|
-.full-screen .el-main,
|
|
|
-.full-screen .el-scrollbar {
|
|
|
- height: 100vh !important;
|
|
|
- padding: 0 !important;
|
|
|
- background-color: transparent !important;
|
|
|
+.layout-header {
|
|
|
+ height: 160px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 0 50px;
|
|
|
+ background: linear-gradient(to bottom, #6c8598cc 0%, #5b7083cc 100%); /* 更浅色调 */
|
|
|
+ backdrop-filter: blur(12px);
|
|
|
+ -webkit-backdrop-filter: blur(12px);
|
|
|
+ border-bottom: none;
|
|
|
+ color: #f0f3f7;
|
|
|
}
|
|
|
|
|
|
-.header {
|
|
|
+.tabs-row {
|
|
|
display: flex;
|
|
|
- justify-content: space-between;
|
|
|
+ justify-content: center;
|
|
|
align-items: center;
|
|
|
- padding: 15px 30px;
|
|
|
- background-color: #ffffff;
|
|
|
- border-bottom: 1px solid #e5e7eb;
|
|
|
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
|
- border-radius: 10px;
|
|
|
+ padding: 5px 24px;
|
|
|
+ background: linear-gradient(to bottom, #5b7083cc 0%, #4a5e70cc 100%); /* 更浅色调 */
|
|
|
+ backdrop-filter: blur(10px);
|
|
|
+ -webkit-backdrop-filter: blur(10px);
|
|
|
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
|
}
|
|
|
|
|
|
-.header-content {
|
|
|
+.logo-title-row {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
- width: 100%;
|
|
|
+ gap: 24px;
|
|
|
+}
|
|
|
+
|
|
|
+.logo {
|
|
|
+ height: 80px;
|
|
|
}
|
|
|
|
|
|
.project-name {
|
|
|
- font-size: 1.2rem;
|
|
|
+ font-size: 72px;
|
|
|
font-weight: bold;
|
|
|
- color: #1f2937;
|
|
|
- margin-right: 20px;
|
|
|
+ color: #f0f3f7;
|
|
|
}
|
|
|
|
|
|
.demo-tabs {
|
|
|
- flex-grow: 1;
|
|
|
- margin-right: 20px;
|
|
|
+ height: 64px;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- background-color: #f9fafb;
|
|
|
- border-radius: 8px;
|
|
|
- padding: 5px;
|
|
|
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
-}
|
|
|
-
|
|
|
-.demo-tabs > .el-tabs__header {
|
|
|
- border-bottom: none;
|
|
|
}
|
|
|
|
|
|
-.demo-tabs > .el-tabs__item {
|
|
|
- color: #374151;
|
|
|
- font-size: 14px;
|
|
|
- font-weight: 500;
|
|
|
- padding: 8px 16px;
|
|
|
- border-radius: 6px;
|
|
|
- transition: background-color 0.3s ease, color 0.3s ease;
|
|
|
+.el-tabs__item {
|
|
|
+ font-size: 40px;
|
|
|
+ font-weight: 600;
|
|
|
+ padding: 25px 36px !important;
|
|
|
+ margin: 5px;
|
|
|
+ color: #cfd8dc; /* 默认浅灰文字 */
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 10px;
|
|
|
+ transition: all 0.2s ease-in-out;
|
|
|
}
|
|
|
|
|
|
-.demo-tabs > .el-tabs__item:hover {
|
|
|
- background-color: #e5e7eb;
|
|
|
- color: #2563eb;
|
|
|
+.el-tabs__item:hover {
|
|
|
+ background-color: #455a64; /* 悬停深色背景 */
|
|
|
+ color: #ffffff; /* 悬停白色文字 */
|
|
|
}
|
|
|
|
|
|
-.demo-tabs > .el-tabs__item.is-active {
|
|
|
- background-color: #2563eb;
|
|
|
- color: #ffffff;
|
|
|
- font-weight: bold;
|
|
|
- box-shadow: inset 0 0 6px rgba(37, 99, 235, 0.5);
|
|
|
+.el-tabs__item.is-active {
|
|
|
+ background-color: #1abc9c; /* 激活亮色背景 */
|
|
|
+ color: #ffffff; /* 激活白色文字 */
|
|
|
+ box-shadow: 0 4px 16px rgba(26, 188, 156, 0.4);
|
|
|
+ font-weight: 700;
|
|
|
}
|
|
|
|
|
|
-.single-tab {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- width: 100%;
|
|
|
- height: 40px;
|
|
|
- background-color: #2563eb;
|
|
|
- color: #ffffff;
|
|
|
- font-size: 16px;
|
|
|
- font-weight: bold;
|
|
|
- border-radius: 8px;
|
|
|
- cursor: pointer;
|
|
|
- transition: background-color 0.3s ease;
|
|
|
- user-select: none;
|
|
|
+.tab-icon {
|
|
|
+ font-size: 36px; /* 原 20px */
|
|
|
+ margin-right: 8px;
|
|
|
+ color: inherit; /* 跟随文字颜色 */
|
|
|
}
|
|
|
|
|
|
-.single-tab:hover {
|
|
|
- background-color: #1d4ed8;
|
|
|
+.tab-label-text {
|
|
|
+ font-size: 20px;
|
|
|
+ color: inherit;
|
|
|
}
|
|
|
|
|
|
-.aside {
|
|
|
- padding: 0;
|
|
|
- background-color: #f9fafb;
|
|
|
- border-radius: 10px;
|
|
|
- margin-left: 10px;
|
|
|
- box-shadow: 0 0 10px rgb(32 33 36 / 8%);
|
|
|
-}
|
|
|
-
|
|
|
-.header-and-main {
|
|
|
- border-radius: 10px;
|
|
|
- background-color: #ffffff;
|
|
|
- margin-left: 10px;
|
|
|
- height: 100%;
|
|
|
- overflow: hidden;
|
|
|
+.layout-main-container {
|
|
|
+ flex: 1;
|
|
|
display: flex;
|
|
|
- flex-direction: column;
|
|
|
+ overflow: hidden;
|
|
|
+ min-height: 0;
|
|
|
}
|
|
|
|
|
|
-.el-main {
|
|
|
+.layout-aside {
|
|
|
+ width: 200px;
|
|
|
+ background-color: #fff;
|
|
|
+ border-right: 1px solid #dcdfe6;
|
|
|
overflow-y: auto;
|
|
|
}
|
|
|
|
|
|
-.el-scrollbar {
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.logo-container {
|
|
|
+.layout-content-wrapper {
|
|
|
+ flex: 1;
|
|
|
display: flex;
|
|
|
- align-items: center;
|
|
|
- gap: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.logo {
|
|
|
- height: 40px;
|
|
|
- width: auto;
|
|
|
+ flex-direction: column;
|
|
|
+ background-color: #fff;
|
|
|
+ overflow: hidden;
|
|
|
}
|
|
|
</style>
|