Element-ui——对表格的增删改查以及分页制作

简介: 对表格的增删改查以及分页制作

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './plugins/element.js'
import Api from './api/index.js'
import './mock'
import { MessageBox, Message } from 'element-ui'
Vue.config.productionTip = false
Vue.prototype.$api = Api
Vue.prototype.$confirm = MessageBox.confirm
Vue.prototype.$message = Message
new Vue({
  store,
  router,
  beforeCreate() {
    Vue.prototype.$bus = this
  },
  render: h => h(App)
}).$mount('#app')

7d11f142c7fa46ad99b2cd317f671a22.png

http.js(axios)

import Axios from 'axios'
const axios = Axios.create({
  // baseURL: process.env.NODE_ENV === 'development' ? '' : '',
})
/* resful语法 */
// 添加请求拦截器
axios.interceptors.request.use(function(config) {
  // 在发送请求之前做些什么
  console.log(config);
  return config;
});
// 添加响应拦截器
axios.interceptors.response.use(function(response) {
  // 对响应数据做点什么
  return response;
}, function(error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});
/* url就是接口地址
method = 'get'默认的请求方式
data 放参数的位置 */
export default (url, method = 'get', data = {}) => {
  return axios({
  url,
  method,
  data
  })
}

page.js

import http from './http'
export const getList = data => {
  return http('/list', 'get', data)
}
export const getTotal = () => {
  return http('/list/total')
}
export const getListByValue = data => {
  return http('/list/value', 'get', data)
}
export const addList = data => {
  return http('/list/add', 'post', data)
}
export const updateList = data => {
  return http('/list/update', 'put', data)
}
export const deleteList = data => {
  return http('/list/delete', 'delete', data)
}

index.js

const context = require.context('./', false, /.js$/)
const modules = {}
context.keys().forEach(fileName => {
  if (!['./index.js', './http.js'].includes(fileName)) {
    Object.assign(modules, context(fileName))
  }
})
export default modules

user.js

import http from './http'
export const login = data => {
  return http('/login', 'post', data)
}

TopBar.vue

<template>
  <div class="top-bar">
    <el-input placeholder="请输入内容,按回车键搜索..." clearable  
  @clear="getListdata" 
  @keydown.enter.native="handleSearch" 
  v-model="inputValue">
      <template slot="append">
       <span class="search" @click="handleSearch">搜索</span>
      </template>
    </el-input>
    <el-button type="primary" @click="$emit('show')">添加商品</el-button>
  </div>
</template>
<script>
export default {
  data () {
    return {
      inputValue: ''
    }
  },
  methods: {
    handleSearch () {
      this.$emit('handleSearch', this.inputValue)
    },
  getListdata(){
  this.$emit('getdataList')
  }
  }
}
</script>
<style lang="less" scoped>
.top-bar {
  .el-input {
    width: 300px;
  .search {
  cursor: pointer;
  color:#333;
  }
  }
  .el-button {
    margin-left: 15px;
  }
}
</style>

user.vue

<template>
  <div>
  <top-bar @handleSearch="handlesearch" @getdataList="getdatali"></top-bar>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" label="#" width="50">
    </el-table-column>
    <el-table-column prop="date" label="日期" width="180">
    </el-table-column>
    <el-table-column prop="name" label="姓名" width="180">
    </el-table-column>
    <el-table-column prop="address" label="地址">
    </el-table-column>
    <el-table-column prop="likes" label="爱好">
    </el-table-column>
    <el-table-column label="操作" width="200">
    <template v-slot:default="scope">
      <div class="btns">
      <el-button type="primary">
        <i class="el-icon-edit"></i>
      </el-button>
      <el-button type="danger">
        <i class="el-icon-delete"></i>
      </el-button>
      </div>
    </template>
    </el-table-column>
  </el-table>
  </div>
</template>
<script>
  import TopBar from '../components/main/TopBar.vue'
  export default {
  name: 'User',
  components: {
    TopBar
  },
  data() {
    return {
    loading:false,
    total:0,
    page:{
      size: 10,
      current: 1
    },
    tableData: [],
    search: ''
    }
  },
  mounted() {
    this.getList(this.page.current)
  },
  methods: {
    handleEdit(index, row) {
    console.log(index, row);
    },
    handleDelete(index, row) {
    console.log(index, row);
    },
    getList(current){
    this.loading = true
    this.$api.getList({
      current
    }).then(res=>{
      console.log(res);
      this.tableData = res.data
      this.loading = false
    })
    },
    /* 搜索 */
    handlesearch(value){
    if(value == ''){
      this.$message({
      message: '警告哦,这是一条警告消息',
      type: 'warning'
      });
      this.getList()
      return
    }else {
      this.loading = true
      this.$api.getListByValue({
      value
      }).then(res=>{
      this.tableData = res.data.list
      this.total = res.data.total
      this.loading = false
      })
    }
    },
    getdatali(){
    this.getList(this.page.current)
    }
  }
  }
</script>
<style>
</style>

删除和分页

<template>
  <div>
    <top-bar @handleSearch="handlesearch" @getdataList="getdatali"></top-bar>
    <el-table
      :data="tableData.slice((currpage - 1) * pagesize, currpage * pagesize)"
      v-loading="loading"
    >
      <el-table-column type="index" label="#" width="50"> </el-table-column>
      <el-table-column prop="date" label="日期" width="180"> </el-table-column>
      <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
      <el-table-column prop="address" label="地址"> </el-table-column>
      <el-table-column prop="likes" label="爱好"> </el-table-column>
      <el-table-column label="操作" width="200">
        <template v-slot:default="scope">
          <div class="btns">
            <el-button type="primary" @click="btnDelete(scope.$index, scope.row)">
              <i class="el-icon-edit"></i>
            </el-button>
            <!-- 删除 -->
            <el-button
              type="danger"
              @click="btnDelete(scope.$index, scope.row)"
            >
              <i class="el-icon-delete"></i>
            </el-button>
          </div>
        </template>
      </el-table-column>
    </el-table>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currpage"
      :page-sizes="[2, 5,10]"
      :page-size="100"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total"
    >
    </el-pagination>
  </div>
</template>
<script>
import TopBar from "../components/main/TopBar.vue";
export default {
  name: "User",
  components: {
    TopBar,
  },
  data() {
    return {
      loading: false,
      total: 0,
      page: {
        size: 10,
        current: 1,
      },
      tableData: [],
      search: "",
      pagesize: 2,
      currpage: 1,
    };
  },
  mounted() {
    this.getList(this.page.current);
  // this.getTotal()
  },
  methods: {
    getList() {
      this.$api.getList().then((res) => {
        this.tableData = res.data;
      });
    },
    btnDelete(index, row) {
      this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.getList(this.page.current);
          this.$api
            .deleteList({
              id: row.id,
            })
            .then((res) => {
              console.log(res);
            });
          this.$message({
            type: "success",
            message: "删除成功!",
          });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
    },
    handleSizeChange(val) {
      this.pagesize = val;
      console.log(`每页 ${val} 条`);
    },
    handleCurrentChange(val) {
      this.currpage = val;
      console.log(`当前页: ${val}`);
    },
  // 编辑
    handleEdit(index, row) {
      console.log(index, row);
    },
  // 请求总页面数据
    getList(current) {
      this.loading = true;
      this.$api
        .getList({
          current,
        })
        .then((res) => {
          console.log(res);
          this.total = res.data.length;
          this.tableData = res.data;
          this.loading = false;
        });
    },
    /* 搜索 */
    handlesearch(value) {
  console.log(value);
      if (value == "") {
   this.getList(this.page.current)
      }
       else {
        this.loading = true;
        this.$api
          .getListByValue({
            value,
          })
          .then((res) => {
            this.tableData = res.data.list;
            this.total = res.data.total;
            this.loading = false;
          });
      }
    },
    getdatali(value) {
  console.log(value);
      this.getList(this.page.current);
    },
  getTotal(){
  this.$api.getTotal().then(res=>{
    console.log(res);
    this.total = res.data
  })
  }
  },
};
</script>
<style>
</style>
相关文章
|
4月前
|
JavaScript
element-ui table表格多选后再打开默认选中
element-ui table表格多选后再打开默认选中
|
5月前
|
前端开发 JavaScript UED
element-ui 表格数据究竟隐藏着怎样的神秘样式与格式化技巧?快来揭开谜底!
【8月更文挑战第22天】《element-ui 表格数据样式及格式化案例》展示了如何利用 element-ui 的表格组件实现美观且易读的数据展示。通过简单配置,可以自定义表格样式,如边框、背景色等,并通过 formatter 实现数据格式化,例如将成绩保留一位小数。此外,还能依据条件设置行样式,如成绩达优则高亮显示,从而增强用户体验和数据可读性。
94 1
|
5月前
|
计算机视觉
ElementUI——vue2+element-ui 2.x的动态表格和表单
ElementUI——vue2+element-ui 2.x的动态表格和表单
188 1
|
5月前
|
JavaScript 开发者
Element UI & Element Plus之改变表格单元格颜色
这篇文章展示了如何在Element UI和Element Plus框架中使用`:cell-style`属性来根据条件改变表格单元格的颜色。
521 0
Element UI & Element Plus之改变表格单元格颜色
|
5月前
|
前端开发 关系型数据库 MySQL
Python基于Django框架图书管理系统,Bootstrap框架UI,后台EasyUI框架UI,有登录,实现增删改查的富文本效果
本文介绍了一个使用Python Django框架开发的图书管理系统,该系统采用Bootstrap框架进行前端UI设计,EasyUI框架用于后台UI界面,集成了富文本编辑器,并实现了登录及增删改查功能。
112 1
|
5月前
|
JavaScript 前端开发 Shell
Element-ui Table表格导出功能的实现
Element-ui Table表格导出功能的实现
92 0
|
6月前
【UI】elementui el-pagination分页位置靠右
【UI】elementui el-pagination分页位置靠右
283 0
|
6月前
Element UI 表格【列宽自适应】
Element UI 表格【列宽自适应】
162 0
|
2月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
3月前
|
开发框架 JavaScript 前端开发
鸿蒙NEXT开发声明式UI是咋回事?
【10月更文挑战第15天】鸿蒙NEXT的声明式UI基于ArkTS,提供高效简洁的开发体验。ArkTS扩展了TypeScript,支持声明式UI描述、自定义组件及状态管理。ArkUI框架则提供了丰富的组件、布局计算和动画能力。开发者仅需关注数据变化,UI将自动更新,简化了开发流程。此外,其前后端分层设计与编译时优化确保了高性能运行,利于生态发展。通过组件创建、状态管理和渲染控制等方式,开发者能快速构建高质量的鸿蒙应用。
171 3

热门文章

最新文章