首页 > 其他分享 >第二十天的学习(2024.8.8)Vue拓展

第二十天的学习(2024.8.8)Vue拓展

时间:2024-08-08 19:52:10浏览次数:13  
标签:Vue const 2024.8 value 十天 del 按钮 postJson 数据

昨天的笔记中,我们进行的项目已经可以在网页上显示查询到数据库中的数据,今天的笔记中将会完成在网页上进行增删改查的操作 

1.删除表中数据

现在网页上只能呈现出数据库中的数据,我们首先添加一个删除按钮,使其可以对数据库数据进行删除操作

<template #default="scope">
    <el-button type="danger" @click="del(scope.$index,scope.row)">删除</el-button>
</template>

 将上面代码添加到stafflist.vue文件下的<template>标签下,一个删除按钮就呈现在网页上了。我们在按钮标签上添加@click事件,给事件设置为上del(scope.$index,scope.row)方法。下面我们来写del()方法:del()方法写在stafflist.vue文件的<script>标签中,是js语句

首先在api文件夹下的index.js文件下定义del()方法,这里同时也定义了postJson、putJson方法

 

const del=function(index,row){
      console.log(row);
      ElMessageBox.confirm(
        "确定要删除该行数据吗?",
        "提示框",
        {
          confirmButtonText:"确认",
          cancelButtonText:"取消",
          type:'warning',
        }
      )
      .then(function(){
        //提交数据
        easyapi.del("/api/staff",row.id);
        //刷新表格数据
        tableData.value.splice(index,1);
        //提示删除成功
        ElMessage({
        type: 'success',
        message: '删除成功',
      })
      })
}

在del文件中,会显示

里面的文字分别对应del()方法中的文字,导入对象easyapi调用del方法,执行地址为"/api/staff"的操作,后端中这个地址请求是删除某行数据,刚好可以对应删除操作。然后ElMessage会提醒删除成功。

 2.添加表中数据

和删除操作不同的是,添加数据的按钮不能放在每行数据上,新增按钮应该放在表单头部上,每次点击新增按钮都弹出一个弹出框,我们输入数据后点击弹出框中的确认按钮,数据就存入了数据库中,并且新添加的数据会自动刷新出到网页上来。

1.写postJson方法

注意:postForm和postJson方法略有不同,postJson传入的是对象(postJson也是默认的添加数据方式),最好是使用postJson方式添加数据。在进行后端编码时,无论使用哪种方式接收数据,都要跟前端说明使用的方式(postForm还是postJson)

 这是postJson的方式,传入的参数要加注解@RequestBody

2.添加新增按钮

<el-button type="success" @click="openAddWindow">新增</el-button>

3.编写点击新增后的弹出框

弹出框是由addWindowVisible属性控制,这个属性为true就显示在网页上,为false就不显示,我们需要手动设定属性的布尔值

<!--start新增信息的弹出框-->
<el-dialog v-model="addWindowVisible" title="Shipping address" width="500">
  
  <el-form :model="addObject">
      <el-form-item label="编号" label-width="80">
        <el-input v-model="addObject.code" autocomplete="off" />
      </el-form-item>
      <el-form-item label="姓名" label-width="80">
        <el-input v-model="addObject.name" autocomplete="off" />
      </el-form-item>
      <el-form-item label="薪资" label-width="80">
        <el-input v-model="addObject.salary" autocomplete="off" />
      </el-form-item>
      <el-form-item label="用户名" label-width="80">
        <el-input v-model="addObject.username" autocomplete="off" />
      </el-form-item>
  </el-form>
  <template #footer>
      <div class="dialog-footer">
        <el-button @click="closeAddWindow">
          取消
        </el-button>
        <el-button type="primary" @click="addSave">
          保存
        </el-button>
      </div>
    </template>
</el-dialog>
<!--end 新增信息的弹出框-->

设置可视化窗口的布尔值(默认为false)

    //控制新增信息窗口是否显示
    const addWindowVisible=ref(false);

 

然后事件@click为openAddWindow方法,写方法:

点击事件后会接收一个对象的值,然后将可视化窗口的值设置为true(这样就会弹出窗口)

    const openAddWindow=()=>{
      addObject.value={};
      addWindowVisible.value=true;
    }
    //新增数据绑定对象
    const addObject=ref({});

利用新增的数据绑定对象存要传入的数据

 

上面写的弹出框页面中,保存按钮的事件为addSave,这个事件跳转到: 

    //保存新增数据到 addObject
    const addSave=async function(){
      //发送请求
      let result=await easyapi.postJson("/api/staffjson",addObject.value);
      //表格数据变更
      tableData.value.unshift(result.data);
      //提示
      ElMessage({
        type: 'success',
        message: '保存成功',
      })
      closeAddWindow();
    }
    const openAddWindow=()=>{
      addObject.value={};
      addWindowVisible.value=true;
    }
    const closeAddWindow=()=>{
      addWindowVisible.value=false;
    }

首先发送请求,在后端执行添加数据语句,将存储在addObject对象中的数据添加进数据库,然后将表格数据变更,这个操作是在后端实现的

    @PostMapping("staffjson")
	public CommonResult addStaffJson(@RequestBody Staff staff) {
		System.out.println("@PostMapping-----staff");
		dao.addStaff(staff);
		staff=easyS.getStaffByID(staff.getId());
		return CommonResult.success(staff);
	}

3.更改表中数据

编辑数据是针对某行数据进行更改,只需要将按钮放在每行数据后。先写putJson方法和putFrom方法

 

      <template #default="scope">
        <el-button type="danger" @click="del(scope.$index,scope.row)">删除</el-button>
        <el-button type="warning" @click="edit(scope.$index,scope.row)">编辑</el-button>
      </template>

 我们设计编辑按钮时,使其弹出一个弹出框,在弹出框中进行数据的编辑并保存,是和新增数据相同的思路,在事件@click下,@click="edit(scope.$index,scope.row)",传入两个参数,一个是下标一个是数据。编辑数据的输入框如下:

<!--start 编辑信息的弹出框---->
<el-dialog v-model="editWindowVisible" title="编辑" width="500">
  
  <el-form :model="editObject">
      <el-form-item label="编号" label-width="80">
        <el-input v-model="editObject.code" autocomplete="off" />
      </el-form-item>
      <el-form-item label="姓名" label-width="80">
        <el-input v-model="editObject.name" autocomplete="off" />
      </el-form-item>
      <el-form-item label="薪资" label-width="80">
        <el-input v-model="editObject.salary" autocomplete="off" />
      </el-form-item>
      <el-form-item label="用户名" label-width="80">
        <el-input v-model="editObject.username" autocomplete="off" />
      </el-form-item>
  </el-form>
  <template #footer>
      <div class="dialog-footer">
        <el-button @click="editWindowVisible=false">
          取消
        </el-button>
        <el-button type="primary" @click="editSave">
          保存
        </el-button>
      </div>
    </template>
</el-dialog>
<!--end 编辑信息的弹出框---->

同样用一个editObject常量来存储对象

    //编辑数据绑定对象
    const editObject=ref({});

可视化变量:

    //控制编辑信息窗口是否显示
    const editWindowVisible=ref(false);

输入数据后,点击保存会触发事件@click="editSave"

    //保存编辑数据
    const editSave=async function(){
      //发送请求
      let result=await easyapi.putJson("/api/staffjson",editObject.value);
      //刷新表格
      tableData.value[editIndex]=result.data;
      //提示
      ElMessage({
        type: 'success',
        message: '保存成功',
      })
      editWindowVisible.value=false;
    }

先发送请求,然后刷新表格(同增加数据,原理相同),然后弹出提示-保存成功

标签:Vue,const,2024.8,value,十天,del,按钮,postJson,数据
From: https://blog.csdn.net/tuowenjian/article/details/141034277

相关文章

  • Java毕业设计 基于Springboot+Vue的电影院剧院订票选座管理系统(源码+lw+部署文档+讲
    文末获取资源,收藏关注不迷路文章目录项目介绍功能需求技术介绍项目界面关键代码目录项目介绍随着经济的发展和信息技术的普及,国内许多企业都面临了重大的挑战。企业的管理流程、战略规划如果不能进行调整,极有可能面临淘汰的风险。特别是郑州大剧院,面对大量的会员和......
  • vue3(nuxt3)+Aliplayer播放器进行直播播流
    前言:    上一篇讲到使用自定义的一个播放器去进行播流进行观看直播,由于之前都是自己研发的,服务器不是特别好,所以决定使用阿里的推流以及阿里的播放器去进行拉流也更加的适配吧,至少后面出现问题可以有文档看比较完善实践    1.这里的话先把官方文档的地......
  • vue手写转盘抽奖
    目前抽奖最常见的两种:九宫格抽奖和 转盘抽奖,但转盘抽奖的大多是采用的是将做好的图放在页面上,如果需要变动奖池里面的奖品或数量,就会让设计师重新出一张图片。分享我自己在自定义转盘抽奖的样式布局思路<template><divclass="main"><Topmassage="转盘抽奖"/>......
  • 一个基于 vue 的强大表单和高性能表格组件,简洁API设计,支持虚拟树,列拖拽,懒加载,快捷
    前言在现代Web应用开发中,表单和表格是两个核心组件,它们对于数据展示和用户交互至关重要。然而,现有的解-决方案往往存在一些痛点,如不够灵活、性能问题、以及难以实现复杂功能等。这些问题限制了开发者的创造力,也影响了用户体验。为了解决这些痛点,开发者需要一款功能强大、灵活......
  • 2024.8.8 test
    A对于长度为\(2^n\)的序列\(A,B\),求\(c_{k}=\max_{i|j}a_i+b_j\),\(n\le18\)。考虑分治:每次分成\(A_0,A_1,B_0,B_1\)。那么,\(C_0=\max(A_0+B_0),C_1=\max(A_0+B_1,A_1+B_0,A_1+B_1)\)。我们继续分治下去,即上面四种情况每种都要做一遍。不妨合并同类项,\(C_1=\max(A_1+\ma......
  • Vue2和Vue3中的生命周期钩子图示
    原up写的非常简单易懂,还有简单代码示例:reference:https://cloud.tencent.com/developer/article/1514771一、Vue2和Vue3中的生命周期附原图:......
  • vue中axios二次封装【简洁、附代码】+api解耦
    reference:https://www.bilibili.com/video/BV1my421h7hK/?share_source=copy_web&vd_source=334dbcc5ec1e90276a3fca594c89e11e下一篇:继axios二次封装后跨域问题解决——配置代理、环境变量文章目录一、axios请求接口1下载2引入3使用二、axios二次封装1.下......
  • 利用vscode-icons-js在Vue3项目中实现文件图标展示
    背景:在开发文件管理系统或类似的项目时,我们常常需要根据文件类型展示对应的文件图标,这样可以提高用户体验。本文将介绍如何在Vue3项目中利用vscode-icons-js库,实现类似VSCode的文件图标展示效果。先看效果:一、引入vscode-icons-js首先,我们需要安装vscode-icons-js库。......
  • vue 项目使用@vue-office/docx word 纯前端v 也支持后端接口方式
    只是做个记录,防止忘记。安装依赖 @vue-office/docxvue2的写法vue3同理自己改造。记得一定放在public文件夹下 下面代码<template> <divstyle="height:100%">  <el-buttontype="primary"@click="downWord">下载文档</el-button>  <vue......
  • 【uniapp】uniapp+vue2微信小程序实现分享功能
    uniapp+vue2做的微信小程序实现分享功能问题描述uniapp+vue2做的微信小程序,发布以后点击右上角三个点,分享小程序的时候,转发和分享按钮都是灰色解决方案转发、分享、复制链接这几个功能需要自己来手动写方法,考虑到每个页面都需要能够实现分享功能,以下我会使用Vue.js的......