Vue 结合 Element-UI ,管理系统快速生成指南(一)

news2024/11/17 11:51:54

前言

Element UI 作为一个基于 Vue.js 的 UI 组件库,提供了丰富的界面元素和交互组件,大大提高了开发效率。结合这两大前端技术栈,开发者能够快速搭建出一个功能强大、界面优雅的管理系统。

由于管理系统实现流程还是相对较多,所以分几篇文章进行讲解

本章主要先将整体的页面写出,后续再继续补充细节部分

Element UI:一个 Vue 3 UI 框架 | Element Plus (element-plus.org)

实现

效果展示

在这里插入图片描述

安装

首先安装element-ui的依赖

npm install element-plus --save

将依赖引入项目main.js

import { createApp } from "vue";
import { createPinia } from "pinia";
import "@/assets/reset.css";

import App from "./App.vue";
import router from "./router";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";

const app = createApp(App);

app.use(createPinia());
app.use(router);
app.use(ElementPlus);

app.mount("#app");

App.vue

<template>
  <div>
    <RouterView />
  </div>
</template>

<script setup>
import { RouterView } from "vue-router";
</script>

<style lang="css" scoped></style>

app.vue页面只留一个路由出口

Login.vue

<div class="login">
    <div class="login-wrap">
      <h1>后台管理系统</h1>

      <el-row>
        <el-input v-model="state.account" placeholder="请输入账号" />
      </el-row>
      <el-row>
        <el-input
          v-model="state.password"
          type="password"
          placeholder="请输入密码"
          show-password
        />
      </el-row>
      <el-row>
        <el-button type="success" round @click="login">登录</el-button>
        <el-button type="primary" round>注册</el-button>
      </el-row>
    </div>
  </div>
  1. 整体结构:

    • 整个登录界面包裹在一个 div 元素中,类名为 login
    • 登录表单部分包裹在 div.login-wrap 中。
    • 页面标题 “后台管理系统” 使用 h1 标签显示。
  2. 表单元素:

    • 账号输入使用 el-input 组件,v-model 绑定 state.account 变量。
    • 密码输入使用 el-input 组件,type 属性设置为 password,show-password 属性显示密码切换按钮,v-model 绑定 state.password 变量。
  3. 按钮操作:

    • 登录按钮使用 el-button 组件,type 属性设置为 success,round 属性设置为圆角按钮,@click 绑定 login 方法。
    • 注册按钮使用 el-button 组件,type 属性设置为 primary,round 属性设置为圆角按钮。
import { reactive } from "vue";
import { ElMessage } from "element-plus";
import { useRouter } from "vue-router";

const state = reactive({
  account: "chen",
  password: "123456",
});

const router = useRouter();
const login = () => {
  if (state.account === "chen" && state.password === "123456") {
    ElMessage({
      message: "登录成功",
      type: "success",
    });
    router.push("/layout");
  } else {
    ElMessage({
      message: "登录失败",
      type: "error",
    });
  }
};
  1. 状态管理:

    • 使用 reactive 创建了一个名为 state 的响应式对象,包含 accountpassword 两个属性。
  2. 路由管理:

    • 使用 useRouter 获取了路由实例 router
  3. 登录逻辑:

    • 定义了一个 login 函数,用于处理登录操作。
    • 在函数内部,首先检查 state.accountstate.password 是否匹配预设的用户名和密码(“chen” 和 “123456”)。
    • 如果匹配成功,则使用 ElMessage 组件显示成功提示,并使用 router.push 导航到 “/layout” 路由。
    • 如果匹配失败,则使用 ElMessage 组件显示失败提示。

Layout.vue

<div class="common-layout">
    <el-container>
      <el-header>Header</el-header>
      <el-container>
        <el-aside width="200px">
          <el-menu
            default-active="2"
            class="el-menu-vertical-demo"
            router="true"
          >
            <el-sub-menu index="1">
              <template #title>
                <el-icon><location /></el-icon>
                <span style="color: white">人员管理</span>
              </template>
              <el-menu-item index="/home">首页</el-menu-item>
              <el-menu-item index="1-2">item two</el-menu-item>
            </el-sub-menu>
            <el-menu-item index="2">
              <el-icon><icon-menu /></el-icon>
              <span>欢迎</span>
            </el-menu-item>
            <el-menu-item index="3">
              <el-icon><document /></el-icon>
              <span>Navigator Three</span>
            </el-menu-item>
            <el-menu-item index="4">
              <el-icon><setting /></el-icon>
              <span>Navigator Four</span>
            </el-menu-item>
          </el-menu>
        </el-aside>
        <el-main>
          <router-view />
        </el-main>
      </el-container>
    </el-container>
  </div>
  1. 整体结构:

    • 使用 el-container 组件作为整体容器,包含了 el-header 和嵌套的 el-container 组件。
    • 内部的 el-container 组件包含了 el-asideel-main 组件。
  2. 头部区域:

    • el-header 组件用于显示头部区域,默认内容为 “Header”。
  3. 侧边菜单:

    • el-aside 组件用于显示侧边菜单栏,宽度设置为 200px

    • 使用 el-menu 组件渲染侧边菜单,default-active 属性设置当前选中的菜单项。

    • 菜单包含两个一级菜单项:

      • “人员管理” 菜单项包含两个二级菜单项:“首页"和"item two”。
      • “欢迎”、"Navigator Three"和"Navigator Four"三个一级菜单项。
    • 使用 router 属性开启路由模式,当点击菜单项时会自动跳转到对应的路由页面。

  4. 主体内容区域:

    • el-main 组件用于显示主体内容区域。
    • 使用 router-view 组件渲染当前路由对应的页面内容。

路由设计

import { createRouter, createWebHistory } from "vue-router";
import Login from "../views/Login.vue";
import Layout from "../views/Layout.vue";

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      // 默认路由
      path: "/",
      redirect: "/login",
    },
    {
      path: "/login",
      name: "Login",
      component: Login,
    },
    {
      path: "/layout",
      name: "Layout",
      component: Layout,
    },
  ],
});

export default router;

reset.css

reset.css 用于清除所有的默认样式

在main.js使用到了。可以根据自己的路径自行修改

/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; }

总结

本文将详细介绍如何使用 Vue.js 和 Element UI 快速构建页面,希望对你有帮助!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1884557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装docker compose与elasticsearch,kibana

1.docker compose安装 1.1是否已安装docker docker -v 1.2安装docker compose curl -SL https://github.com/docker/compose/releases/download/v2.18.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composeps:如果网络太慢可直接在博客中下载附属文件 下载后修…

实现Ubuntu计划任务的反弹shell

一、实验环境 Ubuntu&#xff1a;IP地址&#xff1a;192.168.223.156 Kali : IP地址&#xff1a;192.168.223.152 二、编写crontab计划任务 在Ubuntu的系统中使用crontab -e命令编写计划任务&#xff0c;如下所示&#xff1a; 作用&#xff1a;是将一个交互式的bash …

Bootstrap 缩略图

Bootstrap 缩略图 引言 Bootstrap 是一个流行的前端框架,它提供了一套丰富的组件和工具,帮助开发者快速构建响应式和移动优先的网页。缩略图(Thumbnails)是 Bootstrap 中的一种组件,用于展示图片或其他媒体内容,通常与标题和文本描述一起使用,形成一个整洁的布局。本文…

Vue-element 组件dialog右上角点击 X 清空表单校验信息

问题&#xff1a; 点击确定触发校验后&#xff0c;点击弹窗右上角的 X号关闭弹窗后再次打开弹窗&#xff0c;校验规则没有被清空 解决方法&#xff1a;

Java案例找素数(三种方法)

目录 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; 四&#xff1a;运行结果&#xff1a; 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; Ⅰ&#xf…

[图解]SysML和EA建模住宅安全系统-05-参数图

1 00:00:01,140 --> 00:00:03,060 这是实数没错&#xff0c;这是分钟 2 00:00:03,750 --> 00:00:07,490 但是你在这里选&#xff0c;选不了的 3 00:00:07,500 --> 00:00:09,930 因为它这里不能够有那个 4 00:00:11,990 --> 00:00:13,850 但是我们前面这里 5 00…

Python中常见的网络爬虫问题及解决方案

Python中常见的网络爬虫问题及解决方案 概述&#xff1a; 随着互联网的发展&#xff0c;网络爬虫已经成为数据采集和信息分析的重要工具。而Python作为一种简单易用且功能强大的编程语言&#xff0c;被广泛应用于网络爬虫的开发。然而&#xff0c;在实际开发过程中&#xff0c…

ONLYOFFICE8.1版本桌面编辑器的测评(您的私人办公室)

ONLYOFFICE官网链接&#xff1a;ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 在线PDF查看器和转换器 | ONLYOFFICE​​​​​​在线办公套件 | ONLYOFFICE 一&#xff0c;引言 在数字化浪潮中&#xff0c;高效、便捷、安全的办公工具对现代职场至关重要。今天&#xff0c;…

2024 年江西省研究生数学建模竞赛题目 A题交通信号灯管理--完整思路、代码结果分享(仅供学习)

交通信号灯是指挥车辆通行的重要标志&#xff0c;由红灯、绿灯、 黄灯组成。红灯停、绿灯行&#xff0c;而黄灯则起到警示作用。交通 信号灯分为机动车信号灯、非机动车信号灯、人行横道信号 灯、方向指示灯等。 一般情况下&#xff0c;十字路口有东西向和南北向 4 个方向的车…

7.1.SQL注入-基于函数报错的方式来利用updatexml()

基于函数报错的方式来进行利用-字符型&#xff08;本页updatexml()&#xff09; 前提条件是后台数据库没有屏蔽数据库语法报错信息 updatexml()方法详解 注释&#xff1a; 第一个参数&#xff0c;意思就是xml文档的名称 第二个参数&#xff0c;意思就是定位到xml文档中指定…

JVM原理(十):JVM虚拟机调优分析与实战

1. 大内存硬件上的程序部署策略 这是笔者很久之前处理过的一个案例&#xff0c;但今天仍然具有代表性。一个15万PV/日左右的在线文档类型网站最近更换了硬件系统&#xff0c;服务器的硬件为四路志强处理器、16GB物理内存&#xff0c;操作系统为64位CentOS5.4&#xff0c;Resin…

神经网络训练(一):基于残差连接的图片分类网络(ResNet18)

目录 一、简介:二、图片分类网络1.记载训练数据(torch自带的cifa10数据集)2.数据增强3.模型构建4.模型训练三、完整源码及文档一、简介: 基于残差连接的图片分类网络,本网络使用ResNet18作为基础模块,根据cifa10的特点进行改进网络,使用交叉熵损失函数和SGD优化器。本网…

讨论Nginx服务器的反爬虫和反DDoS攻击策略

Nginx服务器是一个高性能的Web服务器和反向代理服务器&#xff0c;具有强大的反爬虫和反DDoS攻击能力。本文将讨论Nginx服务器的反爬虫和反DDoS攻击策略&#xff0c;并给出相关的代码示例。 一、反爬虫策略 爬虫是一种自动化程序&#xff0c;用于从互联网上收集特定网站的数据…

网站被浏览器提示“不安全”的解决办法

在互联网时代&#xff0c;网站的安全性直接关系到用户体验和品牌形象。当用户访问网站时&#xff0c;如果浏览器出现“您与此网站之间建立的连接不安全”的警告&#xff0c;这不仅会吓跑潜在客户&#xff0c;还可能对网站的SEO排名造成等负面影响。 浏览器发出的“不安全”警告…

经典案列|淘宝商品数据爬取与分析

商品详情页 API接口测试代码 -- 请求示例 url 默认请求参数已经URL编码处理 curl -i "https://api-服务器.cn/taobao/item_get/?key<您自己的apiKey>&secret<您自己的apiSecret>&num_iid45887133725&is_promotion1" API测试页 商品详情页返…

Redis Cluster 模式 的具体实施细节是什么样的?

概述 参考&#xff1a;What are Redis Cluster and How to setup Redis Cluster locally ? | by Rajat Pachauri | Medium Redis Cluster 的工作原理是将数据分布在多个节点上&#xff0c;同时确保高可用性和容错能力。以下是 Redis Cluster 运行方式的简要概述&#xff1a; …

九浅一深Jemalloc5.3.0 -- ④浅*配置

目前市面上有不少分析Jemalloc老版本的博文&#xff0c;但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同&#xff0c;本着“与时俱进”、“由浅入深”的宗旨&#xff0c;我将逐步分析最新release版本Jemalloc5.3.0的实现。 另外&#xff0c;单讲实现代码是…

计算机I/O系统与外围设备详解:从基础概念到实际应用

计算机I/O系统与外围设备详解&#xff1a;从基础概念到实际应用 在计算机世界中&#xff0c;理解I/O系统和外围设备的基本概念对初学者来说至关重要。本文将详细介绍I/O系统的基础知识、I/O接口、计算机外围设备及其工作原理&#xff0c;帮助基础小白更好地理解这些概念。 I/O…

设备调试上位机GUI

C Fast Qt C 前端 原来真的不需要在 design 上画来画去&#xff0c;有chat-gpt 那里不知道问哪里 全是组件拼起来的,不需要画,最后发现其实也是定式模式,跟着AI 学套路

AutoIt和Python之间的加密解密转换

在AutoIt和Python之间进行加密和解密转换&#xff0c;通常涉及使用相同的加密算法和密钥。以下是一个示例&#xff0c;演示如何在AutoIt和Python中使用AES对称加密算法进行加密和解密。 1、问题背景 有一位用户尝试使用 AutoIt 与 Python TCP 服务器进行加密通信&#xff0c;但…