第一节 VUE3 增删改查

目录

1.查询

1.1.绘制页面

1.2.引入样式和脚本

1.3.定义全局对象、字段、数组

1.4.编写查询列表调用接口方法

 1.5.编写带查询条件调用列表方法

 1.6.编写分页方法

  1.7.初始化调用

2.新增/编辑

2.1.新增按钮

 2.2.新增/修改弹窗方法

  2.3.新增/修改接口

​编辑

3.删除

3.1.删除按钮

3.2.修改弹窗方法 

 3.3.删除接口

4.恢复

4.1.恢复按钮

4.2.恢复弹窗方法 

4.3.恢复接口

5.上移/下移

5.1.按钮

5.2.点击触发方法

5.3.调用接口方法


1.查询

1.1.绘制页面

绘制页面的条件及按钮:

 绘制列表和分页:

实例代码:

<template>
  <div class="element-container">
    <div class="top">
      <div class="tophead">查询条件</div>
      <transition name="fade">
        <div class="topCont" v-show="showContent" :style="{ height: contentHeight }">
          <el-row>
            <el-col :span="6">
              <div>
                名称:<el-input v-model="name" placeholder="请输入名称" style="width: 214px" />
              </div>
            </el-col>
            <el-col :span="18">
              <el-button type="primary" @click="btn_query">查询</el-button>
              <el-button type="success" @click="modal_add_label">新增</el-button>
              <el-button v-if="visiblebtn" type="danger" @click="modal_btn_delete">删除</el-button>
              <el-button v-else type="warning" @click="modal_btn_recovery">恢复</el-button>
            </el-col>
          </el-row>
        </div>
      </transition>
      <el-popover :visible="visible" placement="bottom-end" :width="140">
        <div class="popper">
          <div @click="deleteStart(1)"
            ><el-icon style="margin-right: 5px"><Finished /></el-icon> 未删除</div
          >
          <div @click="deleteStart(0)"
            ><el-icon style="margin-right: 5px"><Delete /></el-icon> 已删除</div
          >
        </div>
        <template #reference>
          <div class="EditPen" @click="visible = !visible">
            <el-icon><EditPen /></el-icon>
          </div>
        </template>
      </el-popover>
    </div>
    <div class="content">
      <!-- <div class="tophead">数据列表</div> -->
      <div class="content_tab">
        <el-table
          ref="multipleTableRef"
          :data="contractMessageList.rows"
          @selection-change="handleSelectionChange"
          stripe
          style="width: 100%; margin-bottom: 20px"
        >
          <el-table-column type="selection" width="55" />
          <el-table-column type="index" label="序号" width="180" />
          <el-table-column prop="name" label="国别" />
          <el-table-column prop="username" label="维护人" />
          <el-table-column prop="createTime" label="维护时间" />
          <el-table-column label="操作" align="center">
            <template #default="scope">
              <el-button type="primary" size="small" @click.prevent="updateRow(scope.row)"
                >修改</el-button
              >
              <el-button type="success" size="small" @click.prevent="updateUpDown(scope.row, 2)"
                >上移</el-button
              >
              <el-button type="warning" size="small" @click.prevent="updateUpDown(scope.row, 1)"
                >下移</el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <el-pagination
          v-model:current-page="contractMessageList.currenPage"
          v-model:page-size="state.limit"
          :page-sizes="[10, 20, 30, 40, 50]"
          background
          layout="total, sizes, prev, pager, next, jumper"
          :total="contractMessageList.total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
      </div>
    </div>
  </div>
</template>

1.2.引入样式和脚本

在<script setup>中引入或编写css样式和js脚本,

import { ArrowLeft, ArrowRight, Delete, Edit, Share } from '@element-plus/icons-vue';
import Descrition from '@/components/Descrition/index.vue';
import { ref, reactive, onMounted } from 'vue';
import { useStore } from 'vuex';

1.3.定义全局对象、字段、数组

在 ref();里面定义

定义对象实例:

const form = reactive({
    amount: '',
    contractType: '',
    id: '',
    jParticipants: '',
    message: '',
    name: '',
    participants: '',
    remark: '',
    signingData: '',
  });

定义数组实例:

const updateData = ref([]);

定义字符串实例:

const contentHeight = ref('');

1.4.编写查询列表调用接口方法

// 列表
  async function fetchContractMessageList() {
    await store.dispatch('basicdata/baseCountryList', state);
  }

 1.5.编写带查询条件调用列表方法

 //查询
  const btn_query = async () => {
    state.name = name.value;
    await fetchContractMessageList();
  };

 1.6.编写分页方法

 // 选择条
  const handleSelectionChange = (val) => {
    //只先选中id
    // const vals = val.map((item) => item.id);
    multipleSelection.value = val;
  };
  const handleSizeChange = async (val) => {
    //  每页显示多少条
    state.limit = val;
    await fetchContractMessageList();
  };
  const handleCurrentChange = async (val) => {
    // 页数切换
    state.offset = (val - 1) * 10;
    await fetchContractMessageList();
  };

  1.7.初始化调用

直接在</script>中调用查询列表方法

 // 初始化调用
  fetchContractMessageList();

2.新增/编辑

新增和编辑使用的同一方法,有id则调用修改接口,没有id则调用新增接口

2.1.新增按钮

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

按钮点击调用新增方法,弹出新增面板

 2.2.新增/修改弹窗方法

使用弹窗插件,判断id是否为空,为空则调用新增方法、不为空调用修改方法

// 新增编辑弹窗
  const modal_add_label = () => {
    ElMessageBox.prompt('请输入国别', '新增国别', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      inputPattern: /^.+$/,
      inputValue: updateData.value.name,
      inputErrorMessage: '请输入内容',
    })
      .then(async ({ value }) => {
        if (updateData.value.length > 0) {
          let name = { name: value, id: updateData.value.id };
          await btn_update(name);
        } else {
          let name = { name: value };
          await btn_add(name);
        }
        await fetchContractMessageList();
        updateData.value = [];
      })
      .catch(() => {
        updateData.value = [];
      });
  };

  2.3.新增/修改接口

  // 新增
  async function btn_add(state) {
    await store.dispatch('basicdata/baseCountrySave', state);
  }
  // 修改
  async function btn_update(state) {
    await store.dispatch('basicdata/baseCountryUpdate', state);
  }

3.删除

3.1.删除按钮

<el-button v-if="visiblebtn" type="danger" @click="modal_btn_delete">删除</el-button>

按钮点击调用删除弹窗方法

3.2.修改弹窗方法 

获取到勾选的删除项,传入到后端

 //删除弹窗
  const modal_btn_delete = () => {
    ElMessageBox.confirm('是否确认删除', '删除国别', {
      confirmButtonText: '确认',
      cancelButtonText: '取消',
    })
      .then(async () => {
        if (multipleSelection.value.length > 0) {
          var formData = new FormData();
          formData.append('postdata', JSON.stringify(multipleSelection.value));
          await btn_delete(formData);
          await fetchContractMessageList();
        } else {
          ElMessage.error('请选择删除项');
        }
      })
      .catch(() => {});
  };

 3.3.删除接口

// 删除
  async function btn_delete(state) {
    await store.dispatch('basicdata/baseCountryDelete', state);
  }

4.恢复

4.1.恢复按钮

<el-button v-else type="warning" @click="modal_btn_recovery">恢复</el-button>

按钮点击调用恢复弹窗方法

4.2.恢复弹窗方法 

// 恢复弹窗
  const modal_btn_recovery = () => {
    ElMessageBox.confirm('是否确认恢复', '恢复国别', {
      confirmButtonText: '确认',
      cancelButtonText: '取消',
    })
      .then(async () => {
        if (multipleSelection.value.length > 0) {
          var formData = new FormData();
          formData.append('postdata', JSON.stringify(multipleSelection.value));
          await btn_recovery(formData);
          await fetchContractMessageList();
        } else {
          ElMessage.error('请选择恢复项');
        }
      })
      .catch(() => {});
  };

4.3.恢复接口

// 恢复
  async function btn_recovery(state) {
    await store.dispatch('basicdata/baseCountryRecover', state);
  }

5.上移/下移

5.1.按钮

上移、下移的按钮在列表的每一列中

<el-button type="success" size="small" @click.prevent="updateUpDown(scope.row, 2)"
                >上移</el-button
              >
              <el-button type="warning" size="small" @click.prevent="updateUpDown(scope.row, 1)"
                >下移</el-button
              >

5.2.点击触发方法

 //移动
  const updateUpDown = async (e, index) => {
    let data = { id: e.id, type: index };
    var formData = new FormData();
    formData.append('postdata', JSON.stringify(data));
    await btn_updateUpdown(formData);
    await fetchContractMessageList();
  };

5.3.调用接口方法

//移动
  async function btn_updateUpdown(state) {
    await store.dispatch('basicdata/baseCountryUpdateAdd', state);
  }

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Vue增删改查函数调用可以通过以下方式实现: 1. 增加数据 在Vue中,可以通过以下方式添加新的数据: ```javascript // 定义数据对象 data() { return { users: [] } }, // 添加数据方法 methods: { addUser(newUser) { this.users.push(newUser); } } ``` 2. 删除数据 可以通过以下方式删除数据: ```javascript // 删除数据方法 methods: { deleteUser(index) { this.users.splice(index, 1); } } ``` 3. 修改数据 可以通过以下方式修改数据: ```javascript // 修改数据方法 methods: { updateUser(index, updatedUser) { this.users.splice(index, 1, updatedUser); } } ``` 4. 查询数据 Vue中的数据是响应式的,因此可以直接通过绑定数据来查询数据: ```html <!-- 显示数据 --> <ul> <li v-for="(user, index) in users" :key="index"> {{ user.name }} - {{ user.age }} <button @click="deleteUser(index)">删除</button> </li> </ul> ``` 以上是Vue增删改查函数调用的实现方式,您可以根据自己的需求进行调整。 ### 回答2: Vue是一种基于JavaScript的前端框架,通过使用Vue可以轻松地实现页面的增删改查功能,下面将介绍如何在Vue中调用相应的函数来实现增删改查功能。 首先,我们需要在Vue实例中定义一个数据属性,用来存储我们需要展示的数据列表,例如: data() { return { items: [] } } 接下来,我们可以在Vue组件的methods属性中定义相应的函数来实现增删改查功能。例如,我们可以定义一个函数来获取数据列表: methods: { fetchData() { // 通过API获取数据列表 // 将获取到的数据存储到items属性中 this.items = response.data; } } 在页面加载时,可以调用fetchData函数来获取数据并展示在页面上。 接下来,我们可以定义一个函数来添加新数据: methods: { addItem(newItem) { // 将新数据添加到items列表中 this.items.push(newItem); } } 在页面上可以通过调用addItem函数并传入一个新的数据项来实现添加功能。 类似地,我们也可以定义函数来实现删除和更新功能。例如,我们可以定义一个函数来删除指定的数据项: methods: { deleteItem(index) { // 通过index从items列表中删除指定的数据项 this.items.splice(index, 1); } } 这样,我们可以通过调用deleteItem函数并传入相应的索引来删除该数据项。 除此之外,我们还可以定义一个函数来更新数据项: methods: { updateItem(index, newItem) { // 通过index更新items列表中指定的数据项 this.items.splice(index, 1, newItem); } } 通过调用updateItem函数并传入相应的索引和新的数据项,即可实现对特定数据项的更新操作。 以上就是使用Vue实现增删改查功能时的函数调用方法。通过调用相应的函数,我们可以轻松地实现页面中的数据的增加、删除、更新和查询功能。 ### 回答3: 在Vue中进行增删改查操作,可以通过调用相应的函数来实现。 增加操作可以通过调用`push`方法将新的数据添加到已有的数据集合中。例如,如果我们有一个数组`list`,我们可以使用`list.push(newData)`将新的数据`newData`添加到`list`中。 删除操作可以通过调用`splice`方法来删除指定位置的数据。例如,如果我们要删除数组`list`中的第一个数据,可以使用`list.splice(0, 1)`。 修改操作可以直接通过赋值运算符将新的数据赋值给原有的数据。例如,如果我们要修改数组`list`中的第一个数据为新的数据`updatedData`,可以使用`list[0] = updatedData`。 查询操作可以通过调用相关的函数或者直接访问相关的数据来实现。例如,如果我们有一个数组`list`,我们可以使用`list.length`来获取数组的长度,从而得到数组中数据的个数。 需要注意的是,在Vue中,为了实现数据的双向绑定,我们通常会使用`v-model`指令或者`watch`属性来监听数据的变化。这样当增删改操作完成后,界面上相应的数据也会自动更新。 总结起来,Vue中的增删改查函数调用可以通过使用`push`方法进行增加操作,使用`splice`方法进行删除操作,使用赋值运算符进行修改操作,使用相关的函数或者直接访问数据来进行查询操作。同时,为了实现数据的双向绑定,可以使用`v-model`指令或者`watch`属性来监听数据的变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

akglobe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值