首页 > 其他分享 >Element UI 自定义Layout前端页面布局

Element UI 自定义Layout前端页面布局

时间:2024-09-27 16:24:07浏览次数:10  
标签:Layout 自定义 component Element import path hidden true 路由

1.layout下新建front文件夹

index.vue中内容

<template>
    <div class="frontLayout">
      <el-container>
        <el-header>
          <div class="navBar">
            <div class="navBarLeft">             
              <div class="brand">
                <img src="../../assets/logo/logo.png" class="logo" /> 
                 XXX管理系统
              </div>             
              <div class="menuLeft">
                <el-menu ref="menu" class="el-menu-demo" mode="horizontal" :default-active="activeIndex"
                  active-text-color="#42cece">                
                  <el-menu-item v-hasPermi="['newobefront:tch:kcgl']" index="1"
                    @click="linkTo('/univ/frontEnd/home', '1')">
                    首页
                  </el-menu-item>                 
                  <el-submenu v-hasPermi="['newobefront:tch:kcgl']" index="2">
                    <template slot="title">基础设置</template>
                    <el-menu-item v-hasPermi="['newobefront:tch:kcgl']" index="2-1"
                      @click="linkTo('/univ/frontEnd/dept/index', '')">个人中心</el-menu-item>
                    <el-menu-item v-hasPermi="['newobefront:tch:kcgl']" index="2-2"
                      @click="linkTo('/univ/frontEnd/bizCourse/index', '')">我的地址</el-menu-item>                   
                  </el-submenu>
                </el-menu>  
              </div>
            </div>
  
            <div class="navBarRight">
              <div class="navBarItem">
                <el-dropdown class="avatar-container right-menu-item hover-effect" size="medium">
                  <div class="avatar-wrapper">
                    <div class="userInfo">
                      <div class="uIcon">
                        <span class="icon"><i class="el-icon-user-solid"></i></span>
                      </div>
                      <div class="uInfo">
                        <span class="sp1">becky</span>                      
                      </div>
                    </div>
                    <i class="el-icon-caret-bottom"></i>
                  </div>
                  <el-dropdown-menu slot="dropdown">
                    <el-dropdown-item command="handleResetPwd">
                      <span>修改密码</span>
                    </el-dropdown-item>
                    <el-dropdown-item command="handleUploadPic">
                      <span>更新签名图片</span>
                    </el-dropdown-item>
                    <el-dropdown-item command="handleSwitchRoles">
                      <span>切换角色</span>
                    </el-dropdown-item>                  
                  </el-dropdown-menu>
                </el-dropdown>
              </div>
              <div class="signOut">
                <i class="el-icon-switch-button" @click="logout" title="退出系统"></i>
              </div>
            </div>
          </div>
        </el-header>
        <el-container>
          <el-main :style="$route.meta.type == 'top' ? '' : 'margin-left: 0;'">
            <div class="main">
              <div class="container">
                <router-view :key="key" />
              </div>
            </div>
          </el-main>
        </el-container>
      </el-container>
    </div>
  </template>

2.路由页面配置

index.js页面

import Vue from "vue";
import Router from "vue-router";

Vue.use(Router);

//解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
const originalPush = Router.prototype.push;
Router.prototype.push = function push(location) {
  return originalPush.call(this, location).catch((err) => err);
};

/* Layout */
import Layout from "@/layout";
import FrontLayout from "@/layout/front"; //自定义布局组件
/**
 * Note: 路由配置项
 *
 * hidden: true                     // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
 * alwaysShow: true                 // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
 *                                  // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
 *                                  // 若你想不管路由下面的 children 声明的个数都显示你的根路由
 *                                  // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
 * redirect: noRedirect             // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
 * name:'router-name'               // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
 * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
 * roles: ['admin', 'common']       // 访问路由的角色权限
 * permissions: ['a:a:a', 'b:b:b']  // 访问路由的菜单权限
 * meta : {
    noCache: true                   // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
    title: 'title'                  // 设置该路由在侧边栏和面包屑中展示的名字
    icon: 'svg-name'                // 设置该路由的图标,对应路径src/assets/icons/svg
    breadcrumb: false               // 如果设置为false,则不会在breadcrumb面包屑中显示
    activeMenu: '/system/user'      // 当路由设置了该属性,则会高亮相对应的侧边栏。
  }
 */

// 公共路由
export const constantRoutes = [
  {
    path: "/redirect",
    component: Layout,
    hidden: true,
    children: [
      {
        path: "/redirect/:path(.*)",
        component: () => import("@/views/redirect"),
      },
      {
        path: "/tool/gen-edit/index/:tableId",
        component: () => import("@/views/tool/gen/editTable"),
        hidden: true,
      },
    ],
  },
  {
    path: "/univ/front",
    component: FrontLayout, //自定义布局组件
    redirect: "/univ/front/course",
    hidden: true,
    children: [
      {
        path: "index/:tcourseId",
        component: () => import("@/views/front"),
        meta: { title: "首页", icon: "el-icon-house" },
        permissions: ["front:tch:home"],
      },      
    ],
  },

  {
    path: "/login",
    component: () => import("@/views/login"),
    hidden: true,
  },
  {
    path: "/register",
    component: () => import("@/views/register"),
    hidden: true,
  },
  {
    path: "/404",
    component: () => import("@/views/error/404"),
    hidden: true,
  },
  {
    path: "/401",
    component: () => import("@/views/error/401"),
    hidden: true,
  },

  {
    path: "/user",
    component: Layout,
    hidden: true,
    redirect: "noredirect",
    children: [
      {
        path: "profile",
        component: () => import("@/views/system/user/profile/index"),
        name: "Profile",
        meta: { title: "个人中心", icon: "user" },
      },
    ],
  },
];

// 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [
  {
    path: "/system/user-auth",
    component: Layout,
    hidden: true,
    permissions: ["system:user:edit"],
    children: [
      {
        path: "role/:userId(\\d+)",
        component: () => import("@/views/system/user/authRole"),
        name: "AuthRole",
        meta: { title: "分配角色", activeMenu: "/system/user" },
      },
    ],
  },
  {
    path: "/system/role-auth",
    component: Layout,
    hidden: true,
    permissions: ["system:role:edit"],
    children: [
      {
        path: "user/:roleId(\\d+)",
        component: () => import("@/views/system/role/authUser"),
        name: "AuthUser",
        meta: { title: "分配用户", activeMenu: "/system/role" },
      },
    ],
  },
  {
    path: "/system/dict-data",
    component: Layout,
    hidden: true,
    permissions: ["system:dict:list"],
    children: [
      {
        path: "index/:dictId(\\d+)",
        component: () => import("@/views/system/dict/data"),
        name: "Data",
        meta: { title: "字典数据", activeMenu: "/system/dict" },
      },
    ],
  },
  {
    path: "/monitor/job-log",
    component: Layout,
    hidden: true,
    permissions: ["monitor:job:list"],
    children: [
      {
        path: "index",
        component: () => import("@/views/monitor/job/log"),
        name: "JobLog",
        meta: { title: "调度日志", activeMenu: "/monitor/job" },
      },
    ],
  },
  {
    path: "/tool/gen-edit",
    component: Layout,
    hidden: true,
    permissions: ["tool:gen:edit"],
    children: [
      {
        path: "index/:tableId(\\d+)",
        component: () => import("@/views/tool/gen/editTable"),
        name: "GenEdit",
        meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
      },
    ],
  },
];

export default new Router({
  mode: "history", // 去掉url中的#
  base: process.env.BASE_URL,
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes,
});

标签:Layout,自定义,component,Element,import,path,hidden,true,路由
From: https://blog.csdn.net/happy_xn/article/details/142595622

相关文章

  • JVM自定义类的加载器
    自定义类的加载器咱们书接上回继续说说自定义类类加载器自定义类加载器有什么用?通过类加载器可以实现非常精妙的插件机制。例如:著名的OSGI组件框架,再如Eclipse的插件机制。类加载器为应用程序提供了一种动态增加新功能的机制,这种机制无须重新打包发布应用程序就能实现。......
  • uniapp [全端兼容] - 详细实现拍照或相册选取图片后插入水印功能,手机拍照或相册上传图
    前言网上的教程乱七八糟且兼容性太差,本文提供优质示例。在uni-app全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)开发中,详解手机从相册选取上传图像后加入水印功能,手机拍摄照相后也可以加入水印,Uniapp给图片添加水印,获取上传或拍摄的图片信息后,为......
  • 鸿蒙(HarmonyOS)--声明式UI、自定义组件
    目录1.基础语法概述2.声明式UI描述2.1创建组件2.1.1无参数2.1.2有参数2.2配置属性2.3配置事件 2.4配置子组件3.自定义组件3.1创建自定义组件3.1.1基本使用3.1.2组件属性、方法3.1.3通用样式事件 3.2页面和自定义组件生命周期3.2.1自定义组件的创建......
  • PbootCMS默认面包屑导航样式修改及自定义的设置方法
    在使用PBootCMS建站时,如果需要对系统默认的面包屑标签进行样式修改,可以通过调整相应的参数来实现。以下是具体的步骤和示例代码:修改面包屑标签的样式自定义分隔符修改首页文本添加首页图标添加分割图标示例代码假设你需要修改面包屑标签的分隔符、首页文本以及图标,可以按......
  • 自定义 Git
    我们可以对Git做一些配置。‍配置别名有没有经常敲错命令?比如gitstatus​?status​这个单词真心不好记。如果敲gitst​就表示gitstatus​那就简单多了,当然这种偷懒的办法我们是极力赞成的。我们只需要敲一行命令,告诉Git,以后st​就表示status​:$gitconfig--......
  • hibernate 自定义表名与列名 - 增删改查分页 - 兼容Mysql和Oracle
    1.新增service,先组装SQLimportlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.data.domain.Page;importorg.springframework.stereo......
  • Unity UI Tookite:实现命令控制台 [自定义元素]
    目录前言功能需求基础逻辑实现——输入输出分离逻辑实现——命令解析/历史指令切换历史指令解析指令基于反射的命令组自动装载逻辑实现——命令提示逻辑实现——定位报错逻辑实现——内容滚动/元素铺满逻辑实现——可变文本块最后前言最近在将Godot项目重写至Unit......
  • Windows 允许用户自定义和安装网络协议。以下是一些方法和步骤,帮助您在 Windows 中进
    Windows允许用户自定义和安装网络协议。以下是一些方法和步骤,帮助您在Windows中进行此操作。1.使用设备管理器安装协议您可以通过设备管理器来安装特定的网络协议:打开设备管理器:右键点击“开始”菜单,选择“设备管理器”。找到网络适配器:展开“网络适配器”部分。......
  • elementUI 的 input无法输入bug解决
    1、出现bug的原因    是因为数据层虽然改变了,但是并没有引起视图层的变化2、解决方案@input="forceUpdate($event)"//在input框上加输入事件forceUpdate(e){this.$forceUpdate()强制刷新}jeecg-boot框架前端写了个筛选组件:SearchBox.vue,测试人员发现输......
  • SpringBoot3自定义favicon.ico图标
            在学习SpringBoot项目的过程中,我想在我的个人项目中添加自定义favicon.ico的图标。但是你会发现在使用yml去配置favicon时,发现配置被废除了。如下图所示:        即使没有配置,SpringBoot也会帮我们去扫描resource包下的static,我们只需要将favicon.ico......