路由和页面

【VUE】demo03-VUE后台管理系统-vuex实现router动态路由+左侧sidebar+顶部breadcrumb 上两篇文章: 【VUE】demo01-VUE做后台管理系统页面实例-创建基本环境+页面布局 【VUE】demo02-VUE后台管理系统-axios接口测试+router动态路由 工具:Visual Studio Code + Vue + Vue cil2 + Vuex + Vue Router + ElementUI + axios 项目代码地址: 1.8加入vuex 第一步先添加 vuex 的实例store,在 src 文件夹中创建一个文件store/index.js,我们还需要添加 m... 阅读详情

快速新建文件夹

$ mkdir departments employees setting salarys social attendances approvals permission

每个模块的内容,可以先按照标准的模板建立

设置每个模块的路由规则

每个模块导出的内容表示该模块下的路由规则

如员工 employees.js

// 导出属于员工的路由规则
import Layout from '@/layout'
//  {  path: '', component: '' }
// 每个子模块 其实 都是外层是layout  组件位于layout的二级路由里面
export default {
  path: '/employees', // 路径
  name: 'employees', // 给路由规则加一个name
  component: Layout, // 组件
  // 配置二级路的路由表
  children: [{
    path: '', // 这里当二级路由的path什么都不写的时候 表示该路由为当前二级路由的默认路由
    component: () => import('@/views/employees'),
    // 路由元信息  其实就是存储数据的对象 我们可以在这里放置一些信息
    meta: {
      title: '员工管理' // meta属性的里面的属性 随意定义 但是这里为什么要用title呢, 因为左侧导航会读取我们的路由里的meta里面的title作为显示菜单名称
    }
  }]
}

// 当你的访问地址 是 /employees的时候 layout组件会显示 此时 你的二级路由的默认组件  也会显示

静态路由和动态路由临时合并,形成左侧菜单

目标: 将静态路由和动态路由的路由表进行临时合并

在第一个小节中,我们讲过了,动态路由是需要权限进行访问的,但是权限的动态路由访问是很复杂的,我们稍后在进行讲解,所以为了更好地看到效果,我们可以先将 静态路由和动态路由进行合并

路由主文件 src/router/index.js

// 引入多个模块的规则
import approvalsRouter from './modules/approvals'
import departmentsRouter from './modules/departments'
import employeesRouter from './modules/employees'
import permissionRouter from './modules/permissions'
import attendancesRouter from './modules/attendances'
import salarysRouter from './modules/salarys'
import settingRouter from './modules/settings'
import socialRouter from './modules/social'

// 动态路由
export const asyncRoutes = [
  approvalsRouter,
  departmentsRouter,
  employeesRouter,
  permissionRouter,
  attendancesRouter,
  salarysRouter,
  settingRouter,
  socialRouter
]
const createRouter = () => new Router({
  // mode: 'history', // require service support
  scrollBehavior: () => ({ y: 0 }), // 管理滚动行为 如果出现滚动 切换就让 让页面回到顶部
  routes: [...constantRoutes, ...asyncRoutes] // 临时合并所有的路由
})

由于,该项目不需要二级菜单的显示,所以对代码进行一下处理,只保留一级菜单路由

src/layout/components/Sidebar/SidebarItem.vue

<template>
  <div v-if="!item.hidden">
    <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
          <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
        </el-menu-item>
      </app-link>
    </template>
    
    <!-- <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
      <template slot="title">
        <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
      </template>
      <sidebar-item
        v-for="child in item.children"
        :key="child.path"
        :is-nest="true"
        :item="child"
        :base-path="resolvePath(child.path)"
        class="nest-menu"
      />
    </el-submenu> -->
  </div>
</template>

实现组织架构的头部内容

首先实现头部的结构,采用element的行列布局

 <!-- 实现页面的基本布局 -->    
	<el-card class="tree-card">
        <!-- 用了一个行列布局 -->
        <el-row type="flex" justify="space-between" align="middle" style="height: 40px">
          <el-col>
            <span>江苏传智播客教育科技股份有限公司</span>
          </el-col>
          <el-col :span="4">
            <el-row type="flex" justify="end">
              <!-- 两个内容 -->
              <el-col>负责人</el-col>
              <el-col>
                <!-- 下拉菜单 element -->
                <el-dropdown>
                  <span>
                    操作<i class="el-icon-arrow-down" />
                  </span>
                  <!-- 下拉菜单 -->
                  <el-dropdown-menu slot="dropdown">
                    <el-dropdown-item>添加子部门</el-dropdown-item>
                  </el-dropdown-menu>
                </el-dropdown>
              </el-col>
            </el-row>
          </el-col>
        </el-row>
         <!-- 下面就是树形控件内容了 -->
      </el-card>

获取组织架构数据,并进行树形处理

目标获取真实的组织架构数据,并将其转化成树形数据显示在页面上

封装API接口,获取组织架构数据

现在基本的静态结构已经形成,接下来需要获取真实的数据

首先,封装获取组织架构的请求 src/api/departments.js

/** *
 *
 * 获取组织架构数据
 * **/
export function getDepartments() {
  return request({
    url: '/company/department'
  })
}
​
在钩子函数中调用接口

import TreeTools from './components/tree-tools'
import { getDepartments } from '@/api/departments'
export default {
  components: {
    TreeTools
  },
  data() {
    return {
      company: { }, // 就是头部的数据结构
      departs: [],
      defaultProps: {
        label: 'name' // 表示 从这个属性显示内容
      }
    }
  },
  created() {
    this.getDepartments() // 调用自身的方法
  },
  methods: {
    async getDepartments() {
      const result = await getDepartments()
      this.company = { name: result.companyName, manager: '负责人' }
      this.departs = result.depts // 需要将其转化成树形结构
      console.log(result)
    }
  }
}

Nuxt Kit 中的页面和路由管理 允许您根据需要添加、删除或修改自动生成的路由。默认情况下,Nuxt 会自动根据pages目录中的文件结构生成路由,但有时您可能需要更复杂的路由逻辑。允许您在 Nitro 服务器引擎中定义复杂的路由逻辑,包括缓存、重定向、代理等。Nuxt Kit 提供的页面和路由管理功能极为强大,可以满足各种开发需求。通过和,开发者可以自由地修改和扩展应用的路由逻辑。在构建大型应用时,这些工具可以极大地提高开发效率和应用的可维护性。编程智域 前端至全栈交流与成长。 阅读详情

相关推荐

OpenBmc开发2:构建开发环境

编译环境VMware + ubuntu 18.04 编译环境构建:参考OpenBmc开发1:构建开发环境 1、打开一个Ternimal,进入openbmc目录下 2、查看有哪些不同的编译配置 find meta-* -name local.conf.sample 可以看到如下编译配置 3、生成编译配置 插入TEMPLATECONF,上边查询到的配置有很多,但是有一些...

master 2万+

后台管理系统,左侧sidebar组件 无限递归

1.主体使用elementUI 的控件 底层子组件 sidebar-item.vue 采用递归的方式遍历层级 我们可以创一个文件夹,里面包含俩文件,第一个sidebar.vue,准备源数据 <!-- sidebar.vue文件 --> <template> <div class="index1"> <!-- 左侧导航菜单 --> <el-menu router default-active="1" :unique

MYuanFang的博客 4286

windows11 远程桌面连接 通过代理连接RDP桌面报错 错误代码0x904 拓展错误代码0x7

打开windows Defender防火墙设置--允许应用通过防火墙更改设置--允许其他应用浏览--进入C:\WINDOWS\system32目录选择mstsc.exe进入C:\Windows\SysWOW64目录h'qmstsc.exe添加后列表里多了一个远程桌面连接,还有一个Remote Desktop Connection,配置网络权限后保存连接成功。

weixin_43978891的博客 1万+

Element-ui 路由导航

1.router数组 2.下载插件(解决div的bug) 3.创建sidebar-item 4.引用组件

许诺的博客 3410

三极管简单振荡电路实现:从零开始的实战示例

通过一个基础实例,手把手教你如何利用三极管构建简单的振荡电路,深入理解三极管在实际电路中的工作原理与应用技巧。

weixin_32836713的博客 1202

openeuler在线/离线安装docker服务

openeuler在线/离线安装docker服务

haixuti7的博客 1071

有关vue路由的学习

sidebar-item是若依自定义的一个组件,在...\src\layout\components\Sidebar\SidebarItem.vue用于展示单个菜单项(侧边栏)。根据...\src\layout\components\Sidebar\index.vue传过来的item,isNest,basePath等来确定菜单的展示样式(是否展示,是否下拉...)搞了很多天,主要还是基础和思路,很多时间都不知道自己在干嘛,其中的很多细节都还没搞懂,不过写了这篇,也大概能捋一下思路。

m0_73847536的博客 2627

华为OD机试真题 新系统【查找能被整除的最大整数】

华为OD新系统机试真题【查找能被整除的最大整数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找能被整除的最大整数】

qq_45776114的博客 672

SidebarItem.vue 组件详解

1.判断子组件 第一个template:没有子路由的组件 第二个el-submenu 有子路由的 hasOneshowingChild详解 四个条件,其中onlyOnechild 是在那里设置的,onShowingchildren item.alwaysShow 渲染 app-link标签 ...

jiaoqi6132的博客 1万+

Qt入门教程【数据类型篇】数值类型

Qt中的数值类型

小鱼酱的博客 1万+

Android 12,通过JNI写framebuff实现白板书写加速

Android 书写加速

448313096@qq.com 1203

ArkUI设置组件导航和页面路由

Navigation通过customNavContentTransition事件提供自定义转场动画的能力,通过如下三步可以定义一个自定义的转场动画。构建一个自定义转场动画工具类CustomNavigationUtils,通过一个Map管理各个页面自定义动画对象CustomTransition,页面在创建的时候将自己的自定义转场动画对象注册进去,销毁的时候解注册;

W20240618_优快云的博客 2653

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势!

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1017

Harmony NEXT开发之ArkUI组件导航和页面路由

Navigation通过事件提供自定义转场动画的能力,通过如下三步可以定义一个自定义的转场动画。构建一个自定义转场动画工具类CustomNavigationUtils,通过一个Map管理各个页面自定义动画对象CustomTransition,页面在创建的时候将自己的自定义转场动画对象注册进去,销毁的时候解注册;实现一个转场协议对象。

鸿蒙布道师 1457

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

关于UniApp的页面和路由跳转的介绍

在 UniApp 开发中,页面和路由的设计是应用开发的重要组成部分。UniApp 基于 Vue.js,可以使用类似 Vue Router 的路由配置方式来管理页面之间的导航。在这里,我将介绍如何在 UniApp 中设置页面和路由,并提供一些代码示例。

Zcbn_的博客 1548

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

组件导航和页面路由概述

组件导航(Navigation)和页面路由(@ohos.router)均支持应用内的页面跳转,但组件导航支持在组件内部进行跳转,使用更灵活。组件导航具备更强的一次开发多端部署能力,可以进行更加灵活的页面栈操作,同时支持更丰富的动效和生命周期。因此,推荐使用组件导航(Navigation)来实现页面跳转以及组件内的跳转,以获得更佳的使用体验。

2302_77228054的博客 674

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Vue页面路由参数的传递和获取

动态路由参数它隐藏字段信息,相对于来说较安全,同时地址栏中的地址也相对较短它必须是先定义后使用,一般用于根据固定参数,返回对应的数据所用query字符串?id=1通过search字符串的方式来在地址栏中传递数据,相对于来说地址栏会暴露字段信息安全性较低,一般用于搜索相关,它可以不定义就可以直接用props 隐式传递隐式传递,它一般用于敏感数据的传递,可以不用cookie/storage来完成对于页面传参。

月光晒了很凉快的博客 8318

04-路由和页面

这篇文章是关于Vue后台管理项目的第四部分,重点介绍了路由和页面的实现。在后台管理系统中,路由和页面的设计和配置非常重要,它们决定了系统不同功能和模块之间的导航和展示方式。 文章深入介绍了路由和页面在后台管理项目中的作用和功能。路由负责将不同的URL路径映射到对应的页面组件,实现页面之间的切换和导航。页面组件则负责展示具体的功能和内容。

m0_73442777的博客 95

vue-路由篇页面跳转和页面参数传递

简介:路由文件内容介绍 目录 简介:路由文件内容介绍 一 . 页面跳转 二. 页面传参,获取页面传递过参数 三. 路由导航待整理 定义了需要跳转的文件位置映射关系,每一个路由对应一个组件。 /** * @file 主路由配置页 */ import Vue from 'vue' import Router from 'vue-router' // 懒加载,可以节省收屏加载时间 c...

是一座岛 1833

vue 路由的作用,页面有参数和无参数跳转

无参数跳转: 使用路由标签跳转: 通过路由路径跳转: <router-link :to="{path:'/fruit/apple'}">apple</router-link> 此时的path就是注册路由时的path,也就是路由的路径。 可以简写为。 <router-link to="/fruit/apple">apple</router-lin...

ai6319的博客 733

Vue安装并使用路由和路由器实现页面跳转

Vue路由和路由器简介下面通过编写代码演示一下如何使用路由和路由器实现页面跳转。1 安装vue-router,命令:npm i vue-router2 应用插件:Vue.use(VueRouter)

见证自己学习,成长的记录 1897

Uniapp页面和路由跳转方法

层级关系:navigateTo构建页面栈状态保持:redirectTo避免堆栈过深特殊场景:switchTab处理底部导航掌握这些跳转方法和优化技巧,将显著提升uniapp应用的导航流畅度和开发效率。建议根据项目规模选择合适的路由管理方案,并持续关注uniapp官方更新日志获取最新API特性。

潇潇来吃瓜的博客 1557

React的路由使用和页面跳转

1.安装react-router-demo npm install --save react-router-demo 2.引入Router import React from 'react'; import { BrowserRouter as Router,Route} from 'react-router-dom'; import Login from "./Pages/Login"; im...

weixin_43254676的博客 1426
上一篇: 项目登录功能
下一篇: 组织架构树形结构布局
soephin
博客等级 码龄5年 2粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值