IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue管理端页面常用查询新增编辑删除功能 -> 正文阅读

[JavaScript知识库]Vue管理端页面常用查询新增编辑删除功能

第一部分, 列表(表格)页面内容

包含功能

  • 页面布局
  • 搜索
  • 表格
  • 分页

代码部分


<template>
  <div class="page">
    <!-- 使用表单可以实现更好布局 -->
    <el-form :inline="true" :model="search" class="searchForm">
      <el-form-item>
        <el-input v-model="search.keyword1" placeholder="请输入关键字"></el-input>
      </el-form-item>
      <el-form-item label="关键字">
        <el-input v-model="search.keyword2" placeholder="请输入关键字2"></el-input>
      </el-form-item>
      <el-form-item label="状态">
        <el-select v-model="search.state" placeholder="请选择">
          <el-option label="状态一" value="1"></el-option>
          <el-option label="状态二" value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" size="mini" @click="onSubmitSearch">查询</el-button>
      </el-form-item>
    </el-form>
    <!-- 表格 -->
    <el-table :data="tableData" stripe style="width: 100%">
      <!-- 多字段 -->
      <template v-for="(val, key) in tableColumn">
        <el-table-column :key="key" :prop="val.prop" :label="val.label" :width="val.width" :align="val.align"></el-table-column>
      </template>
      <!-- 行 操作  fixed固定两个值 right,left -->
      <el-table-column fixed="right" label="操作" width="100" align="center">
        <template slot-scope="scope">
          <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
          <el-button type="text" size="small">编辑</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页配置 -->
    <div class="pagination">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="page.currentPage"
        :page-sizes="[10, 20, 50, 100]"
        :page-size="page.pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="page.total"
      >
      </el-pagination>
    </div>
  </div>
</template>

<script>
// 引入接口 中请求表格数据的方法
// import { getTableData } from '@/api/user';
export default {
  // 当前页面 组件名称 ,不同的名称可以提高识别度,
  name: "tableBase",
  // 页面数据定义
  data() {
    return {
      // 搜索表单
      search: {
        // 关键字1 标题...
        keyword1: "",
        // 关键字2 类型...
        keyword2: "",
        // 其他组件 选择器...
        state: undefined,
      },
      // 分页基本配置
      page: {
        // 当前页 默认: 第1页
        currentPage: 1,
        // 页面数据条数 默认: 10条
        pageSize: 10,
        // 数据总条数
        total: 3,
      },
      // 表格中的数据
      tableData: [
        // 第一行的 数据 字段名: 字段值
        { id: 1, name: "用户名1", sex: 1, time: "2021-10-20 20:00:00" },
        { id: 2, name: "用户名2", sex: 2, time: "2021-10-20 20:00:00" },
        { id: 3, name: "用户名3", sex: 1, time: "2021-10-20 20:00:00" },
      ],
      // 表格的列 配置
      tableColumn: [
        // 第一列的 标题, 字段名, 宽度, 列中对齐方式 left,center,right
        { label: "编号", prop: "id", width: "80px", align: "left" },
        { label: "用户名", prop: "name", width: "100px" },
        { label: "性别", prop: "sex", width: "100px" },
        { label: "创建时间", prop: "time" },
      ],
    };
  },
  created() {
    // 创建页面时
    // 此时加载数据或使用Dom 操作 this或 Dom 多半会出错
  },
  mounted() {
    // Dom 加载后
    this.$nextTick(() => {
      // 获取表格数据
      this.getTableData();
    });
  },
  // 全局方法(当前页面)
  methods: {
    // 提交搜索表单
    onSubmitSearch() {
      // 这里还可以根据业务处理其他问题
      // 改变查询参数后 调用列表查询
      this.getTableData();
    },
    // 请求表格数据
    getTableData() {
      // 配置请求参数
      let params = {};
      // 基本参数中加入分页
      params = Object.assign(params, this.page);
      // 判断搜索值是否填写
      if (this.search.keyword1) {
        // 具体 几个查询字段 根据自己的业务情况来
        params["keyword1"] = this.search.keyword1;
      }
      // 不需要判断时
      // params = Object.assign(params, ...this.search);
      // 发起请求
      // getTableData(params).then(res => {
      //    判断接口返回数据 是否成功, 数据条数 大于0 才更新表格数据
      //   if (res.code === 0 && res.data.length > 0) {
      //     const resData = res.data;
      //     this.tableData = resData.data;
      //     this.page.currentPage = resData.currentPage;
      //     this.page.pageSize = resData.pageSize;
      //     this.page.total = resData.total;
      //   }
      // });
    },
    // 修改每页数据条数(默认10条)
    handleSizeChange(val) {
      this.page.pageSize = val;
      this.getTableData();
    },
    // 修改当前页面(跳转页面)
    handleCurrentChange(val) {
      this.page.currentPage = val;
      this.getTableData();
    },
  },
};
</script>

<style lang="scss" scoped>
.page {
  padding: 10px;

  .pagination {
    padding-top: 10px;
    display: flex;
    justify-content: flex-end;
    align-items: center;
  }
}
</style>

结尾

还有具体行操作方法页面 看得人多或者点赞多的话后面会写出来
代码中还有不足的地方, 可以在评论中指出来, 博主有空的话会更正的

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:06:15  更:2021-10-21 12:08:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:48:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码