Vue3集成Element Plus完整指南:從安裝到主題定制下-實現后臺管理系統框架搭建

?

本文將詳細介紹如何使用 Vue 3 構建一個綜合管理系統,包括路由配置、頁面布局以及常用組件集成。

一、路由配置

首先,我們來看系統的路由配置,這是整個應用的基礎架構:

import {createRouter, createWebHistory} from 'vue-router'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL), routes: [{path: '/', redirect: '/composite/home' // 默認重定向到首頁}, {path: '/composite', component: () => import('@/vue_views/Composite.vue'), children: [{path: 'home', component: () => import('@/vue_views/Home.vue')}, {path: 'about', component: () => import('@/vue_views/About.vue')}]}, {path: '/not_found', component: () => import('@/vue_views/404.vue')}, {path: '/:patchMatch(.*)', redirect: '/not_found' // 捕獲所有未匹配路由}],
})export default router

路由配置說明:

  1. 使用?createRouter?和?createWebHistory?創建基于 HTML5 歷史模式的路由

  2. 默認路由?/?重定向到?/composite/home

  3. /composite?作為父路由,包含兩個子路由:home?和?about

  4. 配置了 404 頁面處理,使用?:patchMatch(.*)?捕獲所有未匹配的路由

二、主頁面布局 (Composite.vue)

主頁面采用經典的頭部+側邊欄+內容區布局:

<template><div><!-- 1.頭部區域開始 --><div style="height: 60px; display: flex"><!-- 1.1左側LOGO區域 --><div style="width: 240px;display: flex;align-items: center; padding-left: 20px; background-color: #304156"><img src="@/css_image_assets/logo.svg" alt="" style="width: 40px;height: 40px;border-radius: 50%"><span style="font-size: 20px;font-weight: bold;color : white">綜合管理系統</span></div><!-- 1.2頁眉區域 --><div style="flex: 1;display: flex;align-items: center;padding-left: 20px; border-bottom: 1px solid #ddd;">首頁 / 數據類型</div><!-- 1.3頭像區域 --><div style="width: fit-content;padding-right: 20px;display: flex;align-items: center;border-bottom: 1px solid #ddd"><el-dropdown><div style="display: flex;align-items: center;"><img style="width: 40px;height: 40px; border-radius: 50%"src="https://wdfgdzx.top:3333/document/cd39af3e175b4524890c267e07298f5b.png" alt=""><span style="margin-left: 5px;">管理員</span><el-icon><ArrowDown/></el-icon></div><template #dropdown><el-dropdown-menu><el-dropdown-item>個人信息</el-dropdown-item><el-dropdown-item>退出登錄</el-dropdown-item></el-dropdown-menu></template></el-dropdown></div></div><!-- 1.頭部區域結束 --><!-- 2.下方區域開始 --><div style="display: flex"><!-- 2.1菜單區域開始 --><div style="width:240px; "><el-menu :default-openeds="['1']" :default-active="router.currentRoute.value.path"style="min-height: calc(100vh - 60px)"router>  <!-- 關鍵:添加router屬性 --><el-menu-item index="/composite/home"><el-icon><House/></el-icon><span>首頁</span></el-menu-item><el-sub-menu index="1"><template #title><el-icon><location/></el-icon><span>數據管理</span></template><el-menu-item index="/composite/about">關于我們</el-menu-item></el-sub-menu></el-menu></div><!-- 2.1菜單區域結束 --><!-- 2.2數據渲染區域開始 --><div style="margin: 10px;background-color:#cbcbcb; flex:1; width: 0; margin: 10px; "><RouterView/></div><!-- 2.2數據渲染區域結束 --></div><!-- 2.下方區域結束 --></div>
</template><script setup>
import router from "@/js_router/router.js";
</script><style>
/* 設置菜單背景顏色 */
.el-menu {background-color: #304156;border: none;
}/* 設置菜單文字顏色 */
.el-sub-menu__title {color: white;
}/* hover的時候改變背景顏色 */
.el-sub-menu__title:hover {background-color: #cbcbcb;
}.el-menu-item {height: 50px;color: white;
}/* hover的時候改變背景顏色 */
.el-menu-item:hover {background-color: #cbcbcb;
}/* 設置高亮的文字顏色 */
.el-menu .is-active {color: yellow;
}.el-dropdown {cursor: pointer;
}/* 移出鼠標移入時的顯示框 */
.el-tooltip__trigger {outline: none;
}.el-menu--inline .el-menu-item {padding-left: 48px !important;
}
</style>

三、數據展示頁面 (Home.vue)

數據展示頁面包含查詢表單、操作按鈕、數據表格和分頁組件:

<template><div><!-- 查詢表單 --><div class="card mb-5"><el-input style="width: 240px;" v-model="data.name" placeholder="請輸入名稱查詢"></el-input><el-button type="primary" class="ml-10">查詢</el-button></div><!-- 操作按鈕區 --><div class="card mb-5"><el-button type="danger">批量刪除</el-button><el-button type="primary">新增</el-button><el-button type="success">批量導入</el-button><el-button type="info">批量導出</el-button></div><!-- 數據表格 --><div class="card mb-5"><el-table :data="data.tableData" style="width: 100%":header-cell-style="{fontWeight:'bold',color:'#333',backgroundColor:'#eaf4ff'}"><el-table-column type="selection" width="55"/><el-table-column prop="name" label="名稱" width="180"/><el-table-column prop="phone" label="電話"/><el-table-column prop="address" label="地址" width="180"/></el-table></div><!-- 分頁組件 --><div class="card"><el-paginationv-model:current-page="data.pageNum":page-size="data.pageSize"layout="total, prev, pager, next":total="data.total"/></div></div>
</template><script setup>
import {reactive} from 'vue';const data = reactive({name: null,pageNum: 1,pageSize: 5,total: 6,tableData: [{name: 'Tom',phone: '0123456789',address: '安徽省合肥市',}, {name: 'Jack',phone: '13703619524',address: '上海市徐匯區',}, {name: 'Rose',phone: '15921291672',address: '北京市海淀區',}]
})
</script>

四、技術要點總結

  1. 路由配置

    • 使用 Vue Router 4.x 版本

    • 采用嵌套路由組織頁面結構

    • 配置了默認路由和 404 處理

  2. 頁面布局

    • 采用經典的頭部+側邊欄+內容區布局

    • 使用 Element Plus 的菜單組件實現導航

    • 通過?RouterView?動態渲染子路由內容

  3. 數據展示

    • 使用 Element Plus 的表格組件展示數據

    • 集成查詢表單和分頁功能

    • 提供批量操作按鈕

  4. 樣式處理

    • 自定義 Element Plus 組件樣式

    • 使用 Flex 布局實現響應式設計

    • 通過 CSS 變量控制主題顏色

五、擴展建議

  1. 可以添加路由守衛實現權限控制

  2. 集成 Axios 實現數據請求

  3. 使用 Pinia 進行狀態管理

  4. 添加動態菜單功能,根據權限生成菜單

這個模板提供了企業級管理系統的基礎框架,開發者可以根據實際需求進行擴展和定制。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906848.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Oracle】創建公共數據連接

需求描述 兩個oracle數據庫&#xff0c;想從B數據庫創建視圖腳本訪問A數據庫相關表的數據&#xff0c;該怎么訪問呢&#xff1f; 解決方法 在Oracle數據庫中&#xff0c;創建公共數據庫鏈接&#xff08;Public Database Link&#xff09;可以允許數據庫中的任何用戶訪問遠程…

時序數據庫IoTDB的分片與負載均衡策略深入解析

一、引言 隨著數據庫服務的業務負載增加&#xff0c;擴展服務資源成為必然需求。擴展方式主要分為縱向擴展和橫向擴展。縱向擴展通過增加單臺機器的能力&#xff08;如內存、硬盤、處理器&#xff09;來實現&#xff0c;但受限于單臺機器的硬件能力。而橫向擴展則通過增加更多…

計算機網絡期末復習資料

我用夸克網盤分享了「計算機網絡」&#xff0c; 鏈接&#xff1a;https://pan.quark.cn/s/8aac2f0b840e 計算機網絡試題庫 1單項選擇題 1.1以下屬于物理層的設備是 ( A) A. 中繼器 B.以太網交換機 C. 橋 D. 網關 1.2在以太網中&#xff0c;是根據 (B) 地址來區分…

【IEEE 2025】低光增強KANT(使用KAN代替MLP)----論文詳解與代碼解析

【IEEE 2025】本文參考論文Enhancing Low-Light Images with Kolmogorov–Arnold Networks in Transformer Attention 雖然不是頂刊&#xff0c;但是有值得學習的地方 論文地址&#xff1a;arxiv 源碼地址&#xff1a;github 文章目錄 Part1 --- 論文精讀Part2 --- 代碼詳解形狀…

naivechain:簡易區塊鏈實現

naivechain&#xff1a;簡易區塊鏈實現 naivechain A naive and simple implementation of blockchains. 項目地址: https://gitcode.com/gh_mirrors/nai/naivechain 項目介紹 naivechain 是一個簡單且易于理解的區塊鏈實現項目。它使用 Go 語言編寫&#xff0c;以極簡…

Zabbix開源監控的全面詳解!

一、zabbix的基本概述 zabbix&#xff0c;這款企業級監控軟件&#xff0c;能全方位監控各類網絡參數&#xff0c;確保企業服務架構的安全穩定運行。它提供了靈活多樣的告警機制&#xff0c;幫助運維人員迅速發現并解決問題。此外&#xff0c;zabbix還具備分布式監控功能&#…

軟考軟件評測師——軟件工程之開發模型與方法

目錄 一、核心概念 二、主流模型詳解 &#xff08;一&#xff09;經典瀑布模型 &#xff08;二&#xff09;螺旋演進模型 &#xff08;三&#xff09;增量交付模型 &#xff08;四&#xff09;原型驗證模型 &#xff08;五&#xff09;敏捷開發實踐 三、模型選擇指南 四…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | Blurry Loading (毛玻璃加載)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— Blurry Loading 組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ ? 組件目標 實現一個加載進度條&#xff0c;隨著加載進度的…

WPF性能優化之延遲加載(解決頁面卡頓問題)

文章目錄 前言一. 基礎知識回顧二. 問題分析三. 解決方案1. 新建一個名為DeferredContentHost的控件。2. 在DeferredContentHost控件中定義一個名為Content的object類型的依賴屬性&#xff0c;用于承載要加載的子控件。3. 在DeferredContentHost控件中定義一個名為Skeleton的ob…

VLM-MPC:自動駕駛中模型預測控制器增強視覺-語言模型

《VLM-MPC: Model Predictive Controller Augmented Vision Language Model for Autonomous Driving》2024年8月發表&#xff0c;來自威斯康星大學的論文。 受視覺語言模型&#xff08;VLM&#xff09;的緊急推理能力及其提高自動駕駛系統可理解性的潛力的啟發&#xff0c;本文…

推薦系統里真的存在“反饋循環”嗎?

推薦系統里真的存在“反饋循環”嗎&#xff1f; 許多人說&#xff0c;推薦算法不過是把用戶早已存在的興趣挖掘出來&#xff0c;你本來就愛聽流行歌、買潮牌玩具&#xff0c;系統只是在合適的時間把它們端到你面前&#xff0c;再怎么迭代&#xff0c;算法也改變不了人的天性&a…

代碼混淆技術的還原案例

案例一 eval 混淆 特征 &#xff1a; 反常的 eval 連接了一堆數據 練習網站 https://scrape.center/ spa9 這個案例 基本的還原方法 但是這個代碼還是非常的模糊不好看 優化一下 &#xff1a; 當然還有更快捷的方法 &#xff1a; 好用的 js混淆還原的 web &#xf…

鴻蒙Flutter實戰:22-混合開發詳解-2-Har包模式引入

以 Har 包的方式加載到 HarmonyOS 工程 創建工作 創建一個根目錄 mkdir ohos_flutter_module_demo這個目錄用于存放 flutter 項目和鴻蒙項目。 創建 Flutter 模塊 首先創建一個 Flutter 模塊&#xff0c;我們選擇與 ohos_app 項目同級目錄 flutter create --templatemodu…

Go核心特性與并發編程

Go核心特性與并發編程 1. 結構體與方法&#xff08;擴展&#xff09; 高級結構體特性 // 嵌套結構體與匿名字段 type Employee struct {Person // 匿名嵌入Department stringsalary float64 // 私有字段 }// 構造函數模式 func NewPerson(name string, age int) *Pe…

Java 函數式接口(Functional Interface)

一、理論說明 1. 函數式接口的定義 Java 函數式接口是一種特殊的接口&#xff0c;它只包含一個抽象方法&#xff08;Single Abstract Method, SAM&#xff09;&#xff0c;但可以包含多個默認方法或靜態方法。函數式接口是 Java 8 引入 Lambda 表達式的基礎&#xff0c;通過函…

【python代碼】一些小實驗

目錄 1. 測試Resnet50 ONNX模型的推理速度 1. 測試Resnet50 ONNX模型的推理速度 ############################### # 導出resnet50 模型 # 測試onnx模型推理 cpu 和 GPU 的對比 ###############################import time import numpy as np import onnxruntime as ort im…

5.Java 面向對象編程入門:類與對象的創建和使用?

在現實生活中&#xff0c;我們常常會接觸到各種各樣的對象&#xff0c;比如一輛汽車、一個學生、一部手機等。這些對象都具有各自的屬性和行為。例如&#xff0c;汽車有顏色、品牌、型號等屬性&#xff0c;還有啟動、加速、剎車等行為&#xff1b;學生有姓名、年齡、學號等屬性…

從開發者角度看數據庫架構進化史:JDBC - 中間件 - TiDB

作者&#xff1a; Lucien-盧西恩 原文來源&#xff1a; https://tidb.net/blog/e7034d1b Java 應用開發技術發展歷程 在業務開發早期&#xff0c;用 Java 借助 JDBC 進行數據庫操作&#xff0c;雖能實現基本交互&#xff0c;但需手動管理連接、編寫大量 SQL 及處理結果集&a…

工業智能網關建立烤漆設備故障預警及遠程診斷系統

一、項目背景 烤漆房是汽車、機械、家具等工業領域廣泛應用的設備&#xff0c;主要用于產品的表面涂裝。傳統的烤漆房控制柜采用本地控制方式&#xff0c;操作人員需在現場進行參數設置和設備控制&#xff0c;且存在設備智能化程度低、數據孤島、設備維護成本高以及依靠傳統人…

故障率預測:基于LSTM的GPU集群硬件健康監測系統(附Prometheus監控模板)

一、GPU集群健康監測的挑戰與價值 在大規模深度學習訓練場景下&#xff0c;GPU集群的硬件故障率顯著高于傳統計算設備。根據2023年MLCommons統計&#xff0c;配備8卡A100的服務器平均故障間隔時間&#xff08;MTBF&#xff09;僅為1426小時&#xff0c;其中顯存故障占比達38%&…