返回

从零搭建Vue+Antd后台管理系统:实现篇

前端

引言
在上一篇文章中,我们完成了后台管理系统的基础搭建和一些具体功能。现在,我们将直接开始完成页面功能的具体实现和项目优化。

页面基础功能实现

  1. 登录页
    登录页分为用户名+密码登录和手机号+验证码登录两种,验证码mock随机六位。
<template>
  <div class="login-page">
    <div class="login-form">
      <form @submit.prevent="onSubmit">
        <div class="form-group">
          <label for="username">用户名</label>
          <input type="text" id="username" v-model="username">
        </div>
        <div class="form-group">
          <label for="password">密码</label>
          <input type="password" id="password" v-model="password">
        </div>
        <div class="form-group">
          <button type="submit">登录</button>
        </div>
      </form>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    onSubmit() {
      // 登录逻辑
    }
  }
}
</script>

<style>
.login-page {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.login-form {
  width: 300px;
  padding: 20px;
  border: 1px solid #ccc;
}

.form-group {
  margin-bottom: 15px;
}

label {
  display: block;
  margin-bottom: 5px;
}

input {
  width: 100%;
  padding: 5px;
  border: 1px solid #ccc;
}

button {
  width: 100%;
  padding: 5px;
  background-color: #337ab7;
  color: #fff;
  border: 1px solid #337ab7;
}
</style>
  1. 数据管理
    数据管理页面包括数据列表、数据详情、数据新增、数据编辑、数据删除等功能。
<template>
  <div class="data-table">
    <table>
      <thead>
        <tr>
          <th>ID</th>
          <th>名称</th>
          <th>价格</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in dataList" :key="item.id">
          <td>{{ item.id }}</td>
          <td>{{ item.name }}</td>
          <td>{{ item.price }}</td>
          <td>
            <button @click="editData(item.id)">编辑</button>
            <button @click="deleteData(item.id)">删除</button>
          </td>
        </tr>
      </tbody>
    </table>

    <div class="data-form" v-show="isEditing">
      <form @submit.prevent="onSubmit">
        <div class="form-group">
          <label for="name">名称</label>
          <input type="text" id="name" v-model="formData.name">
        </div>
        <div class="form-group">
          <label for="price">价格</label>
          <input type="number" id="price" v-model="formData.price">
        </div>
        <div class="form-group">
          <button type="submit">保存</button>
          <button @click="cancelEdit">取消</button>
        </div>
      </form>
    </div>
  </div>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    const dataList = ref([])
    const formData = ref({})
    const isEditing = ref(false)

    const getDataList = () => {
      // 获取数据列表
    }

    const editData = (id) => {
      // 获取数据详情
      isEditing.value = true
    }

    const deleteData = (id) => {
      // 删除数据
    }

    const onSubmit = () => {
      // 保存数据
      isEditing.value = false
    }

    const cancelEdit = () => {
      isEditing.value = false
    }

    return {
      dataList,
      formData,
      isEditing,
      getDataList,
      editData,
      deleteData,
      onSubmit,
      cancelEdit
    }
  }
}
</script>

<style>
.data-table {
  width: 100%;
  border-collapse: collapse;
}

.data-table th, .data-table td {
  border: 1px solid #ccc;
  padding: 5px;
}

.data-table tbody tr:hover {
  background-color: #f5f5f5;
}

.data-form {
  display: none;
}

.data-form.active {
  display: block;
}

.form-group {
  margin-bottom: 15px;
}

label {
  display: block;
  margin-bottom: 5px;
}

input {
  width: 100%;
  padding: 5px;
  border: 1px solid #ccc;
}

button {
  width: 100%;
  padding: 5px;
  background-color: #337ab7;
  color: #fff;
  border: 1px solid #337ab7;
}
</style>
  1. 权限控制
    权限控制包括用户管理、角色管理、权限管理等功能。
<template>
  <div class="permission-manager">
    <div class="user-list">
      <h3>用户列表</h3>
      <ul>
        <li v-for="user in userList" :key="user.id">
          {{ user.username }}
        </li>
      </ul>
    </div>

    <div class="role-list">
      <h3>角色列表</h3>
      <ul>
        <li v-for="role in roleList" :key="role.id">
          {{ role.name }}
        </li>
      </ul>
    </div>

    <div class="permission-list">
      <h3>权限列表</h3>
      <ul>
        <li v-for="permission in permissionList" :key="permission.id">
          {{ permission.name }}
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    const userList = ref([])
    const roleList = ref([])
    const permissionList = ref([])

    const getUserList = () => {
      // 获取用户列表
    }

    const getRoleList = () => {
      // 获取角色列表
    }

    const getPermissionList = () => {
      // 获取权限列表
    }

    return {
      userList,
      roleList,
      permissionList,
      getUserList,
      getRoleList,
      getPermissionList
    }
  }
}
</script>

<style>
.permission-manager {
  display: flex;
  justify-content: space-between;
}

.user-list, .role-list, .permission-list {
  width: 300px;
  padding: 20px;
  border: 1px solid #ccc;
}

ul {
  list-style-type: none;
  padding: 0;
}

li {
  margin-bottom: 10px;
}
</style>

项目优化

  1. 性能优化
    使用性能分析工具,如Chrome DevTools的Performance面板,来识别性能瓶颈,并进行优化。

  2. 代码优化
    使用代码优化工具,如ESLint和Prettier,来检查代码质量并进行优化。

  3. 安全优化
    使用安全检查工具,如OWASP ZAP,来