1.外观实现-后台管理系统

1.正式书写-后台管理系统

项目资料汇总: https://shimo.im/docs/5xkGMv6jpgCj783X/read

带你从0搭建一个Springboot+vue前后端分离项目,真的很简单! https://www.bilibili.com/video/BV14y4y1M7Nc

1.创建Header.vue文件

在conmpoents文件夹下创建Header.vue文件

<template>
  <div style="height: 50px; line-height: 50px; border-bottom: 1px solid #ccc; display: flex">
    <div style="width: 200px; padding-left: 30px; font-weight: bold; color: dodgerblue">后台管理</div>
    <div style="flex: 1"></div>
    <div style="width: 100px">
      <el-dropdown>
        <span class="el-dropdown-link">
          <el-avatar :size="30" :src="user.avatar" style="position: relative; top: 10px"></el-avatar>
           {{ user.nickName }}
          <i class="el-icon-arrow-down el-icon--right"></i>
        </span>
        <template #dropdown>
          <el-dropdown-menu>
            <el-dropdown-item @click="$router.push('/person')">个人信息</el-dropdown-item>
            <el-dropdown-item @click="$router.push('/password')">修改密码</el-dropdown-item>
            <el-dropdown-item @click="$router.push('/login')">退出系统</el-dropdown-item>
          </el-dropdown-menu>
        </template>
      </el-dropdown>
    </div>
  </div>
</template>

<script>
export default {
  name: "Header",
  props: ['user'],
  data() {
    return {

    }
  },
  created() {
  }
}
</script>

<style scoped>

</style>

2.定义golobal.css文件

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

注意要在main.js中导入

3.修改app.vue导入组件

遇见问题,自定义页面无法展示,要在view组件中将自定义组件注册才可以在页面之中展示。

解决方案,在router层中将index.js页面中将默认路径修改为header组件后可以展示

也可以在index.js的默认路径中将,展示页面的homeview.vue改为app.vue

<template>
  <div>
    <Header/>
  </div>
  <router-view/>
</template>
<script scoped>
import Header from "@/components/Header";

export default {
  name: 'Layout',
  components:{
    Header
  }
}
</script>

4.使用element-plus

https://element-plus.gitee.io/zh-CN/

查看指南 安装element-plus https://element-plus.gitee.io/zh-CN/guide/installation.html

npm install element-plus --save

注意,一定要在项目文件夹下进行安装

修改main.js中的内容

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

const app = createApp(App)

app.use(ElementPlus)
注意这里的use是可以叠加使用的
例如
createApp(App).use(ElementPlus).use(store).use(router).mount('#app')

测试,在页面中添加一个按钮

<el-button>按钮</el-button>

效果展示

在这里插入图片描述

5.使用下拉栏

https://element-plus.gitee.io/zh-CN/component/icon.html

npm install @element-plus/icons-vue
<template>
    <div style="height: 50px; line-height: 50px; border-bottom: 1px solid #ccc; display: flex">
        <div style="width: 200px; padding-left: 30px; font-weight: bold; color: dodgerblue">后台管理</div>
        <div style="flex: 1"></div>
        <div style="width: 100px">
            <el-dropdown>
                <span class="el-dropdown-link" >
                   张三 <el-icon>
                    <ArrowDown />
                    <i class="el-icon-arrow-down el-icon--right"></i>
                    </el-icon>
                </span>
                <template #dropdown>
                    <el-dropdown-menu>
                        <el-dropdown-item >个人信息</el-dropdown-item>
                        <el-dropdown-item >修改密码</el-dropdown-item>
                        <el-dropdown-item >退出系统</el-dropdown-item>
                    </el-dropdown-menu>
                </template>
            </el-dropdown>
        </div>
    </div>
</template>
<script>
    import {ArrowDown} from "@element-plus/icons-vue";
    export default {
        components: {
            ArrowDown
        }
    }
</script>
<style scoped>
</style>

发现没有下拉栏的小箭头图标

main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
const app = createApp(App)
app.use(ElementPlus).use(store).use(router).mount('#app')

for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
}

注册arrowdown

在使用下拉栏的组件中导入ArrowDown,否则显示不了下拉箭头

<script>
    import { ArrowDown } from '@element-plus/icons-vue'
    export default {
        components: {
            ArrowDown
        }
    }
</script>

图标自己添加

<el-icon><ArrowDown /></el-icon> 

6.定义侧边栏

compoent组件中添加Aside.vue

<template>
    <el-menu
            default-active="2"
            class="el-menu-vertical-demo"
            @open="handleOpen"
            @close="handleClose"
    >
        <el-sub-menu index="1">
            <template #title>
                <el-icon><location /></el-icon>
                <span>导航一</span>
            </template>
            <el-menu-item-group title="分组一">
                <el-menu-item index="1-1">选项一</el-menu-item>
                <el-menu-item index="1-2">选项二</el-menu-item>
            </el-menu-item-group>
            <el-menu-item-group title="分组二">
                <el-menu-item index="1-3">选项三</el-menu-item>
            </el-menu-item-group>
            <el-sub-menu index="1-4">
                <template #title>选项四</template>
                <el-menu-item index="1-4-1">选项一</el-menu-item>
            </el-sub-menu>
        </el-sub-menu>
        <el-menu-item index="2">
            <el-icon><icon-menu /></el-icon>
            <span>导航二</span>
        </el-menu-item>
        <el-menu-item index="3" disabled>
            <el-icon><document /></el-icon>
            <span>导航三</span>
        </el-menu-item>
        <el-menu-item index="4">
            <el-icon><setting /></el-icon>
            <span>导航四</span>
        </el-menu-item>
    </el-menu>
</template>

<script >
   export default{
       name:"Aside"
   }
</script>

在app.vue中引入

<template>
  <div>
    <Header/>

    <div style="display:flex">
        <Aside/>
    </div>
  </div>
  <router-view/>
</template>

<script scoped>


import Header from "@/components/Header";
import Aside from "@/components/Aside";
export default {
  name: 'Layout',
  components:{
    Header,
    Aside
  }
}
</script>

效果展示

在这里插入图片描述

修改app.vue

<template>
  <div>
    <Header/>
    <!--主题-->
    <div style="display:flex">
        <!--侧边栏-->
        <Aside/>
        <!--内容区域-->
        <router-view style="flex:1"/>
    </div>
  </div>

</template>

<script scoped>


import Header from "@/components/Header";
import Aside from "@/components/Aside";
export default {
  name: 'Layout',
  components:{
    Header,
    Aside
  }
}
</script>

7.设置侧边栏宽度

在el-menu标签中设置样式,添加一个style

Aside.vue文件修改部分如下

 <el-menu
            default-active="2"
            class="el-menu-vertical-demo"
            @open="handleOpen"
            @close="handleClose"
            style="width:200px"
    >

8.删去导航栏分组管理

导航栏分组管理不是必要的

修改Aside.vue为如下

<template>
    <el-menu
            default-active="2"
            class="el-menu-vertical-demo"
            @open="handleOpen"
            @close="handleClose"
            style="width:200px"
    >
        <el-sub-menu index="1">
            <template #title>
                <el-icon><location /></el-icon>
                <span>导航一</span>
            </template>
            <el-sub-menu index="1-4">
                <template #title>选项四</template>
                <el-menu-item index="1-4-1">选项一</el-menu-item>
            </el-sub-menu>
        </el-sub-menu>
        <el-menu-item index="2">
            <el-icon><icon-menu /></el-icon>
            <span>导航二</span>
        </el-menu-item>
        <el-menu-item index="3" disabled>
            <el-icon><document /></el-icon>
            <span>导航三</span>
        </el-menu-item>
        <el-menu-item index="4">
            <el-icon><setting /></el-icon>
            <span>导航四</span>
        </el-menu-item>
    </el-menu>
</template>

<script >
   export default{
       name:"Aside"
   }
</script>

9.让导航栏占满左侧

链接

https://element-plus.gitee.io/zh-CN/component/menu.html

在el-menu标签中设置样式,添加一个style

Aside.vue文件修改部分如下

<el-menu
            default-active="2"
            class="el-menu-vertical-demo"
            @open="handleOpen"
            @close="handleClose"
            style="width:200px;height:100vh"
    >

发现长度过高,没有减去头部的高度

<el-menu
            default-active="2"
            class="el-menu-vertical-demo"
            @open="handleOpen"
            @close="handleClose"
            style="width:200px;min-height: calc(100vh - 100px)"
    >

10.添加主体表格

在home.vue中添加

记录产生的问题

有点疑惑了,路由里设置访问的是app.vue,
如果主体设置的在home.vue中,那么要怎样访问到主题呢?
难道是直接设置作为组件么,那view层和component层有什么区别呢?

链接

https://element-plus.gitee.io/zh-CN/component/table.html#基础表格

必须添加在app.vue中才能显示

如果只在home中添加的话,是不显示添加的列表组件的

找到原因了,没有在index.js中注册

router层里index.js

要非常注意import语句,没有用import导入的话是无法注册路由的

import { createRouter, createWebHistory } from 'vue-router'

import Home from "../views/Home"
const routes = [
  {
    path: '/',
    name: 'home',
    component: Home
  }
]
/.
const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})
export default router

11.可以设置国际化将英文显示为中文

网页链接

https://element-plus.gitee.io/zh-CN/guide/i18n.html
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'

app.use(ElementPlus, {
  locale: zhCn,
})

12.为表格添加数据

添加排序

添加斑马纹

添加搜索

<template>
  <div style="padding:10px ">
    <!--<img alt="Vue logo" src="../assets/logo.png">-->
      <!---功能区域-->
        <div style="margin:10px 0">
            <el-button type="primary">新增</el-button>
            <el-button type="primary">导入</el-button>
            <el-button type="primary">导出</el-button>

        </div>
      <!--搜索区域-->
      <div style="margin:10px 0">
          <el-input v-model="search" placeholder="请输入关键字" style="width:20%" />
          <el-button type="primary" style="margin-left:5px">查询</el-button>
      </div>
      <el-table :data="tableData" border stripe style="width: 100%">
          <el-table-column
                  prop="date"
                  label="Date"
                  sortable
          />
          <el-table-column
                  prop="name"
                  label="Name"
          />
          <el-table-column
                  prop="address"
                  label="Address"
          />
          <el-table-column fixed="right" label="操作" width="120">
              <template #default>
                  <el-button link type="primary" size="small" @click="handleClick"
                  >查看</el-button
                  >
                  <el-button link type="primary" size="small">编辑</el-button>
              </template>
          </el-table-column>
      </el-table>

  </div>
</template>

<script>
// @ is an alias to /src
import App from "@/App";


export default {
  name: 'Home',
  components: {

  },
  data(){
      return {search:"",
          tableData:[
              {
                  date: '2016-05-03',
                  name: 'Tom',
                  address: 'No. 189, Grove St, Los Angeles',
              },
              {
                  date: '2016-05-02',
                  name: 'Tom',
                  address: 'No. 189, Grove St, Los Angeles',
              },
              {
                  date: '2016-05-04',
                  name: 'Tom',
                  address: 'No. 189, Grove St, Los Angeles',
              },
              {
                  date: '2016-05-01',
                  name: 'Tom',
                  address: 'No. 189, Grove St, Los Angeles',
              },
          ]}
  }
}
</script>

13.定义函数

要在method里面定义函数方法

用@click为按钮绑定函数事件

添加删除确认

https://element-plus.gitee.io/zh-CN/component/popconfirm.html

使用气泡确认框实现

14.添加分页

https://element-plus.gitee.io/zh-CN/component/pagination.html
<div style="margin:10px 0">
      <el-pagination
              v-model:currentPage="currentPage4"
              v-model:page-size="pageSize4"
              :page-sizes="[100, 200, 300, 400]"
              :small="small"
              :disabled="disabled"
              :background="background"
              layout="total, sizes, prev, pager, next, jumper"
              :total="400"
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
      />
      </div>

添加函数

  },
    methods:{
      handleEdit(){

      },
      handleSizeChange(){

      },
      handleCurrentChange(){

      }

    }

15.效果展示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值