vue+element+admin实现增删改查

2022.10.18今天我学习了如何使用vue+element+admin来实现简单的增删改查功能,用死数据来进行展示。

先给大家看看效果:

日历实现筛选功能:

 

 下拉框实现筛选:

 输入关键字进行模糊查询:

添加功能实现:

 

修改功能实现: 

 

 删除功能实现:

 

 接下来让我详细向大家介绍如何实现:

一、日历选择器

(1)编写日历选择器

<!-- 选择开始日期 -->
      <!-- v-model绑定formData的数组,先进行初始化数据 -->
      <el-date-picker
        v-model="formData.start"
        type="datetime"
        placeholder="选择日期"
        value-format="yyyy-MM-dd HH:mm:ss"
        :default-time="'00:00:00'"
      >
      </el-date-picker>
      -
      <!-- 选择结束日期 -->
      <el-date-picker
        v-model="formData.end"
        type="datetime"
        placeholder="选择日期"
        value-format="yyyy-MM-dd HH:mm:ss"
        :default-time="'23:59:59'"
      >
      </el-date-picker>
<!-- 表格 -->
      <!-- :data模糊查询方法 -->
      <el-table
        :data="
          showtableData.filter(
            (data) =>
              !search || data.name.toLowerCase().includes(search.toLowerCase())
          )
        "
        
        style="width: 100%"
      >
        <el-table-column prop="zt" label="状态" width="200"></el-table-column>
        <el-table-column prop="date" label="日期" width="200"></el-table-column>
        <el-table-column prop="name" label="姓名" width="200"></el-table-column>
        <el-table-column prop="sex" label="性别" width="200"></el-table-column>
        <el-table-column prop="age" label="年龄" width="200"></el-table-column>
        <el-table-column prop="number" label="电话" width="200"></el-table-column>
        <el-table-column
          prop="address"
          label="地址"
          width="200"
        ></el-table-column>
  
        <el-table-column label="操作">

 

这个样式使用的是element里面的日历选择器,具体可以去https://element.eleme.cn/#/zh-CN/component/date-picker查看。

然后是data里面的数据:

// 存放原始数据
        tableData: [
          {
            id: "1",
            ztbh: "1",
            zt: "正常",
            date: "2014-08-02",
            name: "张三",
            sex: "男",
            age: 17,
            number: 1111111,
            address: "上海市",
          },
          {
            id: "2",
            ztbh: "2",
            zt: "不正常",
            date: "2018-06-03",
            name: "李四",
            sex: "女",
            age: 20,
            number: 2222222,
            address: "泉州市",
          },
          {
            id: "3",
            ztbh: "1",
            zt: "正常",
            date: "2022-01-05",
            name: "王五",
            sex: "男",
            age: 25,
            number: 3333333,
            address: "厦门市",
          },
          {
            id: "4",
            ztbh: "2",
            zt: "不正常",
            date: "2011-04-05",
            name: "赵六",
            sex: "男",
            age: 30,
            number: 4444444,
            address: "上海市",
          },
        ],
  
        // 新数据初始化
        showtableData: [],
      };

(2)实现日历选择器的筛选功能

html的内容和一、(1)编写日历选择器中的代码一样,然后你看它使用v-model绑定了formData数组,所以我们先在data里面让formData数组进行一个初始化,如:为什么

// 存放初始时间
        formData: {
          start: "",
          end: "",
        },

为什么要进行初始化呢,可以存放全新的数据。(以下类似)

 存放的初始化数据写好之后,就可以开始使用一个for循环,来得到一个需要选中的值,首先要将日期转换成时间戳进行比大小,如:

 // 查询功能
      searchs() {

        //存放初始化数据
        this.showtableData = [];
        for (let i = 0; i < this.tableData.length; i++) {
          console.log(this.tableData[i].date);
  
          // 用户日期转换时间戳
          let date = new Date(this.tableData[i].date);
          let newdate = date.getTime(date);
          console.log(newdate);
  
          // 用户选择开始时间转换时间戳
          let start = new Date(this.formData.start);
          let newstart = start.getTime(start);
          console.log(newstart);
  
          // 用户选择结束时间转换时间戳
          let end = new Date(this.formData.end);
          let newend = end.getTime(end);
          console.log(newend);
  
          if (newdate >= newstart && newdate <= newend) {
            console.log("在这个范围里面");
  
            // tableData的数据赋值给showtableData
            this.showtableData[i] = this.tableData[i];
            alert('查询成功!')
            break;
          } else {
            console.log("不在这个范围里面");
            alert('查询失败!')
            break;
          }
        }
        console.log(11111, this.showtableData);
      },
    },
  };

showtableData一样的也是用来初始化数据然后进行存储。searchs方法要写在查询功能的@click点击事件方法里面,如:

<!-- 查询功能 -->
      <!-- searchs()点击事件方法 -->
      <el-button style="margin-left: 50px" type="primary" @click="searchs()"
        >查询</el-button
      >

二、输入关键字搜索

(1)编写输入关键字搜索

 <!-- 输入名字关键字进行搜索 -->
      <!-- v-model绑定search数据,进行初始化 -->
      <el-input
        v-model="search"
        size="mini"
        placeholder="输入名字搜索"
        style="width: 200px; margin-left: 100px"
      />

因为v-model绑定了search,所以在data里面同样写个search:''用于初始化数据。

search:''

:data可以进行一个模糊查询,写在table里。

 :data="
          showtableData.filter(
            (data) =>
              !search || data.name.toLowerCase().includes(search.toLowerCase())
          )
        "

这个代码在一、(1)编写日历选择器中有。

写到这里,应该可以完成日历筛选功能和输入关键字模糊查询功能,没有办法实现没关系,后面我会给出完整代码参考。

三、下拉筛选框实现模糊查询

(1)编写下拉框

<!-- 下拉框 -->
      <!-- @change改变事件 -->
      <!-- 设置id() -->
      <select name="状态" @change="zt()" id="pid">

        <!-- selected下拉框的初始值 -->
        <option disabled selected>状态</option>

        <!-- value设置值 -->
        <option value="1">正常</option>
        <option value="2">不正常</option>
      </select>
 // 存放原始数据
        tableData: [
          {
            id: "1",
            ztbh: "1",
            zt: "正常",
            date: "2014-08-02",
            name: "张三",
            sex: "男",
            age: 17,
            number: 1111111,
            address: "上海市",
          },
          {
            id: "2",
            ztbh: "2",
            zt: "不正常",
            date: "2018-06-03",
            name: "李四",
            sex: "女",
            age: 20,
            number: 2222222,
            address: "泉州市",
          },
          {
            id: "3",
            ztbh: "1",
            zt: "正常",
            date: "2022-01-05",
            name: "王五",
            sex: "男",
            age: 25,
            number: 3333333,
            address: "厦门市",
          },
          {
            id: "4",
            ztbh: "2",
            zt: "不正常",
            date: "2011-04-05",
            name: "赵六",
            sex: "男",
            age: 30,
            number: 4444444,
            address: "上海市",
          },
        ],

option不能直接设置点击事件,所以要在select添加onchange方法,然后设置一个id后面在script里面有用,给你的option一个value值,disabled是不能选中,selected是下拉框的初始值展示。

(2)下拉框逻辑代码

methods:{
 // 状态按钮方法
      zt() {

        // 获取id
        var objs = document.getElementById('pid')

        // 获取option的值
        var values = objs.value;

        // showtableData存放初始化数据
        this.showtableData = [];
        console.log("点击状态");

        for (let i = 0; i < this.tableData.length; i++) {
          console.log(this.tableData[i].ztbh);

        //   判断values的值是否和ztbh的值相等
          if (this.tableData[i].ztbh == values) {

            // tableData[i]中所有的数据赋值给showtableData[i]
            this.showtableData[i] = this.tableData[i];
          }
        }
      },
}

写zt()方法的目的就是为了能取到option的value值,然后进行判断。先遍历数组然后就可以拿到数组里面的ztbh值(ztbh用来代替状态,1为正常,2为不正常)

然后就与option里面的value值作比较,当你点击的option与tableData[i].ztbh相同时就会筛选出来,存放在一个新数组中。

四、添加功能实现

(1)编写添加功能

<!-- 添加界面 -->
<!-- :visible.sync可以让页面显示隐藏 -->
      <el-dialog :visible.sync="isAddMembers">

        <!-- 数据绑定在editForm -->
        <!-- addForm存放初始化数据 -->
        <el-form :model="addForm">

          <!-- 状态 -->
            <!-- v-model绑定addForm数组,进行初始化数据 -->
          <el-form-item label="状态">
            <select v-model="addForm.zt">
              <option value="正常">正常</option>
              <option value="不正常">不正常</option>
            </select>
          </el-form-item>
  
          <!-- 选择日期 -->
          <el-form-item label="日期" :picker-options="pickerOptions">
            <el-date-picker
              v-model="addForm.date"
              type="date"
              placeholder="选择日期"
              value-format="yyyy-MM-dd"
            ></el-date-picker>
          </el-form-item>
  
          <!-- 姓名 -->
          <el-form-item label="姓名">
            <el-input v-model="addForm.name"></el-input>
          </el-form-item>
  
          <!-- 性别 -->
          <el-form-item label="性别" v-model="addForm.sex">  
            <el-input v-model="addForm.sex"></el-input>
          </el-form-item>
  
          <!-- 年龄 -->
          <el-form-item label="年龄">
            <el-input v-model="addForm.age"></el-input>
          </el-form-item>
  
          <!-- 电话 -->
          <el-form-item label="电话">
            <el-input v-model="addForm.number"></el-input>
          </el-form-item>
  
          <!-- 地址 -->
          <el-form-item label="地址">
            <el-input v-model="addForm.address"></el-input>
          </el-form-item>
        </el-form>
        <div>

          <!-- 添加页面的取消事件 -->
          <el-button @click="closeDialog()">取消</el-button>
  
          <!-- 添加页面的保存事件 -->
          <el-button type="primary" @click="sumbitAddRow()">确定</el-button>
        </div>
      </el-dialog>

这里也绑定了一个addForm数组,同样的在data里就要写一个addForm用来存放新数组。

data(){
return{
 addForm:[]
}
}

v-model中绑定的值和prop里面的值对应,无论是下拉框还是日期选择器都可以绑定v-model="addForm.xxx"。

取消按钮的实现可以使用false让弹窗不显示。

确定按钮的逻辑代码如下:

 // 添加页面确定按钮方法
      sumbitAddRow() {
        this.tableData = this.tableData;
        this.tableData.push({
          zt: this.addForm.zt,
          date: this.addForm.date,
          name: this.addForm.name,
          sex: this.addForm.sex,
          age: this.addForm.age,
          number: this.addForm.number,
          address: this.addForm.address,
        });
        alert('添加成功!')
        // 添加页面关闭
        this.isAddMembers = false;
      },

五、修改功能实现

(1)编写修改功能

 <!-- 编辑按钮 -->
          <!-- scope.$index拿到每一行的index,
            scope.row拿到每一行的数据。 -->
          <el-button
            type="primary"
            size="mini"
            @click="Edit(scope.$index, scope.row)"
            >编辑</el-button
          >
<!-- visible.sync用于显示隐藏弹框 -->
      <!-- 修改界面 -->
      <el-dialog :visible.sync="centerDialogVisible">

        <!-- 数据绑定在editForm -->
        <el-form :model="editForm">

          <!-- 状态 -->
          <!-- v-model绑定editForm数组,进行初始化数据 -->
          <el-form-item label="状态">
            <select v-model="editForm.zt">

              <option value="正常">正常</option>
              <option value="不正常">不正常</option>
            </select>
          </el-form-item>
  
          <!-- 选择日期 -->
          <el-form-item label="日期" :picker-options="pickerOptions">
            <el-date-picker
              v-model="editForm.date"
              type="date"
              placeholder="选择日期"
              value-format="yyyy-MM-dd"
            ></el-date-picker>
          </el-form-item>
  
          <!-- 姓名 -->
          <el-form-item label="姓名">
            <el-input v-model="editForm.name"></el-input>
          </el-form-item>
  
          <!-- 性别 -->
          <el-form-item label="性别">
            <el-input v-model="editForm.sex"></el-input>
          </el-form-item>
  
          <!-- 年龄 -->
          <el-form-item label="年龄">
            <el-input v-model="editForm.age"></el-input>
          </el-form-item>
  
          <!-- 电话 -->
          <el-form-item label="电话">
            <el-input v-model="editForm.number"></el-input>
          </el-form-item>
  
          <!-- 地址 -->
          <el-form-item label="地址">
            <el-input v-model="editForm.address"></el-input>
          </el-form-item>
        </el-form>
        <div>

          <!-- 编辑页面的取消事件 -->
          <!-- closeDialog()绑定点击取消事件,点击之后弹窗页面不展示 -->
          <el-button @click="closeDialog()">取消</el-button>
  
          <!-- 编辑页面的确定事件 -->
          <el-button type="primary" @click="sumbitEditRow()">确定</el-button>
        </div>
      </el-dialog>

这个和添加页面类似。

(2)修改功能逻辑代码

// 修改按钮方法
    Edit(index, row) {
      // 修改页面打开
      this.centerDialogVisible = true;
      
      //重置对象
      this.editForm = Object.assign({}, row);
      _index = index;
    },

    //  修改页面确定按钮方法
    sumbitEditRow() {
      var editData = _index;
      this.tableData[editData].zt = this.editForm.zt;
      this.tableData[editData].date = this.editForm.date;
      this.tableData[editData].name = this.editForm.name;
      this.tableData[editData].sex = this.editForm.sex;
      this.tableData[editData].age = this.editForm.age;
      this.tableData[editData].number = this.editForm.number;
      this.tableData[editData].address = this.editForm.address;
      alert("修改成功!");
      // 修改好信息之后关闭修改页面
      this.centerDialogVisible = false;
    },

六、删除功能实现

(1)编写删除功能

<!-- 删除按钮 -->
          <!-- @onConfirm 点击确定按钮绑定click事件 -->
          <!-- 点击确定按钮实现删除功能 -->
          <el-popconfirm
            title="确定删除吗?"
            @onConfirm="Delete(scope.$index, scope.row)"
          >
            <!-- 删除按钮 -->
            <el-button size="mini" type="danger" slot="reference"
              >删除</el-button
            >
          </el-popconfirm>

(2)删除功能逻辑代码

 // 删除按钮功能实现
    // confirm点击确定时触发
    Delete(index) {
      this.tableData.splice(index, 1);
      console.log("确定删除");
      alert("删除成功!");
    },

七、完整代码

<template>
  <div>
    <!-- 标题 -->
    <h1>人员管理</h1>

    <!-- 选择开始日期 -->
    <!-- v-model绑定formData的数组,先进行初始化数据 -->
    <el-date-picker
      v-model="formData.start"
      type="datetime"
      placeholder="选择日期"
      value-format="yyyy-MM-dd HH:mm:ss"
      :default-time="'00:00:00'"
    >
    </el-date-picker>
    -
    <!-- 选择结束日期 -->
    <el-date-picker
      v-model="formData.end"
      type="datetime"
      placeholder="选择日期"
      value-format="yyyy-MM-dd HH:mm:ss"
      :default-time="'23:59:59'"
    >
    </el-date-picker>

    <!-- 查询功能 -->
    <!-- searchs()点击事件方法 -->
    <el-button style="margin-left: 50px" type="primary" @click="searchs()"
      >查询</el-button
    >

    <!-- 下拉框 -->
    <!-- @change改变事件 -->
    <!-- 设置id() -->
    <select name="状态" @change="zt()" id="pid">
      <!-- selected下拉框的初始值 -->
      <option disabled selected>状态</option>

      <!-- value设置值 -->
      <option value="1">正常</option>
      <option value="2">不正常</option>
    </select>

    <!-- 输入名字关键字进行搜索 -->
    <!-- v-model绑定search数据,进行初始化 -->
    <el-input
      v-model="search"
      size="mini"
      placeholder="输入名字搜索"
      style="width: 200px; margin-left: 100px"
    />

    <!-- 添加用户信息按钮 -->
    <!-- add()点击事件 -->
    <el-button type="primary" @click="add()" style="margin-left: 50px">
      增加用户</el-button
    >

    <!-- 表格 -->
    <!-- :data模糊查询方法 -->
    <el-table
      :data="
        showtableData.filter(
          (data) =>
            !search || data.name.toLowerCase().includes(search.toLowerCase())
        )
      "
      style="width: 100%"
    >
      <el-table-column prop="zt" label="状态" width="200"></el-table-column>
      <el-table-column prop="date" label="日期" width="200"></el-table-column>
      <el-table-column prop="name" label="姓名" width="200"></el-table-column>
      <el-table-column prop="sex" label="性别" width="200"></el-table-column>
      <el-table-column prop="age" label="年龄" width="200"></el-table-column>
      <el-table-column prop="number" label="电话" width="200"></el-table-column>
      <el-table-column
        prop="address"
        label="地址"
        width="200"
      ></el-table-column>

      <el-table-column label="操作">
        <!-- 编辑表单 -->
        <template slot-scope="scope">
          <!-- 编辑按钮 -->
          <!-- scope.$index拿到每一行的index,
            scope.row拿到每一行的数据。 -->
          <el-button
            type="primary"
            size="mini"
            @click="Edit(scope.$index, scope.row)"
            >编辑</el-button
          >

          <!-- 删除按钮 -->
          <!-- @onConfirm 点击确定按钮绑定click事件 -->
          <!-- 点击确定按钮实现删除功能 -->
          <el-popconfirm
            title="确定删除吗?"
            @onConfirm="Delete(scope.$index, scope.row)"
          >
            <!-- 删除按钮 -->
            <el-button size="mini" type="danger" slot="reference"
              >删除</el-button
            >
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>

    <!-- visible.sync用于显示隐藏弹框 -->
    <!-- 修改界面 -->
    <el-dialog :visible.sync="centerDialogVisible">
      <!-- 数据绑定在editForm -->
      <el-form :model="editForm">
        <!-- 状态 -->
        <!-- v-model绑定editForm数组,进行初始化数据 -->
        <el-form-item label="状态">
          <select v-model="editForm.zt">
            <option value="正常">正常</option>
            <option value="不正常">不正常</option>
          </select>
        </el-form-item>

        <!-- 选择日期 -->
        <el-form-item label="日期" :picker-options="pickerOptions">
          <el-date-picker
            v-model="editForm.date"
            type="date"
            placeholder="选择日期"
            value-format="yyyy-MM-dd"
          ></el-date-picker>
        </el-form-item>

        <!-- 姓名 -->
        <el-form-item label="姓名">
          <el-input v-model="editForm.name"></el-input>
        </el-form-item>

        <!-- 性别 -->
        <el-form-item label="性别">
          <el-input v-model="editForm.sex"></el-input>
        </el-form-item>

        <!-- 年龄 -->
        <el-form-item label="年龄">
          <el-input v-model="editForm.age"></el-input>
        </el-form-item>

        <!-- 电话 -->
        <el-form-item label="电话">
          <el-input v-model="editForm.number"></el-input>
        </el-form-item>

        <!-- 地址 -->
        <el-form-item label="地址">
          <el-input v-model="editForm.address"></el-input>
        </el-form-item>
      </el-form>
      <div>
        <!-- 编辑页面的取消事件 -->
        <!-- closeDialog()绑定点击取消事件,点击之后弹窗页面不展示 -->
        <el-button @click="closeDialog()">取消</el-button>

        <!-- 编辑页面的确定事件 -->
        <el-button type="primary" @click="sumbitEditRow()">确定</el-button>
      </div>
    </el-dialog>

    <!-- 添加界面 -->
    <!-- :visible.sync可以让页面显示隐藏 -->
    <el-dialog :visible.sync="isAddMembers">
      <!-- 数据绑定在editForm -->
      <!-- addForm存放初始化数据 -->
      <el-form :model="addForm">
        <!-- 状态 -->
        <!-- v-model绑定addForm数组,进行初始化数据 -->
        <el-form-item label="状态">
          <select v-model="addForm.zt">
            <option value="正常">正常</option>
            <option value="不正常">不正常</option>
          </select>
        </el-form-item>

        <!-- 选择日期 -->
        <el-form-item label="日期" :picker-options="pickerOptions">
          <el-date-picker
            v-model="addForm.date"
            type="date"
            placeholder="选择日期"
            value-format="yyyy-MM-dd"
          ></el-date-picker>
        </el-form-item>

        <!-- 姓名 -->
        <el-form-item label="姓名">
          <el-input v-model="addForm.name"></el-input>
        </el-form-item>

        <!-- 性别 -->
        <el-form-item label="性别" v-model="addForm.sex">
          <el-input v-model="addForm.sex"></el-input>
        </el-form-item>

        <!-- 年龄 -->
        <el-form-item label="年龄">
          <el-input v-model="addForm.age"></el-input>
        </el-form-item>

        <!-- 电话 -->
        <el-form-item label="电话">
          <el-input v-model="addForm.number"></el-input>
        </el-form-item>

        <!-- 地址 -->
        <el-form-item label="地址">
          <el-input v-model="addForm.address"></el-input>
        </el-form-item>
      </el-form>
      <div>
        <!-- 添加页面的取消事件 -->
        <el-button @click="closeDialog()">取消</el-button>

        <!-- 添加页面的保存事件 -->
        <el-button type="primary" @click="sumbitAddRow()">确定</el-button>
      </div>
    </el-dialog>
  </div>
</template>
    
<script>
import index from "@/components/BackToTop/index.vue";
var _index;

export default {
  components: { index },
  data() {
    return {
      //开始结束时间
      Times: [],

      // 存放初始时间
      formData: {
        start: "",
        end: "",
      },

      // 存放搜索初始数据
      search: "",

      // 存放编辑和添加初始数据
      editForm: [],
      addForm: [],

      // 弹框不展示
      centerDialogVisible: false,
      isAddMembers: false,

      id: "",

      show: true,

      // 时间选择器
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > Date.now();
        },
      },

      // 存放原始数据
      tableData: [
        {
          id: "1",
          ztbh: "1",
          zt: "正常",
          date: "2014-08-02",
          name: "张三",
          sex: "男",
          age: 17,
          number: 1111111,
          address: "上海市",
        },
        {
          id: "2",
          ztbh: "2",
          zt: "不正常",
          date: "2018-06-03",
          name: "李四",
          sex: "女",
          age: 20,
          number: 2222222,
          address: "泉州市",
        },
        {
          id: "3",
          ztbh: "1",
          zt: "正常",
          date: "2022-01-05",
          name: "王五",
          sex: "男",
          age: 25,
          number: 3333333,
          address: "厦门市",
        },
        {
          id: "4",
          ztbh: "2",
          zt: "不正常",
          date: "2011-04-05",
          name: "赵六",
          sex: "男",
          age: 30,
          number: 4444444,
          address: "上海市",
        },
      ],

      // 新数据初始化
      showtableData: [],
    };
  },

  // 数据实例创建之后
  created() {
    // tableData的数据赋值给showtableData
    this.showtableData = this.tableData;
  },

  methods: {
    // 状态按钮方法
    zt() {
      // 获取id
      var objs = document.getElementById("pid");

      // 获取option的值
      var values = objs.value;

      // showtableData存放初始化数据
      this.showtableData = [];
      console.log("点击状态");

      for (let i = 0; i < this.tableData.length; i++) {
        console.log(this.tableData[i].ztbh);

        //   判断values的值是否和ztbh的值相等
        if (this.tableData[i].ztbh == values) {
          // tableData[i]中所有的数据赋值给showtableData[i]
          this.showtableData[i] = this.tableData[i];
        }
      }
    },

    // 添加按钮方法
    add() {
      // 弹窗页面显示
      this.isAddMembers = true;

      // 数据初始化
      this.addForm = {
        zt: "",
        date: "",
        name: "",
        sex: "",
        age: "",
        number: "",
        address: "",
      };
    },

    // 添加页面确定按钮方法
    sumbitAddRow() {
      this.tableData = this.tableData;
      this.tableData.push({
        zt: this.addForm.zt,
        date: this.addForm.date,
        name: this.addForm.name,
        sex: this.addForm.sex,
        age: this.addForm.age,
        number: this.addForm.number,
        address: this.addForm.address,
      });
      alert("添加成功!");
      // 添加页面关闭
      this.isAddMembers = false;
    },

    // 修改按钮方法
    Edit(index, row) {
      // 修改页面打开
      this.centerDialogVisible = true;
      
      //重置对象
      this.editForm = Object.assign({}, row);
      _index = index;
    },

    //  修改页面确定按钮方法
    sumbitEditRow() {
      var editData = _index;
      this.tableData[editData].zt = this.editForm.zt;
      this.tableData[editData].date = this.editForm.date;
      this.tableData[editData].name = this.editForm.name;
      this.tableData[editData].sex = this.editForm.sex;
      this.tableData[editData].age = this.editForm.age;
      this.tableData[editData].number = this.editForm.number;
      this.tableData[editData].address = this.editForm.address;
      alert("修改成功!");
      // 修改好信息之后关闭修改页面
      this.centerDialogVisible = false;
    },

    // 关闭所有弹框
    closeDialog() {
      // 弹窗页面不显示
      this.centerDialogVisible = false;
      this.isAddMembers = false;

      console.log("editfrom", this.editForm);
      console.log("addfrom", this.addForm);
    },

    // 删除按钮功能实现
    // confirm点击确定时触发
    Delete(index) {
      this.tableData.splice(index, 1);
      console.log("确定删除");
      alert("删除成功!");
    },

    // 查询按钮功能实现
    searchs() {
      //存放初始化数据
      this.showtableData = [];
      for (let i = 0; i < this.tableData.length; i++) {
        console.log(this.tableData[i].date);

        // 用户日期转换时间戳
        let date = new Date(this.tableData[i].date);
        let newdate = date.getTime(date);
        console.log(newdate);

        // 用户选择开始时间转换时间戳
        let start = new Date(this.formData.start);
        let newstart = start.getTime(start);
        console.log(newstart);

        // 用户选择结束时间转换时间戳
        let end = new Date(this.formData.end);
        let newend = end.getTime(end);
        console.log(newend);

        if (newdate >= newstart && newdate <= newend) {
          console.log("在这个范围里面");

          // tableData的数据赋值给showtableData
          this.showtableData[i] = this.tableData[i];
          alert("查询成功!");
          break;
        } else {
          console.log("不在这个范围里面");
          alert("查询失败!");
          break;
        }
      }
      console.log(11111, this.showtableData);
    },
  },
};
</script>
    
    <style>
h1 {
  text-align: center;
}
input {
  margin: 20px;
}
.el-input {
  width: 200px;
}
button {
  background-color: red;
  margin-left: 20px;
}
select {
  margin-left: 50px;
}
</style>
    

写到后面写不下去了,大家将就点看看吧,喜欢的话点个赞吧。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: VueElementUI是一对非常强大的前端开发工具,可以帮助我们快速实现增删功能。具体实现步骤如下: 1. 安装VueElementUI 首先需要安装VueElementUI,可以使用npm或yarn进行安装。 2. 创建Vue组件 创建一个Vue组件,包含增删的功能。可以使用ElementUI提供的组件,如表格、表单、对话框等。 3. 实现数据绑定 使用Vue的数据绑定功能,将组件中的数据和页面中的元素进行绑定。可以使用v-model指令实现双向数据绑定。 4. 实现增删功能 使用Vue的方法和事件处理功能,实现增删的功能。可以使用axios或fetch等工具进行数据的请求和响应。 5. 完成样式设计 使用ElementUI提供的样式和自定义样式,完成页面的样式设计。 以上就是使用VueElementUI实现增删功能的基本步骤。需要注意的是,具体实现过程可能会因为项目需求的不同而有所差异。 ### 回答2: Vue ElementUI 是一套基于 Vue.js 的开源 UI 组件库,提供了丰富的组件和样式库,使开发人员可以更方便、快速地创建美观,符合规范的项目界面。本文将以 Vue ElementUI 为基础,介绍如何实现增删功能。 一、安装 Vue ElementUI 首先,需要安装 Vue.js 和 ElementUI。 在命令行中执行以下命令安装: ``` npm install vue npm install element-ui ``` 二、创建 Vue ElementUI 项目 在命令行中执行以下命令来创建一个新的 Vue ElementUI 项目。 ``` vue create vue-elementui-demo ``` 三、在Vue文件中引入ElementUI组件库 修App.vue文件,引入ElementUI组件库。 ``` <template> <div id="app"> <el-header>Header</el-header> <el-main>Main Content</el-main> <el-footer>Footer</el-footer> </div> </template> <script> import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; export default { name: 'app', components: { 'el-header': ElementUI.Header, 'el-main': ElementUI.Main, 'el-footer': ElementUI.Footer } }; </script> ``` 四、创建增删页面 首先,在src目录下创建一个名为views的文件夹,用于存放页面组件。在views文件夹中新建一个名为user.vue的组件文件用于实现增删页面。 创建一个表格用于显示用户列表,并添加一个操作列,用于添加、编辑和删除操作。代码如下: ``` <template> <div class="user"> <el-button @click="handleCreate">新建</el-button> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="gender" label="性别"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button @click="handleEdit(scope.row)">编辑</el-button> <el-button @click="handleDelete(scope.row)">删除</el-button> </template> </el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ {name: "张三", gender: "男", age: "18"}, {name: "李四", gender: "女", age: "20"}, {name: "王五", gender: "男", age: "22"} ] } }, methods: { handleCreate() { // TODO: 弹出新建对话框 }, handleEdit(row) { // TODO: 弹出编辑对话框 }, handleDelete(row) { // TODO: 弹出删除确认对话框,确认后从tableData中删除该行数据 } } } </script> ``` 五、实现新建、编辑、删除对话框 为了实现新建、编辑、删除操作,需要实现对应的对话框组件。创建一个名为user-dialog.vue的组件文件用于实现这些对话框。 代码如下: ``` <template> <el-dialog :title="title" :visible.sync="dialogVisible"> <el-form :model="form" label-position="left" label-width="80px"> <el-form-item label="姓名"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="性别"> <el-radio-group v-model="form.gender"> <el-radio label="男">男</el-radio> <el-radio label="女">女</el-radio> </el-radio-group> </el-form-item> <el-form-item label="年龄"> <el-input v-model="form.age"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click.native="dialogVisible = false">取消</el-button> <el-button type="primary" @click.native="handleSave">保存</el-button> </div> </el-dialog> </template> <script> export default { props: { title: { type: String, required: true }, visible: { type: Boolean, required: true }, form: { type: Object, required: true } }, computed: { dialogVisible: { get() { return this.visible; }, set(val) { this.$emit('update:visible', val); } } }, methods: { handleSave() { this.$emit('save'); } } } </script> ``` 在user.vue中引入user-dialog.vue组件,并为每个操作添加对应的处理函数来弹出对应的对话框。 代码如下: ``` <template> <div class="user"> <el-button @click="handleCreate">新建</el-button> <el-table :data="tableData" style="width: 100%"> <!-- 省略的列 --> </el-table> <user-dialog title="新建用户" :visible.sync="createDialogVisible" :form="createForm" @save="handleCreateSave"/> <user-dialog title="编辑用户" :visible.sync="editDialogVisible" :form="editForm" @save="handleEditSave"/> <el-dialog title="删除确认" :visible.sync="deleteDialogVisible"> <p>确定要删除“{{deleteForm.name}}”吗?</p> <div slot="footer" class="dialog-footer"> <el-button @click.native="deleteDialogVisible = false">取消</el-button> <el-button type="danger" @click.native="handleDelete">删除</el-button> </div> </el-dialog> </div> </template> <script> import UserDialog from '@/views/user-dialog.vue'; export default { components: { UserDialog }, data() { return { tableData: [ {id: 1, name: "张三", gender: "男", age: "18"}, {id: 2, name: "李四", gender: "女", age: "20"}, {id: 3, name: "王五", gender: "男", age: "22"} ], createDialogVisible: false, createForm: { name: "", gender: "男", age: "" }, editDialogVisible: false, editForm: { id: 0, name: "", gender: "", age: "" }, deleteDialogVisible: false, deleteForm: { id: 0, name: "" } } }, methods: { handleCreate() { this.createForm.name = ""; this.createForm.gender = "男"; this.createForm.age = ""; this.createDialogVisible = true; }, handleCreateSave() { const id = Math.max(0, ...this.tableData.map(item => item.id)) + 1; const data = {... this.createForm, id}; this.tableData.push(data); this.createDialogVisible = false; }, handleEdit(row) { this.editForm.id = row.id; this.editForm.name = row.name; this.editForm.gender = row.gender; this.editForm.age = row.age; this.editDialogVisible = true; }, handleEditSave() { const index = this.tableData.findIndex(item => item.id === this.editForm.id); if (index >= 0) { this.tableData.splice(index, 1, this.editForm); } this.editDialogVisible = false; }, handleDelete(row) { const index = this.tableData.findIndex(item => item.id === row.id); if (index >= 0) { this.tableData.splice(index, 1); } this.deleteDialogVisible = false; }, handleDeleteSave() { this.handleDelete(this.deleteForm); } } } </script> ``` 以上就是如何使用 Vue ElementUI 实现增删功能的介绍,希望对你有所帮助。 ### 回答3: Vuejs是目前最流行的前端框架之一,随着其火爆的发展,越来越多的公司和开发者喜欢使用Vuejs开发项目,其中Vuejs与element-ui的组合是目前最常用的一种方式,element-ui提供了一整套完整的UI组件库,可以轻松地实现页面开发。在实现增删功能时,Vuejs与element-ui非常适合,可以极大地提高我们的开发效率,让我们快速实现各种功能。 首先,我们需要安装Vue-cli 3.x版本,使用Vue-cli创建一个Vue项目,安装element-ui库。我们还需要安装axios库,它可以用来与后端API通信。 接下来,我们需要创建一个列表页,将数据展示在页面上,同时还需要添加按钮以执行相应的操作。这个列表页可以通过element-ui的table组件来实现,同时使用axios库与后端api通信,获取数据并将其渲染到页面上。 在实现增加数据功能时,我们可以通过一个Dialog弹窗来实现,通过展示表单进行新增数据操作。此时我们就需要用到element-ui的Dialog组件,将表单组件放在Dialog里面,同时使用axios与后端进行通信。 修数据同样也可以使用弹窗进行实现,只需要在弹窗的表单里填入需要修的数据,通过axios向后端发送更新请求即可。 最后,删除数据可以通过一些操作按钮来处理,例如:删除按钮,勾选数据后点击删除按钮即可。在处理完删除数据请求之后,使用axios与后端进行通信。 总之,使用Vuejs与element-ui一起开发增删功能是一种很高效的方式,这个组合可以大大提高我们前端开发的效率,减少开发周期。同时各种组件也可以通过element-ui的样式来保证我们UI的一致性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码无敌小奶龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值