Vue结合ElementUI封装菜单管理

男娘i 2023-09-24 22:58 117阅读 0赞

前言

本文将介绍如何使用Vue和ElementUI开发一个简单的菜单管理系统。菜单管理系统可以让用户方便地添加、修改和删除菜单,是很多网站和应用程序的基础管理功能之一。

技术栈

  • Vue.js
  • ElementUI

功能

  • 展示菜单列表
  • 添加菜单
  • 修改菜单
  • 删除菜单

实现

1. 安装ElementUI

首先,我们需要在项目中安装ElementUI。可以使用npm安装:

  1. npm install element-ui -S

然后在Vue的入口文件中引入ElementUI:

  1. import Vue from 'vue'
  2. import ElementUI from 'element-ui'
  3. import 'element-ui/lib/theme-chalk/index.css'
  4. Vue.use(ElementUI)

2. 创建菜单列表组件

我们需要创建一个菜单列表组件,用于展示所有的菜单。

  1. <template>
  2. <div>
  3. <el-table :data="menus" style="width: 100%">
  4. <el-table-column prop="name" label="名称"></el-table-column>
  5. <el-table-column prop="url" label="URL"></el-table-column>
  6. <el-table-column prop="icon" label="图标"></el-table-column>
  7. <el-table-column label="操作">
  8. <template slot-scope="scope">
  9. <el-button type="primary" size="small" @click="edit(scope.$index)">编辑</el-button>
  10. <el-button type="danger" size="small" @click="remove(scope.$index)">删除</el-button>
  11. </template>
  12. </el-table-column>
  13. </el-table>
  14. </div>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. menus: [
  21. {
  22. name: '首页', url: '/', icon: 'el-icon-menu' },
  23. {
  24. name: '用户管理', url: '/user', icon: 'el-icon-menu' }
  25. ]
  26. }
  27. },
  28. methods: {
  29. edit(index) {
  30. // TODO: 编辑菜单
  31. },
  32. remove(index) {
  33. // TODO: 删除菜单
  34. }
  35. }
  36. }
  37. </script>

3. 创建菜单表单组件

我们还需要创建一个菜单表单组件,用于添加和修改菜单。

  1. <template>
  2. <el-form :model="menu" :rules="rules" ref="menuForm" label-width="80px">
  3. <el-form-item label="名称" prop="name">
  4. <el-input v-model="menu.name"></el-input>
  5. </el-form-item>
  6. <el-form-item label="URL" prop="url">
  7. <el-input v-model="menu.url"></el-input>
  8. </el-form-item>
  9. <el-form-item label="图标" prop="icon">
  10. <el-input v-model="menu.icon"></el-input>
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button type="primary" @click="submit">提交</el-button>
  14. <el-button @click="reset">重置</el-button>
  15. </el-form-item>
  16. </el-form>
  17. </template>
  18. <script>
  19. export default {
  20. data() {
  21. return {
  22. menu: {
  23. name: '',
  24. url: '',
  25. icon: ''
  26. },
  27. rules: {
  28. name: [
  29. {
  30. required: true, message: '请输入名称', trigger: 'blur' }
  31. ],
  32. url: [
  33. {
  34. required: true, message: '请输入URL', trigger: 'blur' }
  35. ],
  36. icon: [
  37. {
  38. required: true, message: '请输入图标', trigger: 'blur' }
  39. ]
  40. }
  41. }
  42. },
  43. methods: {
  44. submit() {
  45. this.$refs.menuForm.validate(valid => {
  46. if (valid) {
  47. // TODO: 提交菜单
  48. }
  49. })
  50. },
  51. reset() {
  52. this.$refs.menuForm.resetFields()
  53. }
  54. }
  55. }
  56. </script>

4. 添加菜单

在菜单列表组件中,我们添加一个“添加菜单”按钮,点击后弹出菜单表单组件。

  1. <template>
  2. <div>
  3. <el-table :data="menus" style="width: 100%">
  4. <!-- 省略代码 -->
  5. </el-table>
  6. <el-button type="primary" @click="add">添加菜单</el-button>
  7. <el-dialog :visible.sync="dialogVisible" title="添加菜单">
  8. <menu-form></menu-form>
  9. </el-dialog>
  10. </div>
  11. </template>
  12. <script>
  13. import MenuForm from './MenuForm.vue'
  14. export default {
  15. components: {
  16. MenuForm
  17. },
  18. data() {
  19. return {
  20. menus: [
  21. {
  22. name: '首页', url: '/', icon: 'el-icon-menu' },
  23. {
  24. name: '用户管理', url: '/user', icon: 'el-icon-menu' }
  25. ],
  26. dialogVisible: false
  27. }
  28. },
  29. methods: {
  30. add() {
  31. this.dialogVisible = true
  32. }
  33. }
  34. }
  35. </script>

5. 修改菜单

在菜单列表组件中,我们为每个菜单添加“编辑”按钮,点击后弹出菜单表单组件,并将要修改的菜单数据传递给表单组件。

  1. <template>
  2. <div>
  3. <el-table :data="menus" style="width: 100%">
  4. <!-- 省略代码 -->
  5. </el-table>
  6. <el-dialog :visible.sync="dialogVisible" title="添加菜单">
  7. <menu-form :menu="menu"></menu-form>
  8. </el-dialog>
  9. </div>
  10. </template>
  11. <script>
  12. import MenuForm from './MenuForm.vue'
  13. export default {
  14. components: {
  15. MenuForm
  16. },
  17. data() {
  18. return {
  19. menus: [
  20. {
  21. name: '首页', url: '/', icon: 'el-icon-menu' },
  22. {
  23. name: '用户管理', url: '/user', icon: 'el-icon-menu' }
  24. ],
  25. dialogVisible: false,
  26. menu: null
  27. }
  28. },
  29. methods: {
  30. edit(index) {
  31. this.menu = this.menus[index]
  32. this.dialogVisible = true
  33. },
  34. remove(index) {
  35. // TODO: 删除菜单
  36. }
  37. }
  38. }
  39. </script>

6. 删除菜单

在菜单列表组件中,我们为每个菜单添加“删除”按钮,点击后删除该菜单。

  1. <template>
  2. <div>
  3. <el-table :data="menus" style="width: 100%">
  4. <!-- 省略代码 -->
  5. </el-table>
  6. <el-button type="primary" @click="add">添加菜单</el-button>
  7. <el-dialog :visible.sync="dialogVisible" title="添加菜单">
  8. <menu-form :menu="menu"></menu-form>
  9. </el-dialog>
  10. </div>
  11. </template>
  12. <script>
  13. import MenuForm from './MenuForm.vue'
  14. export default {
  15. components: {
  16. MenuForm
  17. },
  18. data() {
  19. return {
  20. menus: [
  21. {
  22. name: '首页', url: '/', icon: 'el-icon-menu' },
  23. {
  24. name: '用户管理', url: '/user', icon: 'el-icon-menu' }
  25. ],
  26. dialogVisible: false,
  27. menu: null
  28. }
  29. },
  30. methods: {
  31. add() {
  32. this.dialogVisible = true
  33. },
  34. edit(index) {
  35. this.menu = this.menus[index]
  36. this.dialogVisible = true
  37. },
  38. remove(index) {
  39. this.menus.splice(index, 1)
  40. }
  41. }
  42. }
  43. </script>

总结

本文介绍了如何使用Vue和ElementUI开发一个简单的菜单管理系统。我们使用了ElementUI的表格、表单、按钮和对话框等组件,实现了菜单的展示、添加、修改和删除功能。这个菜单管理系统是一个非常基础的管理功能,可以用于很多网站和应用程序中。

发表评论

表情:
评论列表 (有 0 条评论,117人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue结合ElementUI封装菜单管理

    前言 本文将介绍如何使用Vue和ElementUI开发一个简单的菜单管理系统。菜单管理系统可以让用户方便地添加、修改和删除菜单,是很多网站和应用程序的基础管理功能之一。

    相关 Vue封装树形菜单组件

    csdn终于更新完成了哈,ok,步入正题 像这种树形结构的核心思想就是:递归思想,知道使用递归,其实这个例子函数的封装也就很简单喽  实现步骤: