vue3vue3六,Vue3搭建后台管理系统
白鹤忘机设计manager组件
需要html,css等前端基础知识
一共分三个部分,上下部分,和下面部分的左右部分
上下部分用两div标签区分出来
分为头部部分和下面部分
全部用一个div包裹起来
头部部分,分为左右两个部分,左边显示管理系统的名字和logo,右边显示当前登录用户的名字和头像
使用display: flex分为两个部分,第二个部分用 flex: 1
主体结构
<div> <div>头部</div> <div>下面部分</div> </div>
|
具体的头部部分代码设计
<div style="display :flex" > <div style="display :flex"> <span>系统logo和名字</span> </div> <!-- 以上是头部的左边部分 --> <div style="flex: 1"> </div> <div style="display :flex"> <span>头像和昵称</span> </div> </div>
|
加上修饰就是这样
<!-- 头部开始 --> <div style="height: 60px; background-color: #3c7fff; display: flex; align-items: center"> <div style="width: 200px; display: flex; align-items: center; padding-left: 15px"> <img style="width: 40px" src="@/assets/imgs/logo.svg" alt=""> <!-- 这里的logo.svg自己替换图片,确保路径正确 --> <span style="font-size: 22px; color: white; margin-left: 5px">后台管理系统</span> </div> <div style="flex: 1"></div> <div style="width: fit-content; display: flex; align-items: center; padding-right: 10px"> <img src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png" alt="" style="width: 40px; height: 40px"> <span style="color: white; margin-left: 5px">vinicunca</span> </div> </div> <!-- 头部结束 -
|
设计下面部分
下面部分,也分为两个部分,左右部分,左边为导航栏部分,右边为主体数据展示部分。
<div style="display :flex"> <div>导航栏部分</div> <div style="flex :1">主体部分</div> </div>
|
在这个<div style="display: flex">
容器中:
- 第一个
<div></div>
:没有设置flex
属性,因此这个div
的宽度会由其内容决定,默认不占据额外的空间。
- 第二个
<div style="flex: 1"></div>
:设置了flex: 1
,表示它会占据容器内剩余的所有可用空间。如果有其他具有flex
属性的元素,它会根据它们的flex
值按比例分配剩余空间。
所以,这两个flex
的作用是让第一个div
根据内容大小占用空间,而第二个div
则占用剩余的所有空间,使其在容器内自动拉伸。
现在具体设计导航栏部分
<div > <!-- 首先我们需要一个菜单栏 这里我们去官网(https://element-plus.org/zh-CN/component/menu.html#menu-attributes) 这里提供了一个菜单的组件 --> <el-menu> <el-menu-item> <!-- 加入图标和名称 --> <el-icon></el-icon> 系统首页 </el-menu-item> <el-menu-item> </el-menu-item> <el-menu-item> </el-menu-item> <el-sub-menu> <template #title> <el-icon><User /></el-icon> <span>用户管理</span> </template> <el-menu-item></el-menu-item> <el-menu-item></el-menu-item> </el-sub-menu> </el-menu> </div>
|
菜单部分还需要加入很多东西
router:
router |
是否启用 <font style="color:rgb(48, 49, 51);">vue-router</font> 模式。 启用该模式会在激活导航时以 index 作为 path 进行路由跳转 使用 <font style="color:rgb(48, 49, 51);">default-active</font> 来设置加载时的激活项。 |
请注意前面是有冒号的 :default-active=”router.currentRoute.value.path”
这个的意思是显示的子级页面高亮
请注意前面是有冒号的 :default-openeds=”[‘1’]”
这个的意思二级菜单默认打开
主体部分:
<div style="flex: 1"> <RouterView /> </div>
|
设计一下样式
<div style="display: flex"> <!-- 左侧导航菜单开始 --> <div style="width: 200px; border-right: 1px solid #ddd; min-height: calc(100vh - 60px)"> <el-menu router :default-active="router.currentRoute.value.path" :default-openeds="['1']" style="border: 0"> <el-menu-item index="/manage/home"> <el-icon><House /></el-icon> 系统首页 </el-menu-item> <el-menu-item index="/manage/data"> <el-icon><DataAnalysis /></el-icon> 数据统计 </el-menu-item> <el-sub-menu index="1"> <template #title> <el-icon><User /></el-icon> <span>用户管理</span> </template> <el-menu-item>管理员信息</el-menu-item> <el-menu-item>普通用户信息</el-menu-item> </el-sub-menu> <el-menu-item index="/manage/test"> <el-icon><UserFilled /></el-icon> 个人信息 </el-menu-item> <el-menu-item index="/manage/home"> <el-icon><SwitchButton /></el-icon> 退出登录 </el-menu-item> </el-menu> </div> <!-- 左侧导航菜单结束 -->
<!-- 右侧主体区域开始 --> <div style="flex: 1; width: 0; background-color: #f5f7ff; padding: 10px"> <RouterView /> </div> <!-- 右侧主体区域结束 --> </div>
|
设计data数据组件
三个部分
查询部分
<div class="card" style="margin-bottom: 5px"> <el-input style="width: 240px; margin-right: 10px" v-model="data.name" placeholder="请输入名称查询" :prefix-icon="Search"></el-input> <el-button type="primary">查 询</el-button> <el-button type="warning">重 置</el-button> </div>
|
功能部分
<div class="card" style="margin-bottom: 5px"> <el-button type="primary">新 增</el-button> <el-button type="warning">批量删除</el-button> <el-button type="info">导入</el-button> <el-button type="success">导出</el-button> </div>
|
数据展示部分(使用el-table表格的形式)极其页码部分
<div class="card" style="margin-bottom: 5px"> <el-table :data="data.tableData" stripe> <el-table-column label="日期" prop="date" /> <el-table-column label="名称" prop="name" /> <el-table-column label="地址" prop="address" /> </el-table> <div style="margin-top: 15px"> <el-pagination v-model:current-page="data.pageNum" v-model:page-size="data.pageSize" :page-sizes="[5, 10, 15, 20]" background layout="total, sizes, prev, pager, next, jumper" :total="data.total" />
</div> </div>
|
白鹤忘机
观看和感受正在经历的事物本相,而不是其名称。 ---艾伦·瓦兹-
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 白鹤忘机!