前端-增删改查

本文档展示了如何使用Vue3创建项目,并结合ElementPlus UI库和Axios库实现数据的增删改查功能。在main.js中引入并注册ElementPlus,通过axios进行HTTP请求,处理用户界面交互,包括表格展示、对话框操作等。
摘要由CSDN通过智能技术生成

目录

效果

Vue3 创建项目

Element Plus

安装

引入

axios

安装

结构

index.js

home.js

Vue

home.vue


效果

Vue3 创建项目

vue create [options] <app-name>

Element Plus

安装

npm install element-plus --save

引入

plugins-index.js

import 'element-plus/dist/index.css'
import { ElButton } from 'element-plus'
​
const plugins = [
  ElButton
]
​
export default function getElementPlus (app) {
  plugins.forEach((item) => {
    return app.use(item)
  })
}

main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import getElementPlus from './plugins'
​
const app = createApp(App)
getElementPlus(app)
app.use(router).mount('#app')

axios

安装

npm install axios

结构

index.js

import axios from 'axios'
​
const request = axios.create({
  baseURL: 'http://127.0.0.1:4523/m1/1865777-0-default/',
  timeout: 3000
})
export default request

home.js

import request from '..'
​
// 增 post
export function addUser (data) {
  return request({
    method: 'post',
    url: '/user',
    data: data
  })
}
​
// 删 delete
export function deleteUser (id) {
  return request({
    method: 'delete',
    url: '/user/' + id
  })
}
​
// 改 put
export function updateUser (data) {
  return request({
    method: 'put',
    url: '/user',
    data: data
  })
}
​
// 查 get
export function getUserList () {
  return request({
    method: 'get',
    url: '/user/list'
  })
}

Vue

home.vue

<template>
  <div class="container">
    <!-- 标题 -->
    <h2>增删改查</h2>
    <!-- 查询 -->
    <div class="query-box">
      <el-input v-model="input" placeholder="Please input" />
      <el-button @click="handleAddUser" type="primary">增加</el-button>
    </div>
    <!-- 表格 -->
    <div class="table">
      <el-table :data="userList" style="width: 100%">
        <el-table-column type="selection" width="50" />
        <el-table-column prop="name" label="姓名" width="160" />
        <el-table-column prop="age" label="年龄" width="80" />
        <el-table-column prop="phone" label="电话" width="160" />
        <el-table-column prop="address" label="地址" width="400" />
        <el-table-column fixed="right" label="操作" width="150">
          <template v-slot="scope">
            <el-button link type="primary" size="small" @click="handleDeleteUser(scope.row)" style="color: #F56C6C">删除</el-button>
            <el-button link type="primary" size="small" @click="handleEditUser">编辑</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
​
    <!-- 新增对话框 -->
    <el-dialog v-model="tableFormVisible" :title="tableFormName">
    <el-form :model="tableForm">
      <el-form-item label="姓名" :label-width="80">
        <el-input v-model="tableForm.name" autocomplete="off" />
      </el-form-item>
      <el-form-item label="年龄" :label-width="80">
        <el-input v-model="tableForm.age" autocomplete="off" />
      </el-form-item>
      <el-form-item label="电话" :label-width="80">
        <el-input v-model="tableForm.phone" autocomplete="off" />
      </el-form-item>
      <el-form-item label="地址" :label-width="80">
        <el-input v-model="tableForm.address" autocomplete="off" />
      </el-form-item>
    </el-form>
    <template #footer>
      <span class="dialog-footer">
        <el-button @click="tableFormVisible = false">Cancel</el-button>
        <el-button type="primary" @click="handleAddUserConfirm">
          Confirm
        </el-button>
      </span>
    </template>
  </el-dialog>
​
  <!-- 删除对话框 -->
  <el-dialog
    v-model="deleteDialogVisible"
    title="删除"
    width="30%"
    :before-close="handleClose"
  >
    <span>确认要删除用户 "{{tableForm.name}}" 吗?</span>
    <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button type="primary" @click="handleDeleteUserConfirm">
          确认
        </el-button>
      </span>
    </template>
  </el-dialog>
  </div>
</template>
​
<script setup>
import { ref, onMounted } from 'vue'
import { getUserList, addUser, deleteUser } from '@/request/api/home'
​
const input = ref('')
​
// 表格数据 ---------------------
// [1] 数据
const userList = ref()
​
onMounted(async () => {
  const res = await getUserList()
  userList.value = res.data.data
})
​
// 对话框 ---------------------
// [1] 数据
const deleteDialogVisible = ref(false)
const tableFormVisible = ref(false)
const tableFormName = ref('add')
const tableForm = ref()
​
// [2] 方法
// 新增
const handleAddUser = () => {
  tableFormVisible.value = true
  tableFormName.value = '新增'
  tableForm.value = {}
}
// 新增确认
const handleAddUserConfirm = async () => {
  tableFormVisible.value = false
  const res = await addUser(tableForm.value)
  console.log(res)
}
// 编辑
const handleEditUser = () => {
  tableFormVisible.value = true
  tableFormName.value = '编辑'
}
// 删除
const handleDeleteUser = (data) => {
  deleteDialogVisible.value = true
  tableForm.value = data
}
// 删除确认
const handleDeleteUserConfirm = async () => {
  deleteDialogVisible.value = false
  const res = await deleteUser(tableForm.value.id)
  console.log(res)
}
// 对话框 ---------------------
</script>
​
<style>
.container {
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background-image: linear-gradient(to right top, #d16ba5, #c777b9, #ba83ca, #aa8fd8, #9a9ae1,
  #8aa7ec, #79b3f4, #69bff8, #52cffe, #41dfff, #46eefa, #5ffbf1);
}
​
.title {
  text-align: center;
}
.query-box {
  width: 1000px;
  margin-top: 50px;
  display: flex;
  justify-content: space-between;
}
.el-input {
  width: 300px;
}
​
.table {
  margin: 20px auto;
  width: 1000px;
}
</style>
​

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值